summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/SConscript20
-rw-r--r--src/egl/drivers/Makefile.template4
-rw-r--r--src/egl/drivers/dri2/egl_dri2.c480
-rw-r--r--src/egl/drivers/glx/egl_glx.c34
-rw-r--r--src/egl/main/SConscript92
-rw-r--r--src/egl/main/eglapi.c35
-rw-r--r--src/egl/main/eglarray.h2
-rw-r--r--src/egl/main/eglconfig.c34
-rw-r--r--src/egl/main/eglconfig.h28
-rw-r--r--src/egl/main/eglcontext.c99
-rw-r--r--src/egl/main/eglcontext.h45
-rw-r--r--src/egl/main/eglcurrent.c40
-rw-r--r--src/egl/main/egldisplay.c53
-rw-r--r--src/egl/main/egldisplay.h15
-rw-r--r--src/egl/main/egldriver.c65
-rw-r--r--src/egl/main/egldriver.h2
-rw-r--r--src/egl/main/eglimage.c4
-rw-r--r--src/egl/main/eglimage.h39
-rw-r--r--src/egl/main/egllog.c5
-rw-r--r--src/egl/main/eglmode.c60
-rw-r--r--src/egl/main/eglmode.h5
-rw-r--r--src/egl/main/eglscreen.c117
-rw-r--r--src/egl/main/eglscreen.h37
-rw-r--r--src/egl/main/eglsurface.c3
-rw-r--r--src/egl/main/eglsurface.h41
-rw-r--r--src/egl/main/eglsync.c5
-rw-r--r--src/egl/main/eglsync.h42
-rw-r--r--src/gallium/SConscript137
-rw-r--r--src/gallium/auxiliary/Makefile13
-rw-r--r--src/gallium/auxiliary/SConscript72
-rw-r--r--src/gallium/auxiliary/draw/draw_llvm.c10
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_init.c8
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c335
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_type.c16
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_type.h4
-rw-r--r--src/gallium/auxiliary/os/os_stream_stdc.c2
-rw-r--r--src/gallium/auxiliary/pipebuffer/SConscript18
-rw-r--r--src/gallium/auxiliary/rtasm/rtasm_ppc.c2
-rw-r--r--src/gallium/auxiliary/target-helpers/wrap_screen.c68
-rw-r--r--src/gallium/auxiliary/target-helpers/wrap_screen.h16
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_build.c736
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_build.h161
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_exec.c801
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_exec.h32
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_text.c3
-rw-r--r--src/gallium/auxiliary/translate/translate.h63
-rw-r--r--src/gallium/auxiliary/translate/translate_sse.c8
-rw-r--r--src/gallium/auxiliary/util/u_dl.c3
-rw-r--r--src/gallium/auxiliary/util/u_format_srgb.py4
-rwxr-xr-xsrc/gallium/auxiliary/util/u_format_table.py4
-rw-r--r--src/gallium/drivers/failover/SConscript2
-rw-r--r--src/gallium/drivers/galahad/SConscript4
-rw-r--r--src/gallium/drivers/i915/SConscript6
-rw-r--r--src/gallium/drivers/i915/i915_reg.h2
-rw-r--r--src/gallium/drivers/i915/i915_resource.h6
-rw-r--r--src/gallium/drivers/i915/i915_resource_texture.c9
-rw-r--r--src/gallium/drivers/i915/i915_screen.c17
-rw-r--r--src/gallium/drivers/i915/i915_state_emit.c8
-rw-r--r--src/gallium/drivers/i915/i915_state_sampler.c5
-rw-r--r--src/gallium/drivers/i965/SConscript4
-rw-r--r--src/gallium/drivers/i965/brw_screen.c5
-rw-r--r--src/gallium/drivers/llvmpipe/Makefile2
-rw-r--r--src/gallium/drivers/llvmpipe/README65
-rw-r--r--src/gallium/drivers/llvmpipe/SConscript6
-rw-r--r--src/gallium/drivers/llvmpipe/lp_rast.c7
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup_line.c15
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup_tri.c44
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_fs.c9
-rw-r--r--src/gallium/drivers/llvmpipe/lp_tile_soa.py4
-rw-r--r--src/gallium/drivers/noop/Makefile (renamed from src/gallium/drivers/sw/Makefile)5
-rw-r--r--src/gallium/drivers/noop/SConscript15
-rw-r--r--src/gallium/drivers/noop/noop_pipe.c550
-rw-r--r--src/gallium/drivers/noop/noop_public.h30
-rw-r--r--src/gallium/drivers/noop/noop_state.c256
-rw-r--r--src/gallium/drivers/nv50/nv50_screen.c5
-rw-r--r--src/gallium/drivers/nv50/nv50_shader_state.c3
-rw-r--r--src/gallium/drivers/nvfx/nvfx_screen.c17
-rw-r--r--src/gallium/drivers/r300/SConscript2
-rw-r--r--src/gallium/drivers/r300/r300_blit.c4
-rw-r--r--src/gallium/drivers/r300/r300_context.c21
-rw-r--r--src/gallium/drivers/r300/r300_context.h4
-rw-r--r--src/gallium/drivers/r300/r300_emit.c4
-rw-r--r--src/gallium/drivers/r300/r300_hyperz.c32
-rw-r--r--src/gallium/drivers/r300/r300_render.c98
-rw-r--r--src/gallium/drivers/r300/r300_screen.c84
-rw-r--r--src/gallium/drivers/r300/r300_state.c30
-rw-r--r--src/gallium/drivers/r300/r300_state_derived.c86
-rw-r--r--src/gallium/drivers/r300/r300_tgsi_to_rc.c5
-rw-r--r--src/gallium/drivers/r600/SConscript4
-rw-r--r--src/gallium/drivers/r600/eg_asm.c9
-rw-r--r--src/gallium/drivers/r600/eg_state_inlines.h43
-rw-r--r--src/gallium/drivers/r600/evergreen_state.c238
-rw-r--r--src/gallium/drivers/r600/evergreend.h6
-rw-r--r--src/gallium/drivers/r600/r600.h9
-rw-r--r--src/gallium/drivers/r600/r600_asm.c117
-rw-r--r--src/gallium/drivers/r600/r600_asm.h21
-rw-r--r--src/gallium/drivers/r600/r600_blit.c7
-rw-r--r--src/gallium/drivers/r600/r600_buffer.c38
-rw-r--r--src/gallium/drivers/r600/r600_opcodes.h9
-rw-r--r--src/gallium/drivers/r600/r600_pipe.c54
-rw-r--r--src/gallium/drivers/r600/r600_pipe.h19
-rw-r--r--src/gallium/drivers/r600/r600_resource.h7
-rw-r--r--src/gallium/drivers/r600/r600_shader.c151
-rw-r--r--src/gallium/drivers/r600/r600_shader.h1
-rw-r--r--src/gallium/drivers/r600/r600_state.c190
-rw-r--r--src/gallium/drivers/r600/r600_state_common.c166
-rw-r--r--src/gallium/drivers/r600/r600_state_inlines.h3
-rw-r--r--src/gallium/drivers/r600/r600_texture.c242
-rw-r--r--src/gallium/drivers/r600/r600d.h4
-rw-r--r--src/gallium/drivers/rbug/README16
-rw-r--r--src/gallium/drivers/rbug/SConscript2
-rw-r--r--src/gallium/drivers/softpipe/SConscript2
-rw-r--r--src/gallium/drivers/softpipe/sp_quad_depth_test.c1
-rw-r--r--src/gallium/drivers/softpipe/sp_screen.c12
-rw-r--r--src/gallium/drivers/softpipe/sp_tex_sample.c57
-rw-r--r--src/gallium/drivers/softpipe/sp_tile_cache.h2
-rw-r--r--src/gallium/drivers/svga/svga_screen.c13
-rw-r--r--src/gallium/drivers/sw/SConscript38
-rw-r--r--src/gallium/drivers/sw/sw.c58
-rw-r--r--src/gallium/drivers/sw/sw_public.h13
-rw-r--r--src/gallium/drivers/trace/README18
-rw-r--r--src/gallium/drivers/trace/SConscript2
-rw-r--r--src/gallium/include/pipe/p_defines.h5
-rw-r--r--src/gallium/include/state_tracker/graw.h24
-rw-r--r--src/gallium/include/state_tracker/st_api.h11
-rw-r--r--src/gallium/include/state_tracker/swrast_screen_create.h67
-rw-r--r--src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp14
-rw-r--r--src/gallium/state_trackers/dri/SConscript4
-rw-r--r--src/gallium/state_trackers/dri/common/dri_context.c3
-rw-r--r--src/gallium/state_trackers/dri/common/dri_drawable.h3
-rw-r--r--src/gallium/state_trackers/dri/common/dri_screen.c3
-rw-r--r--src/gallium/state_trackers/dri/drm/SConscript37
-rw-r--r--src/gallium/state_trackers/dri/sw/SConscript37
-rw-r--r--src/gallium/state_trackers/egl/Makefile2
-rw-r--r--src/gallium/state_trackers/egl/SConscript52
-rw-r--r--src/gallium/state_trackers/egl/common/egl_g3d.c52
-rw-r--r--src/gallium/state_trackers/egl/common/egl_g3d.h2
-rw-r--r--src/gallium/state_trackers/egl/common/egl_g3d_api.c118
-rw-r--r--src/gallium/state_trackers/egl/common/egl_g3d_image.c18
-rw-r--r--src/gallium/state_trackers/egl/common/egl_g3d_st.c3
-rw-r--r--src/gallium/state_trackers/egl/common/egl_g3d_sync.c5
-rw-r--r--src/gallium/state_trackers/egl/common/native.h37
-rw-r--r--src/gallium/state_trackers/egl/common/native_buffer.h59
-rw-r--r--src/gallium/state_trackers/egl/common/native_modeset.h2
-rw-r--r--src/gallium/state_trackers/egl/drm/modeset.c33
-rw-r--r--src/gallium/state_trackers/egl/drm/native_drm.c27
-rw-r--r--src/gallium/state_trackers/egl/fbdev/native_fbdev.c32
-rw-r--r--src/gallium/state_trackers/egl/gdi/native_gdi.c31
-rw-r--r--src/gallium/state_trackers/egl/x11/native_dri2.c36
-rw-r--r--src/gallium/state_trackers/egl/x11/native_x11.h1
-rw-r--r--src/gallium/state_trackers/egl/x11/native_ximage.c31
-rw-r--r--src/gallium/state_trackers/glx/xlib/SConscript37
-rw-r--r--src/gallium/state_trackers/glx/xlib/glx_api.c7
-rw-r--r--src/gallium/state_trackers/glx/xlib/xm_api.c10
-rw-r--r--src/gallium/state_trackers/glx/xlib/xm_api.h5
-rw-r--r--src/gallium/state_trackers/python/SConscript107
-rw-r--r--src/gallium/state_trackers/vega/Makefile3
-rw-r--r--src/gallium/state_trackers/vega/SConscript84
-rw-r--r--src/gallium/state_trackers/vega/api_context.c7
-rw-r--r--src/gallium/state_trackers/vega/api_filters.c4
-rw-r--r--src/gallium/state_trackers/vega/api_images.c18
-rw-r--r--src/gallium/state_trackers/vega/api_masks.c2
-rw-r--r--src/gallium/state_trackers/vega/api_paint.c1
-rw-r--r--src/gallium/state_trackers/vega/api_path.c4
-rw-r--r--src/gallium/state_trackers/vega/api_text.c1
-rw-r--r--src/gallium/state_trackers/vega/image.c2
-rw-r--r--src/gallium/state_trackers/vega/paint.c2
-rw-r--r--src/gallium/state_trackers/vega/polygon.c1
-rw-r--r--src/gallium/state_trackers/vega/renderer.c3
-rw-r--r--src/gallium/state_trackers/vega/shaders_cache.c2
-rw-r--r--src/gallium/state_trackers/vega/vg_context.c3
-rw-r--r--src/gallium/state_trackers/vega/vg_manager.c1
-rw-r--r--src/gallium/state_trackers/wgl/SConscript71
-rw-r--r--src/gallium/state_trackers/wgl/stw_context.c15
-rw-r--r--src/gallium/state_trackers/xorg/SConscript52
-rw-r--r--src/gallium/state_trackers/xorg/xorg_driver.c2
-rw-r--r--src/gallium/targets/Makefile.dri2
-rw-r--r--src/gallium/targets/Makefile.xorg2
-rw-r--r--src/gallium/targets/SConscript41
-rw-r--r--src/gallium/targets/SConscript.dri108
-rw-r--r--src/gallium/targets/dri-i915/SConscript8
-rw-r--r--src/gallium/targets/dri-i965/SConscript8
-rw-r--r--src/gallium/targets/dri-noop/Makefile34
-rw-r--r--src/gallium/targets/dri-noop/SConscript31
-rw-r--r--src/gallium/targets/dri-noop/swrast_drm_api.c63
-rw-r--r--src/gallium/targets/dri-r300/SConscript8
-rw-r--r--src/gallium/targets/dri-r600/SConscript8
-rw-r--r--src/gallium/targets/dri-swrast/SConscript5
-rw-r--r--src/gallium/targets/dri-vmwgfx/Makefile1
-rw-r--r--src/gallium/targets/dri-vmwgfx/SConscript8
-rw-r--r--src/gallium/targets/dri-vmwgfx/vmw_powf.c17
-rw-r--r--src/gallium/targets/egl-gdi/SConscript92
-rw-r--r--src/gallium/targets/egl/Makefile17
-rw-r--r--src/gallium/targets/graw-gdi/SConscript43
-rw-r--r--src/gallium/targets/graw-gdi/graw_gdi.c157
-rw-r--r--src/gallium/targets/graw-null/SConscript40
-rw-r--r--src/gallium/targets/graw-null/graw_null.c69
-rw-r--r--src/gallium/targets/graw-null/graw_util.c92
-rw-r--r--src/gallium/targets/graw-xlib/SConscript34
-rw-r--r--src/gallium/targets/graw-xlib/graw_util.c50
-rw-r--r--src/gallium/targets/graw-xlib/graw_xlib.c45
-rw-r--r--src/gallium/targets/libgl-gdi/SConscript84
-rw-r--r--src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c124
-rw-r--r--src/gallium/targets/libgl-gdi/libgl_gdi.c (renamed from src/gallium/targets/libgl-gdi/gdi_llvmpipe_winsys.c)77
-rw-r--r--src/gallium/targets/libgl-xlib/Makefile4
-rw-r--r--src/gallium/targets/libgl-xlib/SConscript40
-rw-r--r--src/gallium/targets/libgl-xlib/xlib.c90
-rw-r--r--src/gallium/targets/xorg-vmwgfx/SConscript118
-rw-r--r--src/gallium/tests/graw/SConscript26
-rw-r--r--src/gallium/tests/graw/clear.c25
-rw-r--r--src/gallium/tests/graw/fs-test.c26
-rw-r--r--src/gallium/tests/graw/gs-test.c27
-rw-r--r--src/gallium/tests/graw/quad-tex.c25
-rw-r--r--src/gallium/tests/graw/shader-leak.c1
-rw-r--r--src/gallium/tests/graw/tri-gs.c1
-rw-r--r--src/gallium/tests/graw/tri-instanced.c26
-rw-r--r--src/gallium/tests/graw/tri.c25
-rw-r--r--src/gallium/tests/graw/vs-test.c26
-rw-r--r--src/gallium/tests/unit/SConscript4
-rw-r--r--src/gallium/winsys/SConscript67
-rw-r--r--src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c2
-rw-r--r--src/gallium/winsys/i915/drm/i915_drm_buffer.c25
-rw-r--r--src/gallium/winsys/i915/drm/i915_drm_winsys.c6
-rw-r--r--src/gallium/winsys/i915/drm/i915_drm_winsys.h5
-rw-r--r--src/gallium/winsys/r600/drm/evergreen_hw_context.c20
-rw-r--r--src/gallium/winsys/r600/drm/r600_bo.c52
-rw-r--r--src/gallium/winsys/r600/drm/r600_drm.c8
-rw-r--r--src/gallium/winsys/r600/drm/r600_hw_context.c52
-rw-r--r--src/gallium/winsys/r600/drm/r600_priv.h8
-rw-r--r--src/gallium/winsys/r600/drm/r600d.h10
-rw-r--r--src/gallium/winsys/r600/drm/radeon_bo.c40
-rw-r--r--src/gallium/winsys/r600/drm/radeon_bo_pb.c35
-rw-r--r--src/gallium/winsys/svga/drm/SConscript42
-rw-r--r--src/gallium/winsys/sw/xlib/SConscript2
-rw-r--r--src/glsl/Makefile46
-rw-r--r--src/glsl/Makefile.am81
-rw-r--r--src/glsl/SConscript44
-rw-r--r--src/glsl/ast_function.cpp34
-rw-r--r--src/glsl/ast_to_hir.cpp5
-rw-r--r--src/glsl/builtin_function.cpp3229
-rw-r--r--src/glsl/builtin_types.h4
-rw-r--r--src/glsl/builtins/ir/acosh21
-rw-r--r--src/glsl/builtins/ir/asinh21
-rw-r--r--src/glsl/builtins/ir/atan33
-rw-r--r--src/glsl/builtins/ir/atanh37
-rw-r--r--src/glsl/builtins/ir/cross8
-rw-r--r--src/glsl/builtins/profiles/130.frag2
-rw-r--r--src/glsl/builtins/profiles/130.vert2
-rwxr-xr-xsrc/glsl/builtins/tools/generate_builtins.py6
-rw-r--r--src/glsl/glcpp/glcpp-lex.c8
-rw-r--r--src/glsl/glcpp/glcpp-parse.c408
-rw-r--r--src/glsl/glcpp/glcpp-parse.h7
-rw-r--r--src/glsl/glcpp/glcpp-parse.y8
-rw-r--r--src/glsl/glsl_lexer.cpp1951
-rw-r--r--src/glsl/glsl_lexer.lpp272
-rw-r--r--src/glsl/glsl_parser.cpp1748
-rw-r--r--src/glsl/glsl_parser.h6
-rw-r--r--src/glsl/glsl_parser.ypp1
-rw-r--r--src/glsl/glsl_parser_extras.cpp2
-rw-r--r--src/glsl/glsl_types.cpp2
-rw-r--r--src/glsl/glsl_types.h30
-rw-r--r--src/glsl/ir.cpp298
-rw-r--r--src/glsl/ir.h91
-rw-r--r--src/glsl/ir_clone.cpp6
-rw-r--r--src/glsl/ir_constant_expression.cpp191
-rw-r--r--src/glsl/ir_div_to_mul_rcp.cpp115
-rw-r--r--src/glsl/ir_explog_to_explog2.cpp85
-rw-r--r--src/glsl/ir_function.cpp1
-rw-r--r--src/glsl/ir_mod_to_fract.cpp90
-rw-r--r--src/glsl/ir_optimization.h11
-rw-r--r--src/glsl/ir_print_visitor.cpp7
-rw-r--r--src/glsl/ir_reader.cpp29
-rw-r--r--src/glsl/ir_sub_to_add_neg.cpp76
-rw-r--r--src/glsl/ir_validate.cpp51
-rw-r--r--src/glsl/loop_analysis.cpp1
-rw-r--r--src/glsl/loop_controls.cpp3
-rw-r--r--src/glsl/lower_if_to_cond_assign.cpp (renamed from src/glsl/ir_if_to_cond_assign.cpp)2
-rw-r--r--src/glsl/lower_instructions.cpp262
-rw-r--r--src/glsl/lower_jumps.cpp (renamed from src/glsl/ir_lower_jumps.cpp)2
-rw-r--r--src/glsl/lower_mat_op_to_vec.cpp (renamed from src/glsl/ir_mat_op_to_vec.cpp)4
-rw-r--r--src/glsl/lower_vec_index_to_cond_assign.cpp (renamed from src/glsl/ir_vec_index_to_cond_assign.cpp)2
-rw-r--r--src/glsl/lower_vec_index_to_swizzle.cpp (renamed from src/glsl/ir_vec_index_to_swizzle.cpp)2
-rw-r--r--src/glsl/lower_vector.cpp224
-rw-r--r--src/glsl/main.cpp28
-rw-r--r--src/glsl/opt_algebraic.cpp (renamed from src/glsl/ir_algebraic.cpp)77
-rw-r--r--src/glsl/opt_constant_folding.cpp (renamed from src/glsl/ir_constant_folding.cpp)2
-rw-r--r--src/glsl/opt_constant_propagation.cpp (renamed from src/glsl/ir_constant_propagation.cpp)2
-rw-r--r--src/glsl/opt_constant_variable.cpp (renamed from src/glsl/ir_constant_variable.cpp)2
-rw-r--r--src/glsl/opt_copy_propagation.cpp (renamed from src/glsl/ir_copy_propagation.cpp)2
-rw-r--r--src/glsl/opt_dead_code.cpp (renamed from src/glsl/ir_dead_code.cpp)2
-rw-r--r--src/glsl/opt_dead_code_local.cpp (renamed from src/glsl/ir_dead_code_local.cpp)2
-rw-r--r--src/glsl/opt_dead_functions.cpp (renamed from src/glsl/ir_dead_functions.cpp)4
-rw-r--r--src/glsl/opt_function_inlining.cpp (renamed from src/glsl/ir_function_inlining.cpp)2
-rw-r--r--src/glsl/opt_if_simplification.cpp (renamed from src/glsl/ir_if_simplification.cpp)2
-rw-r--r--src/glsl/opt_noop_swizzle.cpp (renamed from src/glsl/ir_noop_swizzle.cpp)2
-rw-r--r--src/glsl/opt_structure_splitting.cpp (renamed from src/glsl/ir_structure_splitting.cpp)2
-rw-r--r--src/glsl/opt_swizzle_swizzle.cpp (renamed from src/glsl/ir_swizzle_swizzle.cpp)2
-rw-r--r--src/glsl/opt_tree_grafting.cpp (renamed from src/glsl/ir_tree_grafting.cpp)2
-rw-r--r--src/glsl/s_expression.cpp3
-rw-r--r--src/glut/glx/SConscript1
-rw-r--r--src/glx/indirect.c41
-rw-r--r--src/glx/indirect.h5
-rw-r--r--src/glx/single2.c4
-rw-r--r--src/glx/singlepix.c16
-rw-r--r--src/mapi/glapi/SConscript143
-rw-r--r--src/mapi/glapi/gen-es/Makefile6
-rw-r--r--src/mapi/glapi/gen/ARB_draw_instanced.xml28
-rw-r--r--src/mapi/glapi/gen/EXT_gpu_shader4.xml244
-rw-r--r--src/mapi/glapi/gen/EXT_separate_shader_objects.xml26
-rw-r--r--src/mapi/glapi/gen/EXT_texture_integer.xml98
-rw-r--r--src/mapi/glapi/gen/EXT_transform_feedback.xml45
-rw-r--r--src/mapi/glapi/gen/GL3x.xml (renamed from src/mapi/glapi/gen/GL3.xml)202
-rw-r--r--src/mapi/glapi/gen/Makefile21
-rw-r--r--src/mapi/glapi/gen/glX_proto_send.py6
-rw-r--r--src/mapi/glapi/gen/gl_API.xml13
-rw-r--r--src/mapi/glapi/gen/gl_SPARC_asm.py4
-rw-r--r--src/mapi/glapi/gen/gl_procs.py8
-rw-r--r--src/mapi/glapi/gen/gl_table.py42
-rw-r--r--src/mapi/glapi/gen/gl_x86_asm.py5
-rw-r--r--src/mapi/glapi/glapi_dispatch.c9
-rw-r--r--src/mapi/glapi/glapi_getproc.c31
-rw-r--r--src/mapi/glapi/glapi_sparc.S1831
-rw-r--r--src/mapi/glapi/glapi_x86-64.S5697
-rw-r--r--src/mapi/glapi/glapi_x86.S2370
-rw-r--r--src/mapi/glapi/glapidispatch.h4231
-rw-r--r--src/mapi/glapi/glapioffsets.h1290
-rw-r--r--src/mapi/glapi/glapitable.h848
-rw-r--r--src/mapi/glapi/glapitemp.h876
-rw-r--r--src/mapi/glapi/glprocs.h2628
-rw-r--r--src/mapi/vgapi/.gitignore1
-rw-r--r--src/mesa/Makefile4
-rw-r--r--src/mesa/SConscript632
-rw-r--r--src/mesa/drivers/common/meta.c108
-rw-r--r--src/mesa/drivers/dri/Makefile.template5
-rw-r--r--src/mesa/drivers/dri/common/utils.c24
-rw-r--r--src/mesa/drivers/dri/common/xmlpool/Makefile2
-rw-r--r--src/mesa/drivers/dri/i915/intel_structs.h132
-rw-r--r--src/mesa/drivers/dri/i965/brw_cc.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_clip.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_clip_state.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.h44
-rw-r--r--src/mesa/drivers/dri/i965/brw_curbe.c6
-rw-r--r--src/mesa/drivers/dri/i965/brw_defines.h8
-rw-r--r--src/mesa/drivers/dri/i965/brw_disasm.c13
-rw-r--r--src/mesa/drivers/dri/i965/brw_draw.c10
-rw-r--r--src/mesa/drivers/dri/i965/brw_draw_upload.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu.h29
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu_emit.c208
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp612
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.h76
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp29
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp3
-rw-r--r--src/mesa/drivers/dri/i965/brw_gs.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_gs_state.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_misc_state.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_sf.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_sf_state.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_state_cache.c17
-rw-r--r--src/mesa/drivers/dri/i965/brw_state_dump.c52
-rw-r--r--src/mesa/drivers/dri/i965/brw_state_upload.c5
-rw-r--r--src/mesa/drivers/dri/i965/brw_urb.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs_emit.c163
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs_state.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm.c3
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm.h3
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_emit.c14
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_fp.c8
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_glsl.c50
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_pass0.c3
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_pass1.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_pass2.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_state.c6
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_surface_state.c19
-rw-r--r--src/mesa/drivers/dri/i965/gen6_cc.c2
-rw-r--r--src/mesa/drivers/dri/i965/gen6_clip_state.c7
-rw-r--r--src/mesa/drivers/dri/i965/gen6_sf_state.c13
-rw-r--r--src/mesa/drivers/dri/i965/gen6_urb.c2
-rw-r--r--src/mesa/drivers/dri/i965/gen6_vs_state.c62
-rw-r--r--src/mesa/drivers/dri/i965/gen6_wm_state.c9
-rw-r--r--src/mesa/drivers/dri/i965/intel_structs.h132
-rw-r--r--src/mesa/drivers/dri/intel/intel_batchbuffer.c26
-rw-r--r--src/mesa/drivers/dri/intel/intel_batchbuffer.h2
-rw-r--r--src/mesa/drivers/dri/intel/intel_blit.c8
-rw-r--r--src/mesa/drivers/dri/intel/intel_chipset.h4
-rw-r--r--src/mesa/drivers/dri/intel/intel_clear.c44
-rw-r--r--src/mesa/drivers/dri/intel/intel_context.c7
-rw-r--r--src/mesa/drivers/dri/intel/intel_context.h20
-rw-r--r--src/mesa/drivers/dri/intel/intel_extensions.c2
-rw-r--r--src/mesa/drivers/dri/intel/intel_pixel.c7
-rw-r--r--src/mesa/drivers/dri/intel/intel_pixel_bitmap.c8
-rw-r--r--src/mesa/drivers/dri/intel/intel_pixel_copy.c6
-rw-r--r--src/mesa/drivers/dri/intel/intel_pixel_read.c26
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex.c92
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_copy.c20
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_image.c40
-rw-r--r--src/mesa/drivers/dri/nouveau/Makefile2
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_array.c136
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_array.h58
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_bo_state.c10
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_bo_state.h2
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c95
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_bufferobj.h7
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_class.h4959
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_context.c13
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_context.h2
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_render.h44
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_render_t.c197
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_scratch.c98
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_scratch.h51
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_state.c7
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c50
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_texture.c93
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_texture.h4
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_util.h6
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c308
-rw-r--r--src/mesa/drivers/dri/nouveau/nv01_2d.xml.h1343
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_3d.xml.h738
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_context.c2
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_context.h1
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_render.c2
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_state_fb.c8
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_state_frag.c7
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_state_raster.c7
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_state_tex.c3
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_surface.c16
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_3d.xml.h1619
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_context.c137
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_driver.h10
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_render.c76
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_fb.c51
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_frag.c36
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_polygon.c47
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_raster.c53
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_tex.c64
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_tnl.c90
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_3d.xml.h2076
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_context.c277
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_driver.h10
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_render.c82
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_fb.c54
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_frag.c16
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_polygon.c4
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_raster.c7
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_tex.c81
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_tnl.c102
-rw-r--r--src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h155
-rw-r--r--src/mesa/drivers/dri/nouveau/nv_object.xml.h268
-rw-r--r--src/mesa/drivers/dri/r200/r200_context.c5
-rw-r--r--src/mesa/drivers/dri/r200/r200_swtcl.c7
-rw-r--r--src/mesa/drivers/dri/r200/r200_tcl.c5
-rw-r--r--src/mesa/drivers/dri/r200/r200_tex.c4
-rw-r--r--src/mesa/drivers/dri/r200/r200_texstate.c22
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c3
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c6
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c2
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c8
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_code.h2
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c122
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h15
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c370
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h18
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_optimize.c331
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c31
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c369
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c5
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program.c115
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program.h26
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h5
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c50
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h10
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_print.c1
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c103
-rw-r--r--src/mesa/drivers/dri/r300/r300_context.c4
-rw-r--r--src/mesa/drivers/dri/r300/r300_draw.c4
-rw-r--r--src/mesa/drivers/dri/r300/r300_render.c2
-rw-r--r--src/mesa/drivers/dri/r300/r300_tex.c4
-rw-r--r--src/mesa/drivers/dri/r300/r300_texstate.c21
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_render.c4
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_tex.c22
-rw-r--r--src/mesa/drivers/dri/r600/r600_context.c4
-rw-r--r--src/mesa/drivers/dri/r600/r600_tex.c4
-rw-r--r--src/mesa/drivers/dri/r600/r600_texstate.c14
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_common.c4
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_common_context.c104
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_context.c4
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_fbo.c46
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.c200
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.h11
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_swtcl.c2
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_tcl.c2
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_tex.c4
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_texstate.c20
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_texture.c64
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_texture.h7
-rw-r--r--src/mesa/drivers/dri/savage/savage_xmesa.c1
-rw-r--r--src/mesa/drivers/dri/swrast/swrast.c12
-rw-r--r--src/mesa/drivers/dri/tdfx/tdfx_tex.c4
-rw-r--r--src/mesa/drivers/osmesa/osmesa.c10
-rw-r--r--src/mesa/drivers/x11/fakeglx.c1
-rw-r--r--src/mesa/drivers/x11/glxapi.c5
-rw-r--r--src/mesa/main/accum.h5
-rw-r--r--src/mesa/main/api_arrayelt.c746
-rw-r--r--src/mesa/main/api_exec.c63
-rw-r--r--src/mesa/main/api_loopback.c175
-rw-r--r--src/mesa/main/api_loopback.h5
-rw-r--r--src/mesa/main/api_validate.c1
-rw-r--r--src/mesa/main/api_validate.h5
-rw-r--r--src/mesa/main/arrayobj.h4
-rw-r--r--src/mesa/main/atifragshader.h7
-rw-r--r--src/mesa/main/attrib.h8
-rw-r--r--src/mesa/main/blend.h4
-rw-r--r--src/mesa/main/bufferobj.c39
-rw-r--r--src/mesa/main/buffers.h3
-rw-r--r--src/mesa/main/clear.c64
-rw-r--r--src/mesa/main/clear.h7
-rw-r--r--src/mesa/main/colortab.c1
-rw-r--r--src/mesa/main/colortab.h9
-rw-r--r--src/mesa/main/context.c253
-rw-r--r--src/mesa/main/convolve.h7
-rw-r--r--src/mesa/main/core.h2
-rw-r--r--src/mesa/main/dd.h32
-rw-r--r--src/mesa/main/debug.c4
-rw-r--r--src/mesa/main/debug.h5
-rw-r--r--src/mesa/main/depth.h5
-rw-r--r--src/mesa/main/depthstencil.h2
-rw-r--r--src/mesa/main/dispatch.h8
-rw-r--r--src/mesa/main/dlist.c199
-rw-r--r--src/mesa/main/drawpix.c70
-rw-r--r--src/mesa/main/drawpix.h5
-rw-r--r--src/mesa/main/drawtex.h3
-rw-r--r--src/mesa/main/enable.c1
-rw-r--r--src/mesa/main/enable.h4
-rw-r--r--src/mesa/main/enums.c7502
-rw-r--r--src/mesa/main/enums.h1
-rw-r--r--src/mesa/main/es_generator.py109
-rw-r--r--src/mesa/main/extensions.c3
-rw-r--r--src/mesa/main/extensions.h5
-rw-r--r--src/mesa/main/fbobject.c69
-rw-r--r--src/mesa/main/fbobject.h5
-rw-r--r--src/mesa/main/ffvertex_prog.h2
-rw-r--r--src/mesa/main/fog.h5
-rw-r--r--src/mesa/main/formats.c45
-rw-r--r--src/mesa/main/formats.h3
-rw-r--r--src/mesa/main/framebuffer.c20
-rw-r--r--src/mesa/main/framebuffer.h5
-rw-r--r--src/mesa/main/get.c30
-rw-r--r--src/mesa/main/glapidispatch.h4548
-rw-r--r--src/mesa/main/hint.h4
-rw-r--r--src/mesa/main/histogram.h5
-rw-r--r--src/mesa/main/image.c4533
-rw-r--r--src/mesa/main/image.h165
-rw-r--r--src/mesa/main/imports.h6
-rw-r--r--src/mesa/main/light.h7
-rw-r--r--src/mesa/main/lines.c5
-rw-r--r--src/mesa/main/lines.h3
-rw-r--r--src/mesa/main/matrix.h3
-rw-r--r--src/mesa/main/mfeatures.h4
-rw-r--r--src/mesa/main/mipmap.c170
-rw-r--r--src/mesa/main/mtypes.h152
-rw-r--r--src/mesa/main/multisample.h4
-rw-r--r--src/mesa/main/nvprogram.c8
-rw-r--r--src/mesa/main/nvprogram.h10
-rw-r--r--src/mesa/main/pack.c4960
-rw-r--r--src/mesa/main/pack.h147
-rw-r--r--src/mesa/main/pixel.h7
-rw-r--r--src/mesa/main/pixelstore.h3
-rw-r--r--src/mesa/main/pixeltransfer.c566
-rw-r--r--src/mesa/main/pixeltransfer.h90
-rw-r--r--src/mesa/main/points.h4
-rw-r--r--src/mesa/main/polygon.c1
-rw-r--r--src/mesa/main/polygon.h3
-rw-r--r--src/mesa/main/rastpos.h5
-rw-r--r--src/mesa/main/readpix.c25
-rw-r--r--src/mesa/main/readpix.h3
-rw-r--r--src/mesa/main/remap.c46
-rw-r--r--src/mesa/main/remap.h44
-rw-r--r--src/mesa/main/remap_helper.h4048
-rw-r--r--src/mesa/main/renderbuffer.c4
-rw-r--r--src/mesa/main/renderbuffer.h2
-rw-r--r--src/mesa/main/scissor.h3
-rw-r--r--src/mesa/main/shaderapi.c283
-rw-r--r--src/mesa/main/shaderapi.h28
-rw-r--r--src/mesa/main/shaderobj.h18
-rw-r--r--src/mesa/main/shared.h2
-rw-r--r--src/mesa/main/state.c20
-rw-r--r--src/mesa/main/stencil.h3
-rw-r--r--src/mesa/main/texenvprogram.c9
-rw-r--r--src/mesa/main/texfetch.c12
-rw-r--r--src/mesa/main/texgetimage.c1
-rw-r--r--src/mesa/main/teximage.c373
-rw-r--r--src/mesa/main/teximage.h7
-rw-r--r--src/mesa/main/texobj.c105
-rw-r--r--src/mesa/main/texstate.c33
-rw-r--r--src/mesa/main/texstore.c246
-rw-r--r--src/mesa/main/uniforms.c129
-rw-r--r--src/mesa/main/uniforms.h3
-rw-r--r--src/mesa/main/varray.c722
-rw-r--r--src/mesa/main/varray.h1
-rw-r--r--src/mesa/main/version.h2
-rw-r--r--src/mesa/main/vtxfmt.c38
-rw-r--r--src/mesa/program/ir_to_mesa.cpp476
-rw-r--r--src/mesa/program/program.c2
-rw-r--r--src/mesa/program/sampler.cpp8
-rw-r--r--src/mesa/sources.mak2
-rw-r--r--src/mesa/state_tracker/st_atom_constbuf.c5
-rw-r--r--src/mesa/state_tracker/st_atom_rasterizer.c5
-rw-r--r--src/mesa/state_tracker/st_cb_drawpixels.c103
-rw-r--r--src/mesa/state_tracker/st_cb_eglimage.c9
-rw-r--r--src/mesa/state_tracker/st_cb_queryobj.c1
-rw-r--r--src/mesa/state_tracker/st_cb_readpixels.c1
-rw-r--r--src/mesa/state_tracker/st_cb_texture.c14
-rw-r--r--src/mesa/state_tracker/st_context.c7
-rw-r--r--src/mesa/state_tracker/st_draw.c20
-rw-r--r--src/mesa/state_tracker/st_extensions.c11
-rw-r--r--src/mesa/state_tracker/st_format.c131
-rw-r--r--src/mesa/state_tracker/st_gen_mipmap.c6
-rw-r--r--src/mesa/state_tracker/st_manager.c37
-rw-r--r--src/mesa/state_tracker/st_program.c42
-rw-r--r--src/mesa/swrast/s_copypix.c2
-rw-r--r--src/mesa/swrast/s_drawpix.c4
-rw-r--r--src/mesa/swrast/s_fragprog.c2
-rw-r--r--src/mesa/swrast/s_readpix.c5
-rw-r--r--src/mesa/swrast/s_texcombine.c2
-rw-r--r--src/mesa/vbo/vbo_attrib_tmp.h616
-rw-r--r--src/mesa/vbo/vbo_exec_api.c116
-rw-r--r--src/mesa/vbo/vbo_exec_draw.c13
-rw-r--r--src/mesa/vbo/vbo_save_api.c34
628 files changed, 51076 insertions, 41180 deletions
diff --git a/src/SConscript b/src/SConscript
index c3e34be6f7..c42d9bff2d 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -1,19 +1,17 @@
Import('*')
-if 'egl' in env['statetrackers']:
- SConscript('mapi/vgapi/SConscript')
- SConscript('egl/main/SConscript')
+SConscript('mapi/vgapi/SConscript')
-if 'mesa' in env['statetrackers']:
- if platform == 'windows':
- SConscript('talloc/SConscript')
+if env['platform'] == 'windows':
+ SConscript('egl/main/SConscript')
+ SConscript('talloc/SConscript')
- SConscript('glsl/SConscript')
- SConscript('mapi/glapi/SConscript')
- SConscript('mesa/SConscript')
+SConscript('glsl/SConscript')
+SConscript('mapi/glapi/SConscript')
+SConscript('mesa/SConscript')
- if platform != 'embedded':
- SConscript('glut/glx/SConscript')
+if env['platform'] != 'embedded':
+ SConscript('glut/glx/SConscript')
SConscript('gallium/SConscript')
diff --git a/src/egl/drivers/Makefile.template b/src/egl/drivers/Makefile.template
index 08e82c65e9..47709e3c59 100644
--- a/src/egl/drivers/Makefile.template
+++ b/src/egl/drivers/Makefile.template
@@ -24,8 +24,8 @@ $(EGL_DRIVER_PATH): $(EGL_DRIVER)
$(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) \
+ -linker '$(CC)' -ldflags '-L$(TOP)/$(LIB_DIR) $(LDFLAGS)' \
+ $(MKLIB_OPTIONS) \
$(EGL_OBJECTS) $(EGL_LIBS) -l$(EGL_LIB)
.c.o:
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index eb8996f7a7..a83f32b0d1 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -272,7 +272,7 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
if (conf != NULL) {
memcpy(&conf->base, &base, sizeof base);
conf->dri_config = dri_config;
- _eglAddConfig(disp, &conf->base);
+ _eglLinkConfig(&conf->base);
}
return conf;
@@ -750,7 +750,7 @@ dri2_create_screen(_EGLDisplay *disp)
if (dri2_dpy->dri2->base.version >= 2)
api_mask = dri2_dpy->dri2->getAPIMask(dri2_dpy->dri_screen);
else
- api_mask = __DRI_API_OPENGL;
+ api_mask = 1 << __DRI_API_OPENGL;
disp->ClientAPIsMask = 0;
if (api_mask & (1 <<__DRI_API_OPENGL))
@@ -899,10 +899,20 @@ const int i915_chip_ids[] = {
0x29b2, /* PCI_CHIP_Q35_G */
0x29c2, /* PCI_CHIP_G33_G */
0x29d2, /* PCI_CHIP_Q33_G */
+ 0xa001, /* PCI_CHIP_IGD_G */
0xa011, /* Pineview */
};
const int i965_chip_ids[] = {
+ 0x0042, /* PCI_CHIP_ILD_G */
+ 0x0046, /* PCI_CHIP_ILM_G */
+ 0x0102, /* PCI_CHIP_SANDYBRIDGE_GT1 */
+ 0x0106, /* PCI_CHIP_SANDYBRIDGE_M_GT1 */
+ 0x010a, /* PCI_CHIP_SANDYBRIDGE_S */
+ 0x0112, /* PCI_CHIP_SANDYBRIDGE_GT2 */
+ 0x0116, /* PCI_CHIP_SANDYBRIDGE_M_GT2 */
+ 0x0122, /* PCI_CHIP_SANDYBRIDGE_GT2_PLUS */
+ 0x0126, /* PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS */
0x29a2, /* PCI_CHIP_I965_G */
0x2992, /* PCI_CHIP_I965_Q */
0x2982, /* PCI_CHIP_I965_G_1 */
@@ -914,11 +924,440 @@ const int i965_chip_ids[] = {
0x2e12, /* PCI_CHIP_Q45_G */
0x2e22, /* PCI_CHIP_G45_G */
0x2e32, /* PCI_CHIP_G41_G */
+ 0x2e42, /* PCI_CHIP_B43_G */
+ 0x2e92, /* PCI_CHIP_B43_G1 */
+};
+
+const int r100_chip_ids[] = {
+ 0x4C57, /* PCI_CHIP_RADEON_LW */
+ 0x4C58, /* PCI_CHIP_RADEON_LX */
+ 0x4C59, /* PCI_CHIP_RADEON_LY */
+ 0x4C5A, /* PCI_CHIP_RADEON_LZ */
+ 0x5144, /* PCI_CHIP_RADEON_QD */
+ 0x5145, /* PCI_CHIP_RADEON_QE */
+ 0x5146, /* PCI_CHIP_RADEON_QF */
+ 0x5147, /* PCI_CHIP_RADEON_QG */
+ 0x5159, /* PCI_CHIP_RADEON_QY */
+ 0x515A, /* PCI_CHIP_RADEON_QZ */
+ 0x5157, /* PCI_CHIP_RV200_QW */
+ 0x5158, /* PCI_CHIP_RV200_QX */
+ 0x515E, /* PCI_CHIP_RN50_515E */
+ 0x5969, /* PCI_CHIP_RN50_5969 */
+ 0x4136, /* PCI_CHIP_RS100_4136 */
+ 0x4336, /* PCI_CHIP_RS100_4336 */
+ 0x4137, /* PCI_CHIP_RS200_4137 */
+ 0x4337, /* PCI_CHIP_RS200_4337 */
+ 0x4237, /* PCI_CHIP_RS250_4237 */
+ 0x4437, /* PCI_CHIP_RS250_4437 */
+};
+
+const int r200_chip_ids[] = {
+ 0x5148, /* PCI_CHIP_R200_QH */
+ 0x514C, /* PCI_CHIP_R200_QL */
+ 0x514D, /* PCI_CHIP_R200_QM */
+ 0x4242, /* PCI_CHIP_R200_BB */
+ 0x4243, /* PCI_CHIP_R200_BC */
+ 0x4966, /* PCI_CHIP_RV250_If */
+ 0x4967, /* PCI_CHIP_RV250_Ig */
+ 0x4C64, /* PCI_CHIP_RV250_Ld */
+ 0x4C66, /* PCI_CHIP_RV250_Lf */
+ 0x4C67, /* PCI_CHIP_RV250_Lg */
+ 0x5960, /* PCI_CHIP_RV280_5960 */
+ 0x5961, /* PCI_CHIP_RV280_5961 */
+ 0x5962, /* PCI_CHIP_RV280_5962 */
+ 0x5964, /* PCI_CHIP_RV280_5964 */
+ 0x5965, /* PCI_CHIP_RV280_5965 */
+ 0x5C61, /* PCI_CHIP_RV280_5C61 */
+ 0x5C63, /* PCI_CHIP_RV280_5C63 */
+ 0x5834, /* PCI_CHIP_RS300_5834 */
+ 0x5835, /* PCI_CHIP_RS300_5835 */
+ 0x7834, /* PCI_CHIP_RS350_7834 */
+ 0x7835, /* PCI_CHIP_RS350_7835 */
+};
+
+const int r300_chip_ids[] = {
+ 0x4144, /* PCI_CHIP_R300_AD */
+ 0x4145, /* PCI_CHIP_R300_AE */
+ 0x4146, /* PCI_CHIP_R300_AF */
+ 0x4147, /* PCI_CHIP_R300_AG */
+ 0x4E44, /* PCI_CHIP_R300_ND */
+ 0x4E45, /* PCI_CHIP_R300_NE */
+ 0x4E46, /* PCI_CHIP_R300_NF */
+ 0x4E47, /* PCI_CHIP_R300_NG */
+ 0x4E48, /* PCI_CHIP_R350_NH */
+ 0x4E49, /* PCI_CHIP_R350_NI */
+ 0x4E4B, /* PCI_CHIP_R350_NK */
+ 0x4148, /* PCI_CHIP_R350_AH */
+ 0x4149, /* PCI_CHIP_R350_AI */
+ 0x414A, /* PCI_CHIP_R350_AJ */
+ 0x414B, /* PCI_CHIP_R350_AK */
+ 0x4E4A, /* PCI_CHIP_R360_NJ */
+ 0x4150, /* PCI_CHIP_RV350_AP */
+ 0x4151, /* PCI_CHIP_RV350_AQ */
+ 0x4152, /* PCI_CHIP_RV350_AR */
+ 0x4153, /* PCI_CHIP_RV350_AS */
+ 0x4154, /* PCI_CHIP_RV350_AT */
+ 0x4155, /* PCI_CHIP_RV350_AU */
+ 0x4156, /* PCI_CHIP_RV350_AV */
+ 0x4E50, /* PCI_CHIP_RV350_NP */
+ 0x4E51, /* PCI_CHIP_RV350_NQ */
+ 0x4E52, /* PCI_CHIP_RV350_NR */
+ 0x4E53, /* PCI_CHIP_RV350_NS */
+ 0x4E54, /* PCI_CHIP_RV350_NT */
+ 0x4E56, /* PCI_CHIP_RV350_NV */
+ 0x5460, /* PCI_CHIP_RV370_5460 */
+ 0x5462, /* PCI_CHIP_RV370_5462 */
+ 0x5464, /* PCI_CHIP_RV370_5464 */
+ 0x5B60, /* PCI_CHIP_RV370_5B60 */
+ 0x5B62, /* PCI_CHIP_RV370_5B62 */
+ 0x5B63, /* PCI_CHIP_RV370_5B63 */
+ 0x5B64, /* PCI_CHIP_RV370_5B64 */
+ 0x5B65, /* PCI_CHIP_RV370_5B65 */
+ 0x3150, /* PCI_CHIP_RV380_3150 */
+ 0x3152, /* PCI_CHIP_RV380_3152 */
+ 0x3154, /* PCI_CHIP_RV380_3154 */
+ 0x3155, /* PCI_CHIP_RV380_3155 */
+ 0x3E50, /* PCI_CHIP_RV380_3E50 */
+ 0x3E54, /* PCI_CHIP_RV380_3E54 */
+ 0x4A48, /* PCI_CHIP_R420_JH */
+ 0x4A49, /* PCI_CHIP_R420_JI */
+ 0x4A4A, /* PCI_CHIP_R420_JJ */
+ 0x4A4B, /* PCI_CHIP_R420_JK */
+ 0x4A4C, /* PCI_CHIP_R420_JL */
+ 0x4A4D, /* PCI_CHIP_R420_JM */
+ 0x4A4E, /* PCI_CHIP_R420_JN */
+ 0x4A4F, /* PCI_CHIP_R420_JO */
+ 0x4A50, /* PCI_CHIP_R420_JP */
+ 0x4A54, /* PCI_CHIP_R420_JT */
+ 0x5548, /* PCI_CHIP_R423_UH */
+ 0x5549, /* PCI_CHIP_R423_UI */
+ 0x554A, /* PCI_CHIP_R423_UJ */
+ 0x554B, /* PCI_CHIP_R423_UK */
+ 0x5550, /* PCI_CHIP_R423_5550 */
+ 0x5551, /* PCI_CHIP_R423_UQ */
+ 0x5552, /* PCI_CHIP_R423_UR */
+ 0x5554, /* PCI_CHIP_R423_UT */
+ 0x5D57, /* PCI_CHIP_R423_5D57 */
+ 0x554C, /* PCI_CHIP_R430_554C */
+ 0x554D, /* PCI_CHIP_R430_554D */
+ 0x554E, /* PCI_CHIP_R430_554E */
+ 0x554F, /* PCI_CHIP_R430_554F */
+ 0x5D48, /* PCI_CHIP_R430_5D48 */
+ 0x5D49, /* PCI_CHIP_R430_5D49 */
+ 0x5D4A, /* PCI_CHIP_R430_5D4A */
+ 0x5D4C, /* PCI_CHIP_R480_5D4C */
+ 0x5D4D, /* PCI_CHIP_R480_5D4D */
+ 0x5D4E, /* PCI_CHIP_R480_5D4E */
+ 0x5D4F, /* PCI_CHIP_R480_5D4F */
+ 0x5D50, /* PCI_CHIP_R480_5D50 */
+ 0x5D52, /* PCI_CHIP_R480_5D52 */
+ 0x4B49, /* PCI_CHIP_R481_4B49 */
+ 0x4B4A, /* PCI_CHIP_R481_4B4A */
+ 0x4B4B, /* PCI_CHIP_R481_4B4B */
+ 0x4B4C, /* PCI_CHIP_R481_4B4C */
+ 0x564A, /* PCI_CHIP_RV410_564A */
+ 0x564B, /* PCI_CHIP_RV410_564B */
+ 0x564F, /* PCI_CHIP_RV410_564F */
+ 0x5652, /* PCI_CHIP_RV410_5652 */
+ 0x5653, /* PCI_CHIP_RV410_5653 */
+ 0x5657, /* PCI_CHIP_RV410_5657 */
+ 0x5E48, /* PCI_CHIP_RV410_5E48 */
+ 0x5E4A, /* PCI_CHIP_RV410_5E4A */
+ 0x5E4B, /* PCI_CHIP_RV410_5E4B */
+ 0x5E4C, /* PCI_CHIP_RV410_5E4C */
+ 0x5E4D, /* PCI_CHIP_RV410_5E4D */
+ 0x5E4F, /* PCI_CHIP_RV410_5E4F */
+ 0x5A41, /* PCI_CHIP_RS400_5A41 */
+ 0x5A42, /* PCI_CHIP_RS400_5A42 */
+ 0x5A61, /* PCI_CHIP_RC410_5A61 */
+ 0x5A62, /* PCI_CHIP_RC410_5A62 */
+ 0x5954, /* PCI_CHIP_RS480_5954 */
+ 0x5955, /* PCI_CHIP_RS480_5955 */
+ 0x5974, /* PCI_CHIP_RS482_5974 */
+ 0x5975, /* PCI_CHIP_RS482_5975 */
+ 0x7100, /* PCI_CHIP_R520_7100 */
+ 0x7101, /* PCI_CHIP_R520_7101 */
+ 0x7102, /* PCI_CHIP_R520_7102 */
+ 0x7103, /* PCI_CHIP_R520_7103 */
+ 0x7104, /* PCI_CHIP_R520_7104 */
+ 0x7105, /* PCI_CHIP_R520_7105 */
+ 0x7106, /* PCI_CHIP_R520_7106 */
+ 0x7108, /* PCI_CHIP_R520_7108 */
+ 0x7109, /* PCI_CHIP_R520_7109 */
+ 0x710A, /* PCI_CHIP_R520_710A */
+ 0x710B, /* PCI_CHIP_R520_710B */
+ 0x710C, /* PCI_CHIP_R520_710C */
+ 0x710E, /* PCI_CHIP_R520_710E */
+ 0x710F, /* PCI_CHIP_R520_710F */
+ 0x7140, /* PCI_CHIP_RV515_7140 */
+ 0x7141, /* PCI_CHIP_RV515_7141 */
+ 0x7142, /* PCI_CHIP_RV515_7142 */
+ 0x7143, /* PCI_CHIP_RV515_7143 */
+ 0x7144, /* PCI_CHIP_RV515_7144 */
+ 0x7145, /* PCI_CHIP_RV515_7145 */
+ 0x7146, /* PCI_CHIP_RV515_7146 */
+ 0x7147, /* PCI_CHIP_RV515_7147 */
+ 0x7149, /* PCI_CHIP_RV515_7149 */
+ 0x714A, /* PCI_CHIP_RV515_714A */
+ 0x714B, /* PCI_CHIP_RV515_714B */
+ 0x714C, /* PCI_CHIP_RV515_714C */
+ 0x714D, /* PCI_CHIP_RV515_714D */
+ 0x714E, /* PCI_CHIP_RV515_714E */
+ 0x714F, /* PCI_CHIP_RV515_714F */
+ 0x7151, /* PCI_CHIP_RV515_7151 */
+ 0x7152, /* PCI_CHIP_RV515_7152 */
+ 0x7153, /* PCI_CHIP_RV515_7153 */
+ 0x715E, /* PCI_CHIP_RV515_715E */
+ 0x715F, /* PCI_CHIP_RV515_715F */
+ 0x7180, /* PCI_CHIP_RV515_7180 */
+ 0x7181, /* PCI_CHIP_RV515_7181 */
+ 0x7183, /* PCI_CHIP_RV515_7183 */
+ 0x7186, /* PCI_CHIP_RV515_7186 */
+ 0x7187, /* PCI_CHIP_RV515_7187 */
+ 0x7188, /* PCI_CHIP_RV515_7188 */
+ 0x718A, /* PCI_CHIP_RV515_718A */
+ 0x718B, /* PCI_CHIP_RV515_718B */
+ 0x718C, /* PCI_CHIP_RV515_718C */
+ 0x718D, /* PCI_CHIP_RV515_718D */
+ 0x718F, /* PCI_CHIP_RV515_718F */
+ 0x7193, /* PCI_CHIP_RV515_7193 */
+ 0x7196, /* PCI_CHIP_RV515_7196 */
+ 0x719B, /* PCI_CHIP_RV515_719B */
+ 0x719F, /* PCI_CHIP_RV515_719F */
+ 0x7200, /* PCI_CHIP_RV515_7200 */
+ 0x7210, /* PCI_CHIP_RV515_7210 */
+ 0x7211, /* PCI_CHIP_RV515_7211 */
+ 0x71C0, /* PCI_CHIP_RV530_71C0 */
+ 0x71C1, /* PCI_CHIP_RV530_71C1 */
+ 0x71C2, /* PCI_CHIP_RV530_71C2 */
+ 0x71C3, /* PCI_CHIP_RV530_71C3 */
+ 0x71C4, /* PCI_CHIP_RV530_71C4 */
+ 0x71C5, /* PCI_CHIP_RV530_71C5 */
+ 0x71C6, /* PCI_CHIP_RV530_71C6 */
+ 0x71C7, /* PCI_CHIP_RV530_71C7 */
+ 0x71CD, /* PCI_CHIP_RV530_71CD */
+ 0x71CE, /* PCI_CHIP_RV530_71CE */
+ 0x71D2, /* PCI_CHIP_RV530_71D2 */
+ 0x71D4, /* PCI_CHIP_RV530_71D4 */
+ 0x71D5, /* PCI_CHIP_RV530_71D5 */
+ 0x71D6, /* PCI_CHIP_RV530_71D6 */
+ 0x71DA, /* PCI_CHIP_RV530_71DA */
+ 0x71DE, /* PCI_CHIP_RV530_71DE */
+ 0x7281, /* PCI_CHIP_RV560_7281 */
+ 0x7283, /* PCI_CHIP_RV560_7283 */
+ 0x7287, /* PCI_CHIP_RV560_7287 */
+ 0x7290, /* PCI_CHIP_RV560_7290 */
+ 0x7291, /* PCI_CHIP_RV560_7291 */
+ 0x7293, /* PCI_CHIP_RV560_7293 */
+ 0x7297, /* PCI_CHIP_RV560_7297 */
+ 0x7280, /* PCI_CHIP_RV570_7280 */
+ 0x7288, /* PCI_CHIP_RV570_7288 */
+ 0x7289, /* PCI_CHIP_RV570_7289 */
+ 0x728B, /* PCI_CHIP_RV570_728B */
+ 0x728C, /* PCI_CHIP_RV570_728C */
+ 0x7240, /* PCI_CHIP_R580_7240 */
+ 0x7243, /* PCI_CHIP_R580_7243 */
+ 0x7244, /* PCI_CHIP_R580_7244 */
+ 0x7245, /* PCI_CHIP_R580_7245 */
+ 0x7246, /* PCI_CHIP_R580_7246 */
+ 0x7247, /* PCI_CHIP_R580_7247 */
+ 0x7248, /* PCI_CHIP_R580_7248 */
+ 0x7249, /* PCI_CHIP_R580_7249 */
+ 0x724A, /* PCI_CHIP_R580_724A */
+ 0x724B, /* PCI_CHIP_R580_724B */
+ 0x724C, /* PCI_CHIP_R580_724C */
+ 0x724D, /* PCI_CHIP_R580_724D */
+ 0x724E, /* PCI_CHIP_R580_724E */
+ 0x724F, /* PCI_CHIP_R580_724F */
+ 0x7284, /* PCI_CHIP_R580_7284 */
+ 0x793F, /* PCI_CHIP_RS600_793F */
+ 0x7941, /* PCI_CHIP_RS600_7941 */
+ 0x7942, /* PCI_CHIP_RS600_7942 */
+ 0x791E, /* PCI_CHIP_RS690_791E */
+ 0x791F, /* PCI_CHIP_RS690_791F */
+ 0x796C, /* PCI_CHIP_RS740_796C */
+ 0x796D, /* PCI_CHIP_RS740_796D */
+ 0x796E, /* PCI_CHIP_RS740_796E */
+ 0x796F, /* PCI_CHIP_RS740_796F */
+};
+
+const int r600_chip_ids[] = {
+ 0x9400, /* PCI_CHIP_R600_9400 */
+ 0x9401, /* PCI_CHIP_R600_9401 */
+ 0x9402, /* PCI_CHIP_R600_9402 */
+ 0x9403, /* PCI_CHIP_R600_9403 */
+ 0x9405, /* PCI_CHIP_R600_9405 */
+ 0x940A, /* PCI_CHIP_R600_940A */
+ 0x940B, /* PCI_CHIP_R600_940B */
+ 0x940F, /* PCI_CHIP_R600_940F */
+ 0x94C0, /* PCI_CHIP_RV610_94C0 */
+ 0x94C1, /* PCI_CHIP_RV610_94C1 */
+ 0x94C3, /* PCI_CHIP_RV610_94C3 */
+ 0x94C4, /* PCI_CHIP_RV610_94C4 */
+ 0x94C5, /* PCI_CHIP_RV610_94C5 */
+ 0x94C6, /* PCI_CHIP_RV610_94C6 */
+ 0x94C7, /* PCI_CHIP_RV610_94C7 */
+ 0x94C8, /* PCI_CHIP_RV610_94C8 */
+ 0x94C9, /* PCI_CHIP_RV610_94C9 */
+ 0x94CB, /* PCI_CHIP_RV610_94CB */
+ 0x94CC, /* PCI_CHIP_RV610_94CC */
+ 0x94CD, /* PCI_CHIP_RV610_94CD */
+ 0x9580, /* PCI_CHIP_RV630_9580 */
+ 0x9581, /* PCI_CHIP_RV630_9581 */
+ 0x9583, /* PCI_CHIP_RV630_9583 */
+ 0x9586, /* PCI_CHIP_RV630_9586 */
+ 0x9587, /* PCI_CHIP_RV630_9587 */
+ 0x9588, /* PCI_CHIP_RV630_9588 */
+ 0x9589, /* PCI_CHIP_RV630_9589 */
+ 0x958A, /* PCI_CHIP_RV630_958A */
+ 0x958B, /* PCI_CHIP_RV630_958B */
+ 0x958C, /* PCI_CHIP_RV630_958C */
+ 0x958D, /* PCI_CHIP_RV630_958D */
+ 0x958E, /* PCI_CHIP_RV630_958E */
+ 0x958F, /* PCI_CHIP_RV630_958F */
+ 0x9500, /* PCI_CHIP_RV670_9500 */
+ 0x9501, /* PCI_CHIP_RV670_9501 */
+ 0x9504, /* PCI_CHIP_RV670_9504 */
+ 0x9505, /* PCI_CHIP_RV670_9505 */
+ 0x9506, /* PCI_CHIP_RV670_9506 */
+ 0x9507, /* PCI_CHIP_RV670_9507 */
+ 0x9508, /* PCI_CHIP_RV670_9508 */
+ 0x9509, /* PCI_CHIP_RV670_9509 */
+ 0x950F, /* PCI_CHIP_RV670_950F */
+ 0x9511, /* PCI_CHIP_RV670_9511 */
+ 0x9515, /* PCI_CHIP_RV670_9515 */
+ 0x9517, /* PCI_CHIP_RV670_9517 */
+ 0x9519, /* PCI_CHIP_RV670_9519 */
+ 0x95C0, /* PCI_CHIP_RV620_95C0 */
+ 0x95C2, /* PCI_CHIP_RV620_95C2 */
+ 0x95C4, /* PCI_CHIP_RV620_95C4 */
+ 0x95C5, /* PCI_CHIP_RV620_95C5 */
+ 0x95C6, /* PCI_CHIP_RV620_95C6 */
+ 0x95C7, /* PCI_CHIP_RV620_95C7 */
+ 0x95C9, /* PCI_CHIP_RV620_95C9 */
+ 0x95CC, /* PCI_CHIP_RV620_95CC */
+ 0x95CD, /* PCI_CHIP_RV620_95CD */
+ 0x95CE, /* PCI_CHIP_RV620_95CE */
+ 0x95CF, /* PCI_CHIP_RV620_95CF */
+ 0x9590, /* PCI_CHIP_RV635_9590 */
+ 0x9591, /* PCI_CHIP_RV635_9591 */
+ 0x9593, /* PCI_CHIP_RV635_9593 */
+ 0x9595, /* PCI_CHIP_RV635_9595 */
+ 0x9596, /* PCI_CHIP_RV635_9596 */
+ 0x9597, /* PCI_CHIP_RV635_9597 */
+ 0x9598, /* PCI_CHIP_RV635_9598 */
+ 0x9599, /* PCI_CHIP_RV635_9599 */
+ 0x959B, /* PCI_CHIP_RV635_959B */
+ 0x9610, /* PCI_CHIP_RS780_9610 */
+ 0x9611, /* PCI_CHIP_RS780_9611 */
+ 0x9612, /* PCI_CHIP_RS780_9612 */
+ 0x9613, /* PCI_CHIP_RS780_9613 */
+ 0x9614, /* PCI_CHIP_RS780_9614 */
+ 0x9615, /* PCI_CHIP_RS780_9615 */
+ 0x9616, /* PCI_CHIP_RS780_9616 */
+ 0x9710, /* PCI_CHIP_RS880_9710 */
+ 0x9711, /* PCI_CHIP_RS880_9711 */
+ 0x9712, /* PCI_CHIP_RS880_9712 */
+ 0x9713, /* PCI_CHIP_RS880_9713 */
+ 0x9714, /* PCI_CHIP_RS880_9714 */
+ 0x9715, /* PCI_CHIP_RS880_9715 */
+ 0x9440, /* PCI_CHIP_RV770_9440 */
+ 0x9441, /* PCI_CHIP_RV770_9441 */
+ 0x9442, /* PCI_CHIP_RV770_9442 */
+ 0x9443, /* PCI_CHIP_RV770_9443 */
+ 0x9444, /* PCI_CHIP_RV770_9444 */
+ 0x9446, /* PCI_CHIP_RV770_9446 */
+ 0x944A, /* PCI_CHIP_RV770_944A */
+ 0x944B, /* PCI_CHIP_RV770_944B */
+ 0x944C, /* PCI_CHIP_RV770_944C */
+ 0x944E, /* PCI_CHIP_RV770_944E */
+ 0x9450, /* PCI_CHIP_RV770_9450 */
+ 0x9452, /* PCI_CHIP_RV770_9452 */
+ 0x9456, /* PCI_CHIP_RV770_9456 */
+ 0x945A, /* PCI_CHIP_RV770_945A */
+ 0x945B, /* PCI_CHIP_RV770_945B */
+ 0x945E, /* PCI_CHIP_RV770_945E */
+ 0x9460, /* PCI_CHIP_RV790_9460 */
+ 0x9462, /* PCI_CHIP_RV790_9462 */
+ 0x946A, /* PCI_CHIP_RV770_946A */
+ 0x946B, /* PCI_CHIP_RV770_946B */
+ 0x947A, /* PCI_CHIP_RV770_947A */
+ 0x947B, /* PCI_CHIP_RV770_947B */
+ 0x9480, /* PCI_CHIP_RV730_9480 */
+ 0x9487, /* PCI_CHIP_RV730_9487 */
+ 0x9488, /* PCI_CHIP_RV730_9488 */
+ 0x9489, /* PCI_CHIP_RV730_9489 */
+ 0x948A, /* PCI_CHIP_RV730_948A */
+ 0x948F, /* PCI_CHIP_RV730_948F */
+ 0x9490, /* PCI_CHIP_RV730_9490 */
+ 0x9491, /* PCI_CHIP_RV730_9491 */
+ 0x9495, /* PCI_CHIP_RV730_9495 */
+ 0x9498, /* PCI_CHIP_RV730_9498 */
+ 0x949C, /* PCI_CHIP_RV730_949C */
+ 0x949E, /* PCI_CHIP_RV730_949E */
+ 0x949F, /* PCI_CHIP_RV730_949F */
+ 0x9540, /* PCI_CHIP_RV710_9540 */
+ 0x9541, /* PCI_CHIP_RV710_9541 */
+ 0x9542, /* PCI_CHIP_RV710_9542 */
+ 0x954E, /* PCI_CHIP_RV710_954E */
+ 0x954F, /* PCI_CHIP_RV710_954F */
+ 0x9552, /* PCI_CHIP_RV710_9552 */
+ 0x9553, /* PCI_CHIP_RV710_9553 */
+ 0x9555, /* PCI_CHIP_RV710_9555 */
+ 0x9557, /* PCI_CHIP_RV710_9557 */
+ 0x955F, /* PCI_CHIP_RV710_955F */
+ 0x94A0, /* PCI_CHIP_RV740_94A0 */
+ 0x94A1, /* PCI_CHIP_RV740_94A1 */
+ 0x94A3, /* PCI_CHIP_RV740_94A3 */
+ 0x94B1, /* PCI_CHIP_RV740_94B1 */
+ 0x94B3, /* PCI_CHIP_RV740_94B3 */
+ 0x94B4, /* PCI_CHIP_RV740_94B4 */
+ 0x94B5, /* PCI_CHIP_RV740_94B5 */
+ 0x94B9, /* PCI_CHIP_RV740_94B9 */
+ 0x68E0, /* PCI_CHIP_CEDAR_68E0 */
+ 0x68E1, /* PCI_CHIP_CEDAR_68E1 */
+ 0x68E4, /* PCI_CHIP_CEDAR_68E4 */
+ 0x68E5, /* PCI_CHIP_CEDAR_68E5 */
+ 0x68E8, /* PCI_CHIP_CEDAR_68E8 */
+ 0x68E9, /* PCI_CHIP_CEDAR_68E9 */
+ 0x68F1, /* PCI_CHIP_CEDAR_68F1 */
+ 0x68F8, /* PCI_CHIP_CEDAR_68F8 */
+ 0x68F9, /* PCI_CHIP_CEDAR_68F9 */
+ 0x68FE, /* PCI_CHIP_CEDAR_68FE */
+ 0x68C0, /* PCI_CHIP_REDWOOD_68C0 */
+ 0x68C1, /* PCI_CHIP_REDWOOD_68C1 */
+ 0x68C8, /* PCI_CHIP_REDWOOD_68C8 */
+ 0x68C9, /* PCI_CHIP_REDWOOD_68C9 */
+ 0x68D8, /* PCI_CHIP_REDWOOD_68D8 */
+ 0x68D9, /* PCI_CHIP_REDWOOD_68D9 */
+ 0x68DA, /* PCI_CHIP_REDWOOD_68DA */
+ 0x68DE, /* PCI_CHIP_REDWOOD_68DE */
+ 0x68A0, /* PCI_CHIP_JUNIPER_68A0 */
+ 0x68A1, /* PCI_CHIP_JUNIPER_68A1 */
+ 0x68A8, /* PCI_CHIP_JUNIPER_68A8 */
+ 0x68A9, /* PCI_CHIP_JUNIPER_68A9 */
+ 0x68B0, /* PCI_CHIP_JUNIPER_68B0 */
+ 0x68B8, /* PCI_CHIP_JUNIPER_68B8 */
+ 0x68B9, /* PCI_CHIP_JUNIPER_68B9 */
+ 0x68BE, /* PCI_CHIP_JUNIPER_68BE */
+ 0x6880, /* PCI_CHIP_CYPRESS_6880 */
+ 0x6888, /* PCI_CHIP_CYPRESS_6888 */
+ 0x6889, /* PCI_CHIP_CYPRESS_6889 */
+ 0x688A, /* PCI_CHIP_CYPRESS_688A */
+ 0x6898, /* PCI_CHIP_CYPRESS_6898 */
+ 0x6899, /* PCI_CHIP_CYPRESS_6899 */
+ 0x689E, /* PCI_CHIP_CYPRESS_689E */
+ 0x689C, /* PCI_CHIP_HEMLOCK_689C */
+ 0x689D, /* PCI_CHIP_HEMLOCK_689D */
};
const struct dri2_driver_map driver_map[] = {
{ 0x8086, "i915", i915_chip_ids, ARRAY_SIZE(i915_chip_ids) },
{ 0x8086, "i965", i965_chip_ids, ARRAY_SIZE(i965_chip_ids) },
+ { 0x1002, "radeon", r100_chip_ids, ARRAY_SIZE(r100_chip_ids) },
+ { 0x1002, "r200", r200_chip_ids, ARRAY_SIZE(r200_chip_ids) },
+ { 0x1002, "r300", r300_chip_ids, ARRAY_SIZE(r300_chip_ids) },
+ { 0x1002, "r600", r600_chip_ids, ARRAY_SIZE(r600_chip_ids) },
};
static char *
@@ -1160,7 +1599,7 @@ dri2_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
(void) drv;
- if (_eglIsSurfaceBound(surf))
+ if (!_eglPutSurface(surf))
return EGL_TRUE;
(*dri2_dpy->core->destroyDrawable)(dri2_surf->dri_drawable);
@@ -1187,15 +1626,17 @@ dri2_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf,
struct dri2_egl_surface *dri2_dsurf = dri2_egl_surface(dsurf);
struct dri2_egl_surface *dri2_rsurf = dri2_egl_surface(rsurf);
struct dri2_egl_context *dri2_ctx = dri2_egl_context(ctx);
+ _EGLContext *old_ctx;
+ _EGLSurface *old_dsurf, *old_rsurf;
__DRIdrawable *ddraw, *rdraw;
__DRIcontext *cctx;
- /* bind the new context and return the "orphaned" one */
- if (!_eglBindContext(&ctx, &dsurf, &rsurf))
+ /* make new bindings */
+ if (!_eglBindContext(ctx, dsurf, rsurf, &old_ctx, &old_dsurf, &old_rsurf))
return EGL_FALSE;
/* flush before context switch */
- if (ctx && dri2_drv->glFlush)
+ if (old_ctx && dri2_drv->glFlush)
dri2_drv->glFlush();
ddraw = (dri2_dsurf) ? dri2_dsurf->dri_drawable : NULL;
@@ -1204,16 +1645,29 @@ dri2_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf,
if ((cctx == NULL && ddraw == NULL && rdraw == NULL) ||
dri2_dpy->core->bindContext(cctx, ddraw, rdraw)) {
- if (dsurf && !_eglIsSurfaceLinked(dsurf))
- dri2_destroy_surface(drv, disp, dsurf);
- if (rsurf && rsurf != dsurf && !_eglIsSurfaceLinked(dsurf))
- dri2_destroy_surface(drv, disp, rsurf);
- if (ctx != NULL && !_eglIsContextLinked(ctx))
- dri2_dpy->core->unbindContext(dri2_egl_context(ctx)->dri_context);
+ dri2_destroy_surface(drv, disp, old_dsurf);
+ dri2_destroy_surface(drv, disp, old_rsurf);
+ if (old_ctx) {
+ dri2_dpy->core->unbindContext(dri2_egl_context(old_ctx)->dri_context);
+ /* no destroy? */
+ _eglPutContext(old_ctx);
+ }
return EGL_TRUE;
} else {
- _eglBindContext(&ctx, &dsurf, &rsurf);
+ /* undo the previous _eglBindContext */
+ _eglBindContext(old_ctx, old_dsurf, old_rsurf, &ctx, &dsurf, &rsurf);
+ assert(&dri2_ctx->base == ctx &&
+ &dri2_dsurf->base == dsurf &&
+ &dri2_rsurf->base == rsurf);
+
+ _eglPutSurface(dsurf);
+ _eglPutSurface(rsurf);
+ _eglPutContext(ctx);
+
+ _eglPutSurface(old_dsurf);
+ _eglPutSurface(old_rsurf);
+ _eglPutContext(old_ctx);
return EGL_FALSE;
}
diff --git a/src/egl/drivers/glx/egl_glx.c b/src/egl/drivers/glx/egl_glx.c
index 9bebc61de9..8ec7c48c50 100644
--- a/src/egl/drivers/glx/egl_glx.c
+++ b/src/egl/drivers/glx/egl_glx.c
@@ -452,7 +452,7 @@ create_configs(_EGLDisplay *dpy, struct GLX_egl_display *GLX_dpy,
memcpy(GLX_conf, &template, sizeof(template));
GLX_conf->index = i;
- _eglAddConfig(dpy, &GLX_conf->Base);
+ _eglLinkConfig(&GLX_conf->Base);
id++;
}
}
@@ -677,14 +677,16 @@ GLX_eglMakeCurrent(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf,
struct GLX_egl_surface *GLX_dsurf = GLX_egl_surface(dsurf);
struct GLX_egl_surface *GLX_rsurf = GLX_egl_surface(rsurf);
struct GLX_egl_context *GLX_ctx = GLX_egl_context(ctx);
+ _EGLContext *old_ctx;
+ _EGLSurface *old_dsurf, *old_rsurf;
GLXDrawable ddraw, rdraw;
GLXContext cctx;
EGLBoolean ret = EGL_FALSE;
(void) drv;
- /* bind the new context and return the "orphaned" one */
- if (!_eglBindContext(&ctx, &dsurf, &rsurf))
+ /* make new bindings */
+ if (!_eglBindContext(ctx, dsurf, rsurf, &old_ctx, &old_dsurf, &old_rsurf))
return EGL_FALSE;
ddraw = (GLX_dsurf) ? GLX_dsurf->glx_drawable : None;
@@ -697,13 +699,27 @@ GLX_eglMakeCurrent(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf,
ret = glXMakeCurrent(GLX_dpy->dpy, ddraw, cctx);
if (ret) {
- if (dsurf && !_eglIsSurfaceLinked(dsurf))
- destroy_surface(disp, dsurf);
- if (rsurf && rsurf != dsurf && !_eglIsSurfaceLinked(rsurf))
- destroy_surface(disp, rsurf);
+ if (_eglPutSurface(old_dsurf))
+ destroy_surface(disp, old_dsurf);
+ if (_eglPutSurface(old_rsurf))
+ destroy_surface(disp, old_rsurf);
+ /* no destroy? */
+ _eglPutContext(old_ctx);
}
else {
- _eglBindContext(&ctx, &dsurf, &rsurf);
+ /* undo the previous _eglBindContext */
+ _eglBindContext(old_ctx, old_dsurf, old_rsurf, &ctx, &dsurf, &rsurf);
+ assert(&GLX_ctx->Base == ctx &&
+ &GLX_dsurf->Base == dsurf &&
+ &GLX_rsurf->Base == rsurf);
+
+ _eglPutSurface(dsurf);
+ _eglPutSurface(rsurf);
+ _eglPutContext(ctx);
+
+ _eglPutSurface(old_dsurf);
+ _eglPutSurface(old_rsurf);
+ _eglPutContext(old_ctx);
}
return ret;
@@ -907,7 +923,7 @@ GLX_eglDestroySurface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
{
(void) drv;
- if (!_eglIsSurfaceBound(surf))
+ if (_eglPutSurface(surf))
destroy_surface(disp, surf);
return EGL_TRUE;
diff --git a/src/egl/main/SConscript b/src/egl/main/SConscript
index 8ade85b357..f001b81600 100644
--- a/src/egl/main/SConscript
+++ b/src/egl/main/SConscript
@@ -4,49 +4,49 @@
Import('*')
-if env['platform'] != 'winddk':
-
- env = env.Clone()
-
- env.Append(CPPDEFINES = [
- '_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_WINDOWS',
- '_EGL_DRIVER_SEARCH_DIR=\\"\\"',
- '_EGL_OS_WINDOWS',
- '_EGL_GET_CORE_ADDRESSES',
- 'KHRONOS_DLL_EXPORTS',
- ])
-
- env.Append(CPPPATH = [
- '#/include',
- ])
-
- egl_sources = [
- 'eglapi.c',
- 'eglarray.c',
- 'eglconfig.c',
- 'eglcontext.c',
- 'eglcurrent.c',
- 'egldisplay.c',
- 'egldriver.c',
- 'eglfallbacks.c',
- 'eglglobals.c',
- 'eglimage.c',
- 'egllog.c',
- 'eglmisc.c',
- 'eglmode.c',
- 'eglscreen.c',
- 'eglstring.c',
- 'eglsurface.c',
- 'eglsync.c',
- ]
-
- egl = env.SharedLibrary(
- target = 'libEGL',
- source = egl_sources + ['egl.def'],
- )
-
- env.InstallSharedLibrary(egl, version=(1, 4, 0))
-
- egl = [env.FindIxes(egl, 'LIBPREFIX', 'LIBSUFFIX')]
-
- Export('egl')
+env = env.Clone()
+
+env.Append(CPPDEFINES = [
+ '_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_WINDOWS',
+ '_EGL_DRIVER_SEARCH_DIR=\\"\\"',
+ '_EGL_OS_WINDOWS',
+ '_EGL_GET_CORE_ADDRESSES',
+ 'KHRONOS_DLL_EXPORTS',
+])
+
+env.Append(CPPPATH = [
+ '#/include',
+])
+
+egl_sources = [
+ 'eglapi.c',
+ 'eglarray.c',
+ 'eglconfig.c',
+ 'eglcontext.c',
+ 'eglcurrent.c',
+ 'egldisplay.c',
+ 'egldriver.c',
+ 'eglfallbacks.c',
+ 'eglglobals.c',
+ 'eglimage.c',
+ 'egllog.c',
+ 'eglmisc.c',
+ 'eglmode.c',
+ 'eglscreen.c',
+ 'eglstring.c',
+ 'eglsurface.c',
+ 'eglsync.c',
+]
+
+egl = env.SharedLibrary(
+ target = 'libEGL',
+ source = egl_sources + ['egl.def'],
+)
+
+installed_egl = env.InstallSharedLibrary(egl, version=(1, 4, 0))
+
+env.Alias('egl', installed_egl)
+
+egl = [env.FindIxes(egl, 'LIBPREFIX', 'LIBSUFFIX')]
+
+Export('egl')
diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
index e8f856f6be..efa9e97346 100644
--- a/src/egl/main/eglapi.c
+++ b/src/egl/main/eglapi.c
@@ -416,7 +416,7 @@ eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_list,
RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_NO_CONTEXT);
context = drv->API.CreateContext(drv, disp, conf, share, attrib_list);
- ret = (context) ? _eglLinkContext(context, disp) : EGL_NO_CONTEXT;
+ ret = (context) ? _eglLinkContext(context) : EGL_NO_CONTEXT;
RETURN_EGL_EVAL(disp, ret);
}
@@ -515,7 +515,7 @@ eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
RETURN_EGL_ERROR(disp, EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE);
surf = drv->API.CreateWindowSurface(drv, disp, conf, window, attrib_list);
- ret = (surf) ? _eglLinkSurface(surf, disp) : EGL_NO_SURFACE;
+ ret = (surf) ? _eglLinkSurface(surf) : EGL_NO_SURFACE;
RETURN_EGL_EVAL(disp, ret);
}
@@ -536,7 +536,7 @@ eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
RETURN_EGL_ERROR(disp, EGL_BAD_NATIVE_PIXMAP, EGL_NO_SURFACE);
surf = drv->API.CreatePixmapSurface(drv, disp, conf, pixmap, attrib_list);
- ret = (surf) ? _eglLinkSurface(surf, disp) : EGL_NO_SURFACE;
+ ret = (surf) ? _eglLinkSurface(surf) : EGL_NO_SURFACE;
RETURN_EGL_EVAL(disp, ret);
}
@@ -555,7 +555,7 @@ eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
_EGL_CHECK_CONFIG(disp, conf, EGL_NO_SURFACE, drv);
surf = drv->API.CreatePbufferSurface(drv, disp, conf, attrib_list);
- ret = (surf) ? _eglLinkSurface(surf, disp) : EGL_NO_SURFACE;
+ ret = (surf) ? _eglLinkSurface(surf) : EGL_NO_SURFACE;
RETURN_EGL_EVAL(disp, ret);
}
@@ -648,11 +648,12 @@ eglSwapInterval(EGLDisplay dpy, EGLint interval)
_EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
- if (!ctx || !_eglIsContextLinked(ctx) || ctx->Resource.Display != disp)
+ if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT ||
+ ctx->Resource.Display != disp)
RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_FALSE);
surf = ctx->DrawSurface;
- if (!_eglIsSurfaceLinked(surf))
+ if (_eglGetSurfaceHandle(surf) == EGL_NO_SURFACE)
RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
ret = drv->API.SwapInterval(drv, disp, surf, interval);
@@ -673,7 +674,8 @@ eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
_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)
+ if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT ||
+ surf != ctx->DrawSurface)
RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
ret = drv->API.SwapBuffers(drv, disp, surf);
@@ -714,7 +716,8 @@ eglWaitClient(void)
_eglLockMutex(&disp->Mutex);
/* let bad current context imply bad current surface */
- if (!_eglIsContextLinked(ctx) || !_eglIsSurfaceLinked(ctx->DrawSurface))
+ if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT ||
+ _eglGetSurfaceHandle(ctx->DrawSurface) == EGL_NO_SURFACE)
RETURN_EGL_ERROR(disp, EGL_BAD_CURRENT_SURFACE, EGL_FALSE);
/* a valid current context implies an initialized current display */
@@ -763,7 +766,8 @@ eglWaitNative(EGLint engine)
_eglLockMutex(&disp->Mutex);
/* let bad current context imply bad current surface */
- if (!_eglIsContextLinked(ctx) || !_eglIsSurfaceLinked(ctx->DrawSurface))
+ if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT ||
+ _eglGetSurfaceHandle(ctx->DrawSurface) == EGL_NO_SURFACE)
RETURN_EGL_ERROR(disp, EGL_BAD_CURRENT_SURFACE, EGL_FALSE);
/* a valid current context implies an initialized current display */
@@ -1043,7 +1047,7 @@ eglCreateScreenSurfaceMESA(EGLDisplay dpy, EGLConfig config,
_EGL_CHECK_CONFIG(disp, conf, EGL_NO_SURFACE, drv);
surf = drv->API.CreateScreenSurfaceMESA(drv, disp, conf, attrib_list);
- ret = (surf) ? _eglLinkSurface(surf, disp) : EGL_NO_SURFACE;
+ ret = (surf) ? _eglLinkSurface(surf) : EGL_NO_SURFACE;
RETURN_EGL_EVAL(disp, ret);
}
@@ -1235,7 +1239,7 @@ eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype,
surf = drv->API.CreatePbufferFromClientBuffer(drv, disp, buftype, buffer,
conf, attrib_list);
- ret = (surf) ? _eglLinkSurface(surf, disp) : EGL_NO_SURFACE;
+ ret = (surf) ? _eglLinkSurface(surf) : EGL_NO_SURFACE;
RETURN_EGL_EVAL(disp, ret);
}
@@ -1298,7 +1302,7 @@ eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target,
img = drv->API.CreateImageKHR(drv,
disp, context, target, buffer, attr_list);
- ret = (img) ? _eglLinkImage(img, disp) : EGL_NO_IMAGE_KHR;
+ ret = (img) ? _eglLinkImage(img) : EGL_NO_IMAGE_KHR;
RETURN_EGL_EVAL(disp, ret);
}
@@ -1344,7 +1348,7 @@ eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
RETURN_EGL_EVAL(disp, EGL_NO_SYNC_KHR);
sync = drv->API.CreateSyncKHR(drv, disp, type, attrib_list);
- ret = (sync) ? _eglLinkSync(sync, disp) : EGL_NO_SYNC_KHR;
+ ret = (sync) ? _eglLinkSync(sync) : EGL_NO_SYNC_KHR;
RETURN_EGL_EVAL(disp, ret);
}
@@ -1437,7 +1441,8 @@ eglSwapBuffersRegionNOK(EGLDisplay dpy, EGLSurface surface,
RETURN_EGL_EVAL(disp, EGL_FALSE);
/* surface must be bound to current context in EGL 1.4 */
- if (!ctx || !_eglIsContextLinked(ctx) || surf != ctx->DrawSurface)
+ if (_eglGetContextHandle(ctx) == EGL_NO_CONTEXT ||
+ surf != ctx->DrawSurface)
RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
ret = drv->API.SwapBuffersRegionNOK(drv, disp, surf, numRects, rects);
@@ -1463,7 +1468,7 @@ eglCreateDRMImageMESA(EGLDisplay dpy, const EGLint *attr_list)
RETURN_EGL_EVAL(disp, EGL_NO_IMAGE_KHR);
img = drv->API.CreateDRMImageMESA(drv, disp, attr_list);
- ret = (img) ? _eglLinkImage(img, disp) : EGL_NO_IMAGE_KHR;
+ ret = (img) ? _eglLinkImage(img) : EGL_NO_IMAGE_KHR;
RETURN_EGL_EVAL(disp, ret);
}
diff --git a/src/egl/main/eglarray.h b/src/egl/main/eglarray.h
index fe92efc11e..c8309fb066 100644
--- a/src/egl/main/eglarray.h
+++ b/src/egl/main/eglarray.h
@@ -37,7 +37,7 @@ void *
_eglFindArray(_EGLArray *array, void *elem);
-void **
+PUBLIC void **
_eglFilterArray(_EGLArray *array, EGLint *size,
_EGLArrayForEach filter, void *filter_data);
diff --git a/src/egl/main/eglconfig.c b/src/egl/main/eglconfig.c
index 4d313a9bb5..fec94fb20c 100644
--- a/src/egl/main/eglconfig.c
+++ b/src/egl/main/eglconfig.c
@@ -40,16 +40,18 @@ _eglInitConfig(_EGLConfig *conf, _EGLDisplay *dpy, EGLint id)
/**
- * Link a config to a display and return the handle of the link.
+ * Link a config to its display and return the handle of the link.
* The handle can be passed to client directly.
*
* Note that we just save the ptr to the config (we don't copy the config).
*/
-EGLConfig
-_eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf)
+PUBLIC EGLConfig
+_eglLinkConfig(_EGLConfig *conf)
{
+ _EGLDisplay *dpy = conf->Display;
+
/* sanity check */
- assert(conf->ConfigID > 0);
+ assert(dpy && conf->ConfigID > 0);
if (!dpy->Configs) {
dpy->Configs = _eglCreateArray("Config", 16);
@@ -57,23 +59,29 @@ _eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf)
return (EGLConfig) NULL;
}
- conf->Display = dpy;
_eglAppendArray(dpy->Configs, (void *) conf);
return (EGLConfig) conf;
}
-EGLBoolean
-_eglCheckConfigHandle(EGLConfig config, _EGLDisplay *dpy)
+/**
+ * Lookup a handle to find the linked config.
+ * Return NULL if the handle has no corresponding linked config.
+ */
+_EGLConfig *
+_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy)
{
_EGLConfig *conf;
+ if (!dpy)
+ return NULL;
+
conf = (_EGLConfig *) _eglFindArray(dpy->Configs, (void *) config);
if (conf)
assert(conf->Display == dpy);
- return (conf != NULL);
+ return conf;
}
@@ -464,10 +472,13 @@ _eglIsConfigAttribValid(_EGLConfig *conf, EGLint attr)
* Return EGL_FALSE if any of the attribute is invalid.
*/
EGLBoolean
-_eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list)
+_eglParseConfigAttribList(_EGLConfig *conf, _EGLDisplay *dpy,
+ const EGLint *attrib_list)
{
EGLint attr, val, i;
+ _eglInitConfig(conf, dpy, EGL_DONT_CARE);
+
/* reset to default values */
for (i = 0; i < ARRAY_SIZE(_eglValidationTable); i++) {
attr = _eglValidationTable[i].attr;
@@ -494,7 +505,7 @@ _eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list)
return EGL_FALSE;
/* ignore other attributes when EGL_CONFIG_ID is given */
- if (conf->ConfigID > 0) {
+ if (conf->ConfigID != EGL_DONT_CARE) {
for (i = 0; i < ARRAY_SIZE(_eglValidationTable); i++) {
attr = _eglValidationTable[i].attr;
if (attr != EGL_CONFIG_ID)
@@ -683,8 +694,7 @@ _eglChooseConfig(_EGLDriver *drv, _EGLDisplay *disp, const EGLint *attrib_list,
if (!num_configs)
return _eglError(EGL_BAD_PARAMETER, "eglChooseConfigs");
- _eglInitConfig(&criteria, disp, 0);
- if (!_eglParseConfigAttribList(&criteria, attrib_list))
+ if (!_eglParseConfigAttribList(&criteria, disp, attrib_list))
return _eglError(EGL_BAD_ATTRIBUTE, "eglChooseConfig");
configList = (_EGLConfig **) _eglFilterArray(disp->Configs, &count,
diff --git a/src/egl/main/eglconfig.h b/src/egl/main/eglconfig.h
index 892815fa63..2169960fd1 100644
--- a/src/egl/main/eglconfig.h
+++ b/src/egl/main/eglconfig.h
@@ -3,6 +3,7 @@
#include <assert.h>
+#include <stddef.h>
#include "egltypedefs.h"
@@ -136,34 +137,20 @@ _eglInitConfig(_EGLConfig *config, _EGLDisplay *dpy, EGLint id);
PUBLIC EGLConfig
-_eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf);
+_eglLinkConfig(_EGLConfig *conf);
-extern EGLBoolean
-_eglCheckConfigHandle(EGLConfig config, _EGLDisplay *dpy);
-
-
-/**
- * Lookup a handle to find the linked config.
- * Return NULL if the handle has no corresponding linked config.
- */
-static INLINE _EGLConfig *
-_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy)
-{
- _EGLConfig *conf = (_EGLConfig *) config;
- if (!dpy || !_eglCheckConfigHandle(config, dpy))
- conf = NULL;
- return conf;
-}
+extern _EGLConfig *
+_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy);
/**
- * Return the handle of a linked config, or NULL.
+ * Return the handle of a linked config.
*/
static INLINE EGLConfig
_eglGetConfigHandle(_EGLConfig *conf)
{
- return (EGLConfig) ((conf && conf->Display) ? conf : NULL);
+ return (EGLConfig) conf;
}
@@ -176,7 +163,8 @@ _eglMatchConfig(const _EGLConfig *conf, const _EGLConfig *criteria);
PUBLIC EGLBoolean
-_eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list);
+_eglParseConfigAttribList(_EGLConfig *conf, _EGLDisplay *dpy,
+ const EGLint *attrib_list);
PUBLIC EGLint
diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c
index 113e4e48fb..33dcfa6875 100644
--- a/src/egl/main/eglcontext.c
+++ b/src/egl/main/eglcontext.c
@@ -103,8 +103,7 @@ _eglInitContext(_EGLContext *ctx, _EGLDisplay *dpy, _EGLConfig *conf,
return EGL_FALSE;
}
- memset(ctx, 0, sizeof(_EGLContext));
- ctx->Resource.Display = dpy;
+ _eglInitResource(&ctx->Resource, sizeof(*ctx), dpy);
ctx->ClientAPI = api;
ctx->Config = conf;
ctx->WindowRenderBuffer = EGL_NONE;
@@ -250,10 +249,6 @@ _eglCheckMakeCurrent(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read)
if (!surfaceless && (draw == NULL || read == NULL))
return _eglError(EGL_BAD_MATCH, "eglMakeCurrent");
- /* context stealing from another thread is not allowed */
- if (ctx->Binding && ctx->Binding != t)
- return _eglError(EGL_BAD_ACCESS, "eglMakeCurrent");
-
/*
* The spec says
*
@@ -261,16 +256,23 @@ _eglCheckMakeCurrent(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read)
* bound to contexts in another thread, an EGL_BAD_ACCESS error is
* generated."
*
- * But it also says
+ * and
*
* "at most one context may be bound to a particular surface at a given
* time"
- *
- * The latter is more restrictive so we can check only the latter case.
*/
- if ((draw && draw->CurrentContext && draw->CurrentContext != ctx) ||
- (read && read->CurrentContext && read->CurrentContext != ctx))
+ if (ctx->Binding && ctx->Binding != t)
return _eglError(EGL_BAD_ACCESS, "eglMakeCurrent");
+ if (draw && draw->CurrentContext && draw->CurrentContext != ctx) {
+ if (draw->CurrentContext->Binding != t ||
+ draw->CurrentContext->ClientAPI != ctx->ClientAPI)
+ return _eglError(EGL_BAD_ACCESS, "eglMakeCurrent");
+ }
+ if (read && read->CurrentContext && read->CurrentContext != ctx) {
+ if (read->CurrentContext->Binding != t ||
+ read->CurrentContext->ClientAPI != ctx->ClientAPI)
+ return _eglError(EGL_BAD_ACCESS, "eglMakeCurrent");
+ }
/* simply require the configs to be equal */
if ((draw && draw->Config != ctx->Config) ||
@@ -301,54 +303,65 @@ _eglCheckMakeCurrent(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read)
/**
* Bind the context to the current thread and given surfaces. Return the
- * "orphaned" context and surfaces. Each argument is both input and output.
+ * previous bound context and surfaces. The caller should unreference the
+ * returned context and surfaces.
+ *
+ * Making a second call with the resources returned by the first call
+ * unsurprisingly undoes the first call, except for the resouce reference
+ * counts.
*/
EGLBoolean
-_eglBindContext(_EGLContext **ctx, _EGLSurface **draw, _EGLSurface **read)
+_eglBindContext(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read,
+ _EGLContext **old_ctx,
+ _EGLSurface **old_draw, _EGLSurface **old_read)
{
_EGLThreadInfo *t = _eglGetCurrentThread();
- _EGLContext *newCtx = *ctx, *oldCtx;
- _EGLSurface *newDraw = *draw, *newRead = *read;
+ _EGLContext *prev_ctx;
+ _EGLSurface *prev_draw, *prev_read;
- if (!_eglCheckMakeCurrent(newCtx, newDraw, newRead))
+ if (!_eglCheckMakeCurrent(ctx, draw, read))
return EGL_FALSE;
+ /* increment refcounts before binding */
+ _eglGetContext(ctx);
+ _eglGetSurface(draw);
+ _eglGetSurface(read);
+
/* bind the new context */
- oldCtx = _eglBindContextToThread(newCtx, t);
+ prev_ctx = _eglBindContextToThread(ctx, t);
- /* break old bindings */
- if (oldCtx) {
- *ctx = oldCtx;
- *draw = oldCtx->DrawSurface;
- *read = oldCtx->ReadSurface;
+ /* break previous bindings */
+ if (prev_ctx) {
+ prev_draw = prev_ctx->DrawSurface;
+ prev_read = prev_ctx->ReadSurface;
- if (*draw)
- (*draw)->CurrentContext = NULL;
- if (*read)
- (*read)->CurrentContext = NULL;
+ if (prev_draw)
+ prev_draw->CurrentContext = NULL;
+ if (prev_read)
+ prev_read->CurrentContext = NULL;
- oldCtx->DrawSurface = NULL;
- oldCtx->ReadSurface = NULL;
+ prev_ctx->DrawSurface = NULL;
+ prev_ctx->ReadSurface = NULL;
+ }
+ else {
+ prev_draw = prev_read = NULL;
}
/* establish new bindings */
- if (newCtx) {
- if (newDraw)
- newDraw->CurrentContext = newCtx;
- if (newRead)
- newRead->CurrentContext = newCtx;
-
- newCtx->DrawSurface = newDraw;
- newCtx->ReadSurface = newRead;
+ if (ctx) {
+ if (draw)
+ draw->CurrentContext = ctx;
+ if (read)
+ read->CurrentContext = ctx;
+
+ ctx->DrawSurface = draw;
+ ctx->ReadSurface = read;
}
- /* an old context or surface is not orphaned if it is still bound */
- if (*ctx == newCtx)
- *ctx = NULL;
- if (*draw == newDraw || *draw == newRead)
- *draw = NULL;
- if (*read == newDraw || *read == newRead)
- *read = NULL;
+ assert(old_ctx && old_draw && old_read);
+ *old_ctx = prev_ctx;
+ *old_draw = prev_draw;
+ *old_read = prev_read;
return EGL_TRUE;
}
diff --git a/src/egl/main/eglcontext.h b/src/egl/main/eglcontext.h
index 148f160cae..8cd0df1731 100644
--- a/src/egl/main/eglcontext.h
+++ b/src/egl/main/eglcontext.h
@@ -39,30 +39,41 @@ _eglQueryContext(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx, EGLint att
PUBLIC EGLBoolean
-_eglBindContext(_EGLContext **ctx, _EGLSurface **draw, _EGLSurface **read);
+_eglBindContext(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read,
+ _EGLContext **old_ctx,
+ _EGLSurface **old_draw, _EGLSurface **old_read);
/**
- * Return true if the context is bound to a thread.
- *
- * The binding is considered a reference to the context. Drivers should not
- * destroy a context when it is bound.
+ * Increment reference count for the context.
+ */
+static INLINE _EGLContext *
+_eglGetContext(_EGLContext *ctx)
+{
+ if (ctx)
+ _eglGetResource(&ctx->Resource);
+ return ctx;
+}
+
+
+/**
+ * Decrement reference count for the context.
*/
static INLINE EGLBoolean
-_eglIsContextBound(_EGLContext *ctx)
+_eglPutContext(_EGLContext *ctx)
{
- return (ctx->Binding != NULL);
+ return (ctx) ? _eglPutResource(&ctx->Resource) : EGL_FALSE;
}
/**
- * Link a context to a display and return the handle of the link.
+ * Link a context to its display and return the handle of the link.
* The handle can be passed to client directly.
*/
static INLINE EGLContext
-_eglLinkContext(_EGLContext *ctx, _EGLDisplay *dpy)
+_eglLinkContext(_EGLContext *ctx)
{
- _eglLinkResource(&ctx->Resource, _EGL_RESOURCE_CONTEXT, dpy);
+ _eglLinkResource(&ctx->Resource, _EGL_RESOURCE_CONTEXT);
return (EGLContext) ctx;
}
@@ -104,18 +115,4 @@ _eglGetContextHandle(_EGLContext *ctx)
}
-/**
- * Return true if the context is linked to a display.
- *
- * The link is considered a reference to the context (the display is owning the
- * context). Drivers should not destroy a context when it is linked.
- */
-static INLINE EGLBoolean
-_eglIsContextLinked(_EGLContext *ctx)
-{
- _EGLResource *res = (_EGLResource *) ctx;
- return (res && _eglIsResourceLinked(res));
-}
-
-
#endif /* EGLCONTEXT_INCLUDED */
diff --git a/src/egl/main/eglcurrent.c b/src/egl/main/eglcurrent.c
index c0e8c119a9..cbca9ff2c2 100644
--- a/src/egl/main/eglcurrent.c
+++ b/src/egl/main/eglcurrent.c
@@ -14,33 +14,7 @@
static _EGLThreadInfo dummy_thread = _EGL_THREAD_INFO_INITIALIZER;
-#ifdef GLX_USE_TLS
-static __thread const _EGLThreadInfo *_egl_TSD
- __attribute__ ((tls_model("initial-exec")));
-
-static INLINE void _eglSetTSD(const _EGLThreadInfo *t)
-{
- _egl_TSD = t;
-}
-
-static INLINE _EGLThreadInfo *_eglGetTSD(void)
-{
- return (_EGLThreadInfo *) _egl_TSD;
-}
-
-static INLINE void _eglFiniTSD(void)
-{
-}
-
-static INLINE EGLBoolean _eglInitTSD(void (*dtor)(_EGLThreadInfo *))
-{
- /* TODO destroy TSD */
- (void) dtor;
- (void) _eglFiniTSD;
- return EGL_TRUE;
-}
-
-#elif PTHREADS
+#if PTHREADS
#include <pthread.h>
static _EGL_DECLARE_MUTEX(_egl_TSDMutex);
@@ -48,14 +22,26 @@ static EGLBoolean _egl_TSDInitialized;
static pthread_key_t _egl_TSD;
static void (*_egl_FreeTSD)(_EGLThreadInfo *);
+#ifdef GLX_USE_TLS
+static __thread const _EGLThreadInfo *_egl_TLS
+ __attribute__ ((tls_model("initial-exec")));
+#endif
+
static INLINE void _eglSetTSD(const _EGLThreadInfo *t)
{
pthread_setspecific(_egl_TSD, (const void *) t);
+#ifdef GLX_USE_TLS
+ _egl_TLS = t;
+#endif
}
static INLINE _EGLThreadInfo *_eglGetTSD(void)
{
+#ifdef GLX_USE_TLS
+ return (_EGLThreadInfo *) _egl_TLS;
+#else
return (_EGLThreadInfo *) pthread_getspecific(_egl_TSD);
+#endif
}
static INLINE void _eglFiniTSD(void)
diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c
index cc0f03e01b..565e44d2d2 100644
--- a/src/egl/main/egldisplay.c
+++ b/src/egl/main/egldisplay.c
@@ -233,17 +233,53 @@ _eglCheckResource(void *res, _EGLResourceType type, _EGLDisplay *dpy)
/**
- * Link a resource to a display.
+ * Initialize a display resource.
*/
void
-_eglLinkResource(_EGLResource *res, _EGLResourceType type, _EGLDisplay *dpy)
+_eglInitResource(_EGLResource *res, EGLint size, _EGLDisplay *dpy)
{
- assert(!res->Display || res->Display == dpy);
-
+ memset(res, 0, size);
res->Display = dpy;
+ res->RefCount = 1;
+}
+
+
+/**
+ * Increment reference count for the resource.
+ */
+void
+_eglGetResource(_EGLResource *res)
+{
+ assert(res && res->RefCount > 0);
+ /* hopefully a resource is always manipulated with its display locked */
+ res->RefCount++;
+}
+
+
+/**
+ * Decrement reference count for the resource.
+ */
+EGLBoolean
+_eglPutResource(_EGLResource *res)
+{
+ assert(res && res->RefCount > 0);
+ res->RefCount--;
+ return (!res->RefCount);
+}
+
+
+/**
+ * Link a resource to its display.
+ */
+void
+_eglLinkResource(_EGLResource *res, _EGLResourceType type)
+{
+ assert(res->Display);
+
res->IsLinked = EGL_TRUE;
- res->Next = dpy->ResourceLists[type];
- dpy->ResourceLists[type] = res;
+ res->Next = res->Display->ResourceLists[type];
+ res->Display->ResourceLists[type] = res;
+ _eglGetResource(res);
}
@@ -270,6 +306,9 @@ _eglUnlinkResource(_EGLResource *res, _EGLResourceType type)
}
res->Next = NULL;
- /* do not reset res->Display */
res->IsLinked = EGL_FALSE;
+ _eglPutResource(res);
+
+ /* We always unlink before destroy. The driver still owns a reference */
+ assert(res->RefCount);
}
diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h
index 3863cce010..bcba05480a 100644
--- a/src/egl/main/egldisplay.h
+++ b/src/egl/main/egldisplay.h
@@ -40,6 +40,7 @@ struct _egl_resource
/* which display the resource belongs to */
_EGLDisplay *Display;
EGLBoolean IsLinked;
+ EGLint RefCount;
/* used to link resources of the same type */
_EGLResource *Next;
@@ -162,7 +163,19 @@ _eglGetDisplayHandle(_EGLDisplay *dpy)
extern void
-_eglLinkResource(_EGLResource *res, _EGLResourceType type, _EGLDisplay *dpy);
+_eglInitResource(_EGLResource *res, EGLint size, _EGLDisplay *dpy);
+
+
+PUBLIC void
+_eglGetResource(_EGLResource *res);
+
+
+PUBLIC EGLBoolean
+_eglPutResource(_EGLResource *res);
+
+
+extern void
+_eglLinkResource(_EGLResource *res, _EGLResourceType type);
extern void
diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c
index 2359253ff1..ff0011c4b1 100644
--- a/src/egl/main/egldriver.c
+++ b/src/egl/main/egldriver.c
@@ -395,35 +395,62 @@ _eglPreloadForEach(const char *search_path,
static const char *
_eglGetSearchPath(void)
{
- static const char *search_path;
+ static char search_path[1024];
#if defined(_EGL_OS_UNIX) || defined(_EGL_OS_WINDOWS)
- if (!search_path) {
- static char buffer[1024];
- const char *p;
+ if (search_path[0] == '\0') {
+ char *buf = search_path;
+ size_t len = sizeof(search_path);
+ EGLBoolean use_env;
+ char dir_sep;
int ret;
- p = getenv("EGL_DRIVERS_PATH");
#if defined(_EGL_OS_UNIX)
- if (p && (geteuid() != getuid() || getegid() != getgid())) {
+ use_env = (geteuid() == getuid() && getegid() == getgid());
+ dir_sep = '/';
+#else
+ use_env = EGL_TRUE;
+ dir_sep = '\\';
+#endif
+
+ if (use_env) {
+ char *p;
+
+ /* extract the dirname from EGL_DRIVER */
+ p = getenv("EGL_DRIVER");
+ if (p && strchr(p, dir_sep)) {
+ ret = _eglsnprintf(buf, len, "%s", p);
+ if (ret > 0 && ret < len) {
+ p = strrchr(buf, dir_sep);
+ *p++ = ':';
+
+ len -= p - buf;
+ buf = p;
+ }
+ }
+
+ /* append EGL_DRIVERS_PATH */
+ p = getenv("EGL_DRIVERS_PATH");
+ if (p) {
+ ret = _eglsnprintf(buf, len, "%s:", p);
+ if (ret > 0 && ret < len) {
+ buf += ret;
+ len -= ret;
+ }
+ }
+ }
+ else {
_eglLog(_EGL_DEBUG,
"ignore EGL_DRIVERS_PATH for setuid/setgid binaries");
- p = NULL;
}
-#endif /* _EGL_OS_UNIX */
- if (p) {
- ret = _eglsnprintf(buffer, sizeof(buffer),
- "%s:%s", p, _EGL_DRIVER_SEARCH_DIR);
- if (ret > 0 && ret < sizeof(buffer))
- search_path = buffer;
- }
+ ret = _eglsnprintf(buf, len, "%s", _EGL_DRIVER_SEARCH_DIR);
+ if (ret < 0 || ret >= len)
+ search_path[0] = '\0';
+
+ _eglLog(_EGL_DEBUG, "EGL search path is %s", search_path);
}
- if (!search_path)
- search_path = _EGL_DRIVER_SEARCH_DIR;
-#else
- search_path = "";
-#endif
+#endif /* defined(_EGL_OS_UNIX) || defined(_EGL_OS_WINDOWS) */
return search_path;
}
diff --git a/src/egl/main/egldriver.h b/src/egl/main/egldriver.h
index 1ca7c6cd93..1a0aaad1f8 100644
--- a/src/egl/main/egldriver.h
+++ b/src/egl/main/egldriver.h
@@ -4,7 +4,7 @@
#include "egltypedefs.h"
#include "eglapi.h"
-
+#include <stddef.h>
/**
* Define an inline driver typecast function.
diff --git a/src/egl/main/eglimage.c b/src/egl/main/eglimage.c
index af4a29fb0e..6d4ee4e08b 100644
--- a/src/egl/main/eglimage.c
+++ b/src/egl/main/eglimage.c
@@ -2,7 +2,6 @@
#include <string.h>
#include "eglimage.h"
-#include "eglcurrent.h"
#include "egllog.h"
@@ -81,8 +80,7 @@ _eglParseImageAttribList(_EGLImageAttribs *attrs, _EGLDisplay *dpy,
EGLBoolean
_eglInitImage(_EGLImage *img, _EGLDisplay *dpy)
{
- memset(img, 0, sizeof(_EGLImage));
- img->Resource.Display = dpy;
+ _eglInitResource(&img->Resource, sizeof(*img), dpy);
return EGL_TRUE;
}
diff --git a/src/egl/main/eglimage.h b/src/egl/main/eglimage.h
index 7cd92c1125..adb939a9e0 100644
--- a/src/egl/main/eglimage.h
+++ b/src/egl/main/eglimage.h
@@ -43,13 +43,35 @@ _eglInitImage(_EGLImage *img, _EGLDisplay *dpy);
/**
- * Link an image to a display and return the handle of the link.
+ * Increment reference count for the image.
+ */
+static INLINE _EGLImage *
+_eglGetImage(_EGLImage *img)
+{
+ if (img)
+ _eglGetResource(&img->Resource);
+ return img;
+}
+
+
+/**
+ * Decrement reference count for the image.
+ */
+static INLINE EGLBoolean
+_eglPutImage(_EGLImage *img)
+{
+ return (img) ? _eglPutResource(&img->Resource) : EGL_FALSE;
+}
+
+
+/**
+ * Link an image to its display and return the handle of the link.
* The handle can be passed to client directly.
*/
static INLINE EGLImageKHR
-_eglLinkImage(_EGLImage *img, _EGLDisplay *dpy)
+_eglLinkImage(_EGLImage *img)
{
- _eglLinkResource(&img->Resource, _EGL_RESOURCE_IMAGE, dpy);
+ _eglLinkResource(&img->Resource, _EGL_RESOURCE_IMAGE);
return (EGLImageKHR) img;
}
@@ -91,15 +113,4 @@ _eglGetImageHandle(_EGLImage *img)
}
-/**
- * Return true if the image is linked to a display.
- */
-static INLINE EGLBoolean
-_eglIsImageLinked(_EGLImage *img)
-{
- _EGLResource *res = (_EGLResource *) img;
- return (res && _eglIsResourceLinked(res));
-}
-
-
#endif /* EGLIMAGE_INCLUDED */
diff --git a/src/egl/main/egllog.c b/src/egl/main/egllog.c
index 8f3bae2243..12c55f901a 100644
--- a/src/egl/main/egllog.c
+++ b/src/egl/main/egllog.c
@@ -151,6 +151,7 @@ _eglLog(EGLint level, const char *fmtStr, ...)
{
va_list args;
char msg[MAXSTRING];
+ int ret;
/* one-time initialization; a little race here is fine */
if (!logging.initialized)
@@ -162,7 +163,9 @@ _eglLog(EGLint level, const char *fmtStr, ...)
if (logging.logger) {
va_start(args, fmtStr);
- vsnprintf(msg, MAXSTRING, fmtStr, args);
+ ret = vsnprintf(msg, MAXSTRING, fmtStr, args);
+ if (ret < 0 || ret >= MAXSTRING)
+ strcpy(msg, "<message truncated>");
va_end(args);
logging.logger(level, msg);
diff --git a/src/egl/main/eglmode.c b/src/egl/main/eglmode.c
index ed107d5d7a..a9653496c3 100644
--- a/src/egl/main/eglmode.c
+++ b/src/egl/main/eglmode.c
@@ -3,11 +3,9 @@
#include <string.h>
#include "egldisplay.h"
-#include "egldriver.h"
#include "eglmode.h"
#include "eglcurrent.h"
#include "eglscreen.h"
-#include "eglstring.h"
#ifdef EGL_MESA_screen_surface
@@ -31,56 +29,24 @@ _eglLookupMode(EGLModeMESA mode, _EGLDisplay *disp)
/* loop over all screens on the display */
for (scrnum = 0; scrnum < disp->Screens->Size; scrnum++) {
const _EGLScreen *scrn = disp->Screens->Elements[scrnum];
- EGLint i;
- /* search list of modes for handle */
- for (i = 0; i < scrn->NumModes; i++) {
- if (scrn->Modes[i].Handle == mode) {
- return scrn->Modes + i;
- }
- }
- }
+ EGLint idx;
- return NULL;
-}
+ /*
+ * the mode ids of a screen ranges from scrn->Handle to scrn->Handle +
+ * scrn->NumModes
+ */
+ if (mode >= scrn->Handle &&
+ mode < scrn->Handle + _EGL_SCREEN_MAX_MODES) {
+ idx = mode - scrn->Handle;
+ assert(idx < scrn->NumModes && scrn->Modes[idx].Handle == mode);
-/**
- * Add a new mode with the given attributes (width, height, depth, refreshRate)
- * to the given screen.
- * Assign a new mode ID/handle to the mode as well.
- * \return pointer to the new _EGLMode
- */
-_EGLMode *
-_eglAddNewMode(_EGLScreen *screen, EGLint width, EGLint height,
- EGLint refreshRate, const char *name)
-{
- EGLint n;
- _EGLMode *newModes;
-
- assert(screen);
- assert(width > 0);
- assert(height > 0);
- assert(refreshRate > 0);
-
- n = screen->NumModes;
- newModes = (_EGLMode *) realloc(screen->Modes, (n+1) * sizeof(_EGLMode));
- if (newModes) {
- screen->Modes = newModes;
- screen->Modes[n].Handle = n + 1;
- screen->Modes[n].Width = width;
- screen->Modes[n].Height = height;
- screen->Modes[n].RefreshRate = refreshRate;
- screen->Modes[n].Optimal = EGL_FALSE;
- screen->Modes[n].Interlaced = EGL_FALSE;
- screen->Modes[n].Name = _eglstrdup(name);
- screen->NumModes++;
- return screen->Modes + n;
- }
- else {
- return NULL;
+ return &scrn->Modes[idx];
+ }
}
-}
+ return NULL;
+}
/**
diff --git a/src/egl/main/eglmode.h b/src/egl/main/eglmode.h
index 9167cbc4b9..ed4eb2c34a 100644
--- a/src/egl/main/eglmode.h
+++ b/src/egl/main/eglmode.h
@@ -32,11 +32,6 @@ extern _EGLMode *
_eglLookupMode(EGLModeMESA mode, _EGLDisplay *dpy);
-PUBLIC _EGLMode *
-_eglAddNewMode(_EGLScreen *screen, EGLint width, EGLint height,
- EGLint refreshRate, const char *name);
-
-
extern EGLBoolean
_eglChooseModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn,
const EGLint *attrib_list, EGLModeMESA *modes,
diff --git a/src/egl/main/eglscreen.c b/src/egl/main/eglscreen.c
index 2ae403494e..3abe85ff22 100644
--- a/src/egl/main/eglscreen.c
+++ b/src/egl/main/eglscreen.c
@@ -18,7 +18,6 @@
#include "egldisplay.h"
#include "eglcurrent.h"
#include "eglmode.h"
-#include "eglconfig.h"
#include "eglsurface.h"
#include "eglscreen.h"
#include "eglmutex.h"
@@ -42,7 +41,8 @@ _eglAllocScreenHandle(void)
EGLScreenMESA s;
_eglLockMutex(&_eglNextScreenHandleMutex);
- s = _eglNextScreenHandle++;
+ s = _eglNextScreenHandle;
+ _eglNextScreenHandle += _EGL_SCREEN_MAX_MODES;
_eglUnlockMutex(&_eglNextScreenHandleMutex);
return s;
@@ -53,60 +53,80 @@ _eglAllocScreenHandle(void)
* Initialize an _EGLScreen object to default values.
*/
void
-_eglInitScreen(_EGLScreen *screen)
+_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy, EGLint num_modes)
{
memset(screen, 0, sizeof(_EGLScreen));
+
+ screen->Display = dpy;
+ screen->NumModes = num_modes;
screen->StepX = 1;
screen->StepY = 1;
+
+ if (num_modes > _EGL_SCREEN_MAX_MODES)
+ num_modes = _EGL_SCREEN_MAX_MODES;
+ screen->Modes = (_EGLMode *) calloc(num_modes, sizeof(*screen->Modes));
+ screen->NumModes = (screen->Modes) ? num_modes : 0;
}
/**
- * Given a public screen handle, return the internal _EGLScreen object.
+ * Link a screen to its display and return the handle of the link.
+ * The handle can be passed to client directly.
*/
-_EGLScreen *
-_eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *display)
+EGLScreenMESA
+_eglLinkScreen(_EGLScreen *screen)
{
+ _EGLDisplay *display;
EGLint i;
- if (!display || !display->Screens)
- return NULL;
+ assert(screen && screen->Display);
+ display = screen->Display;
- for (i = 0; i < display->Screens->Size; i++) {
- _EGLScreen *scr = (_EGLScreen *) display->Screens->Elements[i];
- if (scr->Handle == screen)
- return scr;
+ if (!display->Screens) {
+ display->Screens = _eglCreateArray("Screen", 4);
+ if (!display->Screens)
+ return (EGLScreenMESA) 0;
}
- return NULL;
+
+ screen->Handle = _eglAllocScreenHandle();
+ for (i = 0; i < screen->NumModes; i++)
+ screen->Modes[i].Handle = screen->Handle + i;
+
+ _eglAppendArray(display->Screens, (void *) screen);
+
+ return screen->Handle;
}
/**
- * Add the given _EGLScreen to the display's list of screens.
+ * Lookup a handle to find the linked config.
+ * Return NULL if the handle has no corresponding linked config.
*/
-void
-_eglAddScreen(_EGLDisplay *display, _EGLScreen *screen)
+_EGLScreen *
+_eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *display)
{
- assert(display);
- assert(screen);
+ EGLint i;
- if (!display->Screens) {
- display->Screens = _eglCreateArray("Screen", 4);
- if (!display->Screens)
- return;
+ if (!display || !display->Screens)
+ return NULL;
+
+ for (i = 0; i < display->Screens->Size; i++) {
+ _EGLScreen *scr = (_EGLScreen *) display->Screens->Elements[i];
+ if (scr->Handle == screen) {
+ assert(scr->Display == display);
+ return scr;
+ }
}
- screen->Handle = _eglAllocScreenHandle();
- _eglAppendArray(display->Screens, (void *) screen);
+ return NULL;
}
-
static EGLBoolean
_eglFlattenScreen(void *elem, void *buffer)
{
_EGLScreen *scr = (_EGLScreen *) elem;
EGLScreenMESA *handle = (EGLScreenMESA *) buffer;
- *handle = scr->Handle;
+ *handle = _eglGetScreenHandle(scr);
return EGL_TRUE;
}
@@ -123,22 +143,6 @@ _eglGetScreensMESA(_EGLDriver *drv, _EGLDisplay *display, EGLScreenMESA *screens
/**
- * Set a screen's current display mode.
- * Note: mode = EGL_NO_MODE is valid (turns off the screen)
- *
- * This is just a placeholder function; drivers will always override
- * this with code that _really_ sets the mode.
- */
-EGLBoolean
-_eglScreenModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn,
- _EGLMode *m)
-{
- scrn->CurrentMode = m;
- return EGL_TRUE;
-}
-
-
-/**
* Set a screen's surface origin.
*/
EGLBoolean
@@ -198,33 +202,4 @@ _eglQueryScreenMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn,
}
-/**
- * Delete the modes associated with given screen.
- */
-void
-_eglDestroyScreenModes(_EGLScreen *scrn)
-{
- EGLint i;
- for (i = 0; i < scrn->NumModes; i++) {
- if (scrn->Modes[i].Name)
- free((char *) scrn->Modes[i].Name); /* cast away const */
- }
- if (scrn->Modes)
- free(scrn->Modes);
- scrn->Modes = NULL;
- scrn->NumModes = 0;
-}
-
-
-/**
- * Default fallback routine - drivers should usually override this.
- */
-void
-_eglDestroyScreen(_EGLScreen *scrn)
-{
- _eglDestroyScreenModes(scrn);
- free(scrn);
-}
-
-
#endif /* EGL_MESA_screen_surface */
diff --git a/src/egl/main/eglscreen.h b/src/egl/main/eglscreen.h
index e564793e51..2a99f23c50 100644
--- a/src/egl/main/eglscreen.h
+++ b/src/egl/main/eglscreen.h
@@ -8,6 +8,9 @@
#ifdef EGL_MESA_screen_surface
+#define _EGL_SCREEN_MAX_MODES 16
+
+
/**
* Per-screen information.
* Note that an EGL screen doesn't have a size. A screen may be set to
@@ -19,6 +22,8 @@
*/
struct _egl_screen
{
+ _EGLDisplay *Display;
+
EGLScreenMESA Handle; /* The public/opaque handle which names this object */
_EGLMode *CurrentMode;
@@ -33,15 +38,25 @@ struct _egl_screen
PUBLIC void
-_eglInitScreen(_EGLScreen *screen);
+_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy, EGLint num_modes);
+
+
+PUBLIC EGLScreenMESA
+_eglLinkScreen(_EGLScreen *screen);
extern _EGLScreen *
_eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *dpy);
-PUBLIC void
-_eglAddScreen(_EGLDisplay *display, _EGLScreen *screen);
+/**
+ * Return the handle of a linked screen.
+ */
+static INLINE EGLScreenMESA
+_eglGetScreenHandle(_EGLScreen *screen)
+{
+ return (screen) ? screen->Handle : (EGLScreenMESA) 0;
+}
extern EGLBoolean
@@ -49,18 +64,10 @@ _eglGetScreensMESA(_EGLDriver *drv, _EGLDisplay *dpy, EGLScreenMESA *screens, EG
extern EGLBoolean
-_eglScreenModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, _EGLMode *m);
-
-
-extern EGLBoolean
_eglScreenPositionMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint x, EGLint y);
extern EGLBoolean
-_eglQueryDisplayMESA(_EGLDriver *drv, _EGLDisplay *dpy, EGLint attribute, EGLint *value);
-
-
-extern EGLBoolean
_eglQueryScreenSurfaceMESA(_EGLDriver *drv, _EGLDisplay *dpy,
_EGLScreen *scrn, _EGLSurface **surface);
@@ -73,14 +80,6 @@ extern EGLBoolean
_eglQueryScreenMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint attribute, EGLint *value);
-extern void
-_eglDestroyScreenModes(_EGLScreen *scrn);
-
-
-PUBLIC void
-_eglDestroyScreen(_EGLScreen *scrn);
-
-
#endif /* EGL_MESA_screen_surface */
diff --git a/src/egl/main/eglsurface.c b/src/egl/main/eglsurface.c
index 74f10230ea..cc505045e1 100644
--- a/src/egl/main/eglsurface.c
+++ b/src/egl/main/eglsurface.c
@@ -269,8 +269,7 @@ _eglInitSurface(_EGLSurface *surf, _EGLDisplay *dpy, EGLint type,
return EGL_FALSE;
}
- memset(surf, 0, sizeof(_EGLSurface));
- surf->Resource.Display = dpy;
+ _eglInitResource(&surf->Resource, sizeof(*surf), dpy);
surf->Type = type;
surf->Config = conf;
diff --git a/src/egl/main/eglsurface.h b/src/egl/main/eglsurface.h
index 729499e80a..ef01b32ede 100644
--- a/src/egl/main/eglsurface.h
+++ b/src/egl/main/eglsurface.h
@@ -68,26 +68,35 @@ _eglSwapInterval(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf, EGLint in
/**
- * Return true if there is a context bound to the surface.
- *
- * The binding is considered a reference to the surface. Drivers should not
- * destroy a surface when it is bound.
+ * Increment reference count for the surface.
+ */
+static INLINE _EGLSurface *
+_eglGetSurface(_EGLSurface *surf)
+{
+ if (surf)
+ _eglGetResource(&surf->Resource);
+ return surf;
+}
+
+
+/**
+ * Decrement reference count for the surface.
*/
static INLINE EGLBoolean
-_eglIsSurfaceBound(_EGLSurface *surf)
+_eglPutSurface(_EGLSurface *surf)
{
- return (surf->CurrentContext != NULL);
+ return (surf) ? _eglPutResource(&surf->Resource) : EGL_FALSE;
}
/**
- * Link a surface to a display and return the handle of the link.
+ * Link a surface to its display and return the handle of the link.
* The handle can be passed to client directly.
*/
static INLINE EGLSurface
-_eglLinkSurface(_EGLSurface *surf, _EGLDisplay *dpy)
+_eglLinkSurface(_EGLSurface *surf)
{
- _eglLinkResource(&surf->Resource, _EGL_RESOURCE_SURFACE, dpy);
+ _eglLinkResource(&surf->Resource, _EGL_RESOURCE_SURFACE);
return (EGLSurface) surf;
}
@@ -129,18 +138,4 @@ _eglGetSurfaceHandle(_EGLSurface *surf)
}
-/**
- * Return true if the surface is linked to a display.
- *
- * The link is considered a reference to the surface (the display is owning the
- * surface). Drivers should not destroy a surface when it is linked.
- */
-static INLINE EGLBoolean
-_eglIsSurfaceLinked(_EGLSurface *surf)
-{
- _EGLResource *res = (_EGLResource *) surf;
- return (res && _eglIsResourceLinked(res));
-}
-
-
#endif /* EGLSURFACE_INCLUDED */
diff --git a/src/egl/main/eglsync.c b/src/egl/main/eglsync.c
index b9cd99a332..95e97c7354 100644
--- a/src/egl/main/eglsync.c
+++ b/src/egl/main/eglsync.c
@@ -50,10 +50,7 @@ _eglInitSync(_EGLSync *sync, _EGLDisplay *dpy, EGLenum type,
!(type == EGL_SYNC_FENCE_KHR && dpy->Extensions.KHR_fence_sync))
return _eglError(EGL_BAD_ATTRIBUTE, "eglCreateSyncKHR");
- memset(sync, 0, sizeof(*sync));
-
- sync->Resource.Display = dpy;
-
+ _eglInitResource(&sync->Resource, sizeof(*sync), dpy);
sync->Type = type;
sync->SyncStatus = EGL_UNSIGNALED_KHR;
sync->SyncCondition = EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR;
diff --git a/src/egl/main/eglsync.h b/src/egl/main/eglsync.h
index 052d016681..a0025237e7 100644
--- a/src/egl/main/eglsync.h
+++ b/src/egl/main/eglsync.h
@@ -34,13 +34,35 @@ _eglGetSyncAttribKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync,
/**
- * Link a sync to a display and return the handle of the link.
+ * Increment reference count for the sync.
+ */
+static INLINE _EGLSync *
+_eglGetSync(_EGLSync *sync)
+{
+ if (sync)
+ _eglGetResource(&sync->Resource);
+ return sync;
+}
+
+
+/**
+ * Decrement reference count for the sync.
+ */
+static INLINE EGLBoolean
+_eglPutSync(_EGLSync *sync)
+{
+ return (sync) ? _eglPutResource(&sync->Resource) : EGL_FALSE;
+}
+
+
+/**
+ * Link a sync to its display and return the handle of the link.
* The handle can be passed to client directly.
*/
static INLINE EGLSyncKHR
-_eglLinkSync(_EGLSync *sync, _EGLDisplay *dpy)
+_eglLinkSync(_EGLSync *sync)
{
- _eglLinkResource(&sync->Resource, _EGL_RESOURCE_SYNC, dpy);
+ _eglLinkResource(&sync->Resource, _EGL_RESOURCE_SYNC);
return (EGLSyncKHR) sync;
}
@@ -81,20 +103,6 @@ _eglGetSyncHandle(_EGLSync *sync)
}
-/**
- * Return true if the sync is linked to a display.
- *
- * The link is considered a reference to the sync (the display is owning the
- * sync). Drivers should not destroy a sync when it is linked.
- */
-static INLINE EGLBoolean
-_eglIsSyncLinked(_EGLSync *sync)
-{
- _EGLResource *res = (_EGLResource *) sync;
- return (res && _eglIsResourceLinked(res));
-}
-
-
#endif /* EGL_KHR_reusable_sync */
diff --git a/src/gallium/SConscript b/src/gallium/SConscript
index 3c171552be..0efab834f6 100644
--- a/src/gallium/SConscript
+++ b/src/gallium/SConscript
@@ -1,30 +1,135 @@
-import os
+Import('env')
-Import('*')
+#
+# Auxiliary modules
+#
SConscript('auxiliary/SConscript')
-for driver in env['drivers']:
- SConscript(os.path.join('drivers', driver, 'SConscript'))
+#
+# Drivers
+#
+
+SConscript([
+ 'drivers/failover/SConscript',
+ 'drivers/galahad/SConscript',
+ 'drivers/identity/SConscript',
+ 'drivers/llvmpipe/SConscript',
+ 'drivers/rbug/SConscript',
+ 'drivers/softpipe/SConscript',
+ 'drivers/svga/SConscript',
+ 'drivers/trace/SConscript',
+])
+
+if not env['msvc']:
+ # These drivers do not build on MSVC compilers
+ SConscript([
+ 'drivers/i915/SConscript',
+ 'drivers/i965/SConscript',
+ 'drivers/r300/SConscript',
+ ])
+
+if env['drm']:
+ # These drivers depend on drm headers
+ if env['drm_radeon']:
+ SConscript([
+ 'drivers/r600/SConscript',
+ ])
+ # XXX: nouveau drivers have a tight dependency on libdrm, so to enable
+ # we need some version logic before we enable them. Also, ATM there is
+ # no nouveau target in scons
+ # if env['drm_nouveau']:
+ # SConscript([
+ # 'drivers/nouveau/SConscript',
+ # 'drivers/nv50/SConscript',
+ # 'drivers/nvfx/SConscript',
+ # ])
+
+#
+# State trackers
+#
# Needed by some state trackers
SConscript('winsys/sw/null/SConscript')
SConscript('state_trackers/python/SConscript')
-if platform != 'embedded':
- SConscript('state_trackers/glx/xlib/SConscript')
- SConscript('state_trackers/dri/SConscript')
- SConscript('state_trackers/xorg/SConscript')
- SConscript('state_trackers/egl/SConscript')
- SConscript('state_trackers/vega/SConscript')
+if env['platform'] != 'embedded':
+ SConscript('state_trackers/vega/SConscript')
+
+ if env['x11']:
+ SConscript('state_trackers/glx/xlib/SConscript')
+
+ if env['dri']:
+ SConscript('state_trackers/dri/SConscript')
+
+ if env['dri'] and env['xorg']:
+ SConscript('state_trackers/xorg/SConscript')
+
+if env['platform'] == 'windows':
+ SConscript([
+ 'state_trackers/egl/SConscript',
+ 'state_trackers/wgl/SConscript',
+ ])
-if platform == 'windows':
- SConscript('state_trackers/wgl/SConscript')
+#
+# Winsys
+#
SConscript('winsys/SConscript')
-SConscript('targets/SConscript')
+#
+# Targets
+#
+
+SConscript([
+ 'targets/graw-null/SConscript',
+])
+
+if env['x11']:
+ SConscript([
+ 'targets/graw-xlib/SConscript',
+ 'targets/libgl-xlib/SConscript',
+ ])
+
+if env['platform'] == 'windows':
+ SConscript([
+ 'targets/graw-gdi/SConscript',
+ 'targets/libgl-gdi/SConscript',
+ #'egl-gdi/SConscript',
+ ])
+
+if env['dri']:
+ SConscript([
+ 'targets/SConscript.dri',
+ 'targets/dri-swrast/SConscript',
+ 'targets/dri-vmwgfx/SConscript',
+ #'targets/dri-nouveau/SConscript',
+ ])
+ if env['drm_intel']:
+ SConscript([
+ 'targets/dri-i915/SConscript',
+ 'targets/dri-i965/SConscript',
+ ])
+ if env['drm_radeon']:
+ SConscript([
+ 'targets/dri-r300/SConscript',
+ 'targets/dri-r600/SConscript',
+ ])
+
+if env['xorg'] and env['drm']:
+ SConscript([
+ #'targets/xorg-i915/SConscript',
+ #'targets/xorg-i965/SConscript',
+ #'targets/xorg-nouveau/SConscript',
+ #'targets/xorg-radeon/SConscript',
+ 'targets/xorg-vmwgfx/SConscript',
+ ])
+
+
+#
+# Unit tests & tools
+#
-if platform != 'embedded':
- SConscript('tests/unit/SConscript')
- SConscript('tests/graw/SConscript')
+if env['platform'] != 'embedded':
+ SConscript('tests/unit/SConscript')
+ SConscript('tests/graw/SConscript')
diff --git a/src/gallium/auxiliary/Makefile b/src/gallium/auxiliary/Makefile
index abd33f6eef..53a0847f03 100644
--- a/src/gallium/auxiliary/Makefile
+++ b/src/gallium/auxiliary/Makefile
@@ -142,8 +142,7 @@ C_SOURCES = \
util/u_tile.c \
util/u_transfer.c \
util/u_resource.c \
- util/u_upload_mgr.c \
- target-helpers/wrap_screen.c
+ util/u_upload_mgr.c
# Disabling until pipe-video branch gets merged in
#vl/vl_bitstream_parser.c \
@@ -211,16 +210,16 @@ include ../Makefile.template
indices/u_indices_gen.c: indices/u_indices_gen.py
- python $< > $@
+ $(PYTHON2) $< > $@
indices/u_unfilled_gen.c: indices/u_unfilled_gen.py
- python $< > $@
+ $(PYTHON2) $< > $@
util/u_format_srgb.c: util/u_format_srgb.py
- python $< > $@
+ $(PYTHON2) $< > $@
util/u_format_table.c: util/u_format_table.py util/u_format_pack.py util/u_format_parse.py util/u_format.csv
- python util/u_format_table.py util/u_format.csv > $@
+ $(PYTHON2) util/u_format_table.py util/u_format.csv > $@
util/u_half.c: util/u_half.py
- python util/u_half.py > $@
+ $(PYTHON2) util/u_half.py > $@
diff --git a/src/gallium/auxiliary/SConscript b/src/gallium/auxiliary/SConscript
index 94cd74424a..75c27dd242 100644
--- a/src/gallium/auxiliary/SConscript
+++ b/src/gallium/auxiliary/SConscript
@@ -7,8 +7,6 @@ env.Append(CPPPATH = [
'util',
])
-env.Tool('udis86')
-
env.CodeGenerate(
target = 'indices/u_indices_gen.c',
script = 'indices/u_indices_gen.py',
@@ -198,43 +196,45 @@ source = [
#'vl/vl_compositor.c',
#'vl/vl_csc.c',
#'vl/vl_shader_build.c',
- 'target-helpers/wrap_screen.c',
]
if env['llvm']:
+ if env['UDIS86']:
+ env.Append(CPPDEFINES = [('HAVE_UDIS86', '1')])
+
source += [
- 'gallivm/lp_bld_arit.c',
- 'gallivm/lp_bld_assert.c',
- 'gallivm/lp_bld_bitarit.c',
- 'gallivm/lp_bld_const.c',
- 'gallivm/lp_bld_conv.c',
- 'gallivm/lp_bld_debug.c',
- 'gallivm/lp_bld_flow.c',
- 'gallivm/lp_bld_format_aos.c',
- 'gallivm/lp_bld_format_soa.c',
- 'gallivm/lp_bld_format_yuv.c',
- 'gallivm/lp_bld_gather.c',
- 'gallivm/lp_bld_init.c',
- 'gallivm/lp_bld_intr.c',
- 'gallivm/lp_bld_logic.c',
- 'gallivm/lp_bld_misc.cpp',
- 'gallivm/lp_bld_pack.c',
- 'gallivm/lp_bld_printf.c',
- 'gallivm/lp_bld_quad.c',
- 'gallivm/lp_bld_sample.c',
- 'gallivm/lp_bld_sample_aos.c',
- 'gallivm/lp_bld_sample_soa.c',
- 'gallivm/lp_bld_struct.c',
- 'gallivm/lp_bld_swizzle.c',
- 'gallivm/lp_bld_tgsi_aos.c',
- 'gallivm/lp_bld_tgsi_info.c',
- 'gallivm/lp_bld_tgsi_soa.c',
- 'gallivm/lp_bld_type.c',
- 'draw/draw_llvm.c',
- 'draw/draw_llvm_sample.c',
- 'draw/draw_llvm_translate.c',
- 'draw/draw_pt_fetch_shade_pipeline_llvm.c',
- 'draw/draw_vs_llvm.c'
+ 'gallivm/lp_bld_arit.c',
+ 'gallivm/lp_bld_assert.c',
+ 'gallivm/lp_bld_bitarit.c',
+ 'gallivm/lp_bld_const.c',
+ 'gallivm/lp_bld_conv.c',
+ 'gallivm/lp_bld_debug.c',
+ 'gallivm/lp_bld_flow.c',
+ 'gallivm/lp_bld_format_aos.c',
+ 'gallivm/lp_bld_format_soa.c',
+ 'gallivm/lp_bld_format_yuv.c',
+ 'gallivm/lp_bld_gather.c',
+ 'gallivm/lp_bld_init.c',
+ 'gallivm/lp_bld_intr.c',
+ 'gallivm/lp_bld_logic.c',
+ 'gallivm/lp_bld_misc.cpp',
+ 'gallivm/lp_bld_pack.c',
+ 'gallivm/lp_bld_printf.c',
+ 'gallivm/lp_bld_quad.c',
+ 'gallivm/lp_bld_sample.c',
+ 'gallivm/lp_bld_sample_aos.c',
+ 'gallivm/lp_bld_sample_soa.c',
+ 'gallivm/lp_bld_struct.c',
+ 'gallivm/lp_bld_swizzle.c',
+ 'gallivm/lp_bld_tgsi_aos.c',
+ 'gallivm/lp_bld_tgsi_info.c',
+ 'gallivm/lp_bld_tgsi_soa.c',
+ 'gallivm/lp_bld_type.c',
+ 'draw/draw_llvm.c',
+ 'draw/draw_llvm_sample.c',
+ 'draw/draw_llvm_translate.c',
+ 'draw/draw_pt_fetch_shade_pipeline_llvm.c',
+ 'draw/draw_vs_llvm.c'
]
gallium = env.ConvenienceLibrary(
@@ -242,4 +242,6 @@ gallium = env.ConvenienceLibrary(
source = source,
)
+env.Alias('gallium', gallium)
+
Export('gallium')
diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c
index 140e596f99..2b5f01cda7 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_llvm.c
@@ -1164,11 +1164,6 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant)
sampler->destroy(sampler);
-#ifdef PIPE_ARCH_X86
- /* Avoid corrupting the FPU stack on 32bit OSes. */
- lp_build_intrinsic(builder, "llvm.x86.mmx.emms", LLVMVoidType(), NULL, 0);
-#endif
-
ret = LLVMBuildLoad(builder, ret_ptr,"");
LLVMBuildRet(builder, ret);
@@ -1378,11 +1373,6 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian
sampler->destroy(sampler);
-#ifdef PIPE_ARCH_X86
- /* Avoid corrupting the FPU stack on 32bit OSes. */
- lp_build_intrinsic(builder, "llvm.x86.mmx.emms", LLVMVoidType(), NULL, 0);
-#endif
-
ret = LLVMBuildLoad(builder, ret_ptr,"");
LLVMBuildRet(builder, ret);
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c
index 5598ca5c48..0b9a6f745f 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_init.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c
@@ -145,13 +145,7 @@ lp_build_init(void)
LLVMAddCFGSimplificationPass(lp_build_pass);
LLVMAddPromoteMemoryToRegisterPass(lp_build_pass);
LLVMAddConstantPropagationPass(lp_build_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(lp_build_pass);
- }
+ LLVMAddInstructionCombiningPass(lp_build_pass);
LLVMAddGVNPass(lp_build_pass);
} else {
/* We need at least this pass to prevent the backends to fail in
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index 3c318cc8c8..7f0f058c22 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@ -58,6 +58,7 @@
#include "lp_bld_tgsi.h"
#include "lp_bld_limits.h"
#include "lp_bld_debug.h"
+#include "lp_bld_printf.h"
#define FOR_EACH_CHANNEL( CHAN )\
@@ -119,9 +120,12 @@ struct lp_build_tgsi_soa_context
{
struct lp_build_context base;
- /* Builder for integer masks and indices */
+ /* Builder for vector integer masks and indices */
struct lp_build_context uint_bld;
+ /* Builder for scalar elements of shader's data type (float) */
+ struct lp_build_context elem_bld;
+
LLVMValueRef consts_ptr;
const LLVMValueRef *pos;
const LLVMValueRef (*inputs)[NUM_CHANNELS];
@@ -140,6 +144,18 @@ struct lp_build_tgsi_soa_context
*/
LLVMValueRef temps_array;
+ /* We allocate/use this array of output if (1 << TGSI_FILE_OUTPUT) is
+ * set in the indirect_files field.
+ * The outputs[] array above is unused then.
+ */
+ LLVMValueRef outputs_array;
+
+ /* We allocate/use this array of inputs if (1 << TGSI_FILE_INPUT) is
+ * set in the indirect_files field.
+ * The inputs[] array above is unused then.
+ */
+ LLVMValueRef inputs_array;
+
const struct tgsi_shader_info *info;
/** bitmask indicating which register files are accessed indirectly */
unsigned indirect_files;
@@ -435,6 +451,26 @@ get_temp_ptr(struct lp_build_tgsi_soa_context *bld,
}
}
+/**
+ * Return pointer to a output register channel (src or dest).
+ * Note that indirect addressing cannot be handled here.
+ * \param index which output register
+ * \param chan which channel of the output register.
+ */
+static LLVMValueRef
+get_output_ptr(struct lp_build_tgsi_soa_context *bld,
+ unsigned index,
+ unsigned chan)
+{
+ assert(chan < 4);
+ if (bld->indirect_files & (1 << TGSI_FILE_OUTPUT)) {
+ LLVMValueRef lindex = lp_build_const_int32(index * 4 + chan);
+ return LLVMBuildGEP(bld->base.builder, bld->outputs_array, &lindex, 1, "");
+ }
+ else {
+ return bld->outputs[index][chan];
+ }
+}
/**
* Gather vector.
@@ -457,7 +493,7 @@ build_gather(struct lp_build_tgsi_soa_context *bld,
LLVMValueRef index = LLVMBuildExtractElement(bld->base.builder,
indexes, ii, "");
LLVMValueRef scalar_ptr = LLVMBuildGEP(bld->base.builder, base_ptr,
- &index, 1, "");
+ &index, 1, "gather_ptr");
LLVMValueRef scalar = LLVMBuildLoad(bld->base.builder, scalar_ptr, "");
res = LLVMBuildInsertElement(bld->base.builder, res, scalar, ii, "");
@@ -468,8 +504,60 @@ build_gather(struct lp_build_tgsi_soa_context *bld,
/**
+ * Scatter/store vector.
+ */
+static void
+emit_mask_scatter(struct lp_build_tgsi_soa_context *bld,
+ LLVMValueRef base_ptr,
+ LLVMValueRef indexes,
+ LLVMValueRef values,
+ struct lp_exec_mask *mask,
+ LLVMValueRef pred)
+{
+ LLVMBuilderRef builder = bld->base.builder;
+ unsigned i;
+
+ /* 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;
+ }
+ }
+
+ /*
+ * Loop over elements of index_vec, store scalar value.
+ */
+ for (i = 0; i < bld->base.type.length; i++) {
+ LLVMValueRef ii = LLVMConstInt(LLVMInt32Type(), i, 0);
+ LLVMValueRef index = LLVMBuildExtractElement(builder, indexes, ii, "");
+ LLVMValueRef scalar_ptr = LLVMBuildGEP(builder, base_ptr, &index, 1, "scatter_ptr");
+ LLVMValueRef val = LLVMBuildExtractElement(builder, values, ii, "scatter_val");
+ LLVMValueRef scalar_pred = pred ?
+ LLVMBuildExtractElement(builder, pred, ii, "scatter_pred") : NULL;
+
+ if (0)
+ lp_build_printf(builder, "scatter %d: val %f at %d %p\n",
+ ii, val, index, scalar_ptr);
+
+ if (scalar_pred) {
+ LLVMValueRef real_val, dst_val;
+ dst_val = LLVMBuildLoad(builder, scalar_ptr, "");
+ real_val = lp_build_select(&bld->elem_bld, scalar_pred, val, dst_val);
+ LLVMBuildStore(builder, real_val, scalar_ptr);
+ }
+ else {
+ LLVMBuildStore(builder, val, scalar_ptr);
+ }
+ }
+}
+
+
+/**
* Read the current value of the ADDR register, convert the floats to
- * ints, multiply by four and return the vector of offsets.
+ * ints, add the base index and return the vector of offsets.
* The offsets will be used to index into the constant buffer or
* temporary register file.
*/
@@ -577,7 +665,38 @@ emit_fetch(
break;
case TGSI_FILE_INPUT:
- res = bld->inputs[reg->Register.Index][swizzle];
+ if (reg->Register.Indirect) {
+ LLVMValueRef swizzle_vec =
+ lp_build_const_int_vec(uint_bld->type, swizzle);
+ LLVMValueRef length_vec =
+ lp_build_const_int_vec(uint_bld->type, bld->base.type.length);
+ LLVMValueRef index_vec; /* index into the const buffer */
+ LLVMValueRef inputs_array;
+ LLVMTypeRef float4_ptr_type;
+
+ /* index_vec = (indirect_index * 4 + swizzle) * length */
+ index_vec = lp_build_shl_imm(uint_bld, indirect_index, 2);
+ index_vec = lp_build_add(uint_bld, index_vec, swizzle_vec);
+ index_vec = lp_build_mul(uint_bld, index_vec, length_vec);
+
+ /* cast inputs_array pointer to float* */
+ float4_ptr_type = LLVMPointerType(LLVMFloatType(), 0);
+ inputs_array = LLVMBuildBitCast(uint_bld->builder, bld->inputs_array,
+ float4_ptr_type, "");
+
+ /* Gather values from the temporary register array */
+ res = build_gather(bld, inputs_array, index_vec);
+ } else {
+ if (bld->indirect_files & (1 << TGSI_FILE_INPUT)) {
+ LLVMValueRef lindex = lp_build_const_int32(reg->Register.Index * 4 + swizzle);
+ LLVMValueRef input_ptr = LLVMBuildGEP(bld->base.builder,
+ bld->inputs_array, &lindex, 1, "");
+ res = LLVMBuildLoad(bld->base.builder, input_ptr, "");
+ }
+ else {
+ res = bld->inputs[reg->Register.Index][swizzle];
+ }
+ }
assert(res);
break;
@@ -748,6 +867,7 @@ emit_store(
LLVMValueRef value)
{
const struct tgsi_full_dst_register *reg = &inst->Dst[index];
+ struct lp_build_context *uint_bld = &bld->uint_bld;
LLVMValueRef indirect_index = NULL;
switch( inst->Instruction.Saturate ) {
@@ -779,15 +899,81 @@ emit_store(
switch( reg->Register.File ) {
case TGSI_FILE_OUTPUT:
- lp_exec_mask_store(&bld->exec_mask, pred, value,
- bld->outputs[reg->Register.Index][chan_index]);
+ if (reg->Register.Indirect) {
+ LLVMBuilderRef builder = bld->base.builder;
+ LLVMValueRef chan_vec =
+ lp_build_const_int_vec(uint_bld->type, chan_index);
+ LLVMValueRef length_vec =
+ lp_build_const_int_vec(uint_bld->type, bld->base.type.length);
+ LLVMValueRef index_vec; /* indexes into the temp registers */
+ LLVMValueRef outputs_array;
+ LLVMValueRef pixel_offsets;
+ LLVMTypeRef float_ptr_type;
+ int i;
+
+ /* build pixel offset vector: {0, 1, 2, 3, ...} */
+ pixel_offsets = uint_bld->undef;
+ for (i = 0; i < bld->base.type.length; i++) {
+ LLVMValueRef ii = lp_build_const_int32(i);
+ pixel_offsets = LLVMBuildInsertElement(builder, pixel_offsets,
+ ii, ii, "");
+ }
+
+ /* index_vec = (indirect_index * 4 + chan_index) * length + offsets */
+ index_vec = lp_build_shl_imm(uint_bld, indirect_index, 2);
+ index_vec = lp_build_add(uint_bld, index_vec, chan_vec);
+ index_vec = lp_build_mul(uint_bld, index_vec, length_vec);
+ index_vec = lp_build_add(uint_bld, index_vec, pixel_offsets);
+
+ float_ptr_type = LLVMPointerType(LLVMFloatType(), 0);
+ outputs_array = LLVMBuildBitCast(builder, bld->outputs_array,
+ float_ptr_type, "");
+
+ /* Scatter store values into temp registers */
+ emit_mask_scatter(bld, outputs_array, index_vec, value,
+ &bld->exec_mask, pred);
+ }
+ else {
+ LLVMValueRef out_ptr = get_output_ptr(bld, reg->Register.Index,
+ chan_index);
+ lp_exec_mask_store(&bld->exec_mask, pred, value, out_ptr);
+ }
break;
case TGSI_FILE_TEMPORARY:
if (reg->Register.Indirect) {
- /* XXX not done yet */
- debug_printf("WARNING: LLVM scatter store of temp regs"
- " not implemented\n");
+ LLVMBuilderRef builder = bld->base.builder;
+ LLVMValueRef chan_vec =
+ lp_build_const_int_vec(uint_bld->type, chan_index);
+ LLVMValueRef length_vec =
+ lp_build_const_int_vec(uint_bld->type, bld->base.type.length);
+ LLVMValueRef index_vec; /* indexes into the temp registers */
+ LLVMValueRef temps_array;
+ LLVMValueRef pixel_offsets;
+ LLVMTypeRef float_ptr_type;
+ int i;
+
+ /* build pixel offset vector: {0, 1, 2, 3, ...} */
+ pixel_offsets = uint_bld->undef;
+ for (i = 0; i < bld->base.type.length; i++) {
+ LLVMValueRef ii = lp_build_const_int32(i);
+ pixel_offsets = LLVMBuildInsertElement(builder, pixel_offsets,
+ ii, ii, "");
+ }
+
+ /* index_vec = (indirect_index * 4 + chan_index) * length + offsets */
+ index_vec = lp_build_shl_imm(uint_bld, indirect_index, 2);
+ index_vec = lp_build_add(uint_bld, index_vec, chan_vec);
+ index_vec = lp_build_mul(uint_bld, index_vec, length_vec);
+ index_vec = lp_build_add(uint_bld, index_vec, pixel_offsets);
+
+ float_ptr_type = LLVMPointerType(LLVMFloatType(), 0);
+ temps_array = LLVMBuildBitCast(builder, bld->temps_array,
+ float_ptr_type, "");
+
+ /* Scatter store values into temp registers */
+ emit_mask_scatter(bld, temps_array, index_vec, value,
+ &bld->exec_mask, pred);
}
else {
LLVMValueRef temp_ptr = get_temp_ptr(bld, reg->Register.Index,
@@ -1040,15 +1226,60 @@ emit_kilp(struct lp_build_tgsi_soa_context *bld,
lp_build_mask_check(bld->mask);
}
+
+/**
+ * Emit code which will dump the value of all the temporary registers
+ * to stdout.
+ */
+static void
+emit_dump_temps(struct lp_build_tgsi_soa_context *bld)
+{
+ LLVMBuilderRef builder = bld->base.builder;
+ LLVMValueRef temp_ptr;
+ LLVMValueRef i0 = lp_build_const_int32(0);
+ LLVMValueRef i1 = lp_build_const_int32(1);
+ LLVMValueRef i2 = lp_build_const_int32(2);
+ LLVMValueRef i3 = lp_build_const_int32(3);
+ int index;
+ int n = bld->info->file_max[TGSI_FILE_TEMPORARY];
+
+ for (index = 0; index < n; index++) {
+ LLVMValueRef idx = lp_build_const_int32(index);
+ LLVMValueRef v[4][4], res;
+ int chan;
+
+ lp_build_printf(builder, "TEMP[%d]:\n", idx);
+
+ for (chan = 0; chan < 4; chan++) {
+ temp_ptr = get_temp_ptr(bld, index, chan);
+ res = LLVMBuildLoad(bld->base.builder, temp_ptr, "");
+ v[chan][0] = LLVMBuildExtractElement(builder, res, i0, "");
+ v[chan][1] = LLVMBuildExtractElement(builder, res, i1, "");
+ v[chan][2] = LLVMBuildExtractElement(builder, res, i2, "");
+ v[chan][3] = LLVMBuildExtractElement(builder, res, i3, "");
+ }
+
+ lp_build_printf(builder, " X: %f %f %f %f\n",
+ v[0][0], v[0][1], v[0][2], v[0][3]);
+ lp_build_printf(builder, " Y: %f %f %f %f\n",
+ v[1][0], v[1][1], v[1][2], v[1][3]);
+ lp_build_printf(builder, " Z: %f %f %f %f\n",
+ v[2][0], v[2][1], v[2][2], v[2][3]);
+ lp_build_printf(builder, " W: %f %f %f %f\n",
+ v[3][0], v[3][1], v[3][2], v[3][3]);
+ }
+}
+
+
+
static void
emit_declaration(
struct lp_build_tgsi_soa_context *bld,
const struct tgsi_full_declaration *decl)
{
LLVMTypeRef vec_type = bld->base.vec_type;
-
- unsigned first = decl->Range.First;
- unsigned last = decl->Range.Last;
+ const unsigned first = decl->Range.First;
+ const unsigned last = decl->Range.Last;
unsigned idx, i;
for (idx = first; idx <= last; ++idx) {
@@ -1056,36 +1287,33 @@ emit_declaration(
switch (decl->Declaration.File) {
case TGSI_FILE_TEMPORARY:
assert(idx < LP_MAX_TGSI_TEMPS);
- if (bld->indirect_files & (1 << TGSI_FILE_TEMPORARY)) {
- LLVMValueRef array_size = LLVMConstInt(LLVMInt32Type(),
- last*4 + 4, 0);
- bld->temps_array = lp_build_array_alloca(bld->base.builder,
- vec_type, array_size, "");
- } else {
+ if (!(bld->indirect_files & (1 << TGSI_FILE_TEMPORARY))) {
for (i = 0; i < NUM_CHANNELS; i++)
bld->temps[idx][i] = lp_build_alloca(bld->base.builder,
- vec_type, "");
+ vec_type, "temp");
}
break;
case TGSI_FILE_OUTPUT:
- for (i = 0; i < NUM_CHANNELS; i++)
- bld->outputs[idx][i] = lp_build_alloca(bld->base.builder,
- vec_type, "");
+ if (!(bld->indirect_files & (1 << TGSI_FILE_OUTPUT))) {
+ for (i = 0; i < NUM_CHANNELS; i++)
+ bld->outputs[idx][i] = lp_build_alloca(bld->base.builder,
+ vec_type, "output");
+ }
break;
case TGSI_FILE_ADDRESS:
assert(idx < LP_MAX_TGSI_ADDRS);
for (i = 0; i < NUM_CHANNELS; i++)
bld->addr[idx][i] = lp_build_alloca(bld->base.builder,
- vec_type, "");
+ vec_type, "addr");
break;
case TGSI_FILE_PREDICATE:
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, "");
+ vec_type, "predicate");
break;
default:
@@ -1740,6 +1968,10 @@ emit_instruction(
break;
case TGSI_OPCODE_END:
+ if (0) {
+ /* for debugging */
+ emit_dump_temps(bld);
+ }
*pc = -1;
break;
@@ -2082,6 +2314,7 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
memset(&bld, 0, sizeof bld);
lp_build_context_init(&bld.base, builder, type);
lp_build_context_init(&bld.uint_bld, builder, lp_uint_type(type));
+ lp_build_context_init(&bld.elem_bld, builder, lp_elem_type(type));
bld.mask = mask;
bld.pos = pos;
bld.inputs = inputs;
@@ -2100,6 +2333,48 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
lp_exec_mask_init(&bld.exec_mask, &bld.base);
+ if (bld.indirect_files & (1 << TGSI_FILE_TEMPORARY)) {
+ LLVMValueRef array_size = LLVMConstInt(LLVMInt32Type(),
+ info->file_max[TGSI_FILE_TEMPORARY]*4 + 4, 0);
+ bld.temps_array = lp_build_array_alloca(bld.base.builder,
+ bld.base.vec_type, array_size,
+ "temp_array");
+ }
+
+ if (bld.indirect_files & (1 << TGSI_FILE_OUTPUT)) {
+ LLVMValueRef array_size = LLVMConstInt(LLVMInt32Type(),
+ info->file_max[TGSI_FILE_OUTPUT]*4 + 4, 0);
+ bld.outputs_array = lp_build_array_alloca(bld.base.builder,
+ bld.base.vec_type, array_size,
+ "output_array");
+ }
+
+ /* If we have indirect addressing in inputs we need to copy them into
+ * our alloca array to be able to iterate over them */
+ if (bld.indirect_files & (1 << TGSI_FILE_INPUT)) {
+ unsigned index, chan;
+ LLVMTypeRef vec_type = bld.base.vec_type;
+ LLVMValueRef array_size = LLVMConstInt(LLVMInt32Type(),
+ info->file_max[TGSI_FILE_INPUT]*4 + 4, 0);
+ bld.inputs_array = lp_build_array_alloca(bld.base.builder,
+ vec_type, array_size,
+ "input_array");
+
+ assert(info->num_inputs <= info->file_max[TGSI_FILE_INPUT] + 1);
+
+ for (index = 0; index < info->num_inputs; ++index) {
+ for (chan = 0; chan < NUM_CHANNELS; ++chan) {
+ LLVMValueRef lindex = lp_build_const_int32(index * 4 + chan);
+ LLVMValueRef input_ptr =
+ LLVMBuildGEP(bld.base.builder, bld.inputs_array,
+ &lindex, 1, "");
+ LLVMValueRef value = bld.inputs[index][chan];
+ if (value)
+ LLVMBuildStore(bld.base.builder, value, input_ptr);
+ }
+ }
+ }
+
tgsi_parse_init( &parse, tokens );
while( !tgsi_parse_end_of_tokens( &parse ) ) {
@@ -2169,6 +2444,18 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
opcode_info->mnemonic);
}
+ /* If we have indirect addressing in outputs we need to copy our alloca array
+ * to the outputs slots specified by the called */
+ if (bld.indirect_files & (1 << TGSI_FILE_OUTPUT)) {
+ unsigned index, chan;
+ assert(info->num_outputs <= info->file_max[TGSI_FILE_OUTPUT] + 1);
+ for (index = 0; index < info->num_outputs; ++index) {
+ for (chan = 0; chan < NUM_CHANNELS; ++chan) {
+ bld.outputs[index][chan] = get_output_ptr(&bld, index, chan);
+ }
+ }
+ }
+
if (0) {
LLVMBasicBlockRef block = LLVMGetInsertBlock(builder);
LLVMValueRef function = LLVMGetBasicBlockParent(block);
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_type.c b/src/gallium/auxiliary/gallivm/lp_bld_type.c
index 06f1aae6dc..5205c7ada9 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_type.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_type.c
@@ -188,6 +188,22 @@ lp_build_int32_vec4_type(void)
/**
+ * Create element of vector type
+ */
+struct lp_type
+lp_elem_type(struct lp_type type)
+{
+ struct lp_type res_type;
+
+ assert(type.length > 1);
+ res_type = type;
+ res_type.length = 1;
+
+ return res_type;
+}
+
+
+/**
* Create unsigned integer type variation of given type.
*/
struct lp_type
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_type.h b/src/gallium/auxiliary/gallivm/lp_bld_type.h
index fec1d3dfbc..a135d0df84 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_type.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_type.h
@@ -365,6 +365,10 @@ lp_unorm8_vec4_type(void)
struct lp_type
+lp_elem_type(struct lp_type type);
+
+
+struct lp_type
lp_uint_type(struct lp_type type);
diff --git a/src/gallium/auxiliary/os/os_stream_stdc.c b/src/gallium/auxiliary/os/os_stream_stdc.c
index 37e7d063e2..afd3ff6dce 100644
--- a/src/gallium/auxiliary/os/os_stream_stdc.c
+++ b/src/gallium/auxiliary/os/os_stream_stdc.c
@@ -106,7 +106,7 @@ os_file_stream_create(const char *filename)
stream->base.flush = &os_stdc_stream_flush;
stream->base.vprintf = &os_stdc_stream_vprintf;
- stream->file = fopen(filename, "w");
+ stream->file = fopen(filename, "wb");
if(!stream->file)
goto no_file;
diff --git a/src/gallium/auxiliary/pipebuffer/SConscript b/src/gallium/auxiliary/pipebuffer/SConscript
deleted file mode 100644
index a074a55471..0000000000
--- a/src/gallium/auxiliary/pipebuffer/SConscript
+++ /dev/null
@@ -1,18 +0,0 @@
-Import('*')
-
-pipebuffer = env.ConvenienceLibrary(
- target = 'pipebuffer',
- source = [
- 'pb_buffer_fenced.c',
- 'pb_buffer_malloc.c',
- 'pb_bufmgr_alt.c',
- 'pb_bufmgr_cache.c',
- 'pb_bufmgr_debug.c',
- 'pb_bufmgr_mm.c',
- 'pb_bufmgr_ondemand.c',
- 'pb_bufmgr_pool.c',
- 'pb_bufmgr_slab.c',
- 'pb_validate.c',
- ])
-
-auxiliaries.insert(0, pipebuffer)
diff --git a/src/gallium/auxiliary/rtasm/rtasm_ppc.c b/src/gallium/auxiliary/rtasm/rtasm_ppc.c
index ef4b306cb6..330838d23c 100644
--- a/src/gallium/auxiliary/rtasm/rtasm_ppc.c
+++ b/src/gallium/auxiliary/rtasm/rtasm_ppc.c
@@ -97,7 +97,7 @@ void (*ppc_get_func(struct ppc_function *p))(void)
return (void (*)(void)) NULL;
else
#endif
- return (void (*)(void)) p->store;
+ return (void (*)(void)) pointer_to_func(p->store);
}
diff --git a/src/gallium/auxiliary/target-helpers/wrap_screen.c b/src/gallium/auxiliary/target-helpers/wrap_screen.c
deleted file mode 100644
index df5d56a53c..0000000000
--- a/src/gallium/auxiliary/target-helpers/wrap_screen.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Bismarck, ND., USA
- * 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.
- *
- *
- **************************************************************************/
-
-/*
- * Authors:
- * Keith Whitwell
- */
-
-#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"
-
-
-/* Centralized code to inject common wrapping layers:
- */
-struct pipe_screen *
-gallium_wrap_screen( struct pipe_screen *screen )
-{
- /* Screen wrapping functions are required not to fail. If it is
- * impossible to wrap a screen, the unwrapped screen should be
- * returned instead. Any failure condition should be returned in
- * an OUT argument.
- *
- * Otherwise it is really messy trying to clean up in this code.
- */
- if (debug_get_bool_option("GALLIUM_WRAP", FALSE)) {
- screen = identity_screen_create(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;
-}
-
-
-
-
diff --git a/src/gallium/auxiliary/target-helpers/wrap_screen.h b/src/gallium/auxiliary/target-helpers/wrap_screen.h
deleted file mode 100644
index 7e76beb7c5..0000000000
--- a/src/gallium/auxiliary/target-helpers/wrap_screen.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef WRAP_SCREEN_HELPER_H
-#define WRAP_SCREEN_HELPER_H
-
-#include "pipe/p_compiler.h"
-
-struct pipe_screen;
-
-/* Centralized code to inject common wrapping layers. Other layers
- * can be introduced by specific targets, but these are the generally
- * helpful ones we probably want everywhere.
- */
-struct pipe_screen *
-gallium_wrap_screen( struct pipe_screen *screen );
-
-
-#endif
diff --git a/src/gallium/auxiliary/tgsi/tgsi_build.c b/src/gallium/auxiliary/tgsi/tgsi_build.c
index 6dbedf15ca..16a205f206 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_build.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_build.c
@@ -64,25 +64,14 @@ header_bodysize_grow( struct tgsi_header *header )
}
struct tgsi_processor
-tgsi_default_processor( void )
-{
- struct tgsi_processor processor;
-
- processor.Processor = TGSI_PROCESSOR_FRAGMENT;
- processor.Padding = 0;
-
- return processor;
-}
-
-struct tgsi_processor
tgsi_build_processor(
unsigned type,
struct tgsi_header *header )
{
struct tgsi_processor processor;
- processor = tgsi_default_processor();
processor.Processor = type;
+ processor.Padding = 0;
header_headersize_grow( header );
@@ -93,7 +82,19 @@ tgsi_build_processor(
* declaration
*/
-struct tgsi_declaration
+static void
+declaration_grow(
+ struct tgsi_declaration *declaration,
+ struct tgsi_header *header )
+{
+ assert( declaration->NrTokens < 0xFF );
+
+ declaration->NrTokens++;
+
+ header_bodysize_grow( header );
+}
+
+static struct tgsi_declaration
tgsi_default_declaration( void )
{
struct tgsi_declaration declaration;
@@ -112,7 +113,7 @@ tgsi_default_declaration( void )
return declaration;
}
-struct tgsi_declaration
+static struct tgsi_declaration
tgsi_build_declaration(
unsigned file,
unsigned usage_mask,
@@ -144,16 +145,85 @@ tgsi_build_declaration(
return declaration;
}
-static void
-declaration_grow(
+static struct tgsi_declaration_range
+tgsi_default_declaration_range( void )
+{
+ struct tgsi_declaration_range dr;
+
+ dr.First = 0;
+ dr.Last = 0;
+
+ return dr;
+}
+
+static struct tgsi_declaration_range
+tgsi_build_declaration_range(
+ unsigned first,
+ unsigned last,
struct tgsi_declaration *declaration,
struct tgsi_header *header )
{
- assert( declaration->NrTokens < 0xFF );
+ struct tgsi_declaration_range declaration_range;
- declaration->NrTokens++;
+ assert( last >= first );
+ assert( last <= 0xFFFF );
- header_bodysize_grow( header );
+ declaration_range.First = first;
+ declaration_range.Last = last;
+
+ declaration_grow( declaration, header );
+
+ return declaration_range;
+}
+
+static struct tgsi_declaration_dimension
+tgsi_build_declaration_dimension(unsigned index_2d,
+ struct tgsi_declaration *declaration,
+ struct tgsi_header *header)
+{
+ struct tgsi_declaration_dimension dd;
+
+ assert(index_2d <= 0xFFFF);
+
+ dd.Index2D = index_2d;
+ dd.Padding = 0;
+
+ declaration_grow(declaration, header);
+
+ return dd;
+}
+
+static struct tgsi_declaration_semantic
+tgsi_default_declaration_semantic( void )
+{
+ struct tgsi_declaration_semantic ds;
+
+ ds.Name = TGSI_SEMANTIC_POSITION;
+ ds.Index = 0;
+ ds.Padding = 0;
+
+ return ds;
+}
+
+static struct tgsi_declaration_semantic
+tgsi_build_declaration_semantic(
+ unsigned semantic_name,
+ unsigned semantic_index,
+ struct tgsi_declaration *declaration,
+ struct tgsi_header *header )
+{
+ struct tgsi_declaration_semantic ds;
+
+ assert( semantic_name <= TGSI_SEMANTIC_COUNT );
+ assert( semantic_index <= 0xFFFF );
+
+ ds.Name = semantic_name;
+ ds.Index = semantic_index;
+ ds.Padding = 0;
+
+ declaration_grow( declaration, header );
+
+ return ds;
}
struct tgsi_full_declaration
@@ -257,104 +327,11 @@ tgsi_build_full_declaration(
return size;
}
-struct tgsi_declaration_range
-tgsi_default_declaration_range( void )
-{
- struct tgsi_declaration_range dr;
-
- dr.First = 0;
- dr.Last = 0;
-
- return dr;
-}
-
-struct tgsi_declaration_range
-tgsi_build_declaration_range(
- unsigned first,
- unsigned last,
- struct tgsi_declaration *declaration,
- struct tgsi_header *header )
-{
- struct tgsi_declaration_range declaration_range;
-
- assert( last >= first );
- assert( last <= 0xFFFF );
-
- declaration_range = tgsi_default_declaration_range();
- declaration_range.First = first;
- declaration_range.Last = last;
-
- declaration_grow( declaration, header );
-
- return declaration_range;
-}
-
-struct tgsi_declaration_dimension
-tgsi_default_declaration_dimension(void)
-{
- struct tgsi_declaration_dimension dd;
-
- dd.Index2D = 0;
- dd.Padding = 0;
-
- return dd;
-}
-
-struct tgsi_declaration_dimension
-tgsi_build_declaration_dimension(unsigned index_2d,
- struct tgsi_declaration *declaration,
- struct tgsi_header *header)
-{
- struct tgsi_declaration_dimension dd;
-
- assert(index_2d <= 0xFFFF);
-
- dd = tgsi_default_declaration_dimension();
- dd.Index2D = index_2d;
-
- declaration_grow(declaration, header);
-
- return dd;
-}
-
-struct tgsi_declaration_semantic
-tgsi_default_declaration_semantic( void )
-{
- struct tgsi_declaration_semantic ds;
-
- ds.Name = TGSI_SEMANTIC_POSITION;
- ds.Index = 0;
- ds.Padding = 0;
-
- return ds;
-}
-
-struct tgsi_declaration_semantic
-tgsi_build_declaration_semantic(
- unsigned semantic_name,
- unsigned semantic_index,
- struct tgsi_declaration *declaration,
- struct tgsi_header *header )
-{
- struct tgsi_declaration_semantic ds;
-
- assert( semantic_name <= TGSI_SEMANTIC_COUNT );
- assert( semantic_index <= 0xFFFF );
-
- ds = tgsi_default_declaration_semantic();
- ds.Name = semantic_name;
- ds.Index = semantic_index;
-
- declaration_grow( declaration, header );
-
- return ds;
-}
-
/*
* immediate
*/
-struct tgsi_immediate
+static struct tgsi_immediate
tgsi_default_immediate( void )
{
struct tgsi_immediate immediate;
@@ -367,7 +344,7 @@ tgsi_default_immediate( void )
return immediate;
}
-struct tgsi_immediate
+static struct tgsi_immediate
tgsi_build_immediate(
struct tgsi_header *header )
{
@@ -406,7 +383,7 @@ immediate_grow(
header_bodysize_grow( header );
}
-union tgsi_immediate_data
+static union tgsi_immediate_data
tgsi_build_immediate_float32(
float value,
struct tgsi_immediate *immediate,
@@ -480,7 +457,7 @@ tgsi_default_instruction( void )
return instruction;
}
-struct tgsi_instruction
+static struct tgsi_instruction
tgsi_build_instruction(unsigned opcode,
unsigned saturate,
unsigned predicate,
@@ -519,6 +496,266 @@ instruction_grow(
header_bodysize_grow( header );
}
+struct tgsi_instruction_predicate
+tgsi_default_instruction_predicate(void)
+{
+ struct tgsi_instruction_predicate instruction_predicate;
+
+ instruction_predicate.SwizzleX = TGSI_SWIZZLE_X;
+ instruction_predicate.SwizzleY = TGSI_SWIZZLE_Y;
+ instruction_predicate.SwizzleZ = TGSI_SWIZZLE_Z;
+ instruction_predicate.SwizzleW = TGSI_SWIZZLE_W;
+ instruction_predicate.Negate = 0;
+ instruction_predicate.Index = 0;
+ instruction_predicate.Padding = 0;
+
+ return instruction_predicate;
+}
+
+static struct tgsi_instruction_predicate
+tgsi_build_instruction_predicate(int index,
+ unsigned negate,
+ unsigned swizzleX,
+ unsigned swizzleY,
+ unsigned swizzleZ,
+ unsigned swizzleW,
+ struct tgsi_instruction *instruction,
+ struct tgsi_header *header)
+{
+ struct tgsi_instruction_predicate instruction_predicate;
+
+ instruction_predicate = tgsi_default_instruction_predicate();
+ instruction_predicate.SwizzleX = swizzleX;
+ instruction_predicate.SwizzleY = swizzleY;
+ instruction_predicate.SwizzleZ = swizzleZ;
+ instruction_predicate.SwizzleW = swizzleW;
+ instruction_predicate.Negate = negate;
+ instruction_predicate.Index = index;
+
+ instruction_grow(instruction, header);
+
+ return instruction_predicate;
+}
+
+static struct tgsi_instruction_label
+tgsi_default_instruction_label( void )
+{
+ struct tgsi_instruction_label instruction_label;
+
+ instruction_label.Label = 0;
+ instruction_label.Padding = 0;
+
+ return instruction_label;
+}
+
+static struct tgsi_instruction_label
+tgsi_build_instruction_label(
+ unsigned label,
+ struct tgsi_token *prev_token,
+ struct tgsi_instruction *instruction,
+ struct tgsi_header *header )
+{
+ struct tgsi_instruction_label instruction_label;
+
+ instruction_label.Label = label;
+ instruction_label.Padding = 0;
+ instruction->Label = 1;
+
+ instruction_grow( instruction, header );
+
+ return instruction_label;
+}
+
+static struct tgsi_instruction_texture
+tgsi_default_instruction_texture( void )
+{
+ struct tgsi_instruction_texture instruction_texture;
+
+ instruction_texture.Texture = TGSI_TEXTURE_UNKNOWN;
+ instruction_texture.Padding = 0;
+
+ return instruction_texture;
+}
+
+static struct tgsi_instruction_texture
+tgsi_build_instruction_texture(
+ unsigned texture,
+ struct tgsi_token *prev_token,
+ struct tgsi_instruction *instruction,
+ struct tgsi_header *header )
+{
+ struct tgsi_instruction_texture instruction_texture;
+
+ instruction_texture.Texture = texture;
+ instruction_texture.Padding = 0;
+ instruction->Texture = 1;
+
+ instruction_grow( instruction, header );
+
+ return instruction_texture;
+}
+
+static struct tgsi_src_register
+tgsi_default_src_register( void )
+{
+ struct tgsi_src_register src_register;
+
+ src_register.File = TGSI_FILE_NULL;
+ src_register.SwizzleX = TGSI_SWIZZLE_X;
+ src_register.SwizzleY = TGSI_SWIZZLE_Y;
+ src_register.SwizzleZ = TGSI_SWIZZLE_Z;
+ src_register.SwizzleW = TGSI_SWIZZLE_W;
+ src_register.Negate = 0;
+ src_register.Absolute = 0;
+ src_register.Indirect = 0;
+ src_register.Dimension = 0;
+ src_register.Index = 0;
+
+ return src_register;
+}
+
+static struct tgsi_src_register
+tgsi_build_src_register(
+ unsigned file,
+ unsigned swizzle_x,
+ unsigned swizzle_y,
+ unsigned swizzle_z,
+ unsigned swizzle_w,
+ unsigned negate,
+ unsigned absolute,
+ unsigned indirect,
+ unsigned dimension,
+ int index,
+ struct tgsi_instruction *instruction,
+ struct tgsi_header *header )
+{
+ struct tgsi_src_register src_register;
+
+ assert( file < TGSI_FILE_COUNT );
+ assert( swizzle_x <= TGSI_SWIZZLE_W );
+ assert( swizzle_y <= TGSI_SWIZZLE_W );
+ assert( swizzle_z <= TGSI_SWIZZLE_W );
+ assert( swizzle_w <= TGSI_SWIZZLE_W );
+ assert( negate <= 1 );
+ assert( index >= -0x8000 && index <= 0x7FFF );
+
+ src_register.File = file;
+ src_register.SwizzleX = swizzle_x;
+ src_register.SwizzleY = swizzle_y;
+ src_register.SwizzleZ = swizzle_z;
+ src_register.SwizzleW = swizzle_w;
+ src_register.Negate = negate;
+ src_register.Absolute = absolute;
+ src_register.Indirect = indirect;
+ src_register.Dimension = dimension;
+ src_register.Index = index;
+
+ instruction_grow( instruction, header );
+
+ return src_register;
+}
+
+static struct tgsi_dimension
+tgsi_default_dimension( void )
+{
+ struct tgsi_dimension dimension;
+
+ dimension.Indirect = 0;
+ dimension.Dimension = 0;
+ dimension.Padding = 0;
+ dimension.Index = 0;
+
+ return dimension;
+}
+
+static struct tgsi_full_src_register
+tgsi_default_full_src_register( void )
+{
+ struct tgsi_full_src_register full_src_register;
+
+ full_src_register.Register = tgsi_default_src_register();
+ full_src_register.Indirect = tgsi_default_src_register();
+ full_src_register.Dimension = tgsi_default_dimension();
+ full_src_register.DimIndirect = tgsi_default_src_register();
+
+ return full_src_register;
+}
+
+static struct tgsi_dimension
+tgsi_build_dimension(
+ unsigned indirect,
+ unsigned index,
+ struct tgsi_instruction *instruction,
+ struct tgsi_header *header )
+{
+ struct tgsi_dimension dimension;
+
+ dimension.Indirect = indirect;
+ dimension.Dimension = 0;
+ dimension.Padding = 0;
+ dimension.Index = index;
+
+ instruction_grow( instruction, header );
+
+ return dimension;
+}
+
+static struct tgsi_dst_register
+tgsi_default_dst_register( void )
+{
+ struct tgsi_dst_register dst_register;
+
+ dst_register.File = TGSI_FILE_NULL;
+ dst_register.WriteMask = TGSI_WRITEMASK_XYZW;
+ dst_register.Indirect = 0;
+ dst_register.Dimension = 0;
+ dst_register.Index = 0;
+ dst_register.Padding = 0;
+
+ return dst_register;
+}
+
+static struct tgsi_dst_register
+tgsi_build_dst_register(
+ unsigned file,
+ unsigned mask,
+ unsigned indirect,
+ unsigned dimension,
+ int index,
+ struct tgsi_instruction *instruction,
+ struct tgsi_header *header )
+{
+ struct tgsi_dst_register dst_register;
+
+ assert( file < TGSI_FILE_COUNT );
+ assert( mask <= TGSI_WRITEMASK_XYZW );
+ assert( index >= -32768 && index <= 32767 );
+
+ dst_register.File = file;
+ dst_register.WriteMask = mask;
+ dst_register.Indirect = indirect;
+ dst_register.Dimension = dimension;
+ dst_register.Index = index;
+ dst_register.Padding = 0;
+
+ instruction_grow( instruction, header );
+
+ return dst_register;
+}
+
+static struct tgsi_full_dst_register
+tgsi_default_full_dst_register( void )
+{
+ struct tgsi_full_dst_register full_dst_register;
+
+ full_dst_register.Register = tgsi_default_dst_register();
+ full_dst_register.Indirect = tgsi_default_src_register();
+ full_dst_register.Dimension = tgsi_default_dimension();
+ full_dst_register.DimIndirect = tgsi_default_src_register();
+
+ return full_dst_register;
+}
+
struct tgsi_full_instruction
tgsi_default_full_instruction( void )
{
@@ -794,268 +1031,7 @@ tgsi_build_full_instruction(
return size;
}
-struct tgsi_instruction_predicate
-tgsi_default_instruction_predicate(void)
-{
- struct tgsi_instruction_predicate instruction_predicate;
-
- instruction_predicate.SwizzleX = TGSI_SWIZZLE_X;
- instruction_predicate.SwizzleY = TGSI_SWIZZLE_Y;
- instruction_predicate.SwizzleZ = TGSI_SWIZZLE_Z;
- instruction_predicate.SwizzleW = TGSI_SWIZZLE_W;
- instruction_predicate.Negate = 0;
- instruction_predicate.Index = 0;
- instruction_predicate.Padding = 0;
-
- return instruction_predicate;
-}
-
-struct tgsi_instruction_predicate
-tgsi_build_instruction_predicate(int index,
- unsigned negate,
- unsigned swizzleX,
- unsigned swizzleY,
- unsigned swizzleZ,
- unsigned swizzleW,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header)
-{
- struct tgsi_instruction_predicate instruction_predicate;
-
- instruction_predicate = tgsi_default_instruction_predicate();
- instruction_predicate.SwizzleX = swizzleX;
- instruction_predicate.SwizzleY = swizzleY;
- instruction_predicate.SwizzleZ = swizzleZ;
- instruction_predicate.SwizzleW = swizzleW;
- instruction_predicate.Negate = negate;
- instruction_predicate.Index = index;
-
- instruction_grow(instruction, header);
-
- return instruction_predicate;
-}
-
-struct tgsi_instruction_label
-tgsi_default_instruction_label( void )
-{
- struct tgsi_instruction_label instruction_label;
-
- instruction_label.Label = 0;
- instruction_label.Padding = 0;
-
- return instruction_label;
-}
-
-struct tgsi_instruction_label
-tgsi_build_instruction_label(
- unsigned label,
- struct tgsi_token *prev_token,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header )
-{
- struct tgsi_instruction_label instruction_label;
-
- instruction_label = tgsi_default_instruction_label();
- instruction_label.Label = label;
- instruction->Label = 1;
-
- instruction_grow( instruction, header );
-
- return instruction_label;
-}
-
-struct tgsi_instruction_texture
-tgsi_default_instruction_texture( void )
-{
- struct tgsi_instruction_texture instruction_texture;
-
- instruction_texture.Texture = TGSI_TEXTURE_UNKNOWN;
- instruction_texture.Padding = 0;
-
- return instruction_texture;
-}
-
-struct tgsi_instruction_texture
-tgsi_build_instruction_texture(
- unsigned texture,
- struct tgsi_token *prev_token,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header )
-{
- struct tgsi_instruction_texture instruction_texture;
-
- instruction_texture = tgsi_default_instruction_texture();
- instruction_texture.Texture = texture;
- instruction->Texture = 1;
-
- instruction_grow( instruction, header );
-
- return instruction_texture;
-}
-
-struct tgsi_src_register
-tgsi_default_src_register( void )
-{
- struct tgsi_src_register src_register;
-
- src_register.File = TGSI_FILE_NULL;
- src_register.SwizzleX = TGSI_SWIZZLE_X;
- src_register.SwizzleY = TGSI_SWIZZLE_Y;
- src_register.SwizzleZ = TGSI_SWIZZLE_Z;
- src_register.SwizzleW = TGSI_SWIZZLE_W;
- src_register.Negate = 0;
- src_register.Absolute = 0;
- src_register.Indirect = 0;
- src_register.Dimension = 0;
- src_register.Index = 0;
-
- return src_register;
-}
-
-struct tgsi_src_register
-tgsi_build_src_register(
- unsigned file,
- unsigned swizzle_x,
- unsigned swizzle_y,
- unsigned swizzle_z,
- unsigned swizzle_w,
- unsigned negate,
- unsigned absolute,
- unsigned indirect,
- unsigned dimension,
- int index,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header )
-{
- struct tgsi_src_register src_register;
-
- assert( file < TGSI_FILE_COUNT );
- assert( swizzle_x <= TGSI_SWIZZLE_W );
- assert( swizzle_y <= TGSI_SWIZZLE_W );
- assert( swizzle_z <= TGSI_SWIZZLE_W );
- assert( swizzle_w <= TGSI_SWIZZLE_W );
- assert( negate <= 1 );
- assert( index >= -0x8000 && index <= 0x7FFF );
-
- src_register = tgsi_default_src_register();
- src_register.File = file;
- src_register.SwizzleX = swizzle_x;
- src_register.SwizzleY = swizzle_y;
- src_register.SwizzleZ = swizzle_z;
- src_register.SwizzleW = swizzle_w;
- src_register.Negate = negate;
- src_register.Absolute = absolute;
- src_register.Indirect = indirect;
- src_register.Dimension = dimension;
- src_register.Index = index;
-
- instruction_grow( instruction, header );
-
- return src_register;
-}
-
-struct tgsi_full_src_register
-tgsi_default_full_src_register( void )
-{
- struct tgsi_full_src_register full_src_register;
-
- full_src_register.Register = tgsi_default_src_register();
- full_src_register.Indirect = tgsi_default_src_register();
- full_src_register.Dimension = tgsi_default_dimension();
- full_src_register.DimIndirect = tgsi_default_src_register();
-
- return full_src_register;
-}
-
-
-struct tgsi_dimension
-tgsi_default_dimension( void )
-{
- struct tgsi_dimension dimension;
-
- dimension.Indirect = 0;
- dimension.Dimension = 0;
- dimension.Padding = 0;
- dimension.Index = 0;
-
- return dimension;
-}
-
-struct tgsi_dimension
-tgsi_build_dimension(
- unsigned indirect,
- unsigned index,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header )
-{
- struct tgsi_dimension dimension;
-
- dimension = tgsi_default_dimension();
- dimension.Indirect = indirect;
- dimension.Index = index;
-
- instruction_grow( instruction, header );
-
- return dimension;
-}
-
-struct tgsi_dst_register
-tgsi_default_dst_register( void )
-{
- struct tgsi_dst_register dst_register;
-
- dst_register.File = TGSI_FILE_NULL;
- dst_register.WriteMask = TGSI_WRITEMASK_XYZW;
- dst_register.Indirect = 0;
- dst_register.Dimension = 0;
- dst_register.Index = 0;
- dst_register.Padding = 0;
-
- return dst_register;
-}
-
-struct tgsi_dst_register
-tgsi_build_dst_register(
- unsigned file,
- unsigned mask,
- unsigned indirect,
- unsigned dimension,
- int index,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header )
-{
- struct tgsi_dst_register dst_register;
-
- assert( file < TGSI_FILE_COUNT );
- assert( mask <= TGSI_WRITEMASK_XYZW );
- assert( index >= -32768 && index <= 32767 );
-
- dst_register = tgsi_default_dst_register();
- dst_register.File = file;
- dst_register.WriteMask = mask;
- dst_register.Index = index;
- dst_register.Indirect = indirect;
- dst_register.Dimension = dimension;
-
- instruction_grow( instruction, header );
-
- return dst_register;
-}
-
-struct tgsi_full_dst_register
-tgsi_default_full_dst_register( void )
-{
- struct tgsi_full_dst_register full_dst_register;
-
- full_dst_register.Register = tgsi_default_dst_register();
- full_dst_register.Indirect = tgsi_default_src_register();
- full_dst_register.Dimension = tgsi_default_dimension();
- full_dst_register.DimIndirect = tgsi_default_src_register();
-
- return full_dst_register;
-}
-
-struct tgsi_property
+static struct tgsi_property
tgsi_default_property( void )
{
struct tgsi_property property;
@@ -1068,7 +1044,7 @@ tgsi_default_property( void )
return property;
}
-struct tgsi_property
+static struct tgsi_property
tgsi_build_property(unsigned property_name,
struct tgsi_header *header)
{
@@ -1107,7 +1083,7 @@ property_grow(
header_bodysize_grow( header );
}
-struct tgsi_property_data
+static struct tgsi_property_data
tgsi_build_property_data(
unsigned value,
struct tgsi_property *property,
diff --git a/src/gallium/auxiliary/tgsi/tgsi_build.h b/src/gallium/auxiliary/tgsi/tgsi_build.h
index 112107a088..3f236a9c24 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_build.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_build.h
@@ -45,9 +45,6 @@ struct tgsi_header
tgsi_build_header( void );
struct tgsi_processor
-tgsi_default_processor( void );
-
-struct tgsi_processor
tgsi_build_processor(
unsigned processor,
struct tgsi_header *header );
@@ -56,21 +53,6 @@ tgsi_build_processor(
* declaration
*/
-struct tgsi_declaration
-tgsi_default_declaration( void );
-
-struct tgsi_declaration
-tgsi_build_declaration(
- unsigned file,
- unsigned usage_mask,
- unsigned interpolate,
- unsigned dimension,
- unsigned semantic,
- unsigned centroid,
- unsigned invariant,
- unsigned cylindrical_wrap,
- struct tgsi_header *header );
-
struct tgsi_full_declaration
tgsi_default_full_declaration( void );
@@ -81,54 +63,13 @@ tgsi_build_full_declaration(
struct tgsi_header *header,
unsigned maxsize );
-struct tgsi_declaration_range
-tgsi_default_declaration_range( void );
-
-struct tgsi_declaration_range
-tgsi_build_declaration_range(
- unsigned first,
- unsigned last,
- struct tgsi_declaration *declaration,
- struct tgsi_header *header );
-
-struct tgsi_declaration_dimension
-tgsi_default_declaration_dimension(void);
-
-struct tgsi_declaration_dimension
-tgsi_build_declaration_dimension(unsigned index_2d,
- struct tgsi_declaration *declaration,
- struct tgsi_header *header);
-
-struct tgsi_declaration_semantic
-tgsi_default_declaration_semantic( void );
-
-struct tgsi_declaration_semantic
-tgsi_build_declaration_semantic(
- unsigned semantic_name,
- unsigned semantic_index,
- struct tgsi_declaration *declaration,
- struct tgsi_header *header );
-
/*
* immediate
*/
-struct tgsi_immediate
-tgsi_default_immediate( void );
-
-struct tgsi_immediate
-tgsi_build_immediate(
- struct tgsi_header *header );
-
struct tgsi_full_immediate
tgsi_default_full_immediate( void );
-union tgsi_immediate_data
-tgsi_build_immediate_float32(
- float value,
- struct tgsi_immediate *immediate,
- struct tgsi_header *header );
-
unsigned
tgsi_build_full_immediate(
const struct tgsi_full_immediate *full_imm,
@@ -140,23 +81,9 @@ tgsi_build_full_immediate(
* properties
*/
-struct tgsi_property
-tgsi_default_property( void );
-
-struct tgsi_property
-tgsi_build_property(
- unsigned property_name,
- struct tgsi_header *header );
-
struct tgsi_full_property
tgsi_default_full_property( void );
-struct tgsi_property_data
-tgsi_build_property_data(
- unsigned value,
- struct tgsi_property *property,
- struct tgsi_header *header );
-
unsigned
tgsi_build_full_property(
const struct tgsi_full_property *full_prop,
@@ -171,15 +98,6 @@ tgsi_build_full_property(
struct tgsi_instruction
tgsi_default_instruction( void );
-struct tgsi_instruction
-tgsi_build_instruction(
- unsigned opcode,
- unsigned saturate,
- unsigned predicate,
- unsigned num_dst_regs,
- unsigned num_src_regs,
- struct tgsi_header *header );
-
struct tgsi_full_instruction
tgsi_default_full_instruction( void );
@@ -193,85 +111,6 @@ tgsi_build_full_instruction(
struct tgsi_instruction_predicate
tgsi_default_instruction_predicate(void);
-struct tgsi_instruction_predicate
-tgsi_build_instruction_predicate(int index,
- unsigned negate,
- unsigned swizzleX,
- unsigned swizzleY,
- unsigned swizzleZ,
- unsigned swizzleW,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header);
-
-struct tgsi_instruction_label
-tgsi_default_instruction_label( void );
-
-struct tgsi_instruction_label
-tgsi_build_instruction_label(
- unsigned label,
- struct tgsi_token *prev_token,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header );
-
-struct tgsi_instruction_texture
-tgsi_default_instruction_texture( void );
-
-struct tgsi_instruction_texture
-tgsi_build_instruction_texture(
- unsigned texture,
- struct tgsi_token *prev_token,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header );
-
-struct tgsi_src_register
-tgsi_default_src_register( void );
-
-struct tgsi_src_register
-tgsi_build_src_register(
- unsigned file,
- unsigned swizzle_x,
- unsigned swizzle_y,
- unsigned swizzle_z,
- unsigned swizzle_w,
- unsigned negate,
- unsigned absolute,
- unsigned indirect,
- unsigned dimension,
- int index,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header );
-
-struct tgsi_full_src_register
-tgsi_default_full_src_register( void );
-
-
-struct tgsi_dimension
-tgsi_default_dimension( void );
-
-struct tgsi_dimension
-tgsi_build_dimension(
- unsigned indirect,
- unsigned index,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header );
-
-struct tgsi_dst_register
-tgsi_default_dst_register( void );
-
-struct tgsi_dst_register
-tgsi_build_dst_register(
- unsigned file,
- unsigned mask,
- unsigned indirect,
- unsigned dimension,
- int index,
- struct tgsi_instruction *instruction,
- struct tgsi_header *header );
-
-struct tgsi_full_dst_register
-tgsi_default_full_dst_register( void );
-
-
#if defined __cplusplus
}
#endif
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c
index 3a71540506..7892a67f04 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
@@ -429,6 +429,24 @@ micro_sne(union tgsi_exec_channel *dst,
}
static void
+micro_sfl(union tgsi_exec_channel *dst)
+{
+ dst->f[0] = 0.0f;
+ dst->f[1] = 0.0f;
+ dst->f[2] = 0.0f;
+ dst->f[3] = 0.0f;
+}
+
+static void
+micro_str(union tgsi_exec_channel *dst)
+{
+ dst->f[0] = 1.0f;
+ dst->f[1] = 1.0f;
+ dst->f[2] = 1.0f;
+ dst->f[3] = 1.0f;
+}
+
+static void
micro_trunc(union tgsi_exec_channel *dst,
const union tgsi_exec_channel *src)
{
@@ -453,50 +471,12 @@ enum tgsi_exec_datatype {
/*
* Shorthand locations of various utility registers (_I = Index, _C = Channel)
*/
-#define TEMP_0_I TGSI_EXEC_TEMP_00000000_I
-#define TEMP_0_C TGSI_EXEC_TEMP_00000000_C
-#define TEMP_7F_I TGSI_EXEC_TEMP_7FFFFFFF_I
-#define TEMP_7F_C TGSI_EXEC_TEMP_7FFFFFFF_C
-#define TEMP_80_I TGSI_EXEC_TEMP_80000000_I
-#define TEMP_80_C TGSI_EXEC_TEMP_80000000_C
-#define TEMP_FF_I TGSI_EXEC_TEMP_FFFFFFFF_I
-#define TEMP_FF_C TGSI_EXEC_TEMP_FFFFFFFF_C
-#define TEMP_1_I TGSI_EXEC_TEMP_ONE_I
-#define TEMP_1_C TGSI_EXEC_TEMP_ONE_C
-#define TEMP_2_I TGSI_EXEC_TEMP_TWO_I
-#define TEMP_2_C TGSI_EXEC_TEMP_TWO_C
-#define TEMP_128_I TGSI_EXEC_TEMP_128_I
-#define TEMP_128_C TGSI_EXEC_TEMP_128_C
-#define TEMP_M128_I TGSI_EXEC_TEMP_MINUS_128_I
-#define TEMP_M128_C TGSI_EXEC_TEMP_MINUS_128_C
#define TEMP_KILMASK_I TGSI_EXEC_TEMP_KILMASK_I
#define TEMP_KILMASK_C TGSI_EXEC_TEMP_KILMASK_C
#define TEMP_OUTPUT_I TGSI_EXEC_TEMP_OUTPUT_I
#define TEMP_OUTPUT_C TGSI_EXEC_TEMP_OUTPUT_C
#define TEMP_PRIMITIVE_I TGSI_EXEC_TEMP_PRIMITIVE_I
#define TEMP_PRIMITIVE_C TGSI_EXEC_TEMP_PRIMITIVE_C
-#define TEMP_CC_I TGSI_EXEC_TEMP_CC_I
-#define TEMP_CC_C TGSI_EXEC_TEMP_CC_C
-#define TEMP_3_I TGSI_EXEC_TEMP_THREE_I
-#define TEMP_3_C TGSI_EXEC_TEMP_THREE_C
-#define TEMP_HALF_I TGSI_EXEC_TEMP_HALF_I
-#define TEMP_HALF_C TGSI_EXEC_TEMP_HALF_C
-#define TEMP_R0 TGSI_EXEC_TEMP_R0
-#define TEMP_P0 TGSI_EXEC_TEMP_P0
-
-#define IS_CHANNEL_ENABLED(INST, CHAN)\
- ((INST).Dst[0].Register.WriteMask & (1 << (CHAN)))
-
-#define IS_CHANNEL_ENABLED2(INST, CHAN)\
- ((INST).Dst[1].Register.WriteMask & (1 << (CHAN)))
-
-#define FOR_EACH_ENABLED_CHANNEL(INST, CHAN)\
- for (CHAN = 0; CHAN < NUM_CHANNELS; CHAN++)\
- if (IS_CHANNEL_ENABLED( INST, CHAN ))
-
-#define FOR_EACH_ENABLED_CHANNEL2(INST, CHAN)\
- for (CHAN = 0; CHAN < NUM_CHANNELS; CHAN++)\
- if (IS_CHANNEL_ENABLED2( INST, CHAN ))
/** The execution mask depends on the conditional mask and the loop mask */
@@ -511,6 +491,14 @@ static const union tgsi_exec_channel OneVec = {
{1.0f, 1.0f, 1.0f, 1.0f}
};
+static const union tgsi_exec_channel P128Vec = {
+ {128.0f, 128.0f, 128.0f, 128.0f}
+};
+
+static const union tgsi_exec_channel M128Vec = {
+ {-128.0f, -128.0f, -128.0f, -128.0f}
+};
+
/**
* Assert that none of the float values in 'chan' are infinite or NaN.
@@ -572,8 +560,6 @@ tgsi_exec_set_constant_buffers(struct tgsi_exec_machine *mach,
}
-
-
/**
* Check if there's a potential src/dst register data dependency when
* using SOA execution.
@@ -607,18 +593,20 @@ tgsi_check_soa_dependencies(const struct tgsi_full_instruction *inst)
inst->Dst[0].Register.File) &&
((inst->Src[i].Register.Index ==
inst->Dst[0].Register.Index) ||
- inst->Src[i].Register.Indirect ||
- inst->Dst[0].Register.Indirect)) {
+ inst->Src[i].Register.Indirect ||
+ inst->Dst[0].Register.Indirect)) {
/* loop over dest channels */
uint channelsWritten = 0x0;
- FOR_EACH_ENABLED_CHANNEL(*inst, chan) {
- /* check if we're reading a channel that's been written */
- uint swizzle = tgsi_util_get_full_src_register_swizzle(&inst->Src[i], chan);
- if (channelsWritten & (1 << swizzle)) {
- return TRUE;
- }
+ for (chan = 0; chan < NUM_CHANNELS; chan++) {
+ if (inst->Dst[0].Register.WriteMask & (1 << chan)) {
+ /* check if we're reading a channel that's been written */
+ uint swizzle = tgsi_util_get_full_src_register_swizzle(&inst->Src[i], chan);
+ if (channelsWritten & (1 << swizzle)) {
+ return TRUE;
+ }
- channelsWritten |= (1 << chan);
+ channelsWritten |= (1 << chan);
+ }
}
}
}
@@ -813,18 +801,18 @@ tgsi_exec_machine_create( void )
mach->MaxGeometryShaderOutputs = TGSI_MAX_TOTAL_VERTICES;
mach->Predicates = &mach->Temps[TGSI_EXEC_TEMP_P0];
- /* Setup constants. */
+ /* Setup constants needed by the SSE2 executor. */
for( i = 0; i < 4; i++ ) {
- mach->Temps[TEMP_0_I].xyzw[TEMP_0_C].u[i] = 0x00000000;
- mach->Temps[TEMP_7F_I].xyzw[TEMP_7F_C].u[i] = 0x7FFFFFFF;
- mach->Temps[TEMP_80_I].xyzw[TEMP_80_C].u[i] = 0x80000000;
- mach->Temps[TEMP_FF_I].xyzw[TEMP_FF_C].u[i] = 0xFFFFFFFF;
- mach->Temps[TEMP_1_I].xyzw[TEMP_1_C].f[i] = 1.0f;
- mach->Temps[TEMP_2_I].xyzw[TEMP_2_C].f[i] = 2.0f;
- mach->Temps[TEMP_128_I].xyzw[TEMP_128_C].f[i] = 128.0f;
- mach->Temps[TEMP_M128_I].xyzw[TEMP_M128_C].f[i] = -128.0f;
- mach->Temps[TEMP_3_I].xyzw[TEMP_3_C].f[i] = 3.0f;
- mach->Temps[TEMP_HALF_I].xyzw[TEMP_HALF_C].f[i] = 0.5f;
+ mach->Temps[TGSI_EXEC_TEMP_00000000_I].xyzw[TGSI_EXEC_TEMP_00000000_C].u[i] = 0x00000000;
+ mach->Temps[TGSI_EXEC_TEMP_7FFFFFFF_I].xyzw[TGSI_EXEC_TEMP_7FFFFFFF_C].u[i] = 0x7FFFFFFF;
+ mach->Temps[TGSI_EXEC_TEMP_80000000_I].xyzw[TGSI_EXEC_TEMP_80000000_C].u[i] = 0x80000000;
+ mach->Temps[TGSI_EXEC_TEMP_FFFFFFFF_I].xyzw[TGSI_EXEC_TEMP_FFFFFFFF_C].u[i] = 0xFFFFFFFF; /* not used */
+ mach->Temps[TGSI_EXEC_TEMP_ONE_I].xyzw[TGSI_EXEC_TEMP_ONE_C].f[i] = 1.0f;
+ mach->Temps[TGSI_EXEC_TEMP_TWO_I].xyzw[TGSI_EXEC_TEMP_TWO_C].f[i] = 2.0f; /* not used */
+ mach->Temps[TGSI_EXEC_TEMP_128_I].xyzw[TGSI_EXEC_TEMP_128_C].f[i] = 128.0f;
+ mach->Temps[TGSI_EXEC_TEMP_MINUS_128_I].xyzw[TGSI_EXEC_TEMP_MINUS_128_C].f[i] = -128.0f;
+ mach->Temps[TGSI_EXEC_TEMP_THREE_I].xyzw[TGSI_EXEC_TEMP_THREE_C].f[i] = 3.0f;
+ mach->Temps[TGSI_EXEC_TEMP_HALF_I].xyzw[TGSI_EXEC_TEMP_HALF_C].f[i] = 0.5f;
}
#ifdef DEBUG
@@ -886,27 +874,35 @@ micro_div(
}
static void
-micro_float_clamp(union tgsi_exec_channel *dst,
- const union tgsi_exec_channel *src)
+micro_rcc(union tgsi_exec_channel *dst,
+ const union tgsi_exec_channel *src)
{
uint i;
for (i = 0; i < 4; i++) {
- if (src->f[i] > 0.0f) {
- if (src->f[i] > 1.884467e+019f)
+ float recip = 1.0f / src->f[i];
+
+ if (recip > 0.0f) {
+ if (recip > 1.884467e+019f) {
dst->f[i] = 1.884467e+019f;
- else if (src->f[i] < 5.42101e-020f)
+ }
+ else if (recip < 5.42101e-020f) {
dst->f[i] = 5.42101e-020f;
- else
- dst->f[i] = src->f[i];
+ }
+ else {
+ dst->f[i] = recip;
+ }
}
else {
- if (src->f[i] < -1.884467e+019f)
+ if (recip < -1.884467e+019f) {
dst->f[i] = -1.884467e+019f;
- else if (src->f[i] > -5.42101e-020f)
+ }
+ else if (recip > -5.42101e-020f) {
dst->f[i] = -5.42101e-020f;
- else
- dst->f[i] = src->f[i];
+ }
+ else {
+ dst->f[i] = recip;
+ }
}
}
}
@@ -958,60 +954,6 @@ micro_mul(union tgsi_exec_channel *dst,
dst->f[3] = src0->f[3] * src1->f[3];
}
-#if 0
-static void
-micro_imul64(
- union tgsi_exec_channel *dst0,
- union tgsi_exec_channel *dst1,
- const union tgsi_exec_channel *src0,
- const union tgsi_exec_channel *src1 )
-{
- dst1->i[0] = src0->i[0] * src1->i[0];
- dst1->i[1] = src0->i[1] * src1->i[1];
- dst1->i[2] = src0->i[2] * src1->i[2];
- dst1->i[3] = src0->i[3] * src1->i[3];
- dst0->i[0] = 0;
- dst0->i[1] = 0;
- dst0->i[2] = 0;
- dst0->i[3] = 0;
-}
-#endif
-
-#if 0
-static void
-micro_umul64(
- union tgsi_exec_channel *dst0,
- union tgsi_exec_channel *dst1,
- const union tgsi_exec_channel *src0,
- const union tgsi_exec_channel *src1 )
-{
- dst1->u[0] = src0->u[0] * src1->u[0];
- dst1->u[1] = src0->u[1] * src1->u[1];
- dst1->u[2] = src0->u[2] * src1->u[2];
- dst1->u[3] = src0->u[3] * src1->u[3];
- dst0->u[0] = 0;
- dst0->u[1] = 0;
- dst0->u[2] = 0;
- dst0->u[3] = 0;
-}
-#endif
-
-
-#if 0
-static void
-micro_movc(
- union tgsi_exec_channel *dst,
- const union tgsi_exec_channel *src0,
- const union tgsi_exec_channel *src1,
- const union tgsi_exec_channel *src2 )
-{
- dst->u[0] = src0->u[0] ? src1->u[0] : src2->u[0];
- dst->u[1] = src0->u[1] ? src1->u[1] : src2->u[1];
- dst->u[2] = src0->u[2] ? src1->u[2] : src2->u[2];
- dst->u[3] = src0->u[3] ? src1->u[3] : src2->u[3];
-}
-#endif
-
static void
micro_neg(
union tgsi_exec_channel *dst,
@@ -1607,9 +1549,6 @@ store_dest(struct tgsi_exec_machine *mach,
#define FETCH(VAL,INDEX,CHAN)\
fetch_source(mach, VAL, &inst->Src[INDEX], CHAN, TGSI_EXEC_DATA_FLOAT)
-#define STORE(VAL,INDEX,CHAN)\
- store_dest(mach, VAL, &inst->Dst[INDEX], inst, CHAN, TGSI_EXEC_DATA_FLOAT)
-
/**
* Execute ARB-style KIL which is predicated by a src register.
@@ -1753,7 +1692,7 @@ exec_tex(struct tgsi_exec_machine *mach,
union tgsi_exec_channel r[4];
const union tgsi_exec_channel *lod = &ZeroVec;
enum tgsi_sampler_control control;
- uint chan_index;
+ uint chan;
if (modifier != TEX_MODIFIER_NONE) {
FETCH(&r[3], 0, CHAN_W);
@@ -1825,8 +1764,10 @@ exec_tex(struct tgsi_exec_machine *mach,
assert(0);
}
- FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) {
- STORE(&r[chan_index], 0, chan_index);
+ for (chan = 0; chan < NUM_CHANNELS; chan++) {
+ if (inst->Dst[0].Register.WriteMask & (1 << chan)) {
+ store_dest(mach, &r[chan], &inst->Dst[0], inst, chan, TGSI_EXEC_DATA_FLOAT);
+ }
}
}
@@ -1836,7 +1777,7 @@ exec_txd(struct tgsi_exec_machine *mach,
{
const uint unit = inst->Src[3].Register.Index;
union tgsi_exec_channel r[4];
- uint chan_index;
+ uint chan;
/*
* XXX: This is fake TXD -- the derivatives are not taken into account, yet.
@@ -1886,8 +1827,10 @@ exec_txd(struct tgsi_exec_machine *mach,
assert(0);
}
- FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) {
- STORE(&r[chan_index], 0, chan_index);
+ for (chan = 0; chan < NUM_CHANNELS; chan++) {
+ if (inst->Dst[0].Register.WriteMask & (1 << chan)) {
+ store_dest(mach, &r[chan], &inst->Dst[0], inst, chan, TGSI_EXEC_DATA_FLOAT);
+ }
}
}
@@ -2021,6 +1964,26 @@ exec_declaration(struct tgsi_exec_machine *mach,
}
}
+typedef void (* micro_op)(union tgsi_exec_channel *dst);
+
+static void
+exec_vector(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst,
+ micro_op op,
+ enum tgsi_exec_datatype dst_datatype)
+{
+ unsigned int chan;
+
+ for (chan = 0; chan < NUM_CHANNELS; chan++) {
+ if (inst->Dst[0].Register.WriteMask & (1 << chan)) {
+ union tgsi_exec_channel dst;
+
+ op(&dst);
+ store_dest(mach, &dst, &inst->Dst[0], inst, chan, dst_datatype);
+ }
+ }
+}
+
typedef void (* micro_unary_op)(union tgsi_exec_channel *dst,
const union tgsi_exec_channel *src);
@@ -2074,6 +2037,27 @@ typedef void (* micro_binary_op)(union tgsi_exec_channel *dst,
const union tgsi_exec_channel *src1);
static void
+exec_scalar_binary(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst,
+ micro_binary_op op,
+ enum tgsi_exec_datatype dst_datatype,
+ enum tgsi_exec_datatype src_datatype)
+{
+ unsigned int chan;
+ union tgsi_exec_channel src[2];
+ union tgsi_exec_channel dst;
+
+ fetch_source(mach, &src[0], &inst->Src[0], CHAN_X, src_datatype);
+ fetch_source(mach, &src[1], &inst->Src[1], CHAN_Y, src_datatype);
+ op(&dst, &src[0], &src[1]);
+ for (chan = 0; chan < NUM_CHANNELS; chan++) {
+ if (inst->Dst[0].Register.WriteMask & (1 << chan)) {
+ store_dest(mach, &dst, &inst->Dst[0], inst, chan, dst_datatype);
+ }
+ }
+}
+
+static void
exec_vector_binary(struct tgsi_exec_machine *mach,
const struct tgsi_full_instruction *inst,
micro_binary_op op,
@@ -2320,6 +2304,289 @@ exec_nrm3(struct tgsi_exec_machine *mach,
}
static void
+exec_scs(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst)
+{
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_XY) {
+ union tgsi_exec_channel arg;
+ union tgsi_exec_channel result;
+
+ fetch_source(mach, &arg, &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT);
+
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) {
+ micro_cos(&result, &arg);
+ store_dest(mach, &result, &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) {
+ micro_sin(&result, &arg);
+ store_dest(mach, &result, &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ }
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) {
+ store_dest(mach, &ZeroVec, &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) {
+ store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT);
+ }
+}
+
+static void
+exec_x2d(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst)
+{
+ union tgsi_exec_channel r[4];
+ union tgsi_exec_channel d[2];
+
+ fetch_source(mach, &r[0], &inst->Src[1], CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ fetch_source(mach, &r[1], &inst->Src[1], CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_XZ) {
+ fetch_source(mach, &r[2], &inst->Src[2], CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ micro_mul(&r[2], &r[2], &r[0]);
+ fetch_source(mach, &r[3], &inst->Src[2], CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ micro_mul(&r[3], &r[3], &r[1]);
+ micro_add(&r[2], &r[2], &r[3]);
+ fetch_source(mach, &r[3], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ micro_add(&d[0], &r[2], &r[3]);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_YW) {
+ fetch_source(mach, &r[2], &inst->Src[2], CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ micro_mul(&r[2], &r[2], &r[0]);
+ fetch_source(mach, &r[3], &inst->Src[2], CHAN_W, TGSI_EXEC_DATA_FLOAT);
+ micro_mul(&r[3], &r[3], &r[1]);
+ micro_add(&r[2], &r[2], &r[3]);
+ fetch_source(mach, &r[3], &inst->Src[0], CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ micro_add(&d[1], &r[2], &r[3]);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) {
+ store_dest(mach, &d[0], &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) {
+ store_dest(mach, &d[1], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) {
+ store_dest(mach, &d[0], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) {
+ store_dest(mach, &d[1], &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT);
+ }
+}
+
+static void
+exec_rfl(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst)
+{
+ union tgsi_exec_channel r[9];
+
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_XYZ) {
+ /* r0 = dp3(src0, src0) */
+ fetch_source(mach, &r[2], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ micro_mul(&r[0], &r[2], &r[2]);
+ fetch_source(mach, &r[4], &inst->Src[0], CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ micro_mul(&r[8], &r[4], &r[4]);
+ micro_add(&r[0], &r[0], &r[8]);
+ fetch_source(mach, &r[6], &inst->Src[0], CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ micro_mul(&r[8], &r[6], &r[6]);
+ micro_add(&r[0], &r[0], &r[8]);
+
+ /* r1 = dp3(src0, src1) */
+ fetch_source(mach, &r[3], &inst->Src[1], CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ micro_mul(&r[1], &r[2], &r[3]);
+ fetch_source(mach, &r[5], &inst->Src[1], CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ micro_mul(&r[8], &r[4], &r[5]);
+ micro_add(&r[1], &r[1], &r[8]);
+ fetch_source(mach, &r[7], &inst->Src[1], CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ micro_mul(&r[8], &r[6], &r[7]);
+ micro_add(&r[1], &r[1], &r[8]);
+
+ /* r1 = 2 * r1 / r0 */
+ micro_add(&r[1], &r[1], &r[1]);
+ micro_div(&r[1], &r[1], &r[0]);
+
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) {
+ micro_mul(&r[2], &r[2], &r[1]);
+ micro_sub(&r[2], &r[2], &r[3]);
+ store_dest(mach, &r[2], &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) {
+ micro_mul(&r[4], &r[4], &r[1]);
+ micro_sub(&r[4], &r[4], &r[5]);
+ store_dest(mach, &r[4], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) {
+ micro_mul(&r[6], &r[6], &r[1]);
+ micro_sub(&r[6], &r[6], &r[7]);
+ store_dest(mach, &r[6], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ }
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) {
+ store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT);
+ }
+}
+
+static void
+exec_xpd(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst)
+{
+ union tgsi_exec_channel r[6];
+ union tgsi_exec_channel d[3];
+
+ fetch_source(mach, &r[0], &inst->Src[0], CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ fetch_source(mach, &r[1], &inst->Src[1], CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+
+ micro_mul(&r[2], &r[0], &r[1]);
+
+ fetch_source(mach, &r[3], &inst->Src[0], CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ fetch_source(mach, &r[4], &inst->Src[1], CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+
+ micro_mul(&r[5], &r[3], &r[4] );
+ micro_sub(&d[CHAN_X], &r[2], &r[5]);
+
+ fetch_source(mach, &r[2], &inst->Src[1], CHAN_X, TGSI_EXEC_DATA_FLOAT);
+
+ micro_mul(&r[3], &r[3], &r[2]);
+
+ fetch_source(mach, &r[5], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT);
+
+ micro_mul(&r[1], &r[1], &r[5]);
+ micro_sub(&d[CHAN_Y], &r[3], &r[1]);
+
+ micro_mul(&r[5], &r[5], &r[4]);
+ micro_mul(&r[0], &r[0], &r[2]);
+ micro_sub(&d[CHAN_Z], &r[5], &r[0]);
+
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) {
+ store_dest(mach, &d[CHAN_X], &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) {
+ store_dest(mach, &d[CHAN_Y], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) {
+ store_dest(mach, &d[CHAN_Z], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) {
+ store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT);
+ }
+}
+
+static void
+exec_dst(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst)
+{
+ union tgsi_exec_channel r[2];
+ union tgsi_exec_channel d[4];
+
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) {
+ fetch_source(mach, &r[0], &inst->Src[0], CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ fetch_source(mach, &r[1], &inst->Src[1], CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ micro_mul(&d[CHAN_Y], &r[0], &r[1]);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) {
+ fetch_source(mach, &d[CHAN_Z], &inst->Src[0], CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) {
+ fetch_source(mach, &d[CHAN_W], &inst->Src[1], CHAN_W, TGSI_EXEC_DATA_FLOAT);
+ }
+
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) {
+ store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) {
+ store_dest(mach, &d[CHAN_Y], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) {
+ store_dest(mach, &d[CHAN_Z], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) {
+ store_dest(mach, &d[CHAN_W], &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT);
+ }
+}
+
+static void
+exec_log(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst)
+{
+ union tgsi_exec_channel r[3];
+
+ fetch_source(mach, &r[0], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ micro_abs(&r[2], &r[0]); /* r2 = abs(r0) */
+ micro_lg2(&r[1], &r[2]); /* r1 = lg2(r2) */
+ micro_flr(&r[0], &r[1]); /* r0 = floor(r1) */
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) {
+ store_dest(mach, &r[0], &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) {
+ micro_exp2(&r[0], &r[0]); /* r0 = 2 ^ r0 */
+ micro_div(&r[0], &r[2], &r[0]); /* r0 = r2 / r0 */
+ store_dest(mach, &r[0], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) {
+ store_dest(mach, &r[1], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) {
+ store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT);
+ }
+}
+
+static void
+exec_exp(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst)
+{
+ union tgsi_exec_channel r[3];
+
+ fetch_source(mach, &r[0], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ micro_flr(&r[1], &r[0]); /* r1 = floor(r0) */
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) {
+ micro_exp2(&r[2], &r[1]); /* r2 = 2 ^ r1 */
+ store_dest(mach, &r[2], &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) {
+ micro_sub(&r[2], &r[0], &r[1]); /* r2 = r0 - r1 */
+ store_dest(mach, &r[2], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) {
+ micro_exp2(&r[2], &r[0]); /* r2 = 2 ^ r0 */
+ store_dest(mach, &r[2], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) {
+ store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT);
+ }
+}
+
+static void
+exec_lit(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst)
+{
+ union tgsi_exec_channel r[3];
+ union tgsi_exec_channel d[3];
+
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_X) {
+ store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_YZ) {
+ fetch_source(mach, &r[0], &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_FLOAT);
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Y) {
+ micro_max(&d[CHAN_Y], &r[0], &ZeroVec);
+ store_dest(mach, &d[CHAN_Y], &inst->Dst[0], inst, CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ }
+
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_Z) {
+ fetch_source(mach, &r[1], &inst->Src[0], CHAN_Y, TGSI_EXEC_DATA_FLOAT);
+ micro_max(&r[1], &r[1], &ZeroVec);
+
+ fetch_source(mach, &r[2], &inst->Src[0], CHAN_W, TGSI_EXEC_DATA_FLOAT);
+ micro_min(&r[2], &r[2], &P128Vec);
+ micro_max(&r[2], &r[2], &M128Vec);
+ micro_pow(&r[1], &r[1], &r[2]);
+ micro_lt(&d[CHAN_Z], &ZeroVec, &r[0], &r[1], &ZeroVec);
+ store_dest(mach, &d[CHAN_Z], &inst->Dst[0], inst, CHAN_Z, TGSI_EXEC_DATA_FLOAT);
+ }
+ }
+ if (inst->Dst[0].Register.WriteMask & TGSI_WRITEMASK_W) {
+ store_dest(mach, &OneVec, &inst->Dst[0], inst, CHAN_W, TGSI_EXEC_DATA_FLOAT);
+ }
+}
+
+static void
exec_break(struct tgsi_exec_machine *mach)
{
if (mach->BreakType == TGSI_EXEC_BREAK_INSIDE_LOOP) {
@@ -2702,9 +2969,7 @@ exec_instruction(
const struct tgsi_full_instruction *inst,
int *pc )
{
- uint chan_index;
union tgsi_exec_channel r[10];
- union tgsi_exec_channel d[8];
(*pc)++;
@@ -2718,36 +2983,7 @@ exec_instruction(
break;
case TGSI_OPCODE_LIT:
- if (IS_CHANNEL_ENABLED( *inst, CHAN_Y ) || IS_CHANNEL_ENABLED( *inst, CHAN_Z )) {
- FETCH( &r[0], 0, CHAN_X );
- if (IS_CHANNEL_ENABLED( *inst, CHAN_Y )) {
- micro_max(&d[CHAN_Y], &r[0], &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C]);
- }
-
- if (IS_CHANNEL_ENABLED( *inst, CHAN_Z )) {
- FETCH( &r[1], 0, CHAN_Y );
- micro_max( &r[1], &r[1], &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C] );
-
- FETCH( &r[2], 0, CHAN_W );
- micro_min( &r[2], &r[2], &mach->Temps[TEMP_128_I].xyzw[TEMP_128_C] );
- micro_max( &r[2], &r[2], &mach->Temps[TEMP_M128_I].xyzw[TEMP_M128_C] );
- micro_pow( &r[1], &r[1], &r[2] );
- micro_lt(&d[CHAN_Z], &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C], &r[0], &r[1], &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C]);
- }
-
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) {
- STORE(&d[CHAN_Y], 0, CHAN_Y);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Z)) {
- STORE(&d[CHAN_Z], 0, CHAN_Z);
- }
- }
- if (IS_CHANNEL_ENABLED( *inst, CHAN_X )) {
- STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_X );
- }
- if (IS_CHANNEL_ENABLED( *inst, CHAN_W )) {
- STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W );
- }
+ exec_lit(mach, inst);
break;
case TGSI_OPCODE_RCP:
@@ -2759,44 +2995,11 @@ exec_instruction(
break;
case TGSI_OPCODE_EXP:
- FETCH( &r[0], 0, CHAN_X );
- micro_flr( &r[1], &r[0] ); /* r1 = floor(r0) */
- if (IS_CHANNEL_ENABLED( *inst, CHAN_X )) {
- micro_exp2( &r[2], &r[1] ); /* r2 = 2 ^ r1 */
- STORE( &r[2], 0, CHAN_X ); /* store r2 */
- }
- if (IS_CHANNEL_ENABLED( *inst, CHAN_Y )) {
- micro_sub( &r[2], &r[0], &r[1] ); /* r2 = r0 - r1 */
- STORE( &r[2], 0, CHAN_Y ); /* store r2 */
- }
- if (IS_CHANNEL_ENABLED( *inst, CHAN_Z )) {
- micro_exp2( &r[2], &r[0] ); /* r2 = 2 ^ r0 */
- STORE( &r[2], 0, CHAN_Z ); /* store r2 */
- }
- if (IS_CHANNEL_ENABLED( *inst, CHAN_W )) {
- STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W );
- }
+ exec_exp(mach, inst);
break;
case TGSI_OPCODE_LOG:
- FETCH( &r[0], 0, CHAN_X );
- micro_abs( &r[2], &r[0] ); /* r2 = abs(r0) */
- micro_lg2( &r[1], &r[2] ); /* r1 = lg2(r2) */
- micro_flr( &r[0], &r[1] ); /* r0 = floor(r1) */
- if (IS_CHANNEL_ENABLED( *inst, CHAN_X )) {
- STORE( &r[0], 0, CHAN_X );
- }
- if (IS_CHANNEL_ENABLED( *inst, CHAN_Y )) {
- micro_exp2( &r[0], &r[0] ); /* r0 = 2 ^ r0 */
- micro_div( &r[0], &r[2], &r[0] ); /* r0 = r2 / r0 */
- STORE( &r[0], 0, CHAN_Y );
- }
- if (IS_CHANNEL_ENABLED( *inst, CHAN_Z )) {
- STORE( &r[1], 0, CHAN_Z );
- }
- if (IS_CHANNEL_ENABLED( *inst, CHAN_W )) {
- STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W );
- }
+ exec_log(mach, inst);
break;
case TGSI_OPCODE_MUL:
@@ -2816,30 +3019,7 @@ exec_instruction(
break;
case TGSI_OPCODE_DST:
- if (IS_CHANNEL_ENABLED( *inst, CHAN_Y )) {
- FETCH( &r[0], 0, CHAN_Y );
- FETCH( &r[1], 1, CHAN_Y);
- micro_mul(&d[CHAN_Y], &r[0], &r[1]);
- }
- if (IS_CHANNEL_ENABLED( *inst, CHAN_Z )) {
- FETCH(&d[CHAN_Z], 0, CHAN_Z);
- }
- if (IS_CHANNEL_ENABLED( *inst, CHAN_W )) {
- FETCH(&d[CHAN_W], 1, CHAN_W);
- }
-
- if (IS_CHANNEL_ENABLED(*inst, CHAN_X)) {
- STORE(&mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_X);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) {
- STORE(&d[CHAN_Y], 0, CHAN_Y);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Z)) {
- STORE(&d[CHAN_Z], 0, CHAN_Z);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_W)) {
- STORE(&d[CHAN_W], 0, CHAN_W);
- }
+ exec_dst(mach, inst);
break;
case TGSI_OPCODE_MIN:
@@ -2903,53 +3083,11 @@ exec_instruction(
break;
case TGSI_OPCODE_POW:
- FETCH(&r[0], 0, CHAN_X);
- FETCH(&r[1], 1, CHAN_X);
-
- micro_pow( &r[0], &r[0], &r[1] );
-
- FOR_EACH_ENABLED_CHANNEL( *inst, chan_index ) {
- STORE( &r[0], 0, chan_index );
- }
+ exec_scalar_binary(mach, inst, micro_pow, TGSI_EXEC_DATA_FLOAT, TGSI_EXEC_DATA_FLOAT);
break;
case TGSI_OPCODE_XPD:
- FETCH(&r[0], 0, CHAN_Y);
- FETCH(&r[1], 1, CHAN_Z);
-
- micro_mul( &r[2], &r[0], &r[1] );
-
- FETCH(&r[3], 0, CHAN_Z);
- FETCH(&r[4], 1, CHAN_Y);
-
- micro_mul( &r[5], &r[3], &r[4] );
- micro_sub(&d[CHAN_X], &r[2], &r[5]);
-
- FETCH(&r[2], 1, CHAN_X);
-
- micro_mul( &r[3], &r[3], &r[2] );
-
- FETCH(&r[5], 0, CHAN_X);
-
- micro_mul( &r[1], &r[1], &r[5] );
- micro_sub(&d[CHAN_Y], &r[3], &r[1]);
-
- micro_mul( &r[5], &r[5], &r[4] );
- micro_mul( &r[0], &r[0], &r[2] );
- micro_sub(&d[CHAN_Z], &r[5], &r[0]);
-
- if (IS_CHANNEL_ENABLED(*inst, CHAN_X)) {
- STORE(&d[CHAN_X], 0, CHAN_X);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) {
- STORE(&d[CHAN_Y], 0, CHAN_Y);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Z)) {
- STORE(&d[CHAN_Z], 0, CHAN_Z);
- }
- if (IS_CHANNEL_ENABLED( *inst, CHAN_W )) {
- STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W );
- }
+ exec_xpd(mach, inst);
break;
case TGSI_OPCODE_ABS:
@@ -2957,12 +3095,7 @@ exec_instruction(
break;
case TGSI_OPCODE_RCC:
- FETCH(&r[0], 0, CHAN_X);
- micro_div(&r[0], &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], &r[0]);
- micro_float_clamp(&r[0], &r[0]);
- FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) {
- STORE(&r[0], 0, chan_index);
- }
+ exec_scalar_unary(mach, inst, micro_rcc, TGSI_EXEC_DATA_FLOAT, TGSI_EXEC_DATA_FLOAT);
break;
case TGSI_OPCODE_DPH:
@@ -3006,52 +3139,7 @@ exec_instruction(
break;
case TGSI_OPCODE_RFL:
- if (IS_CHANNEL_ENABLED(*inst, CHAN_X) ||
- IS_CHANNEL_ENABLED(*inst, CHAN_Y) ||
- IS_CHANNEL_ENABLED(*inst, CHAN_Z)) {
- /* r0 = dp3(src0, src0) */
- FETCH(&r[2], 0, CHAN_X);
- micro_mul(&r[0], &r[2], &r[2]);
- FETCH(&r[4], 0, CHAN_Y);
- micro_mul(&r[8], &r[4], &r[4]);
- micro_add(&r[0], &r[0], &r[8]);
- FETCH(&r[6], 0, CHAN_Z);
- micro_mul(&r[8], &r[6], &r[6]);
- micro_add(&r[0], &r[0], &r[8]);
-
- /* r1 = dp3(src0, src1) */
- FETCH(&r[3], 1, CHAN_X);
- micro_mul(&r[1], &r[2], &r[3]);
- FETCH(&r[5], 1, CHAN_Y);
- micro_mul(&r[8], &r[4], &r[5]);
- micro_add(&r[1], &r[1], &r[8]);
- FETCH(&r[7], 1, CHAN_Z);
- micro_mul(&r[8], &r[6], &r[7]);
- micro_add(&r[1], &r[1], &r[8]);
-
- /* r1 = 2 * r1 / r0 */
- micro_add(&r[1], &r[1], &r[1]);
- micro_div(&r[1], &r[1], &r[0]);
-
- if (IS_CHANNEL_ENABLED(*inst, CHAN_X)) {
- micro_mul(&r[2], &r[2], &r[1]);
- micro_sub(&r[2], &r[2], &r[3]);
- STORE(&r[2], 0, CHAN_X);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) {
- micro_mul(&r[4], &r[4], &r[1]);
- micro_sub(&r[4], &r[4], &r[5]);
- STORE(&r[4], 0, CHAN_Y);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Z)) {
- micro_mul(&r[6], &r[6], &r[1]);
- micro_sub(&r[6], &r[6], &r[7]);
- STORE(&r[6], 0, CHAN_Z);
- }
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_W)) {
- STORE(&mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W);
- }
+ exec_rfl(mach, inst);
break;
case TGSI_OPCODE_SEQ:
@@ -3059,9 +3147,7 @@ exec_instruction(
break;
case TGSI_OPCODE_SFL:
- FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) {
- STORE(&mach->Temps[TEMP_0_I].xyzw[TEMP_0_C], 0, chan_index);
- }
+ exec_vector(mach, inst, micro_sfl, TGSI_EXEC_DATA_FLOAT);
break;
case TGSI_OPCODE_SGT:
@@ -3081,9 +3167,7 @@ exec_instruction(
break;
case TGSI_OPCODE_STR:
- FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) {
- STORE(&mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, chan_index);
- }
+ exec_vector(mach, inst, micro_str, TGSI_EXEC_DATA_FLOAT);
break;
case TGSI_OPCODE_TEX:
@@ -3140,42 +3224,7 @@ exec_instruction(
break;
case TGSI_OPCODE_X2D:
- FETCH(&r[0], 1, CHAN_X);
- FETCH(&r[1], 1, CHAN_Y);
- if (IS_CHANNEL_ENABLED(*inst, CHAN_X) ||
- IS_CHANNEL_ENABLED(*inst, CHAN_Z)) {
- FETCH(&r[2], 2, CHAN_X);
- micro_mul(&r[2], &r[2], &r[0]);
- FETCH(&r[3], 2, CHAN_Y);
- micro_mul(&r[3], &r[3], &r[1]);
- micro_add(&r[2], &r[2], &r[3]);
- FETCH(&r[3], 0, CHAN_X);
- micro_add(&d[CHAN_X], &r[2], &r[3]);
-
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Y) ||
- IS_CHANNEL_ENABLED(*inst, CHAN_W)) {
- FETCH(&r[2], 2, CHAN_Z);
- micro_mul(&r[2], &r[2], &r[0]);
- FETCH(&r[3], 2, CHAN_W);
- micro_mul(&r[3], &r[3], &r[1]);
- micro_add(&r[2], &r[2], &r[3]);
- FETCH(&r[3], 0, CHAN_Y);
- micro_add(&d[CHAN_Y], &r[2], &r[3]);
-
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_X)) {
- STORE(&d[CHAN_X], 0, CHAN_X);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) {
- STORE(&d[CHAN_Y], 0, CHAN_Y);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Z)) {
- STORE(&d[CHAN_X], 0, CHAN_Z);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_W)) {
- STORE(&d[CHAN_Y], 0, CHAN_W);
- }
+ exec_x2d(mach, inst);
break;
case TGSI_OPCODE_ARA:
@@ -3283,23 +3332,7 @@ exec_instruction(
break;
case TGSI_OPCODE_SCS:
- if( IS_CHANNEL_ENABLED( *inst, CHAN_X ) || IS_CHANNEL_ENABLED( *inst, CHAN_Y ) ) {
- FETCH( &r[0], 0, CHAN_X );
- if (IS_CHANNEL_ENABLED(*inst, CHAN_X)) {
- micro_cos(&r[1], &r[0]);
- STORE(&r[1], 0, CHAN_X);
- }
- if (IS_CHANNEL_ENABLED(*inst, CHAN_Y)) {
- micro_sin(&r[1], &r[0]);
- STORE(&r[1], 0, CHAN_Y);
- }
- }
- if( IS_CHANNEL_ENABLED( *inst, CHAN_Z ) ) {
- STORE( &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C], 0, CHAN_Z );
- }
- if( IS_CHANNEL_ENABLED( *inst, CHAN_W ) ) {
- STORE( &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], 0, CHAN_W );
- }
+ exec_scs(mach, inst);
break;
case TGSI_OPCODE_NRM:
@@ -3684,14 +3717,6 @@ tgsi_exec_machine_run( struct tgsi_exec_machine *mach )
mach->Primitives[0] = 0;
}
- for (i = 0; i < QUAD_SIZE; i++) {
- mach->Temps[TEMP_CC_I].xyzw[TEMP_CC_C].u[i] =
- (TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_X_SHIFT) |
- (TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_Y_SHIFT) |
- (TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_Z_SHIFT) |
- (TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_W_SHIFT);
- }
-
/* execute declarations (interpolants) */
for (i = 0; i < mach->NumDeclarations; i++) {
exec_declaration( mach, mach->Declarations+i );
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h b/src/gallium/auxiliary/tgsi/tgsi_exec.h
index 9d62c1d7e7..7b07778601 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h
@@ -131,34 +131,15 @@ struct tgsi_sampler
#define TGSI_EXEC_TEMP_PRIMITIVE_I (TGSI_EXEC_NUM_TEMPS + 2)
#define TGSI_EXEC_TEMP_PRIMITIVE_C 2
-/* NVIDIA condition code (CC) vector
- */
-#define TGSI_EXEC_CC_GT 0x01
-#define TGSI_EXEC_CC_EQ 0x02
-#define TGSI_EXEC_CC_LT 0x04
-#define TGSI_EXEC_CC_UN 0x08
-
-#define TGSI_EXEC_CC_X_MASK 0x000000ff
-#define TGSI_EXEC_CC_X_SHIFT 0
-#define TGSI_EXEC_CC_Y_MASK 0x0000ff00
-#define TGSI_EXEC_CC_Y_SHIFT 8
-#define TGSI_EXEC_CC_Z_MASK 0x00ff0000
-#define TGSI_EXEC_CC_Z_SHIFT 16
-#define TGSI_EXEC_CC_W_MASK 0xff000000
-#define TGSI_EXEC_CC_W_SHIFT 24
-
-#define TGSI_EXEC_TEMP_CC_I (TGSI_EXEC_NUM_TEMPS + 2)
-#define TGSI_EXEC_TEMP_CC_C 3
-
-#define TGSI_EXEC_TEMP_THREE_I (TGSI_EXEC_NUM_TEMPS + 3)
-#define TGSI_EXEC_TEMP_THREE_C 0
+#define TGSI_EXEC_TEMP_THREE_I (TGSI_EXEC_NUM_TEMPS + 2)
+#define TGSI_EXEC_TEMP_THREE_C 3
#define TGSI_EXEC_TEMP_HALF_I (TGSI_EXEC_NUM_TEMPS + 3)
-#define TGSI_EXEC_TEMP_HALF_C 1
+#define TGSI_EXEC_TEMP_HALF_C 0
/* execution mask, each value is either 0 or ~0 */
#define TGSI_EXEC_MASK_I (TGSI_EXEC_NUM_TEMPS + 3)
-#define TGSI_EXEC_MASK_C 2
+#define TGSI_EXEC_MASK_C 1
/* 4 register buffer for various purposes */
#define TGSI_EXEC_TEMP_R0 (TGSI_EXEC_NUM_TEMPS + 4)
@@ -402,6 +383,11 @@ tgsi_exec_get_shader_param(enum pipe_shader_cap param)
return TGSI_EXEC_NUM_PREDS;
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 1;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 1;
default:
return 0;
}
diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c
index b01d2ff468..9a38c37979 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_text.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
@@ -1007,7 +1007,8 @@ static const char *semantic_names[TGSI_SEMANTIC_COUNT] =
"FACE",
"EDGEFLAG",
"PRIM_ID",
- "INSTANCEID"
+ "INSTANCEID",
+ "STENCIL"
};
static const char *interpolate_names[TGSI_INTERPOLATE_COUNT] =
diff --git a/src/gallium/auxiliary/translate/translate.h b/src/gallium/auxiliary/translate/translate.h
index a75380228b..850ef39ef2 100644
--- a/src/gallium/auxiliary/translate/translate.h
+++ b/src/gallium/auxiliary/translate/translate.h
@@ -68,6 +68,33 @@ struct translate_key {
};
+struct translate;
+
+
+typedef void (PIPE_CDECL *run_elts_func)(struct translate *,
+ const unsigned *elts,
+ unsigned count,
+ unsigned instance_id,
+ void *output_buffer);
+
+typedef void (PIPE_CDECL *run_elts16_func)(struct translate *,
+ const uint16_t *elts,
+ unsigned count,
+ unsigned instance_id,
+ void *output_buffer);
+
+typedef void (PIPE_CDECL *run_elts8_func)(struct translate *,
+ const uint8_t *elts,
+ unsigned count,
+ unsigned instance_id,
+ void *output_buffer);
+
+typedef void (PIPE_CDECL *run_func)(struct translate *,
+ unsigned start,
+ unsigned count,
+ unsigned instance_id,
+ void *output_buffer);
+
struct translate {
struct translate_key key;
@@ -79,42 +106,14 @@ struct translate {
unsigned stride,
unsigned max_index );
- void (PIPE_CDECL *run_elts)( struct translate *,
- const unsigned *elts,
- unsigned count,
- unsigned instance_id,
- void *output_buffer);
-
- void (PIPE_CDECL *run_elts16)( struct translate *,
- const uint16_t *elts,
- unsigned count,
- unsigned instance_id,
- void *output_buffer);
-
- void (PIPE_CDECL *run_elts8)( struct translate *,
- const uint8_t *elts,
- unsigned count,
- unsigned instance_id,
- void *output_buffer);
-
- void (PIPE_CDECL *run)( struct translate *,
- unsigned start,
- unsigned count,
- unsigned instance_id,
- void *output_buffer);
+ run_elts_func run_elts;
+ run_elts16_func run_elts16;
+ run_elts8_func run_elts8;
+ run_func run;
};
-#if 0
-struct translate_context *translate_context_create( void );
-void translate_context_destroy( struct translate_context * );
-
-struct translate *translate_lookup_or_create( struct translate_context *tctx,
- const struct translate_key *key );
-#endif
-
-
struct translate *translate_create( const struct translate_key *key );
boolean translate_is_output_format_supported(enum pipe_format format);
diff --git a/src/gallium/auxiliary/translate/translate_sse.c b/src/gallium/auxiliary/translate/translate_sse.c
index f8bf5b4669..ef7f4be4c3 100644
--- a/src/gallium/auxiliary/translate/translate_sse.c
+++ b/src/gallium/auxiliary/translate/translate_sse.c
@@ -1495,19 +1495,19 @@ struct translate *translate_sse2_create( const struct translate_key *key )
if (!build_vertex_emit(p, &p->elt8_func, 1))
goto fail;
- p->translate.run = (void*)x86_get_func(&p->linear_func);
+ p->translate.run = (run_func) x86_get_func(&p->linear_func);
if (p->translate.run == NULL)
goto fail;
- p->translate.run_elts = (void*)x86_get_func(&p->elt_func);
+ p->translate.run_elts = (run_elts_func) x86_get_func(&p->elt_func);
if (p->translate.run_elts == NULL)
goto fail;
- p->translate.run_elts16 = (void*)x86_get_func(&p->elt16_func);
+ p->translate.run_elts16 = (run_elts16_func) x86_get_func(&p->elt16_func);
if (p->translate.run_elts16 == NULL)
goto fail;
- p->translate.run_elts8 = (void*)x86_get_func(&p->elt8_func);
+ p->translate.run_elts8 = (run_elts8_func) x86_get_func(&p->elt8_func);
if (p->translate.run_elts8 == NULL)
goto fail;
diff --git a/src/gallium/auxiliary/util/u_dl.c b/src/gallium/auxiliary/util/u_dl.c
index 220860ebf4..aca435d6ca 100644
--- a/src/gallium/auxiliary/util/u_dl.c
+++ b/src/gallium/auxiliary/util/u_dl.c
@@ -38,6 +38,7 @@
#endif
#include "u_dl.h"
+#include "u_pointer.h"
struct util_dl_library *
@@ -58,7 +59,7 @@ util_dl_get_proc_address(struct util_dl_library *library,
const char *procname)
{
#if defined(PIPE_OS_UNIX)
- return (util_dl_proc)dlsym((void *)library, procname);
+ return (util_dl_proc) pointer_to_func(dlsym((void *)library, procname));
#elif defined(PIPE_OS_WINDOWS)
return (util_dl_proc)GetProcAddress((HMODULE)library, procname);
#else
diff --git a/src/gallium/auxiliary/util/u_format_srgb.py b/src/gallium/auxiliary/util/u_format_srgb.py
index 3e8000f368..cd63ae7891 100644
--- a/src/gallium/auxiliary/util/u_format_srgb.py
+++ b/src/gallium/auxiliary/util/u_format_srgb.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-'''
+CopyRight = '''
/**************************************************************************
*
* Copyright 2010 VMware, Inc.
@@ -89,7 +89,7 @@ def main():
print '/* This file is autogenerated by u_format_srgb.py. Do not edit directly. */'
print
# This will print the copyright message on the top of this file
- print __doc__.strip()
+ print CopyRight.strip()
print
print '#include "u_format_srgb.h"'
print
diff --git a/src/gallium/auxiliary/util/u_format_table.py b/src/gallium/auxiliary/util/u_format_table.py
index f0b407b8b8..8cc22a5637 100755
--- a/src/gallium/auxiliary/util/u_format_table.py
+++ b/src/gallium/auxiliary/util/u_format_table.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-'''
+CopyRight = '''
/**************************************************************************
*
* Copyright 2010 VMware, Inc.
@@ -83,7 +83,7 @@ def write_format_table(formats):
print '/* This file is autogenerated by u_format_table.py from u_format.csv. Do not edit directly. */'
print
# This will print the copyright message on the top of this file
- print __doc__.strip()
+ print CopyRight.strip()
print
print '#include "u_format.h"'
print '#include "u_format_s3tc.h"'
diff --git a/src/gallium/drivers/failover/SConscript b/src/gallium/drivers/failover/SConscript
index f8e9b1b491..9347431f4e 100644
--- a/src/gallium/drivers/failover/SConscript
+++ b/src/gallium/drivers/failover/SConscript
@@ -10,4 +10,6 @@ failover = env.ConvenienceLibrary(
'fo_context.c',
])
+env.Alias('failover', failover)
+
Export('failover')
diff --git a/src/gallium/drivers/galahad/SConscript b/src/gallium/drivers/galahad/SConscript
index b398a3f061..3f39f99e51 100644
--- a/src/gallium/drivers/galahad/SConscript
+++ b/src/gallium/drivers/galahad/SConscript
@@ -3,11 +3,13 @@ Import('*')
env = env.Clone()
galahad = env.ConvenienceLibrary(
- target = 'identity',
+ target = 'galahad',
source = [
'glhd_context.c',
'glhd_objects.c',
'glhd_screen.c',
])
+env.Alias('galahad', galahad)
+
Export('galahad')
diff --git a/src/gallium/drivers/i915/SConscript b/src/gallium/drivers/i915/SConscript
index d4bf6fef13..8f5deed64a 100644
--- a/src/gallium/drivers/i915/SConscript
+++ b/src/gallium/drivers/i915/SConscript
@@ -2,10 +2,6 @@ Import('*')
env = env.Clone()
-if msvc:
- print 'warning: not building i915g'
- Return()
-
i915 = env.ConvenienceLibrary(
target = 'i915',
source = [
@@ -34,4 +30,6 @@ i915 = env.ConvenienceLibrary(
'i915_resource_texture.c',
])
+env.Alias('i915', i915)
+
Export('i915')
diff --git a/src/gallium/drivers/i915/i915_reg.h b/src/gallium/drivers/i915/i915_reg.h
index 04620fec68..cc28891e4a 100644
--- a/src/gallium/drivers/i915/i915_reg.h
+++ b/src/gallium/drivers/i915/i915_reg.h
@@ -973,6 +973,8 @@
#define PCI_CHIP_G33_G 0x29C2
#define PCI_CHIP_Q35_G 0x29B2
#define PCI_CHIP_Q33_G 0x29D2
+#define PCI_CHIP_PINEVIEW_G 0xA001
+#define PCI_CHIP_PINEVIEW_M 0xA011
#endif
diff --git a/src/gallium/drivers/i915/i915_resource.h b/src/gallium/drivers/i915/i915_resource.h
index 1093e8f41f..753bd266b1 100644
--- a/src/gallium/drivers/i915/i915_resource.h
+++ b/src/gallium/drivers/i915/i915_resource.h
@@ -32,6 +32,7 @@ struct i915_screen;
#include "util/u_transfer.h"
#include "util/u_debug.h"
+#include "i915_winsys.h"
struct i915_context;
@@ -52,13 +53,12 @@ struct i915_buffer {
struct i915_texture {
struct u_resource b;
+ /* tiling flags */
+ enum i915_winsys_buffer_tile tiling;
unsigned stride;
unsigned depth_stride; /* per-image on i945? */
unsigned total_nblocksy;
- unsigned sw_tiled; /**< tiled with software flags */
- unsigned hw_tiled; /**< tiled with hardware fences */
-
unsigned nr_images[I915_MAX_TEXTURE_2D_LEVELS];
/* Explicitly store the offset of each image for each cube face or
diff --git a/src/gallium/drivers/i915/i915_resource_texture.c b/src/gallium/drivers/i915/i915_resource_texture.c
index c5c6179b16..d45346b32a 100644
--- a/src/gallium/drivers/i915/i915_resource_texture.c
+++ b/src/gallium/drivers/i915/i915_resource_texture.c
@@ -165,7 +165,7 @@ i9x5_scanout_layout(struct i915_texture *tex)
if (pt->width0 >= 240) {
tex->stride = get_pot_stride(pt->format, pt->width0);
tex->total_nblocksy = align_nblocksy(pt->format, pt->height0, 8);
- tex->hw_tiled = I915_TILE_X;
+ tex->tiling = I915_TILE_X;
} else if (pt->width0 == 64 && pt->height0 == 64) {
tex->stride = get_pot_stride(pt->format, pt->width0);
tex->total_nblocksy = align_nblocksy(pt->format, pt->height0, 8);
@@ -202,7 +202,7 @@ i9x5_display_target_layout(struct i915_texture *tex)
tex->stride = get_pot_stride(pt->format, pt->width0);
tex->total_nblocksy = align_nblocksy(pt->format, pt->height0, 8);
- tex->hw_tiled = I915_TILE_X;
+ tex->tiling = I915_TILE_X;
#if DEBUG_TEXTURE
debug_printf("%s size: %d,%d,%d offset %d,%d (0x%x)\n", __FUNCTION__,
@@ -790,9 +790,8 @@ i915_texture_create(struct pipe_screen *screen,
goto fail;
/* setup any hw fences */
- if (tex->hw_tiled) {
- assert(tex->sw_tiled == I915_TILE_NONE);
- iws->buffer_set_fence_reg(iws, tex->buffer, tex->stride, tex->hw_tiled);
+ if (tex->tiling) {
+ iws->buffer_set_fence_reg(iws, tex->buffer, tex->stride, tex->tiling);
}
diff --git a/src/gallium/drivers/i915/i915_screen.c b/src/gallium/drivers/i915/i915_screen.c
index a3e7c5c577..0718325364 100644
--- a/src/gallium/drivers/i915/i915_screen.c
+++ b/src/gallium/drivers/i915/i915_screen.c
@@ -83,6 +83,12 @@ i915_get_name(struct pipe_screen *screen)
case PCI_CHIP_Q33_G:
chipset = "Q33";
break;
+ case PCI_CHIP_PINEVIEW_G:
+ chipset = "Pineview G";
+ break;
+ case PCI_CHIP_PINEVIEW_M:
+ chipset = "Pineview M";
+ break;
default:
chipset = "unknown";
break;
@@ -178,6 +184,11 @@ i915_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_sha
return 0;
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 0;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 1;
default:
assert(0);
return 0;
@@ -220,10 +231,6 @@ i915_is_format_supported(struct pipe_screen *screen,
static const enum pipe_format tex_supported[] = {
PIPE_FORMAT_B8G8R8A8_UNORM,
PIPE_FORMAT_B8G8R8X8_UNORM,
- PIPE_FORMAT_R8G8B8A8_UNORM,
-#if 0
- PIPE_FORMAT_R8G8B8X8_UNORM,
-#endif
PIPE_FORMAT_B5G6R5_UNORM,
PIPE_FORMAT_L8_UNORM,
PIPE_FORMAT_A8_UNORM,
@@ -346,6 +353,8 @@ i915_screen_create(struct i915_winsys *iws)
case PCI_CHIP_G33_G:
case PCI_CHIP_Q33_G:
case PCI_CHIP_Q35_G:
+ case PCI_CHIP_PINEVIEW_G:
+ case PCI_CHIP_PINEVIEW_M:
is->is_i945 = TRUE;
break;
diff --git a/src/gallium/drivers/i915/i915_state_emit.c b/src/gallium/drivers/i915/i915_state_emit.c
index bd059d5716..49dff1f775 100644
--- a/src/gallium/drivers/i915/i915_state_emit.c
+++ b/src/gallium/drivers/i915/i915_state_emit.c
@@ -224,10 +224,6 @@ i915_emit_hardware_state(struct i915_context *i915 )
struct i915_texture *tex = i915_texture(cbuf_surface->texture);
assert(tex);
- if (tex && tex->sw_tiled) {
- ctile = BUF_3D_TILED_SURFACE;
- }
-
OUT_BATCH(_3DSTATE_BUF_INFO_CMD);
OUT_BATCH(BUF_3D_ID_COLOR_BACK |
@@ -246,10 +242,6 @@ i915_emit_hardware_state(struct i915_context *i915 )
struct i915_texture *tex = i915_texture(depth_surface->texture);
assert(tex);
- if (tex && tex->sw_tiled) {
- ztile = BUF_3D_TILED_SURFACE;
- }
-
OUT_BATCH(_3DSTATE_BUF_INFO_CMD);
assert(tex);
diff --git a/src/gallium/drivers/i915/i915_state_sampler.c b/src/gallium/drivers/i915/i915_state_sampler.c
index 4667e0b78d..9771274ca1 100644
--- a/src/gallium/drivers/i915/i915_state_sampler.c
+++ b/src/gallium/drivers/i915/i915_state_sampler.c
@@ -267,11 +267,6 @@ static void update_map(struct i915_context *i915,
assert(format);
assert(pitch);
- if (tex->sw_tiled) {
- assert(!((pitch - 1) & pitch));
- tiled = MS3_TILED_SURFACE;
- }
-
/* MS3 state */
state[0] =
(((height - 1) << MS3_HEIGHT_SHIFT)
diff --git a/src/gallium/drivers/i965/SConscript b/src/gallium/drivers/i965/SConscript
index 119f914a16..019af682f6 100644
--- a/src/gallium/drivers/i965/SConscript
+++ b/src/gallium/drivers/i965/SConscript
@@ -2,10 +2,6 @@ Import('*')
env = env.Clone()
-if msvc:
- print 'warning: not building i965g'
- Return();
-
i965 = env.ConvenienceLibrary(
target = 'i965',
source = [
diff --git a/src/gallium/drivers/i965/brw_screen.c b/src/gallium/drivers/i965/brw_screen.c
index 864b21fa53..57160ebb29 100644
--- a/src/gallium/drivers/i965/brw_screen.c
+++ b/src/gallium/drivers/i965/brw_screen.c
@@ -235,6 +235,11 @@ brw_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_shad
return 0;
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 1;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 1;
default:
assert(0);
return 0;
diff --git a/src/gallium/drivers/llvmpipe/Makefile b/src/gallium/drivers/llvmpipe/Makefile
index 08da2286b0..669e42e300 100644
--- a/src/gallium/drivers/llvmpipe/Makefile
+++ b/src/gallium/drivers/llvmpipe/Makefile
@@ -69,7 +69,7 @@ lp_test_sincos.o : sse_mathfun.h
PROGS_DEPS := ../../auxiliary/libgallium.a
lp_tile_soa.c: lp_tile_soa.py ../../auxiliary/util/u_format_parse.py ../../auxiliary/util/u_format_pack.py ../../auxiliary/util/u_format.csv
- python lp_tile_soa.py ../../auxiliary/util/u_format.csv > $@
+ $(PYTHON2) $(PYTHON_FLAGS) lp_tile_soa.py ../../auxiliary/util/u_format.csv > $@
LDFLAGS += $(LLVM_LDFLAGS)
LIBS += -L../../auxiliary/ -lgallium libllvmpipe.a $(LLVM_LIBS) $(GL_LIB_DEPS)
diff --git a/src/gallium/drivers/llvmpipe/README b/src/gallium/drivers/llvmpipe/README
index ec30d4d708..e9374cc6ef 100644
--- a/src/gallium/drivers/llvmpipe/README
+++ b/src/gallium/drivers/llvmpipe/README
@@ -1,53 +1,6 @@
LLVMPIPE -- a fork of softpipe that employs LLVM for code generation.
-Status
-======
-
-Done so far is:
-
- - the whole fragment pipeline is code generated in a single function
-
- - input interpolation
-
- - depth testing
-
- - texture sampling
- - 1D/2D/3D/cube maps supported
- - all texture wrap modes supported
- - all texture filtering modes supported
- - perhaps not all texture formats yet supported
-
- - fragment shader TGSI translation
- - same level of support as the TGSI SSE2 exec machine, with the exception
- we don't fallback to TGSI interpretation when an unsupported opcode is
- found, but just ignore it
- - done in SoA layout
- - input interpolation also code generated
-
- - alpha testing
-
- - blend (including logic ops)
- - both in SoA and AoS layouts, but only the former used for now
-
- - code is generic
- - intermediates can be vectors of floats, ubytes, fixed point, etc, and of
- any width and length
- - not all operations are implemented for these types yet though
-
-Most mesa/progs/demos/* work.
-
-To do (probably by this order):
-
- - code generate stipple and stencil testing
-
- - translate TGSI control flow instructions, and all other remaining opcodes
-
- - integrate with the draw module for VS code generation
-
- - code generate the triangle setup and rasterization
-
-
Requirements
============
@@ -98,7 +51,7 @@ Building
To build everything on Linux invoke scons as:
- scons debug=yes statetrackers=mesa drivers=llvmpipe winsys=xlib dri=false
+ scons build=debug libgl-xlib
Alternatively, you can build it with GNU make, if you prefer, by invoking it as
@@ -108,19 +61,16 @@ but the rest of these instructions assume that scons is used.
For windows is everything the except except the winsys:
- scons debug=yes statetrackers=mesa drivers=llvmpipe winsys=gdi dri=false
+ scons build=debug libgl-gdi
Using
=====
-On Linux, building will create a drop-in alternative for libGL.so. To use it
-set the environment variables:
-
- export LD_LIBRARY_PATH=$PWD/build/linux-x86_64-debug/lib:$LD_LIBRARY_PATH
+On Linux, building will create a drop-in alternative for libGL.so into
-or
+ build/foo/gallium/targets/libgl-xlib/libGL.so
- export LD_LIBRARY_PATH=$PWD/build/linux-x86-debug/lib:$LD_LIBRARY_PATH
+To use it set the LD_LIBRARY_PATH environment variable accordingly.
For performance evaluation pass debug=no to scons, and use the corresponding
lib directory without the "-debug" suffix.
@@ -136,7 +86,7 @@ Profiling
To profile llvmpipe you should pass the options
- scons debug=no profile=yes <same-as-before>
+ scons build=profile <same-as-before>
This will ensure that frame pointers are used both in C and JIT functions, and
that no tail call optimizations are done by gcc.
@@ -200,5 +150,4 @@ Development Notes
interfaces very closely, and appear to be complete enough for code
generation. See
http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html
- for a stand-alone example.
- See the llvm-c/Core.h file for reference.
+ for a stand-alone example. See the llvm-c/Core.h file for reference.
diff --git a/src/gallium/drivers/llvmpipe/SConscript b/src/gallium/drivers/llvmpipe/SConscript
index 49950153a4..26b258b956 100644
--- a/src/gallium/drivers/llvmpipe/SConscript
+++ b/src/gallium/drivers/llvmpipe/SConscript
@@ -9,8 +9,6 @@ if not env['llvm']:
env = env.Clone()
-env.Tool('udis86')
-
env.Append(CPPPATH = ['.'])
env.CodeGenerate(
@@ -78,6 +76,8 @@ llvmpipe = env.ConvenienceLibrary(
lp_tile_soa_os,
])
+env.Alias('llvmpipe', llvmpipe)
+
if env['platform'] != 'embedded':
env = env.Clone()
@@ -92,7 +92,7 @@ if env['platform'] != 'embedded':
'sincos',
]
- if not msvc:
+ if not env['msvc']:
tests.append('round')
for test in tests:
diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c
index d358a98394..decf3bd449 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast.c
+++ b/src/gallium/drivers/llvmpipe/lp_rast.c
@@ -485,8 +485,11 @@ static void
lp_rast_end_query(struct lp_rasterizer_task *task,
const union lp_rast_cmd_arg arg)
{
- task->query->count[task->thread_index] += task->vis_counter;
- task->query = NULL;
+ assert(task->query);
+ if (task->query) {
+ task->query->count[task->thread_index] += task->vis_counter;
+ task->query = NULL;
+ }
}
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c
index 827413bb33..29c231714e 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_line.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c
@@ -569,7 +569,10 @@ try_setup_line( struct lp_setup_context *setup,
return TRUE;
}
- u_rect_find_intersection(&setup->draw_region, &bbox);
+ /* Can safely discard negative regions:
+ */
+ bbox.x0 = MAX2(bbox.x0, 0);
+ bbox.y0 = MAX2(bbox.y0, 0);
line = lp_setup_alloc_triangle(scene,
key->num_inputs,
@@ -680,24 +683,26 @@ try_setup_line( struct lp_setup_context *setup,
* these planes elsewhere.
*/
if (nr_planes == 8) {
+ const struct u_rect *scissor = &setup->scissor;
+
plane[4].dcdx = -1;
plane[4].dcdy = 0;
- plane[4].c = 1-bbox.x0;
+ plane[4].c = 1-scissor->x0;
plane[4].eo = 1;
plane[5].dcdx = 1;
plane[5].dcdy = 0;
- plane[5].c = bbox.x1+1;
+ plane[5].c = scissor->x1+1;
plane[5].eo = 0;
plane[6].dcdx = 0;
plane[6].dcdy = 1;
- plane[6].c = 1-bbox.y0;
+ plane[6].c = 1-scissor->y0;
plane[6].eo = 1;
plane[7].dcdx = 0;
plane[7].dcdy = -1;
- plane[7].c = bbox.y1+1;
+ plane[7].c = scissor->y1+1;
plane[7].eo = 0;
}
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
index 4ab0b72a57..bfb6bf277b 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
@@ -295,7 +295,12 @@ do_triangle_ccw(struct lp_setup_context *setup,
return TRUE;
}
- u_rect_find_intersection(&setup->draw_region, &bbox);
+ /* Can safely discard negative regions, but need to keep hold of
+ * information about when the triangle extends past screen
+ * boundaries. See trimmed_box in lp_setup_bin_triangle().
+ */
+ bbox.x0 = MAX2(bbox.x0, 0);
+ bbox.y0 = MAX2(bbox.y0, 0);
tri = lp_setup_alloc_triangle(scene,
key->num_inputs,
@@ -501,24 +506,26 @@ do_triangle_ccw(struct lp_setup_context *setup,
* these planes elsewhere.
*/
if (nr_planes == 7) {
+ const struct u_rect *scissor = &setup->scissor;
+
plane[3].dcdx = -1;
plane[3].dcdy = 0;
- plane[3].c = 1-bbox.x0;
+ plane[3].c = 1-scissor->x0;
plane[3].eo = 1;
plane[4].dcdx = 1;
plane[4].dcdy = 0;
- plane[4].c = bbox.x1+1;
+ plane[4].c = scissor->x1+1;
plane[4].eo = 0;
plane[5].dcdx = 0;
plane[5].dcdy = 1;
- plane[5].c = 1-bbox.y0;
+ plane[5].c = 1-scissor->y0;
plane[5].eo = 1;
plane[6].dcdx = 0;
plane[6].dcdy = -1;
- plane[6].c = bbox.y1+1;
+ plane[6].c = scissor->y1+1;
plane[6].eo = 0;
}
@@ -559,6 +566,7 @@ lp_setup_bin_triangle( struct lp_setup_context *setup,
int nr_planes )
{
struct lp_scene *scene = setup->scene;
+ struct u_rect trimmed_box = *bbox;
int i;
/* What is the largest power-of-two boundary this triangle crosses:
@@ -572,6 +580,13 @@ lp_setup_bin_triangle( struct lp_setup_context *setup,
int sz = floor_pot((bbox->x1 - (bbox->x0 & ~3)) |
(bbox->y1 - (bbox->y0 & ~3)));
+ /* Now apply scissor, etc to the bounding box. Could do this
+ * earlier, but it confuses the logic for tri-16 and would force
+ * the rasterizer to also respect scissor, etc, just for the rare
+ * cases where a small triangle extends beyond the scissor.
+ */
+ u_rect_find_intersection(&setup->draw_region, &trimmed_box);
+
/* Determine which tile(s) intersect the triangle's bounding box
*/
if (dx < TILE_SIZE)
@@ -626,15 +641,16 @@ lp_setup_bin_triangle( struct lp_setup_context *setup,
struct lp_rast_plane *plane = GET_PLANES(tri);
int c[MAX_PLANES];
int ei[MAX_PLANES];
+
int eo[MAX_PLANES];
int xstep[MAX_PLANES];
int ystep[MAX_PLANES];
int x, y;
- int ix0 = bbox->x0 / TILE_SIZE;
- int iy0 = bbox->y0 / TILE_SIZE;
- int ix1 = bbox->x1 / TILE_SIZE;
- int iy1 = bbox->y1 / TILE_SIZE;
+ int ix0 = trimmed_box.x0 / TILE_SIZE;
+ int iy0 = trimmed_box.y0 / TILE_SIZE;
+ int ix1 = trimmed_box.x1 / TILE_SIZE;
+ int iy1 = trimmed_box.y1 / TILE_SIZE;
for (i = 0; i < nr_planes; i++) {
c[i] = (plane[i].c +
@@ -799,6 +815,16 @@ static void triangle_both( struct lp_setup_context *setup,
{
float area = calc_area(v0, v1, v2);
+ if (0) {
+ assert(!util_is_inf_or_nan(v0[0][0]));
+ assert(!util_is_inf_or_nan(v0[0][1]));
+ assert(!util_is_inf_or_nan(v1[0][0]));
+ assert(!util_is_inf_or_nan(v1[0][1]));
+ assert(!util_is_inf_or_nan(v2[0][0]));
+ assert(!util_is_inf_or_nan(v2[0][1]));
+ assert(!util_is_inf_or_nan(area));
+ }
+
if (area > 0.0f)
retry_triangle_ccw( setup, v0, v1, v2, setup->ccw_is_frontface );
else if (area < 0.0f)
diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index 9fbedac165..48971510f2 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -761,11 +761,6 @@ generate_fragment(struct llvmpipe_screen *screen,
}
}
-#ifdef PIPE_ARCH_X86
- /* Avoid corrupting the FPU stack on 32bit OSes. */
- lp_build_intrinsic(builder, "llvm.x86.mmx.emms", LLVMVoidType(), NULL, 0);
-#endif
-
LLVMBuildRetVoid(builder);
LLVMDisposeBuilder(builder);
@@ -1067,11 +1062,11 @@ llvmpipe_bind_fs_state(struct pipe_context *pipe, void *fs)
draw_flush(llvmpipe->draw);
+ llvmpipe->fs = (struct lp_fragment_shader *) fs;
+
draw_bind_fragment_shader(llvmpipe->draw,
(llvmpipe->fs ? llvmpipe->fs->draw_data : NULL));
- llvmpipe->fs = fs;
-
llvmpipe->dirty |= LP_NEW_FS;
}
diff --git a/src/gallium/drivers/llvmpipe/lp_tile_soa.py b/src/gallium/drivers/llvmpipe/lp_tile_soa.py
index e49f9c62fe..8df7b236fe 100644
--- a/src/gallium/drivers/llvmpipe/lp_tile_soa.py
+++ b/src/gallium/drivers/llvmpipe/lp_tile_soa.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-'''
+CopyRight = '''
/**************************************************************************
*
* Copyright 2009 VMware, Inc.
@@ -510,7 +510,7 @@ def main():
print '/* This file is autogenerated by lp_tile_soa.py from u_format.csv. Do not edit directly. */'
print
# This will print the copyright message on the top of this file
- print __doc__.strip()
+ print CopyRight.strip()
print
print '#include "pipe/p_compiler.h"'
print '#include "util/u_format.h"'
diff --git a/src/gallium/drivers/sw/Makefile b/src/gallium/drivers/noop/Makefile
index 2713a62ee9..29b8d73de2 100644
--- a/src/gallium/drivers/sw/Makefile
+++ b/src/gallium/drivers/noop/Makefile
@@ -4,7 +4,10 @@
TOP = ../../../..
include $(TOP)/configs/current
+LIBNAME = noop
+
C_SOURCES = \
- sw.c
+ noop_pipe.c \
+ noop_state.c
include ../../Makefile.template
diff --git a/src/gallium/drivers/noop/SConscript b/src/gallium/drivers/noop/SConscript
new file mode 100644
index 0000000000..a4d0dcaf27
--- /dev/null
+++ b/src/gallium/drivers/noop/SConscript
@@ -0,0 +1,15 @@
+#######################################################################
+# SConscript for noop convenience library
+
+Import('*')
+
+env = env.Clone()
+
+noop = env.ConvenienceLibrary(
+ target = 'noop',
+ source = [
+ 'noop_pipe.c',
+ 'noop_state.c'
+ ]
+ ) + extra
+Export('noop')
diff --git a/src/gallium/drivers/noop/noop_pipe.c b/src/gallium/drivers/noop/noop_pipe.c
new file mode 100644
index 0000000000..fb5cdb4609
--- /dev/null
+++ b/src/gallium/drivers/noop/noop_pipe.c
@@ -0,0 +1,550 @@
+/*
+ * Copyright 2010 Red Hat 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
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, and/or sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include <stdio.h>
+#include <errno.h>
+#include <pipe/p_defines.h>
+#include <pipe/p_state.h>
+#include <pipe/p_context.h>
+#include <pipe/p_screen.h>
+#include <util/u_memory.h>
+#include <util/u_inlines.h>
+#include <util/u_format.h>
+#include "noop_public.h"
+#include "state_tracker/sw_winsys.h"
+
+void noop_init_state_functions(struct pipe_context *ctx);
+
+/*
+ * query
+ */
+struct noop_query {
+ unsigned query;
+};
+static struct pipe_query *noop_create_query(struct pipe_context *ctx, unsigned query_type)
+{
+ struct noop_query *query = CALLOC_STRUCT(noop_query);
+
+ return (struct pipe_query *)query;
+}
+
+static void noop_destroy_query(struct pipe_context *ctx, struct pipe_query *query)
+{
+ FREE(query);
+}
+
+static void noop_begin_query(struct pipe_context *ctx, struct pipe_query *query)
+{
+}
+
+static void noop_end_query(struct pipe_context *ctx, struct pipe_query *query)
+{
+}
+
+static boolean noop_get_query_result(struct pipe_context *ctx,
+ struct pipe_query *query,
+ boolean wait, void *vresult)
+{
+ uint64_t *result = (uint64_t*)vresult;
+
+ *result = 0;
+ return TRUE;
+}
+
+
+/*
+ * resource
+ */
+struct noop_resource {
+ struct pipe_resource base;
+ unsigned size;
+ char *data;
+ struct sw_displaytarget *dt;
+};
+
+static unsigned noop_is_resource_referenced(struct pipe_context *pipe,
+ struct pipe_resource *resource,
+ unsigned face, unsigned level)
+{
+ return PIPE_UNREFERENCED;
+}
+
+static struct pipe_resource *noop_resource_create(struct pipe_screen *screen,
+ const struct pipe_resource *templ)
+{
+ struct noop_resource *nresource;
+ unsigned stride;
+
+ nresource = CALLOC_STRUCT(noop_resource);
+ if (nresource == NULL)
+ return NULL;
+
+ stride = util_format_get_stride(templ->format, templ->width0);
+ nresource->base = *templ;
+ nresource->base.screen = screen;
+ nresource->size = stride * templ->height0 * templ->depth0;
+ nresource->data = malloc(nresource->size);
+ pipe_reference_init(&nresource->base.reference, 1);
+ if (nresource->data == NULL) {
+ FREE(nresource);
+ return NULL;
+ }
+#if 0
+ if (nresource->base.bind & (PIPE_BIND_DISPLAY_TARGET |
+ PIPE_BIND_SCANOUT |
+ PIPE_BIND_SHARED)) {
+ struct sw_winsys *winsys = (struct sw_winsys *)screen->winsys;
+ unsigned stride;
+
+ nresource->dt = winsys->displaytarget_create(winsys, nresource->base.bind,
+ nresource->base.format,
+ nresource->base.width0,
+ nresource->base.height0,
+ 16, &stride);
+ }
+#endif
+ return &nresource->base;
+}
+
+static struct pipe_resource *noop_resource_from_handle(struct pipe_screen * screen,
+ const struct pipe_resource *templ,
+ struct winsys_handle *whandle)
+{
+ struct sw_winsys *winsys = (struct sw_winsys *)screen->winsys;
+ struct noop_resource *nresource;
+ struct sw_displaytarget *dt;
+ unsigned stride;
+
+ dt = winsys->displaytarget_from_handle(winsys, templ, whandle, &stride);
+ if (dt == NULL) {
+ return NULL;
+ }
+ nresource = (struct noop_resource *)noop_resource_create(screen, templ);
+ nresource->dt = dt;
+ return &nresource->base;
+}
+
+static boolean noop_resource_get_handle(struct pipe_screen *screen,
+ struct pipe_resource *resource,
+ struct winsys_handle *handle)
+{
+ struct sw_winsys *winsys = (struct sw_winsys *)screen->winsys;
+ struct noop_resource *nresource = (struct noop_resource *)resource;
+
+ if (nresource->dt == NULL)
+ return FALSE;
+
+ return winsys->displaytarget_get_handle(winsys, nresource->dt, handle);
+}
+
+static void noop_resource_destroy(struct pipe_screen *screen,
+ struct pipe_resource *resource)
+{
+ struct noop_resource *nresource = (struct noop_resource *)resource;
+
+ if (nresource->dt) {
+ /* display target */
+ struct sw_winsys *winsys = (struct sw_winsys *)screen->winsys;
+ winsys->displaytarget_destroy(winsys, nresource->dt);
+ }
+ free(nresource->data);
+ FREE(resource);
+}
+
+static struct pipe_resource *noop_user_buffer_create(struct pipe_screen *screen,
+ void *ptr, unsigned bytes,
+ unsigned bind)
+{
+ struct pipe_resource templ;
+
+ templ.target = PIPE_BUFFER;
+ templ.format = PIPE_FORMAT_R8_UNORM;
+ templ.usage = PIPE_USAGE_IMMUTABLE;
+ templ.bind = bind;
+ templ.width0 = bytes;
+ templ.height0 = 1;
+ templ.depth0 = 1;
+ templ.flags = 0;
+ return noop_resource_create(screen, &templ);
+}
+
+
+/*
+ * transfer
+ */
+static struct pipe_transfer *noop_get_transfer(struct pipe_context *context,
+ struct pipe_resource *resource,
+ struct pipe_subresource sr,
+ enum pipe_transfer_usage usage,
+ const struct pipe_box *box)
+{
+ struct pipe_transfer *transfer;
+
+ transfer = CALLOC_STRUCT(pipe_transfer);
+ if (transfer == NULL)
+ return NULL;
+ pipe_resource_reference(&transfer->resource, resource);
+ transfer->sr = sr;
+ transfer->usage = usage;
+ transfer->box = *box;
+ transfer->stride = 1;
+ transfer->slice_stride = 1;
+ return transfer;
+}
+
+static void *noop_transfer_map(struct pipe_context *pipe,
+ struct pipe_transfer *transfer)
+{
+ struct noop_resource *nresource = (struct noop_resource *)transfer->resource;
+
+ return nresource->data;
+}
+
+static void noop_transfer_flush_region(struct pipe_context *pipe,
+ struct pipe_transfer *transfer,
+ const struct pipe_box *box)
+{
+}
+
+static void noop_transfer_unmap(struct pipe_context *pipe,
+ struct pipe_transfer *transfer)
+{
+}
+
+static void noop_transfer_destroy(struct pipe_context *pipe,
+ struct pipe_transfer *transfer)
+{
+ pipe_resource_reference(&transfer->resource, NULL);
+ FREE(transfer);
+}
+
+static void noop_transfer_inline_write(struct pipe_context *pipe,
+ struct pipe_resource *resource,
+ struct pipe_subresource sr,
+ unsigned usage,
+ const struct pipe_box *box,
+ const void *data,
+ unsigned stride,
+ unsigned slice_stride)
+{
+}
+
+
+/*
+ * clear/copy
+ */
+static void noop_clear(struct pipe_context *ctx, unsigned buffers,
+ const float *rgba, double depth, unsigned stencil)
+{
+}
+
+static void noop_clear_render_target(struct pipe_context *ctx,
+ struct pipe_surface *dst,
+ const float *rgba,
+ unsigned dstx, unsigned dsty,
+ unsigned width, unsigned height)
+{
+}
+
+static void noop_clear_depth_stencil(struct pipe_context *ctx,
+ struct pipe_surface *dst,
+ unsigned clear_flags,
+ double depth,
+ unsigned stencil,
+ unsigned dstx, unsigned dsty,
+ unsigned width, unsigned height)
+{
+}
+
+static void noop_resource_copy_region(struct pipe_context *ctx,
+ struct pipe_resource *dst,
+ struct pipe_subresource subdst,
+ unsigned dstx, unsigned dsty, unsigned dstz,
+ struct pipe_resource *src,
+ struct pipe_subresource subsrc,
+ unsigned srcx, unsigned srcy, unsigned srcz,
+ unsigned width, unsigned height)
+{
+}
+
+
+/*
+ * context
+ */
+static void noop_flush(struct pipe_context *ctx, unsigned flags,
+ struct pipe_fence_handle **fence)
+{
+}
+
+static void noop_destroy_context(struct pipe_context *ctx)
+{
+ FREE(ctx);
+}
+
+static struct pipe_context *noop_create_context(struct pipe_screen *screen, void *priv)
+{
+ struct pipe_context *ctx = CALLOC_STRUCT(pipe_context);
+
+ if (ctx == NULL)
+ return NULL;
+ ctx->winsys = screen->winsys;
+ ctx->screen = screen;
+ ctx->priv = priv;
+ ctx->destroy = noop_destroy_context;
+ ctx->flush = noop_flush;
+ ctx->clear = noop_clear;
+ ctx->clear_render_target = noop_clear_render_target;
+ ctx->clear_depth_stencil = noop_clear_depth_stencil;
+ ctx->resource_copy_region = noop_resource_copy_region;
+ ctx->create_query = noop_create_query;
+ ctx->destroy_query = noop_destroy_query;
+ ctx->begin_query = noop_begin_query;
+ ctx->end_query = noop_end_query;
+ ctx->get_query_result = noop_get_query_result;
+ ctx->get_transfer = noop_get_transfer;
+ ctx->transfer_map = noop_transfer_map;
+ ctx->transfer_flush_region = noop_transfer_flush_region;
+ ctx->transfer_unmap = noop_transfer_unmap;
+ ctx->transfer_destroy = noop_transfer_destroy;
+ ctx->transfer_inline_write = noop_transfer_inline_write;
+ ctx->is_resource_referenced = noop_is_resource_referenced;
+ noop_init_state_functions(ctx);
+
+ return ctx;
+}
+
+/*
+ * texture
+ */
+static struct pipe_surface *noop_get_tex_surface(struct pipe_screen *screen,
+ struct pipe_resource *texture,
+ unsigned face, unsigned level,
+ unsigned zslice, unsigned flags)
+{
+ struct pipe_surface *surface = CALLOC_STRUCT(pipe_surface);
+
+ if (surface == NULL)
+ return NULL;
+ pipe_reference_init(&surface->reference, 1);
+ pipe_resource_reference(&surface->texture, texture);
+ surface->format = texture->format;
+ surface->width = texture->width0;
+ surface->height = texture->height0;
+ surface->offset = 0;
+ surface->usage = flags;
+ surface->zslice = zslice;
+ surface->texture = texture;
+ surface->face = face;
+ surface->level = level;
+
+ return surface;
+}
+
+static void noop_tex_surface_destroy(struct pipe_surface *surface)
+{
+ pipe_resource_reference(&surface->texture, NULL);
+ FREE(surface);
+}
+
+
+/*
+ * pipe_screen
+ */
+static void noop_flush_frontbuffer(struct pipe_screen *_screen,
+ struct pipe_surface *surface,
+ void *context_private)
+{
+}
+
+static const char *noop_get_vendor(struct pipe_screen* pscreen)
+{
+ return "X.Org";
+}
+
+static const char *noop_get_name(struct pipe_screen* pscreen)
+{
+ return "NOOP";
+}
+
+static int noop_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
+{
+ switch (param) {
+ /* Supported features (boolean caps). */
+ case PIPE_CAP_NPOT_TEXTURES:
+ case PIPE_CAP_TWO_SIDED_STENCIL:
+ case PIPE_CAP_GLSL:
+ case PIPE_CAP_OCCLUSION_QUERY:
+ case PIPE_CAP_POINT_SPRITE:
+ case PIPE_CAP_ANISOTROPIC_FILTER:
+ case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
+ case PIPE_CAP_TEXTURE_MIRROR_REPEAT:
+ case PIPE_CAP_TEXTURE_SHADOW_MAP:
+ case PIPE_CAP_TEXTURE_SWIZZLE:
+ case PIPE_CAP_BLEND_EQUATION_SEPARATE:
+
+ return 1;
+ case PIPE_CAP_DUAL_SOURCE_BLEND:
+
+ case PIPE_CAP_SM3:
+ case PIPE_CAP_INDEP_BLEND_ENABLE:
+ case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE:
+ case PIPE_CAP_DEPTH_CLAMP:
+ case PIPE_CAP_SHADER_STENCIL_EXPORT:
+ case PIPE_CAP_TIMER_QUERY:
+ case PIPE_CAP_STREAM_OUTPUT:
+ case PIPE_CAP_PRIMITIVE_RESTART:
+ case PIPE_CAP_INDEP_BLEND_FUNC:
+ return 0;
+
+ /* Texturing. */
+ case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
+ case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
+ case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
+ return 14;
+ case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS:
+ return 16;
+ case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
+ case PIPE_CAP_MAX_COMBINED_SAMPLERS:
+ return 16;
+
+ /* Render targets. */
+ case PIPE_CAP_MAX_RENDER_TARGETS:
+ return 8;
+
+ /* 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;
+
+ default:
+ return 0;
+ }
+}
+
+static float noop_get_paramf(struct pipe_screen* pscreen, enum pipe_cap param)
+{
+ switch (param) {
+ case PIPE_CAP_MAX_LINE_WIDTH:
+ case PIPE_CAP_MAX_LINE_WIDTH_AA:
+ case PIPE_CAP_MAX_POINT_WIDTH:
+ case PIPE_CAP_MAX_POINT_WIDTH_AA:
+ return 8192.0f;
+ case PIPE_CAP_MAX_TEXTURE_ANISOTROPY:
+ return 16.0f;
+ case PIPE_CAP_MAX_TEXTURE_LOD_BIAS:
+ return 16.0f;
+ default:
+ return 0.0f;
+ }
+}
+
+static int noop_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enum pipe_shader_cap param)
+{
+ switch(shader)
+ {
+ case PIPE_SHADER_FRAGMENT:
+ case PIPE_SHADER_VERTEX:
+ case PIPE_SHADER_GEOMETRY:
+ break;
+ default:
+ return 0;
+ }
+
+ switch (param) {
+ case PIPE_SHADER_CAP_MAX_INSTRUCTIONS:
+ case PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS:
+ case PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS:
+ case PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS:
+ return 16384;
+ case PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH:
+ return 8;
+ case PIPE_SHADER_CAP_MAX_INPUTS:
+ return 16;
+ case PIPE_SHADER_CAP_MAX_TEMPS:
+ return 256;
+ case PIPE_SHADER_CAP_MAX_ADDRS:
+ return 1;
+ case PIPE_SHADER_CAP_MAX_CONSTS:
+ return 256;
+ case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
+ return 1;
+ case PIPE_SHADER_CAP_MAX_PREDS:
+ return 0;
+ case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
+ return 1;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+static boolean noop_is_format_supported(struct pipe_screen* screen,
+ enum pipe_format format,
+ enum pipe_texture_target target,
+ unsigned sample_count,
+ unsigned usage,
+ unsigned geom_flags)
+{
+ return true;
+}
+
+static void noop_destroy_screen(struct pipe_screen *screen)
+{
+ FREE(screen);
+}
+
+struct pipe_screen *noop_screen_create(struct sw_winsys *winsys)
+{
+ struct pipe_screen *screen;
+
+ screen = CALLOC_STRUCT(pipe_screen);
+ if (screen == NULL) {
+ return NULL;
+ }
+
+ screen->winsys = (struct pipe_winsys*)winsys;
+ screen->destroy = noop_destroy_screen;
+ screen->get_name = noop_get_name;
+ screen->get_vendor = noop_get_vendor;
+ screen->get_param = noop_get_param;
+ screen->get_shader_param = noop_get_shader_param;
+ screen->get_paramf = noop_get_paramf;
+ screen->is_format_supported = noop_is_format_supported;
+ screen->context_create = noop_create_context;
+ screen->get_tex_surface = noop_get_tex_surface;
+ screen->tex_surface_destroy = noop_tex_surface_destroy;
+ screen->resource_create = noop_resource_create;
+ screen->resource_from_handle = noop_resource_from_handle;
+ screen->resource_get_handle = noop_resource_get_handle;
+ screen->resource_destroy = noop_resource_destroy;
+ screen->user_buffer_create = noop_user_buffer_create;
+ screen->flush_frontbuffer = noop_flush_frontbuffer;
+
+ return screen;
+}
diff --git a/src/gallium/drivers/noop/noop_public.h b/src/gallium/drivers/noop/noop_public.h
new file mode 100644
index 0000000000..8ce82bec69
--- /dev/null
+++ b/src/gallium/drivers/noop/noop_public.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2010 Red Hat 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
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, and/or sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef NOOP_PUBLIC_H
+#define NOOP_PUBLIC_H
+
+struct sw_winsys;
+
+struct pipe_screen *noop_screen_create(struct sw_winsys *winsys);
+
+#endif
diff --git a/src/gallium/drivers/noop/noop_state.c b/src/gallium/drivers/noop/noop_state.c
new file mode 100644
index 0000000000..048ed42a9b
--- /dev/null
+++ b/src/gallium/drivers/noop/noop_state.c
@@ -0,0 +1,256 @@
+/*
+ * Copyright 2010 Red Hat 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
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, and/or sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include <stdio.h>
+#include <errno.h>
+#include <pipe/p_defines.h>
+#include <pipe/p_state.h>
+#include <pipe/p_context.h>
+#include <pipe/p_screen.h>
+#include <util/u_memory.h>
+#include <util/u_inlines.h>
+
+static void noop_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
+{
+}
+
+static void noop_set_blend_color(struct pipe_context *ctx,
+ const struct pipe_blend_color *state)
+{
+}
+
+static void *noop_create_blend_state(struct pipe_context *ctx,
+ const struct pipe_blend_state *state)
+{
+ struct pipe_blend_state *nstate = CALLOC_STRUCT(pipe_blend_state);
+
+ if (nstate == NULL) {
+ return NULL;
+ }
+ *nstate = *state;
+ return nstate;
+}
+
+static void *noop_create_dsa_state(struct pipe_context *ctx,
+ const struct pipe_depth_stencil_alpha_state *state)
+{
+ struct pipe_depth_stencil_alpha_state *nstate = CALLOC_STRUCT(pipe_depth_stencil_alpha_state);
+
+ if (nstate == NULL) {
+ return NULL;
+ }
+ *nstate = *state;
+ return nstate;
+}
+
+static void *noop_create_rs_state(struct pipe_context *ctx,
+ const struct pipe_rasterizer_state *state)
+{
+ struct pipe_rasterizer_state *nstate = CALLOC_STRUCT(pipe_rasterizer_state);
+
+ if (nstate == NULL) {
+ return NULL;
+ }
+ *nstate = *state;
+ return nstate;
+}
+
+static void *noop_create_sampler_state(struct pipe_context *ctx,
+ const struct pipe_sampler_state *state)
+{
+ struct pipe_sampler_state *nstate = CALLOC_STRUCT(pipe_sampler_state);
+
+ if (nstate == NULL) {
+ return NULL;
+ }
+ *nstate = *state;
+ return nstate;
+}
+
+static struct pipe_sampler_view *noop_create_sampler_view(struct pipe_context *ctx,
+ struct pipe_resource *texture,
+ const struct pipe_sampler_view *state)
+{
+ struct pipe_sampler_view *sampler_view = CALLOC_STRUCT(pipe_sampler_view);
+
+ if (sampler_view == NULL)
+ return NULL;
+ /* initialize base object */
+ pipe_resource_reference(&sampler_view->texture, texture);
+ pipe_reference_init(&sampler_view->reference, 1);
+ sampler_view->context = ctx;
+ return sampler_view;
+}
+
+static void noop_set_vs_sampler_view(struct pipe_context *ctx, unsigned count,
+ struct pipe_sampler_view **views)
+{
+}
+
+static void noop_set_ps_sampler_view(struct pipe_context *ctx, unsigned count,
+ struct pipe_sampler_view **views)
+{
+}
+
+static void noop_bind_sampler(struct pipe_context *ctx, unsigned count, void **states)
+{
+}
+
+static void noop_set_clip_state(struct pipe_context *ctx,
+ const struct pipe_clip_state *state)
+{
+}
+
+static void noop_set_polygon_stipple(struct pipe_context *ctx,
+ const struct pipe_poly_stipple *state)
+{
+}
+
+static void noop_set_sample_mask(struct pipe_context *pipe, unsigned sample_mask)
+{
+}
+
+static void noop_set_scissor_state(struct pipe_context *ctx,
+ const struct pipe_scissor_state *state)
+{
+}
+
+static void noop_set_stencil_ref(struct pipe_context *ctx,
+ const struct pipe_stencil_ref *state)
+{
+}
+
+static void noop_set_viewport_state(struct pipe_context *ctx,
+ const struct pipe_viewport_state *state)
+{
+}
+
+static void noop_set_framebuffer_state(struct pipe_context *ctx,
+ const struct pipe_framebuffer_state *state)
+{
+}
+
+static void noop_set_constant_buffer(struct pipe_context *ctx,
+ uint shader, uint index,
+ struct pipe_resource *buffer)
+{
+}
+
+
+static void noop_sampler_view_destroy(struct pipe_context *ctx,
+ struct pipe_sampler_view *state)
+{
+ pipe_resource_reference(&state->texture, NULL);
+ FREE(state);
+}
+
+static void noop_bind_state(struct pipe_context *ctx, void *state)
+{
+}
+
+static void noop_delete_state(struct pipe_context *ctx, void *state)
+{
+ FREE(state);
+}
+
+static void noop_delete_vertex_element(struct pipe_context *ctx, void *state)
+{
+ FREE(state);
+}
+
+
+static void noop_set_index_buffer(struct pipe_context *ctx,
+ const struct pipe_index_buffer *ib)
+{
+}
+
+static void noop_set_vertex_buffers(struct pipe_context *ctx, unsigned count,
+ const struct pipe_vertex_buffer *buffers)
+{
+}
+
+static void *noop_create_vertex_elements(struct pipe_context *ctx,
+ unsigned count,
+ const struct pipe_vertex_element *state)
+{
+ struct pipe_vertex_element *nstate = CALLOC_STRUCT(pipe_vertex_element);
+
+ if (nstate == NULL) {
+ return NULL;
+ }
+ *nstate = *state;
+ return nstate;
+}
+
+static void *noop_create_shader_state(struct pipe_context *ctx,
+ const struct pipe_shader_state *state)
+{
+ struct pipe_shader_state *nstate = CALLOC_STRUCT(pipe_shader_state);
+
+ if (nstate == NULL) {
+ return NULL;
+ }
+ *nstate = *state;
+ return nstate;
+}
+
+void noop_init_state_functions(struct pipe_context *ctx)
+{
+ ctx->create_blend_state = noop_create_blend_state;
+ ctx->create_depth_stencil_alpha_state = noop_create_dsa_state;
+ ctx->create_fs_state = noop_create_shader_state;
+ ctx->create_rasterizer_state = noop_create_rs_state;
+ ctx->create_sampler_state = noop_create_sampler_state;
+ ctx->create_sampler_view = noop_create_sampler_view;
+ ctx->create_vertex_elements_state = noop_create_vertex_elements;
+ ctx->create_vs_state = noop_create_shader_state;
+ ctx->bind_blend_state = noop_bind_state;
+ ctx->bind_depth_stencil_alpha_state = noop_bind_state;
+ ctx->bind_fragment_sampler_states = noop_bind_sampler;
+ ctx->bind_fs_state = noop_bind_state;
+ ctx->bind_rasterizer_state = noop_bind_state;
+ ctx->bind_vertex_elements_state = noop_bind_state;
+ ctx->bind_vertex_sampler_states = noop_bind_sampler;
+ ctx->bind_vs_state = noop_bind_state;
+ ctx->delete_blend_state = noop_delete_state;
+ ctx->delete_depth_stencil_alpha_state = noop_delete_state;
+ ctx->delete_fs_state = noop_delete_state;
+ ctx->delete_rasterizer_state = noop_delete_state;
+ ctx->delete_sampler_state = noop_delete_state;
+ ctx->delete_vertex_elements_state = noop_delete_vertex_element;
+ ctx->delete_vs_state = noop_delete_state;
+ ctx->set_blend_color = noop_set_blend_color;
+ ctx->set_clip_state = noop_set_clip_state;
+ ctx->set_constant_buffer = noop_set_constant_buffer;
+ ctx->set_fragment_sampler_views = noop_set_ps_sampler_view;
+ ctx->set_framebuffer_state = noop_set_framebuffer_state;
+ ctx->set_polygon_stipple = noop_set_polygon_stipple;
+ ctx->set_sample_mask = noop_set_sample_mask;
+ ctx->set_scissor_state = noop_set_scissor_state;
+ ctx->set_stencil_ref = noop_set_stencil_ref;
+ ctx->set_vertex_buffers = noop_set_vertex_buffers;
+ ctx->set_index_buffer = noop_set_index_buffer;
+ ctx->set_vertex_sampler_views = noop_set_vs_sampler_view;
+ ctx->set_viewport_state = noop_set_viewport_state;
+ ctx->sampler_view_destroy = noop_sampler_view_destroy;
+ ctx->draw_vbo = noop_draw_vbo;
+}
diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c
index c6bd62df1d..51eab3a0b0 100644
--- a/src/gallium/drivers/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nv50/nv50_screen.c
@@ -171,6 +171,11 @@ nv50_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
return NV50_CAP_MAX_PROGRAM_TEMPS;
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 1;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 1;
default:
return 0;
}
diff --git a/src/gallium/drivers/nv50/nv50_shader_state.c b/src/gallium/drivers/nv50/nv50_shader_state.c
index 6c41e8f456..306aa81d98 100644
--- a/src/gallium/drivers/nv50/nv50_shader_state.c
+++ b/src/gallium/drivers/nv50/nv50_shader_state.c
@@ -39,6 +39,9 @@ nv50_transfer_constbuf(struct nv50_context *nv50,
uint32_t *map;
unsigned count, start;
+ if (buf == NULL)
+ return;
+
map = pipe_buffer_map(pipe, buf, PIPE_TRANSFER_READ, &transfer);
if (!map)
return;
diff --git a/src/gallium/drivers/nvfx/nvfx_screen.c b/src/gallium/drivers/nvfx/nvfx_screen.c
index 8024800bd0..d7553e9f39 100644
--- a/src/gallium/drivers/nvfx/nvfx_screen.c
+++ b/src/gallium/drivers/nvfx/nvfx_screen.c
@@ -37,7 +37,7 @@ nvfx_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_POINT_SPRITE:
return 1;
case PIPE_CAP_MAX_RENDER_TARGETS:
- return screen->use_nv4x ? 4 : 2;
+ return screen->use_nv4x ? 4 : 1;
case PIPE_CAP_OCCLUSION_QUERY:
return 1;
case PIPE_CAP_TIMER_QUERY:
@@ -77,6 +77,10 @@ nvfx_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return 1;
case PIPE_CAP_DEPTH_CLAMP:
return 0; // TODO: implement depth clamp
+ case PIPE_CAP_PRIMITIVE_RESTART:
+ return 0; // TODO: implement primitive restart
+ case PIPE_CAP_SHADER_STENCIL_EXPORT:
+ return 0;
default:
NOUVEAU_ERR("Warning: unknown PIPE_CAP %d\n", param);
return 0;
@@ -114,6 +118,11 @@ nvfx_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, enum
return 0; /* we could expose these, but nothing uses them */
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 0;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 0;
default:
break;
}
@@ -146,6 +155,12 @@ nvfx_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, enum
return 0; /* we could expose these, but nothing uses them */
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 1;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ return 0;
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 1;
default:
break;
}
diff --git a/src/gallium/drivers/r300/SConscript b/src/gallium/drivers/r300/SConscript
index bf023daaa5..b49db93799 100644
--- a/src/gallium/drivers/r300/SConscript
+++ b/src/gallium/drivers/r300/SConscript
@@ -39,5 +39,7 @@ r300 = env.ConvenienceLibrary(
'r300_transfer.c',
] + r300compiler) + r300compiler
+env.Alias('r300', r300)
+
Export('r300')
diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c
index 91a374a583..0ac4e4c6f1 100644
--- a/src/gallium/drivers/r300/r300_blit.c
+++ b/src/gallium/drivers/r300/r300_blit.c
@@ -176,12 +176,12 @@ static void r300_clear(struct pipe_context* pipe,
fb->zsbuf ? r300_texture(fb->zsbuf->texture) : NULL;
uint32_t width = fb->width;
uint32_t height = fb->height;
- boolean has_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ);
+ boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ);
uint32_t hyperz_dcv = hyperz->zb_depthclearvalue;
/* Enable fast Z clear.
* The zbuffer must be in micro-tiled mode, otherwise it locks up. */
- if ((buffers & PIPE_CLEAR_DEPTHSTENCIL) && has_hyperz) {
+ if ((buffers & PIPE_CLEAR_DEPTHSTENCIL) && can_hyperz) {
hyperz_dcv = hyperz->zb_depthclearvalue =
r300_depth_clear_value(fb->zsbuf->format, depth, stencil);
diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c
index 624dadd07d..e8c09b214a 100644
--- a/src/gallium/drivers/r300/r300_context.c
+++ b/src/gallium/drivers/r300/r300_context.c
@@ -79,6 +79,9 @@ static void r300_release_referenced_objects(struct r300_context *r300)
NULL);
}
+ /* The dummy VBO. */
+ pipe_resource_reference(&r300->dummy_vb, NULL);
+
/* The SWTCL VBO. */
pipe_resource_reference(&r300->vbo, NULL);
@@ -184,7 +187,7 @@ static void r300_setup_atoms(struct r300_context* r300)
boolean has_tcl = r300->screen->caps.has_tcl;
boolean drm_2_3_0 = r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0);
boolean drm_2_6_0 = r300->rws->get_value(r300->rws, R300_VID_DRM_2_6_0);
- boolean has_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ);
+ boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ);
boolean has_hiz_ram = r300->screen->caps.hiz_ram > 0;
/* Create the actual atom list.
@@ -240,7 +243,7 @@ static void r300_setup_atoms(struct r300_context* r300)
/* TX. */
R300_INIT_ATOM(texture_cache_inval, 2);
R300_INIT_ATOM(textures_state, 0);
- if (has_hyperz) {
+ if (can_hyperz) {
/* HiZ Clear */
if (has_hiz_ram)
R300_INIT_ATOM(hiz_clear, 0);
@@ -488,6 +491,7 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
rtempl.target = PIPE_TEXTURE_2D;
rtempl.format = PIPE_FORMAT_I8_UNORM;
rtempl.bind = PIPE_BIND_SAMPLER_VIEW;
+ rtempl.usage = PIPE_USAGE_IMMUTABLE;
rtempl.width0 = 1;
rtempl.height0 = 1;
rtempl.depth0 = 1;
@@ -501,6 +505,19 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
pipe_resource_reference(&tex, NULL);
}
+ {
+ struct pipe_resource vb = {};
+ vb.target = PIPE_BUFFER;
+ vb.format = PIPE_FORMAT_R8_UNORM;
+ vb.bind = PIPE_BIND_VERTEX_BUFFER;
+ vb.usage = PIPE_USAGE_IMMUTABLE;
+ vb.width0 = sizeof(float) * 16;
+ vb.height0 = 1;
+ vb.depth0 = 1;
+
+ r300->dummy_vb = screen->resource_create(screen, &vb);
+ }
+
return &r300->context;
fail:
diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h
index b59bc00261..7217c51b95 100644
--- a/src/gallium/drivers/r300/r300_context.h
+++ b/src/gallium/drivers/r300/r300_context.h
@@ -480,6 +480,10 @@ struct r300_context {
* dummy texture there. */
struct r300_sampler_view *texkill_sampler;
+ /* When no vertex buffer is set, this one is used instead to prevent
+ * hardlocks. */
+ struct pipe_resource *dummy_vb;
+
/* The currently active query. */
struct r300_query *query_current;
/* The saved query for blitter operations. */
diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c
index 3a1085d2dc..c187f115da 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -358,7 +358,7 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state)
struct pipe_framebuffer_state* fb = (struct pipe_framebuffer_state*)state;
struct r300_surface* surf;
unsigned i;
- boolean has_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ);
+ boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ);
CS_LOCALS(r300);
BEGIN_CS(size);
@@ -411,7 +411,7 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state)
OUT_CS_REG_SEQ(R300_ZB_DEPTHPITCH, 1);
OUT_CS_RELOC(surf->buffer, surf->pitch, 0, surf->domain);
- if (has_hyperz) {
+ if (can_hyperz) {
uint32_t surf_pitch;
struct r300_texture *tex;
int level = surf->base.level;
diff --git a/src/gallium/drivers/r300/r300_hyperz.c b/src/gallium/drivers/r300/r300_hyperz.c
index eb5b0c36f8..79f7f8abe9 100644
--- a/src/gallium/drivers/r300/r300_hyperz.c
+++ b/src/gallium/drivers/r300/r300_hyperz.c
@@ -44,10 +44,10 @@
static bool r300_get_sc_hz_max(struct r300_context *r300)
{
struct r300_dsa_state *dsa_state = r300->dsa_state.state;
- int func = dsa_state->z_stencil_control & 0x7;
+ int func = dsa_state->z_stencil_control & R300_ZS_MASK;
int ret = R300_SC_HYPERZ_MIN;
- if (func >= 4 && func <= 7)
+ if (func >= R300_ZS_GEQUAL && func <= R300_ZS_ALWAYS)
ret = R300_SC_HYPERZ_MAX;
return ret;
}
@@ -55,23 +55,26 @@ static bool r300_get_sc_hz_max(struct r300_context *r300)
static bool r300_zfunc_same_direction(int func1, int func2)
{
/* func1 is less/lessthan */
- if (func1 == 1 || func1 == 2)
- if (func2 == 3 || func2 == 4 || func2 == 5)
+ if ((func1 == R300_ZS_LESS || func1 == R300_ZS_LEQUAL) &&
+ (func2 == R300_ZS_EQUAL || func2 == R300_ZS_GEQUAL ||
+ func2 == R300_ZS_GREATER))
return FALSE;
- if (func2 == 1 || func2 == 2)
- if (func1 == 4 || func1 == 5)
+ /* func1 is greater/greaterthan */
+ if ((func1 == R300_ZS_GEQUAL || func1 == R300_ZS_GREATER) &&
+ (func2 == R300_ZS_LESS || func2 == R300_ZS_LEQUAL))
return FALSE;
+
return TRUE;
}
-
+
static int r300_get_hiz_min(struct r300_context *r300)
{
struct r300_dsa_state *dsa_state = r300->dsa_state.state;
- int func = dsa_state->z_stencil_control & 0x7;
+ int func = dsa_state->z_stencil_control & R300_ZS_MASK;
int ret = R300_HIZ_MIN;
- if (func == 1 || func == 2)
+ if (func == R300_ZS_LESS || func == R300_ZS_LEQUAL)
ret = R300_HIZ_MAX;
return ret;
}
@@ -112,13 +115,16 @@ static boolean r300_can_hiz(struct r300_context *r300)
}
/* depth comparison function - if just cleared save and return okay */
if (z->current_func == -1) {
- int func = dsa_state->z_stencil_control & 0x7;
+ int func = dsa_state->z_stencil_control & R300_ZS_MASK;
if (func != 0 && func != 7)
- z->current_func = dsa_state->z_stencil_control & 0x7;
+ z->current_func = dsa_state->z_stencil_control & R300_ZS_MASK;
} else {
/* simple don't change */
- if (!r300_zfunc_same_direction(z->current_func, (dsa_state->z_stencil_control & 0x7))) {
- DBG(r300, DBG_HYPERZ, "z func changed direction - disabling hyper-z %d -> %d\n", z->current_func, dsa_state->z_stencil_control);
+ if (!r300_zfunc_same_direction(z->current_func,
+ (dsa_state->z_stencil_control & R300_ZS_MASK))) {
+ DBG(r300, DBG_HYPERZ,
+ "z func changed direction - disabling hyper-z %d -> %d\n",
+ z->current_func, dsa_state->z_stencil_control);
return FALSE;
}
}
diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c
index 2f00c878f5..60700cf303 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -535,29 +535,8 @@ static void r300_draw_range_elements(struct pipe_context* pipe,
r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0);
unsigned short_count;
int buffer_offset = 0, index_offset = 0; /* for index bias emulation */
- boolean translate = FALSE;
unsigned new_offset;
- if (r300->skip_rendering) {
- return;
- }
-
- if (!u_trim_pipe_prim(mode, &count)) {
- return;
- }
-
- /* Index buffer range checking. */
- if ((start + count) * indexSize > indexBuffer->width0) {
- fprintf(stderr, "r300: Invalid index buffer range. Skipping rendering.\n");
- return;
- }
-
- /* Set up fallback for incompatible vertex layout if needed. */
- if (r300->incompatible_vb_layout || r300->velems->incompatible_layout) {
- r300_begin_vertex_translate(r300);
- translate = TRUE;
- }
-
if (indexBias && !r500_index_bias_supported(r300)) {
r300_split_index_bias(r300, indexBias, &buffer_offset, &index_offset);
}
@@ -603,10 +582,6 @@ done:
if (indexBuffer != orgIndexBuffer) {
pipe_resource_reference( &indexBuffer, NULL );
}
-
- if (translate) {
- r300_end_vertex_translate(r300);
- }
}
static void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
@@ -617,21 +592,6 @@ static void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
count > 65536 &&
r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0);
unsigned short_count;
- boolean translate = FALSE;
-
- if (r300->skip_rendering) {
- return;
- }
-
- if (!u_trim_pipe_prim(mode, &count)) {
- return;
- }
-
- /* Set up fallback for incompatible vertex layout if needed. */
- if (r300->incompatible_vb_layout || r300->velems->incompatible_layout) {
- r300_begin_vertex_translate(r300);
- translate = TRUE;
- }
r300_update_derived_state(r300);
@@ -642,7 +602,7 @@ static void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
if (!r300_prepare_for_rendering(r300,
PREP_FIRST_DRAW | PREP_VALIDATE_VBOS | PREP_EMIT_AOS,
NULL, 9, start, 0))
- goto done;
+ return;
if (alt_num_verts || count <= 65535) {
r300_emit_draw_arrays(r300, mode, count);
@@ -659,32 +619,53 @@ static void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
if (!r300_prepare_for_rendering(r300,
PREP_VALIDATE_VBOS | PREP_EMIT_AOS, NULL, 9,
start, 0))
- goto done;
+ return;
}
} while (count);
}
}
-
-done:
- if (translate) {
- r300_end_vertex_translate(r300);
- }
}
static void r300_draw_vbo(struct pipe_context* pipe,
const struct pipe_draw_info *info)
{
struct r300_context* r300 = r300_context(pipe);
+ unsigned count = info->count;
+ boolean translate = FALSE;
+ boolean indexed = info->indexed && r300->index_buffer.buffer;
+ unsigned start_indexed = 0;
- if (!r300->velems->count || !r300->vertex_buffer_count)
- return;
+ if (r300->skip_rendering) {
+ return;
+ }
- if (info->indexed && r300->index_buffer.buffer) {
- unsigned offset;
+ if (!u_trim_pipe_prim(info->mode, &count)) {
+ return;
+ }
+ /* Index buffer range checking. */
+ if (indexed) {
assert(r300->index_buffer.offset % r300->index_buffer.index_size == 0);
- offset = r300->index_buffer.offset / r300->index_buffer.index_size;
+ /* Compute start for draw_elements, taking the offset into account. */
+ start_indexed =
+ info->start +
+ (r300->index_buffer.offset / r300->index_buffer.index_size);
+
+ if ((start_indexed + count) * r300->index_buffer.index_size >
+ r300->index_buffer.buffer->width0) {
+ fprintf(stderr, "r300: Invalid index buffer range. Skipping rendering.\n");
+ return;
+ }
+ }
+
+ /* Set up fallback for incompatible vertex layout if needed. */
+ if (r300->incompatible_vb_layout || r300->velems->incompatible_layout) {
+ r300_begin_vertex_translate(r300);
+ translate = TRUE;
+ }
+
+ if (indexed) {
r300_draw_range_elements(pipe,
r300->index_buffer.buffer,
r300->index_buffer.index_size,
@@ -692,14 +673,17 @@ static void r300_draw_vbo(struct pipe_context* pipe,
info->min_index,
info->max_index,
info->mode,
- info->start + offset,
- info->count);
- }
- else {
+ start_indexed,
+ count);
+ } else {
r300_draw_arrays(pipe,
info->mode,
info->start,
- info->count);
+ count);
+ }
+
+ if (translate) {
+ r300_end_vertex_translate(r300);
}
}
diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c
index b448924f85..759d0e6696 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -32,6 +32,8 @@
#include "r300_winsys.h"
#include "r300_public.h"
+#include "draw/draw_context.h"
+
/* Return the identifier behind whom the brave coders responsible for this
* amalgamation of code, sweat, and duct tape, routinely obscure their names.
*
@@ -44,31 +46,31 @@ static const char* r300_get_vendor(struct pipe_screen* pscreen)
}
static const char* chip_families[] = {
- "R300",
- "R350",
- "R360",
- "RV350",
- "RV370",
- "RV380",
- "R420",
- "R423",
- "R430",
- "R480",
- "R481",
- "RV410",
- "RS400",
- "RC410",
- "RS480",
- "RS482",
- "RS600",
- "RS690",
- "RS740",
- "RV515",
- "R520",
- "RV530",
- "R580",
- "RV560",
- "RV570"
+ "ATI R300",
+ "ATI R350",
+ "ATI R360",
+ "ATI RV350",
+ "ATI RV370",
+ "ATI RV380",
+ "ATI R420",
+ "ATI R423",
+ "ATI R430",
+ "ATI R480",
+ "ATI R481",
+ "ATI RV410",
+ "ATI RS400",
+ "ATI RC410",
+ "ATI RS480",
+ "ATI RS482",
+ "ATI RS600",
+ "ATI RS690",
+ "ATI RS740",
+ "ATI RV515",
+ "ATI R520",
+ "ATI RV530",
+ "ATI R580",
+ "ATI RV560",
+ "ATI RV570"
};
static const char* r300_get_name(struct pipe_screen* pscreen)
@@ -125,6 +127,8 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
case PIPE_CAP_DEPTH_CLAMP: /* XXX implemented, but breaks Regnum Online */
case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE:
case PIPE_CAP_SHADER_STENCIL_EXPORT:
+ case PIPE_CAP_STREAM_OUTPUT:
+ case PIPE_CAP_PRIMITIVE_RESTART:
return 0;
/* Texturing. */
@@ -154,8 +158,8 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
return 0;
default:
- fprintf(stderr, "r300: Implementation error: Bad param %d\n",
- param);
+ debug_printf("r300: Warning: Unknown CAP %d in get_param.\n",
+ param);
return 0;
}
}
@@ -205,9 +209,18 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e
return is_r500 ? 1 : 0;
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 1;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 0;
}
break;
case PIPE_SHADER_VERTEX:
+ if (!r300screen->caps.has_tcl) {
+ return draw_get_shader_param(shader, param);
+ }
+
switch (param)
{
case PIPE_SHADER_CAP_MAX_INSTRUCTIONS:
@@ -232,6 +245,12 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e
return is_r500 ? 4 : 0; /* XXX guessed. */
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 1;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ return 0;
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 1;
default:
break;
}
@@ -264,9 +283,16 @@ static float r300_get_paramf(struct pipe_screen* pscreen, enum pipe_cap param)
return 16.0f;
case PIPE_CAP_MAX_TEXTURE_LOD_BIAS:
return 16.0f;
+ case PIPE_CAP_GUARD_BAND_LEFT:
+ case PIPE_CAP_GUARD_BAND_TOP:
+ case PIPE_CAP_GUARD_BAND_RIGHT:
+ case PIPE_CAP_GUARD_BAND_BOTTOM:
+ /* XXX I don't know what these should be but the least we can do is
+ * silence the potential error message */
+ return 0.0f;
default:
- fprintf(stderr, "r300: Implementation error: Bad paramf %d\n",
- param);
+ debug_printf("r300: Warning: Unknown CAP %d in get_paramf.\n",
+ param);
return 0.0f;
}
}
diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index f2479a994c..247c22216e 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -684,7 +684,7 @@ void r300_mark_fb_state_dirty(struct r300_context *r300,
enum r300_fb_state_change change)
{
struct pipe_framebuffer_state *state = r300->fb_state.state;
- boolean has_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ);
+ boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ);
/* What is marked as dirty depends on the enum r300_fb_state_change. */
r300->gpu_flush.dirty = TRUE;
@@ -703,7 +703,7 @@ void r300_mark_fb_state_dirty(struct r300_context *r300,
r300->fb_state.size += 10;
else if (state->zsbuf) {
r300->fb_state.size += 10;
- if (has_hyperz)
+ if (can_hyperz)
r300->fb_state.size += r300->screen->caps.hiz_ram ? 8 : 4;
}
@@ -717,7 +717,7 @@ static void
struct r300_context* r300 = r300_context(pipe);
struct r300_aa_state *aa = (struct r300_aa_state*)r300->aa_state.state;
struct pipe_framebuffer_state *old_state = r300->fb_state.state;
- boolean has_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ);
+ boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ);
unsigned max_width, max_height, i;
uint32_t zbuffer_bpp = 0;
int blocksize;
@@ -764,7 +764,7 @@ static void
zbuffer_bpp = 24;
break;
}
- if (has_hyperz) {
+ if (can_hyperz) {
struct r300_surface *zs_surf = r300_surface(state->zsbuf);
struct r300_texture *tex;
int compress = r300->screen->caps.is_rv350 ? RV350_Z_COMPRESS_88 : R300_Z_COMPRESS_44;
@@ -1448,6 +1448,15 @@ static void r300_set_vertex_buffers(struct pipe_context* pipe,
struct pipe_vertex_buffer *vbo;
unsigned i, max_index = (1 << 24) - 1;
boolean any_user_buffer = FALSE;
+ struct pipe_vertex_buffer dummy_vb = {0};
+
+ /* There must be at least one vertex buffer set, otherwise it locks up. */
+ if (!count) {
+ dummy_vb.buffer = r300->dummy_vb;
+ dummy_vb.max_index = r300->dummy_vb->width0 / 4;
+ buffers = &dummy_vb;
+ count = 1;
+ }
if (count == r300->vertex_buffer_count &&
memcmp(r300->vertex_buffer, buffers,
@@ -1601,6 +1610,14 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe,
struct r300_vertex_element_state *velems;
unsigned i;
enum pipe_format *format;
+ struct pipe_vertex_element dummy_attrib = {0};
+
+ /* R300 Programmable Stream Control (PSC) doesn't support 0 vertex elements. */
+ if (!count) {
+ dummy_attrib.src_format = PIPE_FORMAT_R8G8B8A8_UNORM;
+ attribs = &dummy_attrib;
+ count = 1;
+ }
assert(count <= PIPE_MAX_ATTRIBS);
velems = CALLOC_STRUCT(r300_vertex_element_state);
@@ -1667,7 +1684,8 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe,
* swizzles are already set up.
* Also compute the vertex size. */
for (i = 0; i < count; i++) {
- /* This is OK because we check for aligned strides too. */
+ /* This is OK because we check for aligned strides too
+ * elsewhere. */
velems->hw_format_size[i] =
align(util_format_get_blocksize(velems->hw_format[i]), 4);
velems->vertex_size_dwords += velems->hw_format_size[i] / 4;
@@ -1789,7 +1807,7 @@ static void r300_set_constant_buffer(struct pipe_context *pipe,
{
struct r300_context* r300 = r300_context(pipe);
struct r300_constant_buffer *cbuf;
- uint32_t *mapped = r300_buffer(buf)->user_buffer;
+ uint32_t *mapped;
switch (shader) {
case PIPE_SHADER_VERTEX:
diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c
index 904736ef06..1cff3483b5 100644
--- a/src/gallium/drivers/r300/r300_state_derived.c
+++ b/src/gallium/drivers/r300/r300_state_derived.c
@@ -25,6 +25,7 @@
#include "util/u_math.h"
#include "util/u_memory.h"
+#include "util/u_pack_color.h"
#include "r300_context.h"
#include "r300_fs.h"
@@ -433,6 +434,8 @@ static void r300_update_rs_block(struct r300_context *r300)
fp_offset++;
col_count++;
DBG(r300, DBG_RS, "r300: Rasterized FACE written to FS.\n");
+ } else if (fs_inputs->face != ATTR_UNUSED) {
+ fprintf(stderr, "r300: ERROR: FS input FACE unassigned.\n");
}
/* Rasterize texture coordinates. */
@@ -484,12 +487,10 @@ static void r300_update_rs_block(struct r300_context *r300)
}
}
- if (DBG_ON(r300, DBG_RS)) {
- for (; i < ATTR_GENERIC_COUNT; i++) {
- if (fs_inputs->generic[i] != ATTR_UNUSED) {
- DBG(r300, DBG_RS,
- "r300: FS input generic %i unassigned.\n", i);
- }
+ for (; i < ATTR_GENERIC_COUNT; i++) {
+ if (fs_inputs->generic[i] != ATTR_UNUSED) {
+ fprintf(stderr, "r300: ERROR: FS input generic %i unassigned, "
+ "not enough hardware slots.\n", i);
}
}
@@ -520,7 +521,12 @@ static void r300_update_rs_block(struct r300_context *r300)
if (fs_inputs->fog != ATTR_UNUSED) {
fp_offset++;
- DBG(r300, DBG_RS, "r300: FS input fog unassigned.\n");
+ if (tex_count < 8) {
+ DBG(r300, DBG_RS, "r300: FS input fog unassigned.\n");
+ } else {
+ fprintf(stderr, "r300: ERROR: FS input fog unassigned, "
+ "not enough hardware slots.\n");
+ }
}
}
@@ -543,6 +549,11 @@ static void r300_update_rs_block(struct r300_context *r300)
fp_offset++;
tex_count++;
tex_ptr += 4;
+ } else {
+ if (fs_inputs->wpos != ATTR_UNUSED && tex_count >= 8) {
+ fprintf(stderr, "r300: ERROR: FS input WPOS unassigned, "
+ "not enough hardware slots.\n");
+ }
}
/* Invalidate the rest of the no-TCL (GA) stream locations. */
@@ -584,53 +595,56 @@ static uint32_t r300_get_border_color(enum pipe_format format,
const float border[4])
{
const struct util_format_description *desc;
- float border_swizzled[4] = {
- border[2],
- border[1],
- border[0],
- border[3]
- };
- uint32_t r;
+ float border_swizzled[4] = {0};
+ unsigned i;
+ union util_color uc = {0};
desc = util_format_description(format);
- /* We don't use util_pack_format because it does not handle the formats
- * we want, e.g. R4G4B4A4 is non-existent in Gallium. */
+ /* Apply inverse swizzle of the format. */
+ for (i = 0; i < 4; i++) {
+ switch (desc->swizzle[i]) {
+ case UTIL_FORMAT_SWIZZLE_X:
+ border_swizzled[2] = border[i];
+ break;
+ case UTIL_FORMAT_SWIZZLE_Y:
+ border_swizzled[1] = border[i];
+ break;
+ case UTIL_FORMAT_SWIZZLE_Z:
+ border_swizzled[0] = border[i];
+ break;
+ case UTIL_FORMAT_SWIZZLE_W:
+ border_swizzled[3] = border[i];
+ break;
+ }
+ }
+
switch (desc->channel[0].size) {
case 4:
- r = ((float_to_ubyte(border_swizzled[0]) & 0xf0) >> 4) |
- ((float_to_ubyte(border_swizzled[1]) & 0xf0) << 0) |
- ((float_to_ubyte(border_swizzled[2]) & 0xf0) << 4) |
- ((float_to_ubyte(border_swizzled[3]) & 0xf0) << 8);
+ util_pack_color(border_swizzled, PIPE_FORMAT_B4G4R4A4_UNORM, &uc);
break;
case 5:
if (desc->channel[1].size == 5) {
- r = ((float_to_ubyte(border_swizzled[0]) & 0xf8) >> 3) |
- ((float_to_ubyte(border_swizzled[1]) & 0xf8) << 2) |
- ((float_to_ubyte(border_swizzled[2]) & 0xf8) << 7) |
- ((float_to_ubyte(border_swizzled[3]) & 0x80) << 8);
+ util_pack_color(border_swizzled, PIPE_FORMAT_B5G5R5A1_UNORM, &uc);
} else if (desc->channel[1].size == 6) {
- r = ((float_to_ubyte(border_swizzled[0]) & 0xf8) >> 3) |
- ((float_to_ubyte(border_swizzled[1]) & 0xfc) << 3) |
- ((float_to_ubyte(border_swizzled[2]) & 0xf8) << 8);
+ util_pack_color(border_swizzled, PIPE_FORMAT_B5G6R5_UNORM, &uc);
} else {
assert(0);
- r = 0;
}
break;
default:
- /* I think the fat formats (16, 32) are specified
- * as the 8-bit ones. I am not sure how compressed formats
- * work here. */
- r = ((float_to_ubyte(border_swizzled[0]) & 0xff) << 0) |
- ((float_to_ubyte(border_swizzled[1]) & 0xff) << 8) |
- ((float_to_ubyte(border_swizzled[2]) & 0xff) << 16) |
- ((float_to_ubyte(border_swizzled[3]) & 0xff) << 24);
+ case 8:
+ util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_UNORM, &uc);
+ break;
+
+ case 10:
+ util_pack_color(border_swizzled, PIPE_FORMAT_B10G10R10A2_UNORM, &uc);
+ break;
}
- return r;
+ return uc.ui;
}
static void r300_merge_textures_and_samplers(struct r300_context* r300)
diff --git a/src/gallium/drivers/r300/r300_tgsi_to_rc.c b/src/gallium/drivers/r300/r300_tgsi_to_rc.c
index a4911b9a2a..33448bf0de 100644
--- a/src/gallium/drivers/r300/r300_tgsi_to_rc.c
+++ b/src/gallium/drivers/r300/r300_tgsi_to_rc.c
@@ -363,10 +363,7 @@ void r300_tgsi_to_rc(struct tgsi_to_rc * ttr,
break;
case TGSI_TOKEN_TYPE_INSTRUCTION:
inst = &parser.FullToken.FullInstruction;
- /* This hack with the RET opcode woudn't work with
- * conditionals. */
- if (inst->Instruction.Opcode == TGSI_OPCODE_END ||
- inst->Instruction.Opcode == TGSI_OPCODE_RET) {
+ if (inst->Instruction.Opcode == TGSI_OPCODE_END) {
break;
}
diff --git a/src/gallium/drivers/r600/SConscript b/src/gallium/drivers/r600/SConscript
index bf0ad8571b..3fc1fa94c2 100644
--- a/src/gallium/drivers/r600/SConscript
+++ b/src/gallium/drivers/r600/SConscript
@@ -25,10 +25,14 @@ r600 = env.ConvenienceLibrary(
'r600_resource.c',
'r600_shader.c',
'r600_state.c',
+ 'r600_state_common.c',
'r600_texture.c',
+ 'r600_translate.c',
'r700_asm.c',
'evergreen_state.c',
'eg_asm.c',
])
+env.Alias('r600', r600)
+
Export('r600')
diff --git a/src/gallium/drivers/r600/eg_asm.c b/src/gallium/drivers/r600/eg_asm.c
index 52b7189e9e..21d66fa956 100644
--- a/src/gallium/drivers/r600/eg_asm.c
+++ b/src/gallium/drivers/r600/eg_asm.c
@@ -36,8 +36,13 @@ int eg_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf)
case (EG_V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU << 3):
case (EG_V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_PUSH_BEFORE << 3):
bc->bytecode[id++] = S_SQ_CF_ALU_WORD0_ADDR(cf->addr >> 1) |
- S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode);
+ S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode) |
+ S_SQ_CF_ALU_WORD0_KCACHE_BANK0(cf->kcache0_bank) |
+ S_SQ_CF_ALU_WORD0_KCACHE_BANK1(cf->kcache1_bank);
bc->bytecode[id++] = S_SQ_CF_ALU_WORD1_CF_INST(cf->inst >> 3) |
+ S_SQ_CF_ALU_WORD1_KCACHE_MODE1(cf->kcache1_mode) |
+ S_SQ_CF_ALU_WORD1_KCACHE_ADDR0(cf->kcache0_addr) |
+ S_SQ_CF_ALU_WORD1_KCACHE_ADDR1(cf->kcache1_addr) |
S_SQ_CF_ALU_WORD1_BARRIER(1) |
S_SQ_CF_ALU_WORD1_COUNT((cf->ndw / 2) - 1);
break;
@@ -69,6 +74,8 @@ int eg_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf)
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END:
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE:
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK:
+ case EG_V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS:
+ case EG_V_SQ_CF_WORD1_SQ_CF_INST_RETURN:
bc->bytecode[id++] = S_SQ_CF_WORD0_ADDR(cf->cf_addr >> 1);
bc->bytecode[id++] = S_SQ_CF_WORD1_CF_INST(cf->inst) |
S_SQ_CF_WORD1_BARRIER(1) |
diff --git a/src/gallium/drivers/r600/eg_state_inlines.h b/src/gallium/drivers/r600/eg_state_inlines.h
index be81c28b43..698299ec13 100644
--- a/src/gallium/drivers/r600/eg_state_inlines.h
+++ b/src/gallium/drivers/r600/eg_state_inlines.h
@@ -311,6 +311,7 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format)
case PIPE_FORMAT_Z16_UNORM:
return V_028C70_SWAP_STD;
+ case PIPE_FORMAT_L8A8_UNORM:
case PIPE_FORMAT_R8G8_UNORM:
return V_028C70_SWAP_STD;
@@ -400,6 +401,7 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format)
case PIPE_FORMAT_Z16_UNORM:
return V_028C70_COLOR_16;
+ case PIPE_FORMAT_L8A8_UNORM:
case PIPE_FORMAT_R8G8_UNORM:
return V_028C70_COLOR_8_8;
@@ -447,8 +449,10 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format)
return V_028C70_COLOR_16_16;
/* 64-bit buffers. */
- case PIPE_FORMAT_R16G16B16A16_SSCALED:
+ case PIPE_FORMAT_R16G16B16_USCALED:
+ case PIPE_FORMAT_R16G16B16A16_USCALED:
case PIPE_FORMAT_R16G16B16_SSCALED:
+ case PIPE_FORMAT_R16G16B16A16_SSCALED:
case PIPE_FORMAT_R16G16B16A16_UNORM:
case PIPE_FORMAT_R16G16B16A16_SNORM:
return V_028C70_COLOR_16_16_16_16;
@@ -460,6 +464,7 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format)
case PIPE_FORMAT_R32G32_FLOAT:
return V_028C70_COLOR_32_32_FLOAT;
+ case PIPE_FORMAT_R32G32_USCALED:
case PIPE_FORMAT_R32G32_SSCALED:
return V_028C70_COLOR_32_32;
@@ -473,7 +478,7 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format)
case PIPE_FORMAT_UYVY:
case PIPE_FORMAT_YUYV:
default:
- R600_ERR("unsupported color format %d\n", format);
+ //R600_ERR("unsupported color format %d\n", format);
return ~0; /* Unsupported. */
}
}
@@ -634,38 +639,4 @@ out_unknown:
return ~0;
}
-static INLINE uint32_t r600_translate_vertex_data_swizzle(enum pipe_format format)
-{
- const struct util_format_description *desc = util_format_description(format);
- unsigned i;
- uint32_t word3;
-
- assert(format);
-
- if (desc->layout != UTIL_FORMAT_LAYOUT_PLAIN) {
- fprintf(stderr, "r600: Bad format %s in %s:%d\n",
- util_format_short_name(format), __FUNCTION__, __LINE__);
- return 0;
- }
-
- word3 = 0;
- for (i = 0; i < desc->nr_channels; i++) {
- switch (i) {
- case 0:
- word3 |= S_03000C_DST_SEL_X(desc->swizzle[0]);
- break;
- case 1:
- word3 |= S_03000C_DST_SEL_Y(desc->swizzle[1]);
- break;
- case 2:
- word3 |= S_03000C_DST_SEL_Z(desc->swizzle[2]);
- break;
- case 3:
- word3 |= S_03000C_DST_SEL_W(desc->swizzle[3]);
- break;
- }
- }
- return word3;
-}
-
#endif
diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c
index f394527edf..26dad7b65c 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -137,20 +137,6 @@ static void *evergreen_create_blend_state(struct pipe_context *ctx,
return rstate;
}
-static void evergreen_bind_blend_state(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_blend *blend = (struct r600_pipe_blend *)state;
- struct r600_pipe_state *rstate;
-
- if (state == NULL)
- return;
- rstate = &blend->rstate;
- rctx->states[rstate->id] = rstate;
- rctx->cb_target_mask = blend->cb_target_mask;
- r600_context_pipe_state_set(&rctx->ctx, rstate);
-}
-
static void *evergreen_create_dsa_state(struct pipe_context *ctx,
const struct pipe_depth_stencil_alpha_state *state)
{
@@ -261,7 +247,7 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx,
rstate->id = R600_PIPE_STATE_RASTERIZER;
if (state->flatshade_first)
prov_vtx = 0;
- tmp = 0x00000001;
+ tmp = S_0286D4_FLAT_SHADE_ENA(1);
if (state->sprite_coord_enable) {
tmp |= S_0286D4_PNT_SPRITE_ENA(1) |
S_0286D4_PNT_SPRITE_OVRD_X(2) |
@@ -295,46 +281,23 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx,
tmp = (unsigned)(state->point_size * 8.0);
r600_pipe_state_add_reg(rstate, R_028A00_PA_SU_POINT_SIZE, S_028A00_HEIGHT(tmp) | S_028A00_WIDTH(tmp), 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028A04_PA_SU_POINT_MINMAX, 0x80000000, 0xFFFFFFFF, NULL);
- r600_pipe_state_add_reg(rstate, R_028A08_PA_SU_LINE_CNTL, 0x00000008, 0xFFFFFFFF, NULL);
+
+ tmp = (unsigned)state->line_width * 8;
+ r600_pipe_state_add_reg(rstate, R_028A08_PA_SU_LINE_CNTL, S_028A08_WIDTH(tmp), 0xFFFFFFFF, NULL);
+
r600_pipe_state_add_reg(rstate, R_028C00_PA_SC_LINE_CNTL, 0x00000400, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028C0C_PA_CL_GB_VERT_CLIP_ADJ, 0x3F800000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028C10_PA_CL_GB_VERT_DISC_ADJ, 0x3F800000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028C14_PA_CL_GB_HORZ_CLIP_ADJ, 0x3F800000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028C18_PA_CL_GB_HORZ_DISC_ADJ, 0x3F800000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028B7C_PA_SU_POLY_OFFSET_CLAMP, 0x0, 0xFFFFFFFF, NULL);
- r600_pipe_state_add_reg(rstate, R_028C08_PA_SU_VTX_CNTL, 0x00000005, 0xFFFFFFFF, NULL);
- r600_pipe_state_add_reg(rstate, R_02820C_PA_SC_CLIPRECT_RULE, clip_rule, 0xFFFFFFFF, NULL);
- return rstate;
-}
-
-static void evergreen_bind_rs_state(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state;
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-
- if (state == NULL)
- return;
-
- rctx->flatshade = rs->flatshade;
- rctx->sprite_coord_enable = rs->sprite_coord_enable;
- rctx->rasterizer = rs;
-
- rctx->states[rs->rstate.id] = &rs->rstate;
- r600_context_pipe_state_set(&rctx->ctx, &rs->rstate);
-}
-static void evergreen_delete_rs_state(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state;
+ r600_pipe_state_add_reg(rstate, R_028C08_PA_SU_VTX_CNTL,
+ S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules),
+ 0xFFFFFFFF, NULL);
- if (rctx->rasterizer == rs) {
- rctx->rasterizer = NULL;
- }
- if (rctx->states[rs->rstate.id] == &rs->rstate) {
- rctx->states[rs->rstate.id] = NULL;
- }
- free(rs);
+ r600_pipe_state_add_reg(rstate, R_02820C_PA_SC_CLIPRECT_RULE, clip_rule, 0xFFFFFFFF, NULL);
+ return rstate;
}
static void *evergreen_create_sampler_state(struct pipe_context *ctx,
@@ -360,11 +323,11 @@ static void *evergreen_create_sampler_state(struct pipe_context *ctx,
S_03C000_BORDER_COLOR_TYPE(uc.ui ? V_03C000_SQ_TEX_BORDER_COLOR_REGISTER : 0), 0xFFFFFFFF, NULL);
/* FIXME LOD it depends on texture base level ... */
r600_pipe_state_add_reg(rstate, R_03C004_SQ_TEX_SAMPLER_WORD1_0,
- S_03C004_MIN_LOD(S_FIXED(CLAMP(state->min_lod, 0, 15), 6)) |
- S_03C004_MAX_LOD(S_FIXED(CLAMP(state->max_lod, 0, 15), 6)),
+ S_03C004_MIN_LOD(S_FIXED(CLAMP(state->min_lod, 0, 15), 8)) |
+ S_03C004_MAX_LOD(S_FIXED(CLAMP(state->max_lod, 0, 15), 8)),
0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_03C008_SQ_TEX_SAMPLER_WORD2_0,
- S_03C008_LOD_BIAS(S_FIXED(CLAMP(state->lod_bias, -16, 16), 6)) |
+ S_03C008_LOD_BIAS(S_FIXED(CLAMP(state->lod_bias, -16, 16), 8)) |
S_03C008_TYPE(1),
0xFFFFFFFF, NULL);
@@ -377,15 +340,6 @@ static void *evergreen_create_sampler_state(struct pipe_context *ctx,
return rstate;
}
-static void evergreen_sampler_view_destroy(struct pipe_context *ctx,
- struct pipe_sampler_view *state)
-{
- struct r600_pipe_sampler_view *resource = (struct r600_pipe_sampler_view *)state;
-
- pipe_resource_reference(&state->texture, NULL);
- FREE(resource);
-}
-
static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_context *ctx,
struct pipe_resource *texture,
const struct pipe_sampler_view *state)
@@ -477,7 +431,7 @@ static void evergreen_set_vs_sampler_view(struct pipe_context *ctx, unsigned cou
for (int i = 0; i < count; i++) {
if (resource[i]) {
- evergreen_context_pipe_state_set_vs_resource(&rctx->ctx, &resource[i]->state, i + PIPE_MAX_ATTRIBS);
+ evergreen_context_pipe_state_set_vs_resource(&rctx->ctx, &resource[i]->state, i);
}
}
}
@@ -510,17 +464,6 @@ static void evergreen_set_ps_sampler_view(struct pipe_context *ctx, unsigned cou
rctx->ps_samplers.n_views = count;
}
-static void evergreen_bind_state(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_state *rstate = (struct r600_pipe_state *)state;
-
- if (state == NULL)
- return;
- rctx->states[rstate->id] = rstate;
- r600_context_pipe_state_set(&rctx->ctx, rstate);
-}
-
static void evergreen_bind_ps_sampler(struct pipe_context *ctx, unsigned count, void **states)
{
struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
@@ -545,31 +488,6 @@ static void evergreen_bind_vs_sampler(struct pipe_context *ctx, unsigned count,
}
}
-static void evergreen_delete_state(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_state *rstate = (struct r600_pipe_state *)state;
-
- if (rctx->states[rstate->id] == rstate) {
- rctx->states[rstate->id] = NULL;
- }
- for (int i = 0; i < rstate->nregs; i++) {
- r600_bo_reference(rctx->radeon, &rstate->regs[i].bo, NULL);
- }
- free(rstate);
-}
-
-static void evergreen_delete_vertex_element(struct pipe_context *ctx, void *state)
-{
- struct r600_vertex_element *v = (struct r600_vertex_element*)state;
-
- if (v == NULL)
- return;
- if (--v->refcount)
- return;
- free(v);
-}
-
static void evergreen_set_clip_state(struct pipe_context *ctx,
const struct pipe_clip_state *state)
{
@@ -583,16 +501,16 @@ static void evergreen_set_clip_state(struct pipe_context *ctx,
rstate->id = R600_PIPE_STATE_CLIP;
for (int i = 0; i < state->nr; i++) {
r600_pipe_state_add_reg(rstate,
- R_0285BC_PA_CL_UCP0_X + i * 4,
+ R_0285BC_PA_CL_UCP0_X + i * 16,
fui(state->ucp[i][0]), 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate,
- R_0285C0_PA_CL_UCP0_Y + i * 4,
+ R_0285C0_PA_CL_UCP0_Y + i * 16,
fui(state->ucp[i][1]) , 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate,
- R_0285C4_PA_CL_UCP0_Z + i * 4,
+ R_0285C4_PA_CL_UCP0_Z + i * 16,
fui(state->ucp[i][2]), 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate,
- R_0285C8_PA_CL_UCP0_W + i * 4,
+ R_0285C8_PA_CL_UCP0_W + i * 16,
fui(state->ucp[i][3]), 0xFFFFFFFF, NULL);
}
r600_pipe_state_add_reg(rstate, R_028810_PA_CL_CLIP_CNTL,
@@ -605,19 +523,6 @@ static void evergreen_set_clip_state(struct pipe_context *ctx,
r600_context_pipe_state_set(&rctx->ctx, rstate);
}
-static void evergreen_bind_vertex_elements(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_vertex_element *v = (struct r600_vertex_element*)state;
-
- evergreen_delete_vertex_element(ctx, rctx->vertex_elements);
- rctx->vertex_elements = v;
- if (v) {
- v->refcount++;
-// rctx->vs_rebuild = TRUE;
- }
-}
-
static void evergreen_set_polygon_stipple(struct pipe_context *ctx,
const struct pipe_poly_stipple *state)
{
@@ -755,7 +660,7 @@ static void evergreen_cb(struct r600_pipe_context *rctx, struct r600_pipe_state
S_028C70_COMP_SWAP(swap) |
S_028C70_BLEND_CLAMP(1) |
S_028C70_NUMBER_TYPE(ntype);
- if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS)
+ if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS)
color_info |= S_028C70_SOURCE_FORMAT(1);
/* FIXME handle enabling of CB beyond BASE8 which has different offset */
@@ -928,6 +833,13 @@ static void evergreen_set_constant_buffer(struct pipe_context *ctx, uint shader,
struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
struct r600_resource *rbuffer = (struct r600_resource*)buffer;
+ /* Note that the state tracker can unbind constant buffers by
+ * passing NULL here.
+ */
+ if (buffer == NULL) {
+ return;
+ }
+
switch (shader) {
case PIPE_SHADER_VERTEX:
rctx->vs_const_buffer.nregs = 0;
@@ -957,84 +869,31 @@ static void evergreen_set_constant_buffer(struct pipe_context *ctx, uint shader,
}
}
-static void *evergreen_create_shader_state(struct pipe_context *ctx,
- const struct pipe_shader_state *state)
-{
- struct r600_pipe_shader *shader = CALLOC_STRUCT(r600_pipe_shader);
- int r;
-
- r = r600_pipe_shader_create(ctx, shader, state->tokens);
- if (r) {
- return NULL;
- }
- return shader;
-}
-
-static void evergreen_bind_ps_shader(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-
- /* TODO delete old shader */
- rctx->ps_shader = (struct r600_pipe_shader *)state;
-}
-
-static void evergreen_bind_vs_shader(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-
- /* TODO delete old shader */
- rctx->vs_shader = (struct r600_pipe_shader *)state;
-}
-
-static void evergreen_delete_ps_shader(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state;
-
- if (rctx->ps_shader == shader) {
- rctx->ps_shader = NULL;
- }
- /* TODO proper delete */
- free(shader);
-}
-
-static void evergreen_delete_vs_shader(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state;
-
- if (rctx->vs_shader == shader) {
- rctx->vs_shader = NULL;
- }
- /* TODO proper delete */
- free(shader);
-}
-
void evergreen_init_state_functions(struct r600_pipe_context *rctx)
{
rctx->context.create_blend_state = evergreen_create_blend_state;
rctx->context.create_depth_stencil_alpha_state = evergreen_create_dsa_state;
- rctx->context.create_fs_state = evergreen_create_shader_state;
+ rctx->context.create_fs_state = r600_create_shader_state;
rctx->context.create_rasterizer_state = evergreen_create_rs_state;
rctx->context.create_sampler_state = evergreen_create_sampler_state;
rctx->context.create_sampler_view = evergreen_create_sampler_view;
rctx->context.create_vertex_elements_state = r600_create_vertex_elements;
- rctx->context.create_vs_state = evergreen_create_shader_state;
- rctx->context.bind_blend_state = evergreen_bind_blend_state;
- rctx->context.bind_depth_stencil_alpha_state = evergreen_bind_state;
+ rctx->context.create_vs_state = r600_create_shader_state;
+ rctx->context.bind_blend_state = r600_bind_blend_state;
+ rctx->context.bind_depth_stencil_alpha_state = r600_bind_state;
rctx->context.bind_fragment_sampler_states = evergreen_bind_ps_sampler;
- rctx->context.bind_fs_state = evergreen_bind_ps_shader;
- rctx->context.bind_rasterizer_state = evergreen_bind_rs_state;
- rctx->context.bind_vertex_elements_state = evergreen_bind_vertex_elements;
+ rctx->context.bind_fs_state = r600_bind_ps_shader;
+ rctx->context.bind_rasterizer_state = r600_bind_rs_state;
+ rctx->context.bind_vertex_elements_state = r600_bind_vertex_elements;
rctx->context.bind_vertex_sampler_states = evergreen_bind_vs_sampler;
- rctx->context.bind_vs_state = evergreen_bind_vs_shader;
- rctx->context.delete_blend_state = evergreen_delete_state;
- rctx->context.delete_depth_stencil_alpha_state = evergreen_delete_state;
- rctx->context.delete_fs_state = evergreen_delete_ps_shader;
- rctx->context.delete_rasterizer_state = evergreen_delete_rs_state;
- rctx->context.delete_sampler_state = evergreen_delete_state;
- rctx->context.delete_vertex_elements_state = evergreen_delete_vertex_element;
- rctx->context.delete_vs_state = evergreen_delete_vs_shader;
+ rctx->context.bind_vs_state = r600_bind_vs_shader;
+ rctx->context.delete_blend_state = r600_delete_state;
+ rctx->context.delete_depth_stencil_alpha_state = r600_delete_state;
+ rctx->context.delete_fs_state = r600_delete_ps_shader;
+ rctx->context.delete_rasterizer_state = r600_delete_rs_state;
+ rctx->context.delete_sampler_state = r600_delete_state;
+ rctx->context.delete_vertex_elements_state = r600_delete_vertex_element;
+ rctx->context.delete_vs_state = r600_delete_vs_shader;
rctx->context.set_blend_color = evergreen_set_blend_color;
rctx->context.set_clip_state = evergreen_set_clip_state;
rctx->context.set_constant_buffer = evergreen_set_constant_buffer;
@@ -1048,7 +907,7 @@ void evergreen_init_state_functions(struct r600_pipe_context *rctx)
rctx->context.set_index_buffer = r600_set_index_buffer;
rctx->context.set_vertex_sampler_views = evergreen_set_vs_sampler_view;
rctx->context.set_viewport_state = evergreen_set_viewport_state;
- rctx->context.sampler_view_destroy = evergreen_sampler_view_destroy;
+ rctx->context.sampler_view_destroy = r600_sampler_view_destroy;
}
void evergreen_init_config(struct r600_pipe_context *rctx)
@@ -1417,7 +1276,10 @@ void evergreen_draw(struct pipe_context *ctx, const struct pipe_draw_info *info)
word2 = format | S_030008_STRIDE(vertex_buffer->stride);
- word3 = r600_translate_vertex_data_swizzle(rctx->vertex_elements->hw_format[i]);
+ word3 = S_03000C_DST_SEL_X(V_03000C_SQ_SEL_X) |
+ S_03000C_DST_SEL_Y(V_03000C_SQ_SEL_Y) |
+ S_03000C_DST_SEL_Z(V_03000C_SQ_SEL_Z) |
+ S_03000C_DST_SEL_W(V_03000C_SQ_SEL_W);
r600_pipe_state_add_reg(rstate, R_030000_RESOURCE0_WORD0, offset, 0xFFFFFFFF, rbuffer->bo);
r600_pipe_state_add_reg(rstate, R_030004_RESOURCE0_WORD1, rbuffer->size - offset - 1, 0xFFFFFFFF, NULL);
@@ -1427,7 +1289,7 @@ void evergreen_draw(struct pipe_context *ctx, const struct pipe_draw_info *info)
r600_pipe_state_add_reg(rstate, R_030014_RESOURCE0_WORD5, 0x00000000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_030018_RESOURCE0_WORD6, 0x00000000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_03001C_RESOURCE0_WORD7, 0xC0000000, 0xFFFFFFFF, NULL);
- evergreen_vs_resource_set(&rctx->ctx, rstate, i);
+ evergreen_fs_resource_set(&rctx->ctx, rstate, i);
}
mask = 0;
@@ -1605,8 +1467,8 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader
S_0286E0_PERSP_CENTROID_ENA(have_centroid);
if (have_linear)
spi_baryc_cntl |= S_0286E0_LINEAR_CENTER_ENA(1) |
- S_0286E0_LINEAR_CENTROID_ENA(have_centroid);
-
+ S_0286E0_LINEAR_CENTROID_ENA(have_centroid);
+
r600_pipe_state_add_reg(rstate, R_0286CC_SPI_PS_IN_CONTROL_0,
spi_ps_in_control_0, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_0286D0_SPI_PS_IN_CONTROL_1,
@@ -1692,7 +1554,7 @@ void evergreen_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shader
(r600_bo_offset(shader->bo)) >> 8, 0xFFFFFFFF, shader->bo);
r600_pipe_state_add_reg(rstate,
R_0288A4_SQ_PGM_START_FS,
- (r600_bo_offset(shader->bo)) >> 8, 0xFFFFFFFF, shader->bo);
+ (r600_bo_offset(shader->bo)) >> 8, 0xFFFFFFFF, shader->bo_fetch);
r600_pipe_state_add_reg(rstate,
R_03A200_SQ_LOOP_CONST_0 + (32 * 4), 0x01000FFF,
diff --git a/src/gallium/drivers/r600/evergreend.h b/src/gallium/drivers/r600/evergreend.h
index 8e96f9355e..a337916c09 100644
--- a/src/gallium/drivers/r600/evergreend.h
+++ b/src/gallium/drivers/r600/evergreend.h
@@ -1636,6 +1636,9 @@
#define R_028980_ALU_CONST_CACHE_VS_0 0x00028980
#define R_028A04_PA_SU_POINT_MINMAX 0x00028A04
#define R_028A08_PA_SU_LINE_CNTL 0x00028A08
+#define S_028A08_WIDTH(x) (((x) & 0xFFFF) << 0)
+#define G_028A08_WIDTH(x) (((x) >> 0) & 0xFFFF)
+#define C_028A08_WIDTH 0xFFFF0000
#define R_028A10_VGT_OUTPUT_PATH_CNTL 0x00028A10
#define R_028A14_VGT_HOS_CNTL 0x00028A14
#define R_028A18_VGT_HOS_MAX_TESS_LEVEL 0x00028A18
@@ -1687,6 +1690,9 @@
#define R_028C00_PA_SC_LINE_CNTL 0x00028C00
#define R_028C04_PA_SC_AA_CONFIG 0x00028C04
#define R_028C08_PA_SU_VTX_CNTL 0x00028C08
+#define S_028C08_PIX_CENTER_HALF(x) (((x) & 0x1) << 0)
+#define G_028C08_PIX_CENTER_HALF(x) (((x) >> 0) & 0x1)
+#define C_028C08_PIX_CENTER_HALF 0xFFFFFFFE
#define R_028C0C_PA_CL_GB_VERT_CLIP_ADJ 0x00028C0C
#define R_028C10_PA_CL_GB_VERT_DISC_ADJ 0x00028C10
#define R_028C14_PA_CL_GB_HORZ_CLIP_ADJ 0x00028C14
diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h
index 62d983269f..a617a5b863 100644
--- a/src/gallium/drivers/r600/r600.h
+++ b/src/gallium/drivers/r600/r600.h
@@ -43,6 +43,7 @@ typedef uint16_t u16;
typedef uint8_t u8;
struct radeon;
+struct winsys_handle;
enum radeon_family {
CHIP_UNKNOWN,
@@ -112,13 +113,16 @@ struct r600_tiling_info *r600_get_tiling_info(struct radeon *radeon);
/* r600_bo.c */
struct r600_bo;
struct r600_bo *r600_bo(struct radeon *radeon,
- unsigned size, unsigned alignment, unsigned usage);
+ unsigned size, unsigned alignment,
+ unsigned binding, unsigned usage);
struct r600_bo *r600_bo_handle(struct radeon *radeon,
unsigned handle, unsigned *array_mode);
void *r600_bo_map(struct radeon *radeon, struct r600_bo *bo, unsigned usage, void *ctx);
void r600_bo_unmap(struct radeon *radeon, struct r600_bo *bo);
void r600_bo_reference(struct radeon *radeon, struct r600_bo **dst,
struct r600_bo *src);
+boolean r600_bo_get_winsys_handle(struct radeon *radeon, struct r600_bo *pb_bo,
+ unsigned stride, struct winsys_handle *whandle);
static INLINE unsigned r600_bo_offset(struct r600_bo *bo)
{
return 0;
@@ -260,6 +264,7 @@ void r600_context_fini(struct r600_context *ctx);
void r600_context_pipe_state_set(struct r600_context *ctx, struct r600_pipe_state *state);
void r600_context_pipe_state_set_ps_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid);
void r600_context_pipe_state_set_vs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid);
+void r600_context_pipe_state_set_fs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid);
void r600_context_pipe_state_set_ps_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id);
void r600_context_pipe_state_set_vs_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id);
void r600_context_flush(struct r600_context *ctx);
@@ -280,9 +285,11 @@ int evergreen_context_init(struct r600_context *ctx, struct radeon *radeon);
void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *draw);
void evergreen_ps_resource_set(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid);
void evergreen_vs_resource_set(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid);
+void evergreen_fs_resource_set(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid);
void evergreen_context_pipe_state_set_ps_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid);
void evergreen_context_pipe_state_set_vs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid);
+void evergreen_context_pipe_state_set_fs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid);
void evergreen_context_pipe_state_set_ps_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id);
void evergreen_context_pipe_state_set_vs_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id);
diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c
index d13da0ef63..ba1471eb78 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -23,6 +23,7 @@
#include <stdio.h>
#include <errno.h>
#include "util/u_memory.h"
+#include "pipe/p_shader_tokens.h"
#include "r600_pipe.h"
#include "r600_sq.h"
#include "r600_opcodes.h"
@@ -55,8 +56,8 @@ static inline unsigned int r600_bc_get_num_operands(struct r600_bc_alu *alu)
case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_DOT4:
case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_DOT4_IEEE:
case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_CUBE:
- return 2;
-
+ return 2;
+
case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV:
case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_FLOOR:
case V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FRACT:
@@ -74,7 +75,7 @@ static inline unsigned int r600_bc_get_num_operands(struct r600_bc_alu *alu)
default: R600_ERR(
"Need instruction operand number for 0x%x.\n", alu->inst);
};
-
+
return 3;
}
@@ -137,20 +138,20 @@ int r600_bc_init(struct r600_bc *bc, enum radeon_family family)
case CHIP_RV635:
case CHIP_RS780:
case CHIP_RS880:
- bc->chiprev = 0;
+ bc->chiprev = CHIPREV_R600;
break;
case CHIP_RV770:
case CHIP_RV730:
case CHIP_RV710:
case CHIP_RV740:
- bc->chiprev = 1;
+ bc->chiprev = CHIPREV_R700;
break;
case CHIP_CEDAR:
case CHIP_REDWOOD:
case CHIP_JUNIPER:
case CHIP_CYPRESS:
case CHIP_HEMLOCK:
- bc->chiprev = 2;
+ bc->chiprev = CHIPREV_EVERGREEN;
break;
default:
R600_ERR("unknown family %d\n", bc->family);
@@ -199,9 +200,9 @@ const unsigned bank_swizzle_vec[8] = {SQ_ALU_VEC_210, //000
SQ_ALU_VEC_012}; //111
const unsigned bank_swizzle_scl[8] = {SQ_ALU_SCL_210, //000
- SQ_ALU_SCL_122, //001
+ SQ_ALU_SCL_122, //001
SQ_ALU_SCL_122, //010
-
+
SQ_ALU_SCL_221, //011
SQ_ALU_SCL_212, //100
SQ_ALU_SCL_122, //101
@@ -592,10 +593,34 @@ int r600_bc_add_cfinst(struct r600_bc *bc, int inst)
/* common to all 3 families */
static int r600_bc_vtx_build(struct r600_bc *bc, struct r600_bc_vtx *vtx, unsigned id)
{
- bc->bytecode[id++] = S_SQ_VTX_WORD0_BUFFER_ID(vtx->buffer_id) |
- S_SQ_VTX_WORD0_SRC_GPR(vtx->src_gpr) |
- S_SQ_VTX_WORD0_SRC_SEL_X(vtx->src_sel_x) |
- S_SQ_VTX_WORD0_MEGA_FETCH_COUNT(vtx->mega_fetch_count);
+ unsigned fetch_resource_start = 0;
+
+ /* check if we are fetch shader */
+ /* fetch shader can also access vertex resource,
+ * first fetch shader resource is at 160
+ */
+ if (bc->type == -1) {
+ switch (bc->chiprev) {
+ /* r600 */
+ case CHIPREV_R600:
+ /* r700 */
+ case CHIPREV_R700:
+ fetch_resource_start = 160;
+ break;
+ /* evergreen */
+ case CHIPREV_EVERGREEN:
+ fetch_resource_start = 0;
+ break;
+ default:
+ fprintf(stderr, "%s:%s:%d unknown chiprev %d\n",
+ __FILE__, __func__, __LINE__, bc->chiprev);
+ break;
+ }
+ }
+ bc->bytecode[id++] = S_SQ_VTX_WORD0_BUFFER_ID(vtx->buffer_id + fetch_resource_start) |
+ S_SQ_VTX_WORD0_SRC_GPR(vtx->src_gpr) |
+ S_SQ_VTX_WORD0_SRC_SEL_X(vtx->src_sel_x) |
+ S_SQ_VTX_WORD0_MEGA_FETCH_COUNT(vtx->mega_fetch_count);
bc->bytecode[id++] = S_SQ_VTX_WORD1_DST_SEL_X(vtx->dst_sel_x) |
S_SQ_VTX_WORD1_DST_SEL_Y(vtx->dst_sel_y) |
S_SQ_VTX_WORD1_DST_SEL_Z(vtx->dst_sel_z) |
@@ -678,8 +703,8 @@ static int r600_bc_alu_build(struct r600_bc *bc, struct r600_bc_alu *alu, unsign
S_SQ_ALU_WORD1_OP2_WRITE_MASK(alu->dst.write) |
S_SQ_ALU_WORD1_OP2_ALU_INST(alu->inst) |
S_SQ_ALU_WORD1_BANK_SWIZZLE(alu->bank_swizzle) |
- S_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK(alu->predicate) |
- S_SQ_ALU_WORD1_OP2_UPDATE_PRED(alu->predicate);
+ S_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK(alu->predicate) |
+ S_SQ_ALU_WORD1_OP2_UPDATE_PRED(alu->predicate);
}
if (alu->last) {
if (alu->nliteral && !alu->literal_added) {
@@ -701,11 +726,16 @@ static int r600_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf)
case (V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU << 3):
case (V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_PUSH_BEFORE << 3):
bc->bytecode[id++] = S_SQ_CF_ALU_WORD0_ADDR(cf->addr >> 1) |
- S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode);
+ S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache0_mode) |
+ S_SQ_CF_ALU_WORD0_KCACHE_BANK0(cf->kcache0_bank) |
+ S_SQ_CF_ALU_WORD0_KCACHE_BANK1(cf->kcache1_bank);
bc->bytecode[id++] = S_SQ_CF_ALU_WORD1_CF_INST(cf->inst >> 3) |
+ S_SQ_CF_ALU_WORD1_KCACHE_MODE1(cf->kcache1_mode) |
+ S_SQ_CF_ALU_WORD1_KCACHE_ADDR0(cf->kcache0_addr) |
+ S_SQ_CF_ALU_WORD1_KCACHE_ADDR1(cf->kcache1_addr) |
S_SQ_CF_ALU_WORD1_BARRIER(1) |
- S_SQ_CF_ALU_WORD1_USES_WATERFALL(bc->chiprev == 0 ? cf->r6xx_uses_waterfall : 0) |
+ S_SQ_CF_ALU_WORD1_USES_WATERFALL(bc->chiprev == CHIPREV_R600 ? cf->r6xx_uses_waterfall : 0) |
S_SQ_CF_ALU_WORD1_COUNT((cf->ndw / 2) - 1);
break;
case V_SQ_CF_WORD1_SQ_CF_INST_TEX:
@@ -737,6 +767,8 @@ static int r600_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf)
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END:
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE:
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK:
+ case V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS:
+ case V_SQ_CF_WORD1_SQ_CF_INST_RETURN:
bc->bytecode[id++] = S_SQ_CF_WORD0_ADDR(cf->cf_addr >> 1);
bc->bytecode[id++] = S_SQ_CF_WORD1_CF_INST(cf->inst) |
S_SQ_CF_WORD1_BARRIER(1) |
@@ -761,7 +793,10 @@ int r600_bc_build(struct r600_bc *bc)
int r;
if (bc->callstack[0].max > 0)
- bc->nstack = ((bc->callstack[0].max + 3) >> 2) + 2;
+ bc->nstack = ((bc->callstack[0].max + 3) >> 2) + 2;
+ if (bc->type == TGSI_PROCESSOR_VERTEX && !bc->nstack) {
+ bc->nstack = 1;
+ }
/* first path compute addr of each CF block */
/* addr start after all the CF instructions */
@@ -790,6 +825,8 @@ int r600_bc_build(struct r600_bc *bc)
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END:
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE:
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK:
+ case V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS:
+ case V_SQ_CF_WORD1_SQ_CF_INST_RETURN:
break;
default:
R600_ERR("unsupported CF instruction (0x%X)\n", cf->inst);
@@ -805,7 +842,7 @@ int r600_bc_build(struct r600_bc *bc)
return -ENOMEM;
LIST_FOR_EACH_ENTRY(cf, &bc->cf, list) {
addr = cf->addr;
- if (bc->chiprev == 2)
+ if (bc->chiprev == CHIPREV_EVERGREEN)
r = eg_bc_cf_build(bc, cf);
else
r = r600_bc_cf_build(bc, cf);
@@ -816,11 +853,11 @@ int r600_bc_build(struct r600_bc *bc)
case (V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_PUSH_BEFORE << 3):
LIST_FOR_EACH_ENTRY(alu, &cf->alu, list) {
switch(bc->chiprev) {
- case 0:
+ case CHIPREV_R600:
r = r600_bc_alu_build(bc, alu, addr);
break;
- case 1:
- case 2: /* eg alu is same encoding as r700 */
+ case CHIPREV_R700:
+ case CHIPREV_EVERGREEN: /* eg alu is same encoding as r700 */
r = r700_bc_alu_build(bc, alu, addr);
break;
default:
@@ -863,6 +900,8 @@ int r600_bc_build(struct r600_bc *bc)
case V_SQ_CF_WORD1_SQ_CF_INST_JUMP:
case V_SQ_CF_WORD1_SQ_CF_INST_ELSE:
case V_SQ_CF_WORD1_SQ_CF_INST_POP:
+ case V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS:
+ case V_SQ_CF_WORD1_SQ_CF_INST_RETURN:
break;
default:
R600_ERR("unsupported CF instruction (0x%X)\n", cf->inst);
@@ -871,3 +910,39 @@ int r600_bc_build(struct r600_bc *bc)
}
return 0;
}
+
+void r600_bc_clear(struct r600_bc *bc)
+{
+ struct r600_bc_cf *cf = NULL, *next_cf;
+
+ free(bc->bytecode);
+ bc->bytecode = NULL;
+
+ LIST_FOR_EACH_ENTRY_SAFE(cf, next_cf, &bc->cf, list) {
+ struct r600_bc_alu *alu = NULL, *next_alu;
+ struct r600_bc_tex *tex = NULL, *next_tex;
+ struct r600_bc_tex *vtx = NULL, *next_vtx;
+
+ LIST_FOR_EACH_ENTRY_SAFE(alu, next_alu, &cf->alu, list) {
+ free(alu);
+ }
+
+ LIST_INITHEAD(&cf->alu);
+
+ LIST_FOR_EACH_ENTRY_SAFE(tex, next_tex, &cf->tex, list) {
+ free(tex);
+ }
+
+ LIST_INITHEAD(&cf->tex);
+
+ LIST_FOR_EACH_ENTRY_SAFE(vtx, next_vtx, &cf->vtx, list) {
+ free(vtx);
+ }
+
+ LIST_INITHEAD(&cf->vtx);
+
+ free(cf);
+ }
+
+ LIST_INITHEAD(&cf->list);
+}
diff --git a/src/gallium/drivers/r600/r600_asm.h b/src/gallium/drivers/r600/r600_asm.h
index bebc7c15b0..f2016af3e7 100644
--- a/src/gallium/drivers/r600/r600_asm.h
+++ b/src/gallium/drivers/r600/r600_asm.h
@@ -132,6 +132,11 @@ struct r600_bc_cf {
unsigned pop_count;
unsigned cf_addr; /* control flow addr */
unsigned kcache0_mode;
+ unsigned kcache1_mode;
+ unsigned kcache0_addr;
+ unsigned kcache1_addr;
+ unsigned kcache0_bank;
+ unsigned kcache1_bank;
unsigned r6xx_uses_waterfall;
struct list_head alu;
struct list_head tex;
@@ -140,12 +145,12 @@ struct r600_bc_cf {
struct r600_bc_alu *curr_bs_head;
};
-#define FC_NONE 0
-#define FC_IF 1
-#define FC_LOOP 2
-#define FC_REP 3
-#define FC_PUSH_VPM 4
-#define FC_PUSH_WQM 5
+#define FC_NONE 0
+#define FC_IF 1
+#define FC_LOOP 2
+#define FC_REP 3
+#define FC_PUSH_VPM 4
+#define FC_PUSH_WQM 5
struct r600_cf_stack_entry {
int type;
@@ -161,10 +166,11 @@ struct r600_cf_callstack {
int current;
int max;
};
-
+
struct r600_bc {
enum radeon_family family;
int chiprev; /* 0 - r600, 1 - r700, 2 - evergreen */
+ int type;
struct list_head cf;
struct r600_bc_cf *cf_last;
unsigned ndw;
@@ -185,6 +191,7 @@ int eg_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf);
/* r600_asm.c */
int r600_bc_init(struct r600_bc *bc, enum radeon_family family);
+void r600_bc_clear(struct r600_bc *bc);
int r600_bc_add_alu(struct r600_bc *bc, const struct r600_bc_alu *alu);
int r600_bc_add_literal(struct r600_bc *bc, const u32 *value);
int r600_bc_add_vtx(struct r600_bc *bc, const struct r600_bc_vtx *vtx);
diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c
index 50d47060c1..74cf968799 100644
--- a/src/gallium/drivers/r600/r600_blit.c
+++ b/src/gallium/drivers/r600/r600_blit.c
@@ -27,9 +27,9 @@
enum r600_blitter_op /* bitmask */
{
- R600_CLEAR = 1,
- R600_CLEAR_SURFACE = 2,
- R600_COPY = 4
+ R600_CLEAR = 1,
+ R600_CLEAR_SURFACE = 2,
+ R600_COPY = 4
};
static void r600_blitter_begin(struct pipe_context *ctx, enum r600_blitter_op op)
@@ -189,7 +189,6 @@ static void r600_resource_copy_region(struct pipe_context *ctx,
else
r600_hw_copy_region(ctx, dst, subdst, dstx, dsty, dstz,
src, subsrc, srcx, srcy, srcz, width, height);
-
}
void r600_init_blit_functions(struct r600_pipe_context *rctx)
diff --git a/src/gallium/drivers/r600/r600_buffer.c b/src/gallium/drivers/r600/r600_buffer.c
index 455aa2e81f..a432271b82 100644
--- a/src/gallium/drivers/r600/r600_buffer.c
+++ b/src/gallium/drivers/r600/r600_buffer.c
@@ -38,32 +38,6 @@
extern struct u_resource_vtbl r600_buffer_vtbl;
-u32 r600_domain_from_usage(unsigned usage)
-{
- u32 domain = RADEON_GEM_DOMAIN_GTT;
-
- if (usage & PIPE_BIND_RENDER_TARGET) {
- domain |= RADEON_GEM_DOMAIN_VRAM;
- }
- if (usage & PIPE_BIND_DEPTH_STENCIL) {
- domain |= RADEON_GEM_DOMAIN_VRAM;
- }
- if (usage & PIPE_BIND_SAMPLER_VIEW) {
- domain |= RADEON_GEM_DOMAIN_VRAM;
- }
- /* also need BIND_BLIT_SOURCE/DESTINATION ? */
- if (usage & PIPE_BIND_VERTEX_BUFFER) {
- domain |= RADEON_GEM_DOMAIN_GTT;
- }
- if (usage & PIPE_BIND_INDEX_BUFFER) {
- domain |= RADEON_GEM_DOMAIN_GTT;
- }
- if (usage & PIPE_BIND_CONSTANT_BUFFER) {
- domain |= RADEON_GEM_DOMAIN_VRAM;
- }
-
- return domain;
-}
struct pipe_resource *r600_buffer_create(struct pipe_screen *screen,
const struct pipe_resource *templ)
@@ -85,8 +59,7 @@ struct pipe_resource *r600_buffer_create(struct pipe_screen *screen,
rbuffer->r.base.b.screen = screen;
rbuffer->r.base.vtbl = &r600_buffer_vtbl;
rbuffer->r.size = rbuffer->r.base.b.width0;
- rbuffer->r.domain = r600_domain_from_usage(rbuffer->r.base.b.bind);
- bo = r600_bo((struct radeon*)screen->winsys, rbuffer->r.base.b.width0, alignment, rbuffer->r.base.b.bind);
+ bo = r600_bo((struct radeon*)screen->winsys, rbuffer->r.base.b.width0, alignment, rbuffer->r.base.b.bind, rbuffer->r.base.b.usage);
if (bo == NULL) {
FREE(rbuffer);
return NULL;
@@ -151,13 +124,14 @@ static void *r600_buffer_transfer_map(struct pipe_context *pipe,
if ((transfer->box.x >= rbuffer->ranges[i].start) &&
(transfer->box.x < rbuffer->ranges[i].end))
flush = TRUE;
-
+
if (flush) {
r600_bo_reference((struct radeon*)pipe->winsys, &rbuffer->r.bo, NULL);
rbuffer->num_ranges = 0;
rbuffer->r.bo = r600_bo((struct radeon*)pipe->winsys,
- rbuffer->r.base.b.width0, 0,
- rbuffer->r.base.b.bind);
+ rbuffer->r.base.b.width0, 0,
+ rbuffer->r.base.b.bind,
+ rbuffer->r.base.b.usage);
break;
}
}
@@ -206,7 +180,7 @@ static void r600_buffer_transfer_flush_region(struct pipe_context *pipe,
return;
}
}
-
+
rbuffer->ranges[rbuffer->num_ranges].start = offset;
rbuffer->ranges[rbuffer->num_ranges].end = offset+length;
rbuffer->num_ranges++;
diff --git a/src/gallium/drivers/r600/r600_opcodes.h b/src/gallium/drivers/r600/r600_opcodes.h
index 4f9b39a7fd..2ee0c83e5d 100644
--- a/src/gallium/drivers/r600/r600_opcodes.h
+++ b/src/gallium/drivers/r600/r600_opcodes.h
@@ -385,8 +385,13 @@
#define EG_V_SQ_CF_ALLOC_EXPORT_WORD1_SQ_CF_INST_MEM_EXPORT_COMBINED 0x0000005B
#define EG_V_SQ_CF_ALLOC_EXPORT_WORD1_SQ_CF_INST_MEM_RAT_COMBINED_CACHELESS 0x0000005C
-#define BC_INST(bc, x) ((bc)->chiprev == 2 ? EG_##x : x)
-#define CTX_INST(x) (ctx->bc->chiprev == 2 ? EG_##x : x)
+#define CHIPREV_R600 0
+#define CHIPREV_R700 1
+#define CHIPREV_EVERGREEN 2
+
+#define BC_INST(bc, x) ((bc)->chiprev == CHIPREV_EVERGREEN ? EG_##x : x)
+
+#define CTX_INST(x) (ctx->bc->chiprev == CHIPREV_EVERGREEN ? EG_##x : x)
#endif
diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
index bea7ef5df8..d7bd4db48e 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -77,7 +77,12 @@ static void r600_destroy_context(struct pipe_context *context)
{
struct r600_pipe_context *rctx = (struct r600_pipe_context *)context;
+ rctx->context.delete_depth_stencil_alpha_state(&rctx->context, rctx->custom_dsa_flush);
+
r600_context_fini(&rctx->ctx);
+
+ util_blitter_destroy(rctx->blitter);
+
for (int i = 0; i < R600_PIPE_NSTATES; i++) {
free(rctx->states[i]);
}
@@ -181,7 +186,7 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void
FREE(rctx);
return NULL;
}
-
+
rctx->vs_resource = CALLOC(R600_RESOURCE_ARRAY_SIZE, sizeof(struct r600_pipe_state));
if (!rctx->vs_resource) {
FREE(rctx);
@@ -216,24 +221,24 @@ static const char* r600_get_vendor(struct pipe_screen* pscreen)
static const char *r600_get_family_name(enum radeon_family family)
{
switch(family) {
- case CHIP_R600: return "R600";
- case CHIP_RV610: return "RV610";
- case CHIP_RV630: return "RV630";
- case CHIP_RV670: return "RV670";
- case CHIP_RV620: return "RV620";
- case CHIP_RV635: return "RV635";
- case CHIP_RS780: return "RS780";
- case CHIP_RS880: return "RS880";
- case CHIP_RV770: return "RV770";
- case CHIP_RV730: return "RV730";
- case CHIP_RV710: return "RV710";
- case CHIP_RV740: return "RV740";
- case CHIP_CEDAR: return "CEDAR";
- case CHIP_REDWOOD: return "REDWOOD";
- case CHIP_JUNIPER: return "JUNIPER";
- case CHIP_CYPRESS: return "CYPRESS";
- case CHIP_HEMLOCK: return "HEMLOCK";
- default: return "unknown";
+ case CHIP_R600: return "AMD R600";
+ case CHIP_RV610: return "AMD RV610";
+ case CHIP_RV630: return "AMD RV630";
+ case CHIP_RV670: return "AMD RV670";
+ case CHIP_RV620: return "AMD RV620";
+ case CHIP_RV635: return "AMD RV635";
+ case CHIP_RS780: return "AMD RS780";
+ case CHIP_RS880: return "AMD RS880";
+ case CHIP_RV770: return "AMD RV770";
+ case CHIP_RV730: return "AMD RV730";
+ case CHIP_RV710: return "AMD RV710";
+ case CHIP_RV740: return "AMD RV740";
+ case CHIP_CEDAR: return "AMD CEDAR";
+ case CHIP_REDWOOD: return "AMD REDWOOD";
+ case CHIP_JUNIPER: return "AMD JUNIPER";
+ case CHIP_CYPRESS: return "AMD CYPRESS";
+ case CHIP_HEMLOCK: return "AMD HEMLOCK";
+ default: return "AMD unknown";
}
}
@@ -271,6 +276,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
/* Unsupported features (boolean caps). */
case PIPE_CAP_TIMER_QUERY:
case PIPE_CAP_STREAM_OUTPUT:
+ case PIPE_CAP_PRIMITIVE_RESTART:
case PIPE_CAP_INDEP_BLEND_FUNC: /* FIXME allow this */
return 0;
@@ -364,6 +370,11 @@ static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, e
return 0; /* FIXME */
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 1;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 1;
default:
return 0;
}
@@ -395,7 +406,7 @@ static boolean r600_is_format_supported(struct pipe_screen* screen,
PIPE_BIND_DISPLAY_TARGET |
PIPE_BIND_SCANOUT |
PIPE_BIND_SHARED)) &&
- r600_is_colorbuffer_format_supported(format)) {
+ r600_is_colorbuffer_format_supported(format)) {
retval |= usage &
(PIPE_BIND_RENDER_TARGET |
PIPE_BIND_DISPLAY_TARGET |
@@ -426,6 +437,9 @@ static void r600_destroy_screen(struct pipe_screen* pscreen)
if (rscreen == NULL)
return;
+
+ radeon_decref(rscreen->radeon);
+
FREE(rscreen);
}
diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h
index 11410f17c7..ba9fedf0b6 100644
--- a/src/gallium/drivers/r600/r600_pipe.h
+++ b/src/gallium/drivers/r600/r600_pipe.h
@@ -83,7 +83,6 @@ struct r600_pipe_blend {
struct r600_vertex_element
{
unsigned count;
- unsigned refcount;
struct pipe_vertex_element elements[PIPE_MAX_ATTRIBS];
enum pipe_format hw_format[PIPE_MAX_ATTRIBS];
unsigned hw_format_size[PIPE_MAX_ATTRIBS];
@@ -94,6 +93,7 @@ struct r600_pipe_shader {
struct r600_shader shader;
struct r600_pipe_state rstate;
struct r600_bo *bo;
+ struct r600_bo *bo_fetch;
struct r600_vertex_element vertex_elements;
};
@@ -209,6 +209,7 @@ void r600_init_context_resource_functions(struct r600_pipe_context *r600);
/* r600_shader.c */
int r600_pipe_shader_update(struct pipe_context *ctx, struct r600_pipe_shader *shader);
int r600_pipe_shader_create(struct pipe_context *ctx, struct r600_pipe_shader *shader, const struct tgsi_token *tokens);
+void r600_pipe_shader_destroy(struct pipe_context *ctx, struct r600_pipe_shader *shader);
int r600_find_vs_semantic_index(struct r600_shader *vs,
struct r600_shader *ps, int id);
@@ -242,6 +243,22 @@ void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count,
void *r600_create_vertex_elements(struct pipe_context *ctx,
unsigned count,
const struct pipe_vertex_element *elements);
+void r600_delete_vertex_element(struct pipe_context *ctx, void *state);
+void r600_bind_blend_state(struct pipe_context *ctx, void *state);
+void r600_bind_rs_state(struct pipe_context *ctx, void *state);
+void r600_delete_rs_state(struct pipe_context *ctx, void *state);
+void r600_sampler_view_destroy(struct pipe_context *ctx,
+ struct pipe_sampler_view *state);
+void r600_bind_state(struct pipe_context *ctx, void *state);
+void r600_delete_state(struct pipe_context *ctx, void *state);
+void r600_bind_vertex_elements(struct pipe_context *ctx, void *state);
+
+void *r600_create_shader_state(struct pipe_context *ctx,
+ const struct pipe_shader_state *state);
+void r600_bind_ps_shader(struct pipe_context *ctx, void *state);
+void r600_bind_vs_shader(struct pipe_context *ctx, void *state);
+void r600_delete_ps_shader(struct pipe_context *ctx, void *state);
+void r600_delete_vs_shader(struct pipe_context *ctx, void *state);
/*
* common helpers
*/
diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h
index d152285815..7a2d1f4412 100644
--- a/src/gallium/drivers/r600/r600_resource.h
+++ b/src/gallium/drivers/r600/r600_resource.h
@@ -35,7 +35,7 @@ struct r600_transfer {
/* Buffer transfer. */
struct pipe_transfer *buffer_transfer;
unsigned offset;
- struct pipe_resource *linear_texture;
+ struct pipe_resource *staging_texture;
};
/* This gets further specialized into either buffer or texture
@@ -45,8 +45,6 @@ struct r600_transfer {
struct r600_resource {
struct u_resource base;
struct r600_bo *bo;
- u32 domain;
- u32 flink;
u32 size;
};
@@ -68,9 +66,6 @@ struct r600_resource_texture {
void r600_init_screen_resource_functions(struct pipe_screen *screen);
-/* r600_buffer */
-u32 r600_domain_from_usage(unsigned usage);
-
/* r600_texture */
struct pipe_resource *r600_texture_create(struct pipe_screen *screen,
const struct pipe_resource *templ);
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 0dd416c0d8..3e42309bde 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -80,7 +80,7 @@ static void r600_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shade
r600_bo_offset(shader->bo) >> 8, 0xFFFFFFFF, shader->bo);
r600_pipe_state_add_reg(rstate,
R_028894_SQ_PGM_START_FS,
- r600_bo_offset(shader->bo) >> 8, 0xFFFFFFFF, shader->bo);
+ r600_bo_offset(shader->bo_fetch) >> 8, 0xFFFFFFFF, shader->bo_fetch);
r600_pipe_state_add_reg(rstate,
R_03E200_SQ_LOOP_CONST_0 + (32 * 4), 0x01000FFF,
@@ -217,8 +217,17 @@ static int r600_pipe_shader(struct pipe_context *ctx, struct r600_pipe_shader *s
void *ptr;
/* copy new shader */
+ if (rshader->processor_type == TGSI_PROCESSOR_VERTEX && shader->bo_fetch == NULL) {
+ shader->bo_fetch = r600_bo(rctx->radeon, rshader->bc_fetch.ndw * 4, 4096, 0, 0);
+ if (shader->bo_fetch == NULL) {
+ return -ENOMEM;
+ }
+ ptr = r600_bo_map(rctx->radeon, shader->bo_fetch, 0, NULL);
+ memcpy(ptr, rshader->bc_fetch.bytecode, rshader->bc_fetch.ndw * 4);
+ r600_bo_unmap(rctx->radeon, shader->bo_fetch);
+ }
if (shader->bo == NULL) {
- shader->bo = r600_bo(rctx->radeon, rshader->bc.ndw * 4, 4096, 0);
+ shader->bo = r600_bo(rctx->radeon, rshader->bc.ndw * 4, 4096, 0, 0);
if (shader->bo == NULL) {
return -ENOMEM;
}
@@ -257,7 +266,7 @@ static int r600_shader_update(struct pipe_context *ctx, struct r600_pipe_shader
const struct util_format_description *desc;
enum pipe_format resource_format[160];
unsigned i, nresources = 0;
- struct r600_bc *bc = &shader->bc;
+ struct r600_bc *bc = &shader->bc_fetch;
struct r600_bc_cf *cf;
struct r600_bc_vtx *vtx;
@@ -272,7 +281,7 @@ static int r600_shader_update(struct pipe_context *ctx, struct r600_pipe_shader
for (i = 0; i < rctx->vertex_elements->count; i++) {
resource_format[nresources++] = rctx->vertex_elements->hw_format[i];
}
- r600_bo_reference(rctx->radeon, &rshader->bo, NULL);
+ r600_bo_reference(rctx->radeon, &rshader->bo_fetch, NULL);
LIST_FOR_EACH_ENTRY(cf, &bc->cf, list) {
switch (cf->inst) {
case V_SQ_CF_WORD1_SQ_CF_INST_VTX:
@@ -293,7 +302,7 @@ static int r600_shader_update(struct pipe_context *ctx, struct r600_pipe_shader
break;
}
}
- return r600_bc_build(&shader->bc);
+ return r600_bc_build(&shader->bc_fetch);
}
int r600_pipe_shader_update(struct pipe_context *ctx, struct r600_pipe_shader *shader)
@@ -334,10 +343,29 @@ int r600_pipe_shader_create(struct pipe_context *ctx, struct r600_pipe_shader *s
R600_ERR("building bytecode failed !\n");
return r;
}
+ if (shader->shader.processor_type == TGSI_PROCESSOR_VERTEX) {
+ r = r600_bc_build(&shader->shader.bc_fetch);
+ if (r) {
+ R600_ERR("building bytecode failed !\n");
+ return r;
+ }
+ }
//fprintf(stderr, "______________________________________________________________\n");
return 0;
}
+void
+r600_pipe_shader_destroy(struct pipe_context *ctx, struct r600_pipe_shader *shader)
+{
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+
+ r600_bo_reference(rctx->radeon, &shader->bo, NULL);
+
+ r600_bc_clear(&shader->shader.bc);
+
+ /* FIXME: is there more stuff to free? */
+}
+
/*
* tgsi -> r600 shader
*/
@@ -352,6 +380,7 @@ struct r600_shader_ctx {
unsigned temp_reg;
struct r600_shader_tgsi_instruction *inst_info;
struct r600_bc *bc;
+ struct r600_bc *bc_fetch;
struct r600_shader *shader;
u32 value[4];
u32 *literals;
@@ -432,7 +461,7 @@ static int evergreen_interp_alu(struct r600_shader_ctx *ctx, int input)
if (ctx->shader->input[input].centroid)
ij_index++;
}
-
+
/* work out gpr and base_chan from index */
gpr = ij_index / 2;
base_chan = (2 * (ij_index % 2)) + 1;
@@ -465,9 +494,9 @@ static int evergreen_interp_alu(struct r600_shader_ctx *ctx, int input)
return r;
}
return 0;
-}
-
-
+}
+
+
static int tgsi_declaration(struct r600_shader_ctx *ctx)
{
struct tgsi_full_declaration *d = &ctx->parse.FullToken.FullDeclaration;
@@ -499,11 +528,11 @@ static int tgsi_declaration(struct r600_shader_ctx *ctx)
vtx.dst_sel_z = 2;
vtx.dst_sel_w = 3;
vtx.use_const_fields = 1;
- r = r600_bc_add_vtx(ctx->bc, &vtx);
+ r = r600_bc_add_vtx(ctx->bc_fetch, &vtx);
if (r)
return r;
}
- if (ctx->type == TGSI_PROCESSOR_FRAGMENT && ctx->bc->chiprev == 2) {
+ if (ctx->type == TGSI_PROCESSOR_FRAGMENT && ctx->bc->chiprev == CHIPREV_EVERGREEN) {
/* turn input into interpolate on EG */
if (ctx->shader->input[i].name != TGSI_SEMANTIC_POSITION) {
if (ctx->shader->input[i].interpolate > 0) {
@@ -537,7 +566,7 @@ static int r600_get_temp(struct r600_shader_ctx *ctx)
return ctx->temp_reg + ctx->max_driver_temp_used++;
}
-/*
+/*
* for evergreen we need to scan the shader to find the number of GPRs we need to
* reserve for interpolation.
*
@@ -594,6 +623,7 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s
int i, r = 0, pos0;
ctx.bc = &shader->bc;
+ ctx.bc_fetch = &shader->bc_fetch;
ctx.shader = shader;
r = r600_bc_init(ctx.bc, shader->family);
if (r)
@@ -603,6 +633,13 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s
tgsi_parse_init(&ctx.parse, tokens);
ctx.type = ctx.parse.FullHeader.Processor.Processor;
shader->processor_type = ctx.type;
+ if (shader->processor_type == TGSI_PROCESSOR_VERTEX) {
+ r = r600_bc_init(ctx.bc_fetch, shader->family);
+ if (r)
+ return r;
+ ctx.bc_fetch->type = -1;
+ }
+ ctx.bc->type = shader->processor_type;
/* register allocations */
/* Values [0,127] correspond to GPR[0..127].
@@ -628,8 +665,13 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s
}
if (ctx.type == TGSI_PROCESSOR_VERTEX) {
ctx.file_offset[TGSI_FILE_INPUT] = 1;
+ if (ctx.bc->chiprev == CHIPREV_EVERGREEN) {
+ r600_bc_add_cfinst(ctx.bc, EG_V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS);
+ } else {
+ r600_bc_add_cfinst(ctx.bc, V_SQ_CF_WORD1_SQ_CF_INST_CALL_FS);
+ }
}
- if (ctx.type == TGSI_PROCESSOR_FRAGMENT && ctx.bc->chiprev == 2) {
+ if (ctx.type == TGSI_PROCESSOR_FRAGMENT && ctx.bc->chiprev == CHIPREV_EVERGREEN) {
ctx.file_offset[TGSI_FILE_INPUT] = evergreen_gpr_count(&ctx);
}
ctx.file_offset[TGSI_FILE_OUTPUT] = ctx.file_offset[TGSI_FILE_INPUT] +
@@ -675,7 +717,7 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s
/* reserve first tmp for everyone */
r600_get_temp(&ctx);
opcode = ctx.parse.FullToken.FullInstruction.Instruction.Opcode;
- if (ctx.bc->chiprev == 2)
+ if (ctx.bc->chiprev == CHIPREV_EVERGREEN)
ctx.inst_info = &eg_shader_tgsi_instruction[opcode];
else
ctx.inst_info = &r600_shader_tgsi_instruction[opcode];
@@ -797,6 +839,14 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s
output[i].inst = BC_INST(ctx.bc, V_SQ_CF_ALLOC_EXPORT_WORD1_SQ_CF_INST_EXPORT_DONE);
}
}
+ /* add return to fetch shader */
+ if (ctx.type == TGSI_PROCESSOR_VERTEX) {
+ if (ctx.bc->chiprev == CHIPREV_EVERGREEN) {
+ r600_bc_add_cfinst(ctx.bc_fetch, EG_V_SQ_CF_WORD1_SQ_CF_INST_RETURN);
+ } else {
+ r600_bc_add_cfinst(ctx.bc_fetch, V_SQ_CF_WORD1_SQ_CF_INST_RETURN);
+ }
+ }
/* add output to bytecode */
for (i = 0; i < noutput; i++) {
r = r600_bc_add_output(ctx.bc, &output[i]);
@@ -989,7 +1039,7 @@ static int tgsi_op2_s(struct r600_shader_ctx *ctx, int swap)
r = tgsi_dst(ctx, &inst->Dst[0], i, &alu.dst);
if (r)
return r;
-
+
alu.inst = ctx->inst_info->r600_opcode;
if (!swap) {
for (j = 0; j < inst->Instruction.NumSrcRegs; j++) {
@@ -1034,7 +1084,7 @@ static int tgsi_op2_swap(struct r600_shader_ctx *ctx)
return tgsi_op2_s(ctx, 1);
}
-/*
+/*
* r600 - trunc to -PI..PI range
* r700 - normalize by dividing by 2PI
* see fdo bug 27901
@@ -1046,7 +1096,7 @@ static int tgsi_setup_trig(struct r600_shader_ctx *ctx,
int r;
uint32_t lit_vals[4];
struct r600_bc_alu alu;
-
+
memset(lit_vals, 0, 4*4);
r = tgsi_split_constant(ctx, r600_src);
if (r)
@@ -1072,7 +1122,7 @@ static int tgsi_setup_trig(struct r600_shader_ctx *ctx,
alu.src[0] = r600_src[0];
alu.src[0].chan = tgsi_chan(&inst->Src[0], 0);
-
+
alu.src[1].sel = V_SQ_ALU_SRC_LITERAL;
alu.src[1].chan = 0;
alu.src[2].sel = V_SQ_ALU_SRC_LITERAL;
@@ -1087,7 +1137,7 @@ static int tgsi_setup_trig(struct r600_shader_ctx *ctx,
memset(&alu, 0, sizeof(struct r600_bc_alu));
alu.inst = CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FRACT);
-
+
alu.dst.chan = 0;
alu.dst.sel = ctx->temp_reg;
alu.dst.write = 1;
@@ -1099,7 +1149,7 @@ static int tgsi_setup_trig(struct r600_shader_ctx *ctx,
if (r)
return r;
- if (ctx->bc->chiprev == 0) {
+ if (ctx->bc->chiprev == CHIPREV_R600) {
lit_vals[0] = fui(3.1415926535897f * 2.0f);
lit_vals[1] = fui(-3.1415926535897f);
} else {
@@ -1117,7 +1167,7 @@ static int tgsi_setup_trig(struct r600_shader_ctx *ctx,
alu.src[0].sel = ctx->temp_reg;
alu.src[0].chan = 0;
-
+
alu.src[1].sel = V_SQ_ALU_SRC_LITERAL;
alu.src[1].chan = 0;
alu.src[2].sel = V_SQ_ALU_SRC_LITERAL;
@@ -1896,10 +1946,10 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
r = r600_bc_add_alu(ctx->bc, &alu);
if (r)
return r;
-
+
/* MULADD R0.x, R0.x, PS1, (0x3FC00000, 1.5f).x
* MULADD R0.y, R0.y, PS1, (0x3FC00000, 1.5f).x
- * muladd has no writemask, have to use another temp
+ * muladd has no writemask, have to use another temp
*/
memset(&alu, 0, sizeof(struct r600_bc_alu));
alu.inst = CTX_INST(V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MULADD);
@@ -1909,7 +1959,7 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
alu.src[0].chan = 0;
alu.src[1].sel = ctx->temp_reg;
alu.src[1].chan = 2;
-
+
alu.src[2].sel = V_SQ_ALU_SRC_LITERAL;
alu.src[2].chan = 0;
@@ -1929,7 +1979,7 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
alu.src[0].chan = 1;
alu.src[1].sel = ctx->temp_reg;
alu.src[1].chan = 2;
-
+
alu.src[2].sel = V_SQ_ALU_SRC_LITERAL;
alu.src[2].chan = 0;
@@ -1968,7 +2018,7 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
}
src_gpr = ctx->temp_reg;
}
-
+
opcode = ctx->inst_info->r600_opcode;
if (opcode == SQ_TEX_INST_SAMPLE &&
(inst->Texture.Texture == TGSI_TEXTURE_SHADOW1D || inst->Texture.Texture == TGSI_TEXTURE_SHADOW2D))
@@ -1978,8 +2028,6 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
tex.inst = opcode;
tex.sampler_id = ctx->file_offset[inst->Src[1].Register.File] + inst->Src[1].Register.Index;
tex.resource_id = tex.sampler_id;
- if (ctx->shader->processor_type == TGSI_PROCESSOR_VERTEX)
- tex.resource_id += PIPE_MAX_ATTRIBS;
tex.src_gpr = src_gpr;
tex.dst_gpr = ctx->file_offset[inst->Dst[0].Register.File] + inst->Dst[0].Register.Index;
tex.dst_sel_x = (inst->Dst[0].Register.WriteMask & 1) ? 0 : 7;
@@ -2014,7 +2062,6 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
/* add shadow ambient support - gallium doesn't do it yet */
return 0;
-
}
static int tgsi_lrp(struct r600_shader_ctx *ctx)
@@ -2144,7 +2191,7 @@ static int tgsi_cmp(struct r600_shader_ctx *ctx)
r = r600_bc_add_alu(ctx->bc, &alu);
if (r)
return r;
- }
+ }
if (use_temp)
return tgsi_helper_copy(ctx, inst);
return 0;
@@ -2330,7 +2377,7 @@ static int tgsi_exp(struct r600_shader_ctx *ctx)
if (r)
return r;
}
-
+
/* result.y = tmp - floor(tmp); */
if ((inst->Dst[0].Register.WriteMask >> 1) & 1) {
memset(&alu, 0, sizeof(struct r600_bc_alu));
@@ -2609,16 +2656,25 @@ static int tgsi_log(struct r600_shader_ctx *ctx)
return tgsi_helper_copy(ctx, inst);
}
-/* r6/7 only for now */
static int tgsi_eg_arl(struct r600_shader_ctx *ctx)
{
struct tgsi_full_instruction *inst = &ctx->parse.FullToken.FullInstruction;
struct r600_bc_alu alu;
int r;
-
memset(&alu, 0, sizeof(struct r600_bc_alu));
- alu.inst = EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT_FLOOR;
+ switch (inst->Instruction.Opcode) {
+ case TGSI_OPCODE_ARL:
+ alu.inst = EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT_FLOOR;
+ break;
+ case TGSI_OPCODE_ARR:
+ alu.inst = EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT;
+ break;
+ default:
+ assert(0);
+ return -1;
+ }
+
r = tgsi_src(ctx, &inst->Src[0], &alu.src[0]);
if (r)
return r;
@@ -2651,7 +2707,18 @@ static int tgsi_r600_arl(struct r600_shader_ctx *ctx)
int r;
memset(&alu, 0, sizeof(struct r600_bc_alu));
- alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_FLOOR;
+ switch (inst->Instruction.Opcode) {
+ case TGSI_OPCODE_ARL:
+ alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_FLOOR;
+ break;
+ case TGSI_OPCODE_ARR:
+ alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA;
+ break;
+ default:
+ assert(0);
+ return -1;
+ }
+
r = tgsi_src(ctx, &inst->Src[0], &alu.src[0]);
if (r)
@@ -2680,8 +2747,8 @@ static int tgsi_opdst(struct r600_shader_ctx *ctx)
r = tgsi_dst(ctx, &inst->Dst[0], i, &alu.dst);
if (r)
return r;
-
- if (i == 0 || i == 3) {
+
+ if (i == 0 || i == 3) {
alu.src[0].sel = V_SQ_ALU_SRC_1;
} else {
r = tgsi_src(ctx, &inst->Src[0], &alu.src[0]);
@@ -2727,7 +2794,7 @@ static int emit_logic_pred(struct r600_shader_ctx *ctx, int opcode)
alu.src[0].chan = tgsi_chan(&inst->Src[0], 0);
alu.src[1].sel = V_SQ_ALU_SRC_0;
alu.src[1].chan = 0;
-
+
alu.last = 1;
r = r600_bc_add_alu_type(ctx->bc, &alu, CTX_INST(V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU_PUSH_BEFORE));
@@ -2781,7 +2848,7 @@ static inline void callstack_check_depth(struct r600_shader_ctx *ctx, unsigned r
ctx->bc->callstack[ctx->bc->call_sp].current + diff;
}
return;
- }
+ }
switch (reason) {
case FC_PUSH_VPM:
ctx->bc->callstack[ctx->bc->call_sp].current++;
@@ -2855,7 +2922,7 @@ static int emit_setret_in_loop_flag(struct r600_shader_ctx *ctx, unsigned flag_v
static void emit_testflag(struct r600_shader_ctx *ctx)
{
-
+
}
static void emit_return_on_flag(struct r600_shader_ctx *ctx, unsigned ifidx)
@@ -3058,7 +3125,7 @@ static struct r600_shader_tgsi_instruction r600_shader_tgsi_instruction[] = {
{TGSI_OPCODE_UP4UB, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
{TGSI_OPCODE_X2D, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
{TGSI_OPCODE_ARA, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
- {TGSI_OPCODE_ARR, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
+ {TGSI_OPCODE_ARR, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_r600_arl},
{TGSI_OPCODE_BRA, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
{TGSI_OPCODE_CAL, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
{TGSI_OPCODE_RET, 0, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
@@ -3216,7 +3283,7 @@ static struct r600_shader_tgsi_instruction eg_shader_tgsi_instruction[] = {
{TGSI_OPCODE_UP4UB, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
{TGSI_OPCODE_X2D, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
{TGSI_OPCODE_ARA, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
- {TGSI_OPCODE_ARR, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
+ {TGSI_OPCODE_ARR, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_eg_arl},
{TGSI_OPCODE_BRA, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
{TGSI_OPCODE_CAL, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
{TGSI_OPCODE_RET, 0, EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP, tgsi_unsupported},
diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h
index f8bc595139..cd108da491 100644
--- a/src/gallium/drivers/r600/r600_shader.h
+++ b/src/gallium/drivers/r600/r600_shader.h
@@ -46,6 +46,7 @@ struct r600_shader {
struct r600_shader_io output[32];
enum radeon_family family;
boolean uses_kill;
+ struct r600_bc bc_fetch;
};
int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *shader);
diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c
index df2c05ea13..bf4ca057d2 100644
--- a/src/gallium/drivers/r600/r600_state.c
+++ b/src/gallium/drivers/r600/r600_state.c
@@ -109,7 +109,7 @@ static void r600_draw_common(struct r600_drawl *draw)
r600_pipe_state_add_reg(rstate, R_038010_RESOURCE0_WORD4, 0x00000000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_038014_RESOURCE0_WORD5, 0x00000000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_038018_RESOURCE0_WORD6, 0xC0000000, 0xFFFFFFFF, NULL);
- r600_context_pipe_state_set_vs_resource(&rctx->ctx, rstate, i);
+ r600_context_pipe_state_set_fs_resource(&rctx->ctx, rstate, i);
}
mask = 0;
@@ -296,7 +296,7 @@ static void *r600_create_blend_state(struct pipe_context *ctx,
unsigned eqRGB = state->rt[i].rgb_func;
unsigned srcRGB = state->rt[i].rgb_src_factor;
unsigned dstRGB = state->rt[i].rgb_dst_factor;
-
+
unsigned eqA = state->rt[i].alpha_func;
unsigned srcA = state->rt[i].alpha_src_factor;
unsigned dstA = state->rt[i].alpha_dst_factor;
@@ -324,20 +324,6 @@ static void *r600_create_blend_state(struct pipe_context *ctx,
return rstate;
}
-static void r600_bind_blend_state(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_blend *blend = (struct r600_pipe_blend *)state;
- struct r600_pipe_state *rstate;
-
- if (state == NULL)
- return;
- rstate = &blend->rstate;
- rctx->states[rstate->id] = rstate;
- rctx->cb_target_mask = blend->cb_target_mask;
- r600_context_pipe_state_set(&rctx->ctx, rstate);
-}
-
static void *r600_create_dsa_state(struct pipe_context *ctx,
const struct pipe_depth_stencil_alpha_state *state)
{
@@ -448,7 +434,7 @@ static void *r600_create_rs_state(struct pipe_context *ctx,
rstate->id = R600_PIPE_STATE_RASTERIZER;
if (state->flatshade_first)
prov_vtx = 0;
- tmp = 0x00000001;
+ tmp = S_0286D4_FLAT_SHADE_ENA(1);
if (state->sprite_coord_enable) {
tmp |= S_0286D4_PNT_SPRITE_ENA(1) |
S_0286D4_PNT_SPRITE_OVRD_X(2) |
@@ -483,12 +469,17 @@ static void *r600_create_rs_state(struct pipe_context *ctx,
r600_pipe_state_add_reg(rstate, R_028A00_PA_SU_POINT_SIZE, S_028A00_HEIGHT(tmp) | S_028A00_WIDTH(tmp), 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028A04_PA_SU_POINT_MINMAX, 0x80000000, 0xFFFFFFFF, NULL);
- tmp = (unsigned)(state->line_width * 8.0);
+ tmp = (unsigned)state->line_width * 8;
r600_pipe_state_add_reg(rstate, R_028A08_PA_SU_LINE_CNTL, S_028A08_WIDTH(tmp), 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028A0C_PA_SC_LINE_STIPPLE, 0x00000005, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028A48_PA_SC_MPASS_PS_CNTL, 0x00000000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028C00_PA_SC_LINE_CNTL, 0x00000400, 0xFFFFFFFF, NULL);
+
+ r600_pipe_state_add_reg(rstate, R_028C08_PA_SU_VTX_CNTL,
+ S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules),
+ 0xFFFFFFFF, NULL);
+
r600_pipe_state_add_reg(rstate, R_028C0C_PA_CL_GB_VERT_CLIP_ADJ, 0x3F800000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028C10_PA_CL_GB_VERT_DISC_ADJ, 0x3F800000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_028C14_PA_CL_GB_HORZ_CLIP_ADJ, 0x3F800000, 0xFFFFFFFF, NULL);
@@ -499,36 +490,6 @@ static void *r600_create_rs_state(struct pipe_context *ctx,
return rstate;
}
-static void r600_bind_rs_state(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state;
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-
- if (state == NULL)
- return;
-
- rctx->flatshade = rs->flatshade;
- rctx->sprite_coord_enable = rs->sprite_coord_enable;
- rctx->rasterizer = rs;
-
- rctx->states[rs->rstate.id] = &rs->rstate;
- r600_context_pipe_state_set(&rctx->ctx, &rs->rstate);
-}
-
-static void r600_delete_rs_state(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state;
-
- if (rctx->rasterizer == rs) {
- rctx->rasterizer = NULL;
- }
- if (rctx->states[rs->rstate.id] == &rs->rstate) {
- rctx->states[rs->rstate.id] = NULL;
- }
- free(rs);
-}
-
static void *r600_create_sampler_state(struct pipe_context *ctx,
const struct pipe_sampler_state *state)
{
@@ -565,16 +526,6 @@ static void *r600_create_sampler_state(struct pipe_context *ctx,
return rstate;
}
-
-static void r600_sampler_view_destroy(struct pipe_context *ctx,
- struct pipe_sampler_view *state)
-{
- struct r600_pipe_sampler_view *resource = (struct r600_pipe_sampler_view *)state;
-
- pipe_resource_reference(&state->texture, NULL);
- FREE(resource);
-}
-
static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *ctx,
struct pipe_resource *texture,
const struct pipe_sampler_view *state)
@@ -671,7 +622,7 @@ static void r600_set_vs_sampler_view(struct pipe_context *ctx, unsigned count,
for (int i = 0; i < count; i++) {
if (resource[i]) {
- r600_context_pipe_state_set_vs_resource(&rctx->ctx, &resource[i]->state, i + PIPE_MAX_ATTRIBS);
+ r600_context_pipe_state_set_vs_resource(&rctx->ctx, &resource[i]->state, i);
}
}
}
@@ -705,17 +656,6 @@ static void r600_set_ps_sampler_view(struct pipe_context *ctx, unsigned count,
rctx->ps_samplers.n_views = count;
}
-static void r600_bind_state(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_state *rstate = (struct r600_pipe_state *)state;
-
- if (state == NULL)
- return;
- rctx->states[rstate->id] = rstate;
- r600_context_pipe_state_set(&rctx->ctx, rstate);
-}
-
static void r600_bind_ps_sampler(struct pipe_context *ctx, unsigned count, void **states)
{
struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
@@ -739,31 +679,6 @@ static void r600_bind_vs_sampler(struct pipe_context *ctx, unsigned count, void
}
}
-static void r600_delete_state(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_state *rstate = (struct r600_pipe_state *)state;
-
- if (rctx->states[rstate->id] == rstate) {
- rctx->states[rstate->id] = NULL;
- }
- for (int i = 0; i < rstate->nregs; i++) {
- r600_bo_reference(rctx->radeon, &rstate->regs[i].bo, NULL);
- }
- free(rstate);
-}
-
-static void r600_delete_vertex_element(struct pipe_context *ctx, void *state)
-{
- struct r600_vertex_element *v = (struct r600_vertex_element*)state;
-
- if (v == NULL)
- return;
- if (--v->refcount)
- return;
- free(v);
-}
-
static void r600_set_clip_state(struct pipe_context *ctx,
const struct pipe_clip_state *state)
{
@@ -777,16 +692,16 @@ static void r600_set_clip_state(struct pipe_context *ctx,
rstate->id = R600_PIPE_STATE_CLIP;
for (int i = 0; i < state->nr; i++) {
r600_pipe_state_add_reg(rstate,
- R_028E20_PA_CL_UCP0_X + i * 4,
+ R_028E20_PA_CL_UCP0_X + i * 16,
fui(state->ucp[i][0]), 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate,
- R_028E24_PA_CL_UCP0_Y + i * 4,
+ R_028E24_PA_CL_UCP0_Y + i * 16,
fui(state->ucp[i][1]) , 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate,
- R_028E28_PA_CL_UCP0_Z + i * 4,
+ R_028E28_PA_CL_UCP0_Z + i * 16,
fui(state->ucp[i][2]), 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate,
- R_028E2C_PA_CL_UCP0_W + i * 4,
+ R_028E2C_PA_CL_UCP0_W + i * 16,
fui(state->ucp[i][3]), 0xFFFFFFFF, NULL);
}
r600_pipe_state_add_reg(rstate, R_028810_PA_CL_CLIP_CNTL,
@@ -799,19 +714,6 @@ static void r600_set_clip_state(struct pipe_context *ctx,
r600_context_pipe_state_set(&rctx->ctx, rstate);
}
-static void r600_bind_vertex_elements(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_vertex_element *v = (struct r600_vertex_element*)state;
-
- r600_delete_vertex_element(ctx, rctx->vertex_elements);
- rctx->vertex_elements = v;
- if (v) {
- v->refcount++;
-// rctx->vs_rebuild = TRUE;
- }
-}
-
static void r600_set_polygon_stipple(struct pipe_context *ctx,
const struct pipe_poly_stipple *state)
{
@@ -950,7 +852,7 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta
S_0280A0_ARRAY_MODE(rtex->array_mode[level]) |
S_0280A0_BLEND_CLAMP(1) |
S_0280A0_NUMBER_TYPE(ntype);
- if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS)
+ if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS)
color_info |= S_0280A0_SOURCE_FORMAT(1);
r600_pipe_state_add_reg(rstate,
@@ -1031,7 +933,7 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx,
rstate->id = R600_PIPE_STATE_FRAMEBUFFER;
util_copy_framebuffer_state(&rctx->framebuffer, state);
-
+
rctx->pframebuffer = &rctx->framebuffer;
/* build states */
@@ -1121,6 +1023,13 @@ static void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint
struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
struct r600_resource *rbuffer = (struct r600_resource*)buffer;
+ /* Note that the state tracker can unbind constant buffers by
+ * passing NULL here.
+ */
+ if (buffer == NULL) {
+ return;
+ }
+
switch (shader) {
case PIPE_SHADER_VERTEX:
rctx->vs_const_buffer.nregs = 0;
@@ -1150,59 +1059,6 @@ static void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint
}
}
-static void *r600_create_shader_state(struct pipe_context *ctx,
- const struct pipe_shader_state *state)
-{
- struct r600_pipe_shader *shader = CALLOC_STRUCT(r600_pipe_shader);
- int r;
-
- r = r600_pipe_shader_create(ctx, shader, state->tokens);
- if (r) {
- return NULL;
- }
- return shader;
-}
-
-static void r600_bind_ps_shader(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-
- /* TODO delete old shader */
- rctx->ps_shader = (struct r600_pipe_shader *)state;
-}
-
-static void r600_bind_vs_shader(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
-
- /* TODO delete old shader */
- rctx->vs_shader = (struct r600_pipe_shader *)state;
-}
-
-static void r600_delete_ps_shader(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state;
-
- if (rctx->ps_shader == shader) {
- rctx->ps_shader = NULL;
- }
- /* TODO proper delete */
- free(shader);
-}
-
-static void r600_delete_vs_shader(struct pipe_context *ctx, void *state)
-{
- struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
- struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state;
-
- if (rctx->vs_shader == shader) {
- rctx->vs_shader = NULL;
- }
- /* TODO proper delete */
- free(shader);
-}
-
void r600_init_state_functions(struct r600_pipe_context *rctx)
{
rctx->context.create_blend_state = r600_create_blend_state;
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c
index 722ce32263..55bc5d0d22 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -30,6 +30,105 @@
#include "r600_pipe.h"
/* common state between evergreen and r600 */
+void r600_bind_blend_state(struct pipe_context *ctx, void *state)
+{
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+ struct r600_pipe_blend *blend = (struct r600_pipe_blend *)state;
+ struct r600_pipe_state *rstate;
+
+ if (state == NULL)
+ return;
+ rstate = &blend->rstate;
+ rctx->states[rstate->id] = rstate;
+ rctx->cb_target_mask = blend->cb_target_mask;
+ r600_context_pipe_state_set(&rctx->ctx, rstate);
+}
+
+void r600_bind_rs_state(struct pipe_context *ctx, void *state)
+{
+ struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state;
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+
+ if (state == NULL)
+ return;
+
+ rctx->flatshade = rs->flatshade;
+ rctx->sprite_coord_enable = rs->sprite_coord_enable;
+ rctx->rasterizer = rs;
+
+ rctx->states[rs->rstate.id] = &rs->rstate;
+ r600_context_pipe_state_set(&rctx->ctx, &rs->rstate);
+}
+
+void r600_delete_rs_state(struct pipe_context *ctx, void *state)
+{
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+ struct r600_pipe_rasterizer *rs = (struct r600_pipe_rasterizer *)state;
+
+ if (rctx->rasterizer == rs) {
+ rctx->rasterizer = NULL;
+ }
+ if (rctx->states[rs->rstate.id] == &rs->rstate) {
+ rctx->states[rs->rstate.id] = NULL;
+ }
+ free(rs);
+}
+
+void r600_sampler_view_destroy(struct pipe_context *ctx,
+ struct pipe_sampler_view *state)
+{
+ struct r600_pipe_sampler_view *resource = (struct r600_pipe_sampler_view *)state;
+
+ pipe_resource_reference(&state->texture, NULL);
+ FREE(resource);
+}
+
+void r600_bind_state(struct pipe_context *ctx, void *state)
+{
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+ struct r600_pipe_state *rstate = (struct r600_pipe_state *)state;
+
+ if (state == NULL)
+ return;
+ rctx->states[rstate->id] = rstate;
+ r600_context_pipe_state_set(&rctx->ctx, rstate);
+}
+
+void r600_delete_state(struct pipe_context *ctx, void *state)
+{
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+ struct r600_pipe_state *rstate = (struct r600_pipe_state *)state;
+
+ if (rctx->states[rstate->id] == rstate) {
+ rctx->states[rstate->id] = NULL;
+ }
+ for (int i = 0; i < rstate->nregs; i++) {
+ r600_bo_reference(rctx->radeon, &rstate->regs[i].bo, NULL);
+ }
+ free(rstate);
+}
+
+void r600_bind_vertex_elements(struct pipe_context *ctx, void *state)
+{
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+ struct r600_vertex_element *v = (struct r600_vertex_element*)state;
+
+ rctx->vertex_elements = v;
+ if (v) {
+// rctx->vs_rebuild = TRUE;
+ }
+}
+
+void r600_delete_vertex_element(struct pipe_context *ctx, void *state)
+{
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+
+ FREE(state);
+
+ if (rctx->vertex_elements == state)
+ rctx->vertex_elements = NULL;
+}
+
void r600_set_index_buffer(struct pipe_context *ctx,
const struct pipe_index_buffer *ib)
@@ -103,10 +202,10 @@ void *r600_create_vertex_elements(struct pipe_context *ctx,
format = &v->hw_format[i];
switch (*format) {
- FORMAT_REPLACE(R64_FLOAT, R32_FLOAT);
- FORMAT_REPLACE(R64G64_FLOAT, R32G32_FLOAT);
- FORMAT_REPLACE(R64G64B64_FLOAT, R32G32B32_FLOAT);
- FORMAT_REPLACE(R64G64B64A64_FLOAT, R32G32B32A32_FLOAT);
+ FORMAT_REPLACE(R64_FLOAT, R32_FLOAT);
+ FORMAT_REPLACE(R64G64_FLOAT, R32G32_FLOAT);
+ FORMAT_REPLACE(R64G64B64_FLOAT, R32G32B32_FLOAT);
+ FORMAT_REPLACE(R64G64B64A64_FLOAT, R32G32B32A32_FLOAT);
default:;
}
v->incompatible_layout =
@@ -114,10 +213,63 @@ void *r600_create_vertex_elements(struct pipe_context *ctx,
v->elements[i].src_format != v->hw_format[i] ||
v->elements[i].src_offset % 4 != 0;
- v->hw_format_size[i] =
- align(util_format_get_blocksize(v->hw_format[i]), 4);
+ v->hw_format_size[i] = align(util_format_get_blocksize(v->hw_format[i]), 4);
}
- v->refcount = 1;
return v;
}
+
+void *r600_create_shader_state(struct pipe_context *ctx,
+ const struct pipe_shader_state *state)
+{
+ struct r600_pipe_shader *shader = CALLOC_STRUCT(r600_pipe_shader);
+ int r;
+
+ r = r600_pipe_shader_create(ctx, shader, state->tokens);
+ if (r) {
+ return NULL;
+ }
+ return shader;
+}
+
+void r600_bind_ps_shader(struct pipe_context *ctx, void *state)
+{
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+
+ /* TODO delete old shader */
+ rctx->ps_shader = (struct r600_pipe_shader *)state;
+}
+
+void r600_bind_vs_shader(struct pipe_context *ctx, void *state)
+{
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+
+ /* TODO delete old shader */
+ rctx->vs_shader = (struct r600_pipe_shader *)state;
+}
+
+void r600_delete_ps_shader(struct pipe_context *ctx, void *state)
+{
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+ struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state;
+
+ if (rctx->ps_shader == shader) {
+ rctx->ps_shader = NULL;
+ }
+
+ r600_pipe_shader_destroy(ctx, shader);
+ free(shader);
+}
+
+void r600_delete_vs_shader(struct pipe_context *ctx, void *state)
+{
+ struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
+ struct r600_pipe_shader *shader = (struct r600_pipe_shader *)state;
+
+ if (rctx->vs_shader == shader) {
+ rctx->vs_shader = NULL;
+ }
+
+ r600_pipe_shader_destroy(ctx, shader);
+ free(shader);
+}
diff --git a/src/gallium/drivers/r600/r600_state_inlines.h b/src/gallium/drivers/r600/r600_state_inlines.h
index 1c1978f8ab..781612af57 100644
--- a/src/gallium/drivers/r600/r600_state_inlines.h
+++ b/src/gallium/drivers/r600/r600_state_inlines.h
@@ -282,6 +282,7 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format)
switch (format) {
/* 8-bit buffers. */
case PIPE_FORMAT_A8_UNORM:
+ return V_0280A0_SWAP_ALT_REV;
case PIPE_FORMAT_I8_UNORM:
case PIPE_FORMAT_L8_UNORM:
case PIPE_FORMAT_R8_UNORM:
@@ -472,7 +473,7 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format)
case PIPE_FORMAT_UYVY:
case PIPE_FORMAT_YUYV:
default:
- R600_ERR("unsupported color format %d %s\n", format, util_format_name(format));
+ //R600_ERR("unsupported color format %d %s\n", format, util_format_name(format));
return ~0; /* Unsupported. */
}
}
diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c
index 4ebd5b754b..8ecd434a43 100644
--- a/src/gallium/drivers/r600/r600_texture.c
+++ b/src/gallium/drivers/r600/r600_texture.c
@@ -31,6 +31,7 @@
#include <util/u_inlines.h>
#include <util/u_memory.h>
#include "state_tracker/drm_driver.h"
+#include "pipebuffer/pb_buffer.h"
#include "r600_pipe.h"
#include "r600_resource.h"
#include "r600_state_inlines.h"
@@ -39,8 +40,8 @@
extern struct u_resource_vtbl r600_texture_vtbl;
-/* Copy from a tiled texture to a detiled one. */
-static void r600_copy_from_tiled_texture(struct pipe_context *ctx, struct r600_transfer *rtransfer)
+/* Copy from a full GPU texture to a transfer's staging one. */
+static void r600_copy_to_staging_texture(struct pipe_context *ctx, struct r600_transfer *rtransfer)
{
struct pipe_transfer *transfer = (struct pipe_transfer*)rtransfer;
struct pipe_resource *texture = transfer->resource;
@@ -48,15 +49,15 @@ static void r600_copy_from_tiled_texture(struct pipe_context *ctx, struct r600_t
subdst.face = 0;
subdst.level = 0;
- ctx->resource_copy_region(ctx, rtransfer->linear_texture,
+ ctx->resource_copy_region(ctx, rtransfer->staging_texture,
subdst, 0, 0, 0, texture, transfer->sr,
transfer->box.x, transfer->box.y, transfer->box.z,
transfer->box.width, transfer->box.height);
}
-/* Copy from a detiled texture to a tiled one. */
-static void r600_copy_into_tiled_texture(struct pipe_context *ctx, struct r600_transfer *rtransfer)
+/* Copy from a transfer's staging texture to a full GPU one. */
+static void r600_copy_from_staging_texture(struct pipe_context *ctx, struct r600_transfer *rtransfer)
{
struct pipe_transfer *transfer = (struct pipe_transfer*)rtransfer;
struct pipe_resource *texture = transfer->resource;
@@ -66,7 +67,7 @@ static void r600_copy_into_tiled_texture(struct pipe_context *ctx, struct r600_t
subsrc.level = 0;
ctx->resource_copy_region(ctx, texture, transfer->sr,
transfer->box.x, transfer->box.y, transfer->box.z,
- rtransfer->linear_texture, subsrc,
+ rtransfer->staging_texture, subsrc,
0, 0, 0,
transfer->box.width, transfer->box.height);
@@ -108,11 +109,11 @@ static unsigned r600_get_pixel_alignment(struct pipe_screen *screen,
case V_038000_ARRAY_2D_TILED_THIN1:
p_align = MAX2(rscreen->tiling_info->num_banks,
(((rscreen->tiling_info->group_bytes / 8 / pixsize)) *
- rscreen->tiling_info->num_banks));
+ rscreen->tiling_info->num_banks)) * 8;
break;
- case 0:
+ case V_038000_ARRAY_LINEAR_GENERAL:
default:
- p_align = 64;
+ p_align = rscreen->tiling_info->group_bytes / pixsize;
break;
}
return p_align;
@@ -138,6 +139,29 @@ static unsigned r600_get_height_alignment(struct pipe_screen *screen,
return h_align;
}
+static unsigned r600_get_base_alignment(struct pipe_screen *screen,
+ enum pipe_format format,
+ unsigned array_mode)
+{
+ struct r600_screen* rscreen = (struct r600_screen *)screen;
+ unsigned pixsize = util_format_get_blocksize(format);
+ int p_align = r600_get_pixel_alignment(screen, format, array_mode);
+ int h_align = r600_get_height_alignment(screen, array_mode);
+ int b_align;
+
+ switch (array_mode) {
+ case V_038000_ARRAY_2D_TILED_THIN1:
+ b_align = MAX2(rscreen->tiling_info->num_banks * rscreen->tiling_info->num_channels * 8 * 8 * pixsize,
+ p_align * pixsize * h_align);
+ break;
+ case V_038000_ARRAY_1D_TILED_THIN1:
+ default:
+ b_align = rscreen->tiling_info->group_bytes;
+ break;
+ }
+ return b_align;
+}
+
static unsigned mip_minify(unsigned size, unsigned level)
{
unsigned val;
@@ -151,11 +175,12 @@ static unsigned r600_texture_get_stride(struct pipe_screen *screen,
struct r600_resource_texture *rtex,
unsigned level)
{
+ struct r600_screen* rscreen = (struct r600_screen *)screen;
struct pipe_resource *ptex = &rtex->resource.base.b;
struct radeon *radeon = (struct radeon *)screen->winsys;
enum chip_class chipc = r600_get_family_class(radeon);
unsigned width, stride, tile_width;
-
+
if (rtex->pitch_override)
return rtex->pitch_override;
@@ -166,8 +191,7 @@ static unsigned r600_texture_get_stride(struct pipe_screen *screen,
width = align(width, tile_width);
}
stride = util_format_get_stride(ptex->format, width);
- if (chipc == EVERGREEN)
- stride = align(stride, 512);
+
return stride;
}
@@ -252,6 +276,9 @@ static void r600_setup_miptree(struct pipe_screen *screen,
}
else
size = layer_size * u_minify(ptex->depth0, i);
+ /* align base image and start of miptree */
+ if ((i == 0) || (i == 1))
+ offset = align(offset, r600_get_base_alignment(screen, ptex->format, array_mode));
rtex->offset[i] = offset;
rtex->layer_size[i] = layer_size;
rtex->pitch_in_bytes[i] = pitch;
@@ -283,7 +310,6 @@ r600_texture_create_object(struct pipe_screen *screen,
pipe_reference_init(&resource->base.b.reference, 1);
resource->base.b.screen = screen;
resource->bo = bo;
- resource->domain = r600_domain_from_usage(resource->base.b.bind);
rtex->pitch_override = pitch_in_bytes_override;
if (array_mode)
@@ -293,7 +319,10 @@ r600_texture_create_object(struct pipe_screen *screen,
resource->size = rtex->size;
if (!resource->bo) {
- resource->bo = r600_bo(radeon, rtex->size, 4096, 0);
+ struct pipe_resource *ptex = &rtex->resource.base.b;
+ int base_align = r600_get_base_alignment(screen, ptex->format, array_mode);
+
+ resource->bo = r600_bo(radeon, rtex->size, base_align, base->bind, base->usage);
if (!resource->bo) {
FREE(rtex);
return NULL;
@@ -306,8 +335,14 @@ struct pipe_resource *r600_texture_create(struct pipe_screen *screen,
const struct pipe_resource *templ)
{
unsigned array_mode = 0;
+ static int force_tiling = -1;
- if (debug_get_bool_option("R600_FORCE_TILING", FALSE)) {
+ /* Would like some magic "get_bool_option_once" routine.
+ */
+ if (force_tiling == -1)
+ force_tiling = debug_get_bool_option("R600_FORCE_TILING", FALSE);
+
+ if (force_tiling) {
if (!(templ->flags & R600_RESOURCE_FLAG_TRANSFER) &&
!(templ->bind & PIPE_BIND_SCANOUT)) {
array_mode = V_038000_ARRAY_2D_TILED_THIN1;
@@ -335,6 +370,18 @@ static void r600_texture_destroy(struct pipe_screen *screen,
FREE(rtex);
}
+static boolean r600_texture_get_handle(struct pipe_screen* screen,
+ struct pipe_resource *ptex,
+ struct winsys_handle *whandle)
+{
+ struct r600_resource_texture *rtex = (struct r600_resource_texture*)ptex;
+ struct r600_resource *resource = &rtex->resource;
+ struct radeon *radeon = (struct radeon *)screen->winsys;
+
+ return r600_bo_get_winsys_handle(radeon, resource->bo,
+ rtex->pitch_in_bytes[0], whandle);
+}
+
static struct pipe_surface *r600_get_tex_surface(struct pipe_screen *screen,
struct pipe_resource *texture,
unsigned face, unsigned level,
@@ -434,10 +481,59 @@ int r600_texture_depth_flush(struct pipe_context *ctx,
}
out:
+ /* XXX: only do this if the depth texture has actually changed:
+ */
r600_blit_uncompress_depth_ptr(ctx, rtex);
return 0;
}
+/* Needs adjustment for pixelformat:
+ */
+static INLINE unsigned u_box_volume( const struct pipe_box *box )
+{
+ return box->width * box->depth * box->height;
+};
+
+
+/* Figure out whether u_blitter will fallback to a transfer operation.
+ * If so, don't use a staging resource.
+ */
+static boolean permit_hardware_blit(struct pipe_screen *screen,
+ struct pipe_resource *res)
+{
+ unsigned bind;
+
+ if (util_format_is_depth_or_stencil(res->format))
+ bind = PIPE_BIND_DEPTH_STENCIL;
+ else
+ bind = PIPE_BIND_RENDER_TARGET;
+
+ /* See r600_resource_copy_region: there is something wrong
+ * with depth resource copies at the moment so avoid them for
+ * now.
+ */
+ if (util_format_get_component_bits(res->format,
+ UTIL_FORMAT_COLORSPACE_ZS,
+ 0) != 0)
+ return FALSE;
+
+ if (!screen->is_format_supported(screen,
+ res->format,
+ res->target,
+ res->nr_samples,
+ bind, 0))
+ return FALSE;
+
+ if (!screen->is_format_supported(screen,
+ res->format,
+ res->target,
+ res->nr_samples,
+ PIPE_BIND_SAMPLER_VIEW, 0))
+ return FALSE;
+
+ return TRUE;
+}
+
struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
struct pipe_resource *texture,
struct pipe_subresource sr,
@@ -448,6 +544,36 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
struct pipe_resource resource;
struct r600_transfer *trans;
int r;
+ boolean use_staging_texture = FALSE;
+
+ /* We cannot map a tiled texture directly because the data is
+ * in a different order, therefore we do detiling using a blit.
+ *
+ * Also, use a temporary in GTT memory for read transfers, as
+ * the CPU is much happier reading out of cached system memory
+ * than uncached VRAM.
+ */
+ if (rtex->tiled)
+ use_staging_texture = TRUE;
+
+ if ((usage & PIPE_TRANSFER_READ) &&
+ u_box_volume(box) > 1024)
+ use_staging_texture = TRUE;
+
+ /* XXX: Use a staging texture for uploads if the underlying BO
+ * is busy. No interface for checking that currently? so do
+ * it eagerly whenever the transfer doesn't require a readback
+ * and might block.
+ */
+ if ((usage & PIPE_TRANSFER_WRITE) &&
+ !(usage & (PIPE_TRANSFER_READ |
+ PIPE_TRANSFER_DONTBLOCK |
+ PIPE_TRANSFER_UNSYNCHRONIZED)))
+ use_staging_texture = TRUE;
+
+ if (!permit_hardware_blit(ctx->screen, texture) ||
+ (texture->flags & R600_RESOURCE_FLAG_TRANSFER))
+ use_staging_texture = FALSE;
trans = CALLOC_STRUCT(r600_transfer);
if (trans == NULL)
@@ -457,6 +583,10 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
trans->transfer.usage = usage;
trans->transfer.box = *box;
if (rtex->depth) {
+ /* XXX: only readback the rectangle which is being mapped?
+ */
+ /* XXX: when discard is true, no need to read back from depth texture
+ */
r = r600_texture_depth_flush(ctx, texture);
if (r < 0) {
R600_ERR("failed to create temporary texture to hold untiled copy\n");
@@ -464,7 +594,7 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
FREE(trans);
return NULL;
}
- } else if (rtex->tiled) {
+ } else if (use_staging_texture) {
resource.target = PIPE_TEXTURE_2D;
resource.format = texture->format;
resource.width0 = box->width;
@@ -472,7 +602,7 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
resource.depth0 = 1;
resource.last_level = 0;
resource.nr_samples = 0;
- resource.usage = PIPE_USAGE_DYNAMIC;
+ resource.usage = PIPE_USAGE_STAGING;
resource.bind = 0;
resource.flags = R600_RESOURCE_FLAG_TRANSFER;
/* For texture reading, the temporary (detiled) texture is used as
@@ -486,8 +616,8 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
resource.bind |= PIPE_BIND_SAMPLER_VIEW;
}
/* Create the temporary texture. */
- trans->linear_texture = ctx->screen->resource_create(ctx->screen, &resource);
- if (trans->linear_texture == NULL) {
+ trans->staging_texture = ctx->screen->resource_create(ctx->screen, &resource);
+ if (trans->staging_texture == NULL) {
R600_ERR("failed to create temporary texture to hold untiled copy\n");
pipe_resource_reference(&trans->transfer.resource, NULL);
FREE(trans);
@@ -495,11 +625,9 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
}
trans->transfer.stride =
- ((struct r600_resource_texture *)trans->linear_texture)->pitch_in_bytes[0];
+ ((struct r600_resource_texture *)trans->staging_texture)->pitch_in_bytes[0];
if (usage & PIPE_TRANSFER_READ) {
- /* We cannot map a tiled texture directly because the data is
- * in a different order, therefore we do detiling using a blit. */
- r600_copy_from_tiled_texture(ctx, trans);
+ r600_copy_to_staging_texture(ctx, trans);
/* Always referenced in the blit. */
ctx->flush(ctx, 0, NULL);
}
@@ -516,11 +644,11 @@ void r600_texture_transfer_destroy(struct pipe_context *ctx,
struct r600_transfer *rtransfer = (struct r600_transfer*)transfer;
struct r600_resource_texture *rtex = (struct r600_resource_texture*)transfer->resource;
- if (rtransfer->linear_texture) {
+ if (rtransfer->staging_texture) {
if (transfer->usage & PIPE_TRANSFER_WRITE) {
- r600_copy_into_tiled_texture(ctx, rtransfer);
+ r600_copy_from_staging_texture(ctx, rtransfer);
}
- pipe_resource_reference(&rtransfer->linear_texture, NULL);
+ pipe_resource_reference(&rtransfer->staging_texture, NULL);
}
if (rtex->flushed_depth_texture) {
pipe_resource_reference((struct pipe_resource **)&rtex->flushed_depth_texture, NULL);
@@ -537,10 +665,11 @@ void* r600_texture_transfer_map(struct pipe_context *ctx,
enum pipe_format format = transfer->resource->format;
struct radeon *radeon = (struct radeon *)ctx->screen->winsys;
unsigned offset = 0;
+ unsigned usage = 0;
char *map;
- if (rtransfer->linear_texture) {
- bo = ((struct r600_resource *)rtransfer->linear_texture)->bo;
+ if (rtransfer->staging_texture) {
+ bo = ((struct r600_resource *)rtransfer->staging_texture)->bo;
} else {
struct r600_resource_texture *rtex = (struct r600_resource_texture*)transfer->resource;
@@ -553,7 +682,30 @@ void* r600_texture_transfer_map(struct pipe_context *ctx,
transfer->box.y / util_format_get_blockheight(format) * transfer->stride +
transfer->box.x / util_format_get_blockwidth(format) * util_format_get_blocksize(format);
}
- map = r600_bo_map(radeon, bo, 0, ctx);
+
+ if (transfer->usage & PIPE_TRANSFER_WRITE) {
+ usage |= PB_USAGE_CPU_WRITE;
+
+ if (transfer->usage & PIPE_TRANSFER_DISCARD) {
+ }
+
+ if (transfer->usage & PIPE_TRANSFER_FLUSH_EXPLICIT) {
+ }
+ }
+
+ if (transfer->usage & PIPE_TRANSFER_READ) {
+ usage |= PB_USAGE_CPU_READ;
+ }
+
+ if (transfer->usage & PIPE_TRANSFER_DONTBLOCK) {
+ usage |= PB_USAGE_DONTBLOCK;
+ }
+
+ if (transfer->usage & PIPE_TRANSFER_UNSYNCHRONIZED) {
+ usage |= PB_USAGE_UNSYNCHRONIZED;
+ }
+
+ map = r600_bo_map(radeon, bo, usage, ctx);
if (!map) {
return NULL;
}
@@ -568,8 +720,8 @@ void r600_texture_transfer_unmap(struct pipe_context *ctx,
struct radeon *radeon = (struct radeon *)ctx->screen->winsys;
struct r600_bo *bo;
- if (rtransfer->linear_texture) {
- bo = ((struct r600_resource *)rtransfer->linear_texture)->bo;
+ if (rtransfer->staging_texture) {
+ bo = ((struct r600_resource *)rtransfer->staging_texture)->bo;
} else {
struct r600_resource_texture *rtex = (struct r600_resource_texture*)transfer->resource;
@@ -584,7 +736,7 @@ void r600_texture_transfer_unmap(struct pipe_context *ctx,
struct u_resource_vtbl r600_texture_vtbl =
{
- u_default_resource_get_handle, /* get_handle */
+ r600_texture_get_handle, /* get_handle */
r600_texture_destroy, /* resource_destroy */
r600_texture_is_referenced, /* is_resource_referenced */
r600_texture_get_transfer, /* get_transfer */
@@ -689,7 +841,7 @@ uint32_t r600_translate_texformat(enum pipe_format format,
result = FMT_24_8;
goto out_word4;
case PIPE_FORMAT_S8_USCALED:
- result = V_0280A0_COLOR_8;
+ result = FMT_8;
word4 |= S_038010_NUM_FORMAT_ALL(V_038010_SQ_NUM_FORMAT_INT);
goto out_word4;
default:
@@ -718,7 +870,29 @@ uint32_t r600_translate_texformat(enum pipe_format format,
/* S3TC formats. TODO */
if (desc->layout == UTIL_FORMAT_LAYOUT_S3TC) {
- goto out_unknown;
+ static int r600_enable_s3tc = -1;
+
+ if (r600_enable_s3tc == -1)
+ r600_enable_s3tc =
+ debug_get_bool_option("R600_ENABLE_S3TC", FALSE);
+
+ if (!r600_enable_s3tc)
+ goto out_unknown;
+
+ switch (format) {
+ case PIPE_FORMAT_DXT1_RGB:
+ case PIPE_FORMAT_DXT1_RGBA:
+ result = FMT_BC1;
+ goto out_word4;
+ case PIPE_FORMAT_DXT3_RGBA:
+ result = FMT_BC2;
+ goto out_word4;
+ case PIPE_FORMAT_DXT5_RGBA:
+ result = FMT_BC3;
+ goto out_word4;
+ default:
+ goto out_unknown;
+ }
}
diff --git a/src/gallium/drivers/r600/r600d.h b/src/gallium/drivers/r600/r600d.h
index a3cb5b8600..ae19bfb828 100644
--- a/src/gallium/drivers/r600/r600d.h
+++ b/src/gallium/drivers/r600/r600d.h
@@ -2100,6 +2100,10 @@
#define G_028C00_LAST_PIXEL(x) (((x) >> 10) & 0x1)
#define C_028C00_LAST_PIXEL 0xFFFFFBFF
#define R_028C04_PA_SC_AA_CONFIG 0x028C04
+#define R_028C08_PA_SU_VTX_CNTL 0x028C08
+#define S_028C08_PIX_CENTER_HALF(x) (((x) & 0x1) << 0)
+#define G_028C08_PIX_CENTER_HALF(x) (((x) >> 0) & 0x1)
+#define C_028C08_PIX_CENTER_HALF 0xFFFFFFFE
#define R_028C1C_PA_SC_AA_SAMPLE_LOCS_MCTX 0x028C1C
#define R_028C48_PA_SC_AA_MASK 0x028C48
#define R_028810_PA_CL_CLIP_CNTL 0x028810
diff --git a/src/gallium/drivers/rbug/README b/src/gallium/drivers/rbug/README
index b6d3a5cf35..9d7bd4e769 100644
--- a/src/gallium/drivers/rbug/README
+++ b/src/gallium/drivers/rbug/README
@@ -7,24 +7,10 @@ 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
+Do
- export XMESA_TRACE=y
GALLIUM_RBUG=true progs/trivial/tri
which should open gallium remote debugging session. While the program is running
diff --git a/src/gallium/drivers/rbug/SConscript b/src/gallium/drivers/rbug/SConscript
index 3da6ac104a..169c2718dc 100644
--- a/src/gallium/drivers/rbug/SConscript
+++ b/src/gallium/drivers/rbug/SConscript
@@ -11,4 +11,6 @@ rbug = env.ConvenienceLibrary(
'rbug_screen.c',
])
+env.Alias('rbug', rbug)
+
Export('rbug')
diff --git a/src/gallium/drivers/softpipe/SConscript b/src/gallium/drivers/softpipe/SConscript
index d5f4d28aef..ea10e8a9f9 100644
--- a/src/gallium/drivers/softpipe/SConscript
+++ b/src/gallium/drivers/softpipe/SConscript
@@ -37,4 +37,6 @@ softpipe = env.ConvenienceLibrary(
'sp_tile_cache.c',
])
+env.Alias('softpipe', softpipe)
+
Export('softpipe')
diff --git a/src/gallium/drivers/softpipe/sp_quad_depth_test.c b/src/gallium/drivers/softpipe/sp_quad_depth_test.c
index c8f5f89568..89b2a91fc1 100644
--- a/src/gallium/drivers/softpipe/sp_quad_depth_test.c
+++ b/src/gallium/drivers/softpipe/sp_quad_depth_test.c
@@ -860,6 +860,7 @@ choose_depth_test(struct quad_stage *qs,
/* look for special cases */
if (!alpha &&
!depth &&
+ !occlusion &&
!stencil) {
qs->run = depth_noop;
}
diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c
index a2bfa1bd8d..5f171d314a 100644
--- a/src/gallium/drivers/softpipe/sp_screen.c
+++ b/src/gallium/drivers/softpipe/sp_screen.c
@@ -64,7 +64,12 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
return PIPE_MAX_SAMPLERS;
case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS:
+#ifdef HAVE_LLVM
+ /* Softpipe doesn't yet know how to tell draw/llvm about textures */
+ return 0;
+#else
return PIPE_MAX_VERTEX_SAMPLERS;
+#endif
case PIPE_CAP_MAX_COMBINED_SAMPLERS:
return PIPE_MAX_SAMPLERS + PIPE_MAX_VERTEX_SAMPLERS;
case PIPE_CAP_NPOT_TEXTURES:
@@ -209,13 +214,6 @@ softpipe_is_format_supported( struct pipe_screen *screen,
if (format_desc->block.width != 1 ||
format_desc->block.height != 1)
return FALSE;
-
- /*
- * TODO: Unfortunately we cannot render into anything more than 32 bits
- * because we encode color clear values into a 32bit word.
- */
- if (format_desc->block.bits > 32)
- return FALSE;
}
if (bind & PIPE_BIND_DEPTH_STENCIL) {
diff --git a/src/gallium/drivers/softpipe/sp_tex_sample.c b/src/gallium/drivers/softpipe/sp_tex_sample.c
index 088e48f81f..2eac4c7a82 100644
--- a/src/gallium/drivers/softpipe/sp_tex_sample.c
+++ b/src/gallium/drivers/softpipe/sp_tex_sample.c
@@ -44,6 +44,9 @@
#include "sp_tex_tile_cache.h"
+/** Set to one to help debug texture sampling */
+#define DEBUG_TEX 0
+
/*
* Return fractional part of 'f'. Used for computing interpolation weights.
@@ -774,6 +777,18 @@ pot_level_size(unsigned base_pot, unsigned level)
}
+static void
+print_sample(const char *function, float rgba[NUM_CHANNELS][QUAD_SIZE])
+{
+ debug_printf("%s %g %g %g %g, %g %g %g %g, %g %g %g %g, %g %g %g %g\n",
+ function,
+ rgba[0][0], rgba[1][0], rgba[2][0], rgba[3][0],
+ rgba[0][1], rgba[1][1], rgba[2][1], rgba[3][1],
+ rgba[0][2], rgba[1][2], rgba[2][2], rgba[3][2],
+ rgba[0][3], rgba[1][3], rgba[2][3], rgba[3][3]);
+}
+
+
/* Some image-filter fastpaths:
*/
static INLINE void
@@ -832,6 +847,10 @@ img_filter_2d_linear_repeat_POT(struct tgsi_sampler *tgsi_sampler,
tx[2][c], tx[3][c]);
}
}
+
+ if (DEBUG_TEX) {
+ print_sample(__FUNCTION__, rgba);
+ }
}
@@ -872,6 +891,10 @@ img_filter_2d_nearest_repeat_POT(struct tgsi_sampler *tgsi_sampler,
rgba[c][j] = out[c];
}
}
+
+ if (DEBUG_TEX) {
+ print_sample(__FUNCTION__, rgba);
+ }
}
@@ -921,6 +944,10 @@ img_filter_2d_nearest_clamp_POT(struct tgsi_sampler *tgsi_sampler,
rgba[c][j] = out[c];
}
}
+
+ if (DEBUG_TEX) {
+ print_sample(__FUNCTION__, rgba);
+ }
}
@@ -957,6 +984,10 @@ img_filter_1d_nearest(struct tgsi_sampler *tgsi_sampler,
rgba[c][j] = out[c];
}
}
+
+ if (DEBUG_TEX) {
+ print_sample(__FUNCTION__, rgba);
+ }
}
@@ -997,6 +1028,10 @@ img_filter_2d_nearest(struct tgsi_sampler *tgsi_sampler,
rgba[c][j] = out[c];
}
}
+
+ if (DEBUG_TEX) {
+ print_sample(__FUNCTION__, rgba);
+ }
}
@@ -1045,6 +1080,10 @@ img_filter_cube_nearest(struct tgsi_sampler *tgsi_sampler,
rgba[c][j] = out[c];
}
}
+
+ if (DEBUG_TEX) {
+ print_sample(__FUNCTION__, rgba);
+ }
}
@@ -1357,6 +1396,10 @@ mip_filter_linear(struct tgsi_sampler *tgsi_sampler,
}
}
}
+
+ if (DEBUG_TEX) {
+ print_sample(__FUNCTION__, rgba);
+ }
}
@@ -1402,13 +1445,9 @@ mip_filter_nearest(struct tgsi_sampler *tgsi_sampler,
samp->min_img_filter(tgsi_sampler, s, t, p, NULL, tgsi_sampler_lod_bias, rgba);
}
-#if 0
- printf("RGBA %g %g %g %g, %g %g %g %g, %g %g %g %g, %g %g %g %g\n",
- rgba[0][0], rgba[1][0], rgba[2][0], rgba[3][0],
- rgba[0][1], rgba[1][1], rgba[2][1], rgba[3][1],
- rgba[0][2], rgba[1][2], rgba[2][2], rgba[3][2],
- rgba[0][3], rgba[1][3], rgba[2][3], rgba[3][3]);
-#endif
+ if (DEBUG_TEX) {
+ print_sample(__FUNCTION__, rgba);
+ }
}
@@ -1510,6 +1549,10 @@ mip_filter_linear_2d_linear_repeat_POT(
}
}
}
+
+ if (DEBUG_TEX) {
+ print_sample(__FUNCTION__, rgba);
+ }
}
diff --git a/src/gallium/drivers/softpipe/sp_tile_cache.h b/src/gallium/drivers/softpipe/sp_tile_cache.h
index 031c7c1ea5..4151a47c32 100644
--- a/src/gallium/drivers/softpipe/sp_tile_cache.h
+++ b/src/gallium/drivers/softpipe/sp_tile_cache.h
@@ -86,7 +86,7 @@ struct softpipe_tile_cache
struct softpipe_cached_tile *entries[NUM_ENTRIES];
uint clear_flags[(MAX_WIDTH / TILE_SIZE) * (MAX_HEIGHT / TILE_SIZE) / 32];
float clear_color[4]; /**< for color bufs */
- uint clear_val; /**< for z+stencil, or packed color clear value */
+ uint clear_val; /**< for z+stencil */
boolean depth_stencil; /**< Is the surface a depth/stencil format? */
struct softpipe_cached_tile *tile; /**< scratch tile for clears */
diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c
index b5fae94f78..af99c41901 100644
--- a/src/gallium/drivers/svga/svga_screen.c
+++ b/src/gallium/drivers/svga/svga_screen.c
@@ -231,6 +231,12 @@ static int svga_get_shader_param(struct pipe_screen *screen, unsigned shader, en
return svgascreen->use_ps30 ? 1 : 0;
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 1;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ return svgascreen->use_ps30 ? 1 : 0;
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 0;
}
break;
case PIPE_SHADER_VERTEX:
@@ -263,6 +269,13 @@ static int svga_get_shader_param(struct pipe_screen *screen, unsigned shader, en
return svgascreen->use_vs30 ? 1 : 0;
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 1;
+ case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
+ case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
+ return svgascreen->use_vs30 ? 1 : 0;
+ case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
+ return 0;
+ case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
+ return 1;
default:
break;
}
diff --git a/src/gallium/drivers/sw/SConscript b/src/gallium/drivers/sw/SConscript
deleted file mode 100644
index e9ebf751dd..0000000000
--- a/src/gallium/drivers/sw/SConscript
+++ /dev/null
@@ -1,38 +0,0 @@
-#######################################################################
-# SConscript for swrast convenience library
-#
-# This is a meta-driver which consists of any and all of the software
-# rasterizers into a single driver. A software rasterizer is defined
-# as any driver which takes an sw_winsys pointer as the only argument
-# to create_screen.
-
-Import('*')
-
-env = env.Clone()
-
-# To avoid targets having to check extensively or add drivers on a whim, append
-# all referenced extra drivers to the exported symbol.
-extra = []
-if True:
- env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE')
- env.Prepend(LIBS = [softpipe])
- extra.append(softpipe)
-
-if env['llvm']:
- env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
- env.Tool('udis86')
- env.Prepend(LIBS = [llvmpipe])
- extra.append(llvmpipe)
-
-if 'cell' in env['drivers']:
- env.Append(CPPDEFINES = 'GALLIUM_CELL')
- env.Prepend(LIBS = [cell])
- extra.append(cell)
-
-sw = env.ConvenienceLibrary(
- target = 'sw',
- source = [
- 'sw.c',
- ]
- ) + extra
-Export('sw')
diff --git a/src/gallium/drivers/sw/sw.c b/src/gallium/drivers/sw/sw.c
deleted file mode 100644
index 6b873ecc1b..0000000000
--- a/src/gallium/drivers/sw/sw.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-#include "target-helpers/wrap_screen.h"
-#include "sw_public.h"
-
-
-/* Helper function to choose and instantiate one of the software rasterizers:
- * cell, llvmpipe, softpipe.
- */
-
-#ifdef GALLIUM_SOFTPIPE
-#include "softpipe/sp_public.h"
-#endif
-
-#ifdef GALLIUM_LLVMPIPE
-#include "llvmpipe/lp_public.h"
-#endif
-
-#ifdef GALLIUM_CELL
-#include "cell/ppu/cell_public.h"
-#endif
-
-struct pipe_screen *
-swrast_create_screen(struct sw_winsys *winsys)
-{
- const char *default_driver;
- const char *driver;
- struct pipe_screen *screen = NULL;
-
-#if defined(GALLIUM_CELL)
- default_driver = "cell";
-#elif 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_CELL)
- if (screen == NULL && strcmp(driver, "cell") == 0)
- screen = cell_create_screen( winsys );
-#endif
-
-#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
-
- return screen;
-}
diff --git a/src/gallium/drivers/sw/sw_public.h b/src/gallium/drivers/sw/sw_public.h
deleted file mode 100644
index 7085c5c85a..0000000000
--- a/src/gallium/drivers/sw/sw_public.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef SW_PUBLIC_H
-#define SW_PUBLIC_H
-
-/* A convenience library, primarily to isolate the logic required to
- * figure out which if any software rasterizers have been built and
- * select between them.
- */
-struct sw_winsys;
-
-struct pipe_screen *
-swrast_create_screen(struct sw_winsys *winsys);
-
-#endif
diff --git a/src/gallium/drivers/trace/README b/src/gallium/drivers/trace/README
index cdcd8d2b4b..c210cba032 100644
--- a/src/gallium/drivers/trace/README
+++ b/src/gallium/drivers/trace/README
@@ -7,23 +7,8 @@ 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 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
-
== Tracing ==
For tracing then do
@@ -40,6 +25,7 @@ For remote debugging see:
src/gallium/drivers/rbug/README
+
= Integrating =
You can integrate the trace pipe driver either inside the state tracker or the
@@ -60,5 +46,5 @@ are automatically wrapped by trace_screen.
--
-Jose Fonseca <jrfonseca@tungstengraphics.com>
+Jose Fonseca <jfonseca@vmware.com>
Jakob Bornecrantz <jakob@vmware.com>
diff --git a/src/gallium/drivers/trace/SConscript b/src/gallium/drivers/trace/SConscript
index 06b0c4863a..1384fe33d7 100644
--- a/src/gallium/drivers/trace/SConscript
+++ b/src/gallium/drivers/trace/SConscript
@@ -12,4 +12,6 @@ trace = env.ConvenienceLibrary(
'tr_texture.c',
])
+env.Alias('trace', trace)
+
Export('trace')
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index 53f7b601ad..6cca301ccc 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -483,7 +483,12 @@ enum pipe_shader_cap
PIPE_SHADER_CAP_MAX_TEMPS,
PIPE_SHADER_CAP_MAX_ADDRS,
PIPE_SHADER_CAP_MAX_PREDS,
+ /* boolean caps */
PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED,
+ PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR,
+ PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR,
+ PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR,
+ PIPE_SHADER_CAP_INDIRECT_CONST_ADDR,
};
/**
diff --git a/src/gallium/include/state_tracker/graw.h b/src/gallium/include/state_tracker/graw.h
index 6a99b234aa..217fa31ba1 100644
--- a/src/gallium/include/state_tracker/graw.h
+++ b/src/gallium/include/state_tracker/graw.h
@@ -44,8 +44,9 @@
#include "pipe/p_compiler.h"
#include "pipe/p_format.h"
-struct pipe_screen;
struct pipe_context;
+struct pipe_screen;
+struct pipe_surface;
/* Returns a handle to be used with flush_frontbuffer()/present().
*
@@ -71,4 +72,25 @@ PUBLIC void *graw_parse_vertex_shader( struct pipe_context *pipe,
PUBLIC void *graw_parse_fragment_shader( struct pipe_context *pipe,
const char *text );
+/* Parse a single command-line option, if any. Options include:
+ *
+ * -o <filename>
+ *
+ * If an option has been successfully parsed, argi is updated
+ * to point just after the option and return TRUE.
+ */
+PUBLIC boolean graw_parse_args(int *argi, int argc, char *argv[]);
+
+/* Saves surface contents to a file.
+ *
+ * If filename is NULL, the filename provided with the `-o' option
+ * is used. If the option has not been specified, the surface
+ * will not be saved.
+ *
+ * Returns TRUE if the surface has been saved.
+ */
+PUBLIC boolean graw_save_surface_to_file(struct pipe_context *pipe,
+ struct pipe_surface *surface,
+ const char *filename);
+
#endif
diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h
index 21e2165ed9..565a09614a 100644
--- a/src/gallium/include/state_tracker/st_api.h
+++ b/src/gallium/include/state_tracker/st_api.h
@@ -349,6 +349,12 @@ struct st_context_iface
struct st_context_iface *stsrci, unsigned mask);
/**
+ * Used to implement wglShareLists.
+ */
+ boolean (*share)(struct st_context_iface *stctxi,
+ struct st_context_iface *stsrci);
+
+ /**
* Look up and return the info of a resource for EGLImage.
*
* This function is optional.
@@ -402,6 +408,11 @@ struct st_manager
struct st_api
{
/**
+ * The name of the rendering API. This is informative.
+ */
+ const char *name;
+
+ /**
* The supported rendering API.
*/
enum st_api_type api;
diff --git a/src/gallium/include/state_tracker/swrast_screen_create.h b/src/gallium/include/state_tracker/swrast_screen_create.h
deleted file mode 100644
index a08f83a325..0000000000
--- a/src/gallium/include/state_tracker/swrast_screen_create.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-#include "target-helpers/wrap_screen.h"
-
-struct sw_winsys;
-
-#ifdef GALLIUM_SOFTPIPE
-#include "softpipe/sp_public.h"
-#endif
-
-#ifdef GALLIUM_LLVMPIPE
-#include "llvmpipe/lp_public.h"
-#endif
-
-#ifdef GALLIUM_CELL
-#include "cell/ppu/cell_public.h"
-#endif
-
-/*
- * Helper function to choose and instantiate one of the software rasterizers:
- * cell, llvmpipe, softpipe.
- *
- * This function could be shared, but currently causes headaches for
- * the build systems, particularly scons if we try. Long term, want
- * to avoid having global #defines for things like GALLIUM_LLVMPIPE,
- * GALLIUM_CELL, etc. Scons already eliminates those #defines, so
- * things that are painful for it now are likely to be painful for
- * other build systems in the future.
- */
-
-static INLINE struct pipe_screen *
-swrast_screen_create(struct sw_winsys *winsys)
-{
- const char *default_driver;
- const char *driver;
- struct pipe_screen *screen = NULL;
-
-#if defined(GALLIUM_CELL)
- default_driver = "cell";
-#elif 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_CELL)
- if (screen == NULL && strcmp(driver, "cell") == 0)
- screen = cell_create_screen( winsys );
-#endif
-
-#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
-
- return gallium_wrap_screen( screen );
-}
-
diff --git a/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp b/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp
index e1c34611d1..c246fc5ef7 100644
--- a/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp
+++ b/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp
@@ -1101,6 +1101,7 @@ struct GalliumDXGISwapChain : public GalliumDXGIObject<IDXGISwapChain, GalliumDX
struct pipe_resource* dst;
struct pipe_resource* src;
struct pipe_surface* dst_surface;
+ enum native_attachment att;
void* present_cookie;
hr = parent->backend->BeginPresent(desc.OutputWindow, &present_cookie, &cur_window, &rect, &rgndata, &preserve_aspect_ratio);
@@ -1221,16 +1222,9 @@ struct GalliumDXGISwapChain : public GalliumDXGIObject<IDXGISwapChain, GalliumDX
pipe->flush(pipe, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, 0);
- if(db)
- {
- if(!surface->swap_buffers(surface))
- return DXGI_ERROR_DEVICE_REMOVED;
- }
- else
- {
- if(!surface->flush_frontbuffer(surface))
- return DXGI_ERROR_DEVICE_REMOVED;
- }
+ att = (db) ? NATIVE_ATTACHMENT_BACK_LEFT : NATIVE_ATTACHMENT_FRONT_LEFT;
+ if(!surface->present(surface, att, FALSE, 0))
+ return DXGI_ERROR_DEVICE_REMOVED;
end_present:
parent->backend->EndPresent(desc.OutputWindow, present_cookie);
diff --git a/src/gallium/state_trackers/dri/SConscript b/src/gallium/state_trackers/dri/SConscript
index aba60fb8c5..7702d8e632 100644
--- a/src/gallium/state_trackers/dri/SConscript
+++ b/src/gallium/state_trackers/dri/SConscript
@@ -1,6 +1,6 @@
Import('*')
SConscript([
- 'sw/SConscript',
- 'drm/SConscript',
+ 'sw/SConscript',
+ 'drm/SConscript',
])
diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c
index 770b37037f..3d5d24e692 100644
--- a/src/gallium/state_trackers/dri/common/dri_context.c
+++ b/src/gallium/state_trackers/dri/common/dri_context.c
@@ -178,7 +178,8 @@ dri_make_current(__DRIcontext * cPriv,
read->texture_stamp = driReadPriv->lastStamp - 1;
}
- ctx->stapi->make_current(ctx->stapi, ctx->st, &draw->base, &read->base);
+ ctx->stapi->make_current(ctx->stapi, ctx->st,
+ (draw) ? &draw->base : NULL, (read) ? &read->base : NULL);
return GL_TRUE;
}
diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.h b/src/gallium/state_trackers/dri/common/dri_drawable.h
index 837d398374..2ff6b71329 100644
--- a/src/gallium/state_trackers/dri/common/dri_drawable.h
+++ b/src/gallium/state_trackers/dri/common/dri_drawable.h
@@ -70,7 +70,8 @@ struct dri_drawable
static INLINE struct dri_drawable *
dri_drawable(__DRIdrawable * driDrawPriv)
{
- return (struct dri_drawable *)driDrawPriv->driverPrivate;
+ return (struct dri_drawable *) (driDrawPriv)
+ ? driDrawPriv->driverPrivate : NULL;
}
/***********************************************************************
diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c b/src/gallium/state_trackers/dri/common/dri_screen.c
index 252ad1768d..1302e9bc01 100644
--- a/src/gallium/state_trackers/dri/common/dri_screen.c
+++ b/src/gallium/state_trackers/dri/common/dri_screen.c
@@ -231,6 +231,9 @@ dri_fill_st_visual(struct st_visual *stvis, struct dri_screen *screen,
{
memset(stvis, 0, sizeof(*stvis));
+ if (!mode)
+ return;
+
stvis->samples = mode->samples;
stvis->render_buffer = ST_ATTACHMENT_INVALID;
diff --git a/src/gallium/state_trackers/dri/drm/SConscript b/src/gallium/state_trackers/dri/drm/SConscript
index 2a0af65f9b..b188f76f91 100644
--- a/src/gallium/state_trackers/dri/drm/SConscript
+++ b/src/gallium/state_trackers/dri/drm/SConscript
@@ -3,25 +3,26 @@
Import('*')
-if env['dri']:
+env = env.Clone()
- env = env.Clone()
+env.ParseConfig('pkg-config --cflags --libs libdrm')
- 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',
+])
- env.Append(CPPPATH = [
- '#/src/mapi',
- '#/src/mesa',
- '#/src/gallium/state_trackers/dri/common',
- '#/src/mesa/drivers/dri/common',
- ])
+sources = [
+ 'dri_context.c',
+ 'dri_drawable.c',
+ 'dri_screen.c',
+ 'dri2.c',
+]
- st_dri = env.ConvenienceLibrary(
- target = 'st_dri',
- source = [ 'dri_context.c',
- 'dri_drawable.c',
- 'dri_screen.c',
- 'dri2.c',
- ]
- )
- Export('st_dri')
+st_dri = env.ConvenienceLibrary(
+ target = 'st_dri',
+ source = sources,
+)
+Export('st_dri')
diff --git a/src/gallium/state_trackers/dri/sw/SConscript b/src/gallium/state_trackers/dri/sw/SConscript
index d2eb66668e..d0c3efc6fa 100644
--- a/src/gallium/state_trackers/dri/sw/SConscript
+++ b/src/gallium/state_trackers/dri/sw/SConscript
@@ -3,25 +3,26 @@
Import('*')
-if env['dri']:
+env = env.Clone()
- env = env.Clone()
+env.Append(CPPPATH = [
+ '#/src/mapi',
+ '#/src/mesa',
+ '#/src/gallium/state_trackers/dri/common',
+ '#/src/mesa/drivers/dri/common',
+])
- env.Append(CPPPATH = [
- '#/src/mapi',
- '#/src/mesa',
- '#/src/gallium/state_trackers/dri/common',
- '#/src/mesa/drivers/dri/common',
- ])
+env.Append(CPPDEFINES = [('__NOT_HAVE_DRM_H', '1')])
- env.Append(CPPDEFINES = [('__NOT_HAVE_DRM_H', '1')])
+sources = [
+ 'dri_context.c',
+ 'dri_drawable.c',
+ 'dri_screen.c',
+ 'drisw.c',
+]
- st_drisw = env.ConvenienceLibrary(
- target = 'st_drisw',
- source = [ 'dri_context.c',
- 'dri_drawable.c',
- 'dri_screen.c',
- 'drisw.c',
- ]
- )
- Export('st_drisw')
+st_drisw = env.ConvenienceLibrary(
+ target = 'st_drisw',
+ source = sources,
+)
+Export('st_drisw')
diff --git a/src/gallium/state_trackers/egl/Makefile b/src/gallium/state_trackers/egl/Makefile
index 8dbfc5b8e5..8cfcef968e 100644
--- a/src/gallium/state_trackers/egl/Makefile
+++ b/src/gallium/state_trackers/egl/Makefile
@@ -17,7 +17,7 @@ x11_INCLUDES = \
-I$(TOP)/src/mapi \
-I$(TOP)/src/mesa \
$(X11_CFLAGS) \
- $(shell pkg-config --cflags-only-I libdrm)
+ $(shell pkg-config --cflags-only-I libdrm dri2proto)
x11_SOURCES = $(wildcard x11/*.c) \
$(TOP)/src/glx/dri2.c
diff --git a/src/gallium/state_trackers/egl/SConscript b/src/gallium/state_trackers/egl/SConscript
index efcce25e31..50c7681995 100644
--- a/src/gallium/state_trackers/egl/SConscript
+++ b/src/gallium/state_trackers/egl/SConscript
@@ -3,34 +3,32 @@
Import('*')
-if 'egl' in env['statetrackers']:
+env = env.Clone()
- env = env.Clone()
+env.Append(CPPPATH = [
+ '#/src/egl/main',
+ '#/src/gallium/winsys/sw',
+ '.',
+])
+env.Append(CPPDEFINES = [
+ 'HAVE_GDI_BACKEND',
+])
- env.Append(CPPPATH = [
- '#/src/egl/main',
- '#/src/gallium/winsys/sw',
- '.',
- ])
- env.Append(CPPDEFINES = [
- 'HAVE_GDI_BACKEND',
- ])
+common_sources = [
+ 'common/egl_g3d.c',
+ 'common/egl_g3d_api.c',
+ 'common/egl_g3d_image.c',
+ 'common/egl_g3d_st.c',
+ 'common/egl_g3d_sync.c',
+ 'common/native_helper.c',
+]
- common_sources = [
- 'common/egl_g3d.c',
- 'common/egl_g3d_api.c',
- 'common/egl_g3d_image.c',
- 'common/egl_g3d_st.c',
- 'common/egl_g3d_sync.c',
- 'common/native_helper.c',
- ]
+gdi_sources = common_sources + [
+ 'gdi/native_gdi.c',
+]
- gdi_sources = common_sources + [
- 'gdi/native_gdi.c',
- ]
-
- st_egl_gdi = env.ConvenienceLibrary(
- target = 'st_egl_gdi',
- source = gdi_sources,
- )
- Export('st_egl_gdi')
+st_egl_gdi = env.ConvenienceLibrary(
+ target = 'st_egl_gdi',
+ source = gdi_sources,
+)
+Export('st_egl_gdi')
diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.c b/src/gallium/state_trackers/egl/common/egl_g3d.c
index aaa2ff6bb2..a3750ac56f 100644
--- a/src/gallium/state_trackers/egl/common/egl_g3d.c
+++ b/src/gallium/state_trackers/egl/common/egl_g3d.c
@@ -126,24 +126,24 @@ egl_g3d_add_screens(_EGLDriver *drv, _EGLDisplay *dpy)
continue;
}
- _eglInitScreen(&gscr->base);
-
- for (j = 0; j < num_modes; j++) {
+ _eglInitScreen(&gscr->base, dpy, num_modes);
+ for (j = 0; j < gscr->base.NumModes; j++) {
const struct native_mode *nmode = native_modes[j];
- _EGLMode *mode;
-
- mode = _eglAddNewMode(&gscr->base, nmode->width, nmode->height,
- nmode->refresh_rate, nmode->desc);
- if (!mode)
- break;
- /* gscr->native_modes and gscr->base.Modes should be consistent */
- assert(mode == &gscr->base.Modes[j]);
+ _EGLMode *mode = &gscr->base.Modes[j];
+
+ mode->Width = nmode->width;
+ mode->Height = nmode->height;
+ mode->RefreshRate = nmode->refresh_rate;
+ mode->Optimal = EGL_FALSE;
+ mode->Interlaced = EGL_FALSE;
+ /* no need to strdup() */
+ mode->Name = nmode->desc;
}
gscr->native = nconn;
gscr->native_modes = native_modes;
- _eglAddScreen(dpy, &gscr->base);
+ _eglLinkScreen(&gscr->base);
}
FREE(native_connectors);
@@ -156,7 +156,8 @@ egl_g3d_add_screens(_EGLDriver *drv, _EGLDisplay *dpy)
*/
static EGLBoolean
init_config_attributes(_EGLConfig *conf, const struct native_config *nconf,
- EGLint api_mask, enum pipe_format depth_stencil_format)
+ EGLint api_mask, enum pipe_format depth_stencil_format,
+ EGLBoolean preserve_buffer, EGLint max_swap_interval)
{
uint rgba[4], depth_stencil[2], buffer_size;
EGLint surface_type;
@@ -238,6 +239,11 @@ init_config_attributes(_EGLConfig *conf, const struct native_config *nconf,
conf->TransparentBlueValue = nconf->transparent_rgb_values[2];
}
+ conf->MinSwapInterval = 0;
+ conf->MaxSwapInterval = max_swap_interval;
+ if (preserve_buffer)
+ conf->SurfaceType |= EGL_SWAP_BEHAVIOR_PRESERVED_BIT;
+
return _eglValidateConfig(conf, EGL_FALSE);
}
@@ -247,7 +253,8 @@ init_config_attributes(_EGLConfig *conf, const struct native_config *nconf,
static EGLBoolean
egl_g3d_init_config(_EGLDriver *drv, _EGLDisplay *dpy,
_EGLConfig *conf, const struct native_config *nconf,
- enum pipe_format depth_stencil_format)
+ enum pipe_format depth_stencil_format,
+ int preserve_buffer, int max_swap_interval)
{
struct egl_g3d_config *gconf = egl_g3d_config(conf);
EGLint buffer_mask, api_mask;
@@ -288,7 +295,8 @@ egl_g3d_init_config(_EGLDriver *drv, _EGLDisplay *dpy,
}
valid = init_config_attributes(&gconf->base,
- nconf, api_mask, depth_stencil_format);
+ nconf, api_mask, depth_stencil_format,
+ preserve_buffer, max_swap_interval);
if (!valid) {
_eglLog(_EGL_DEBUG, "skip invalid config 0x%x", nconf->native_visual_id);
return EGL_FALSE;
@@ -349,6 +357,7 @@ egl_g3d_add_configs(_EGLDriver *drv, _EGLDisplay *dpy, EGLint id)
const struct native_config **native_configs;
enum pipe_format depth_stencil_formats[8];
int num_formats, num_configs, i, j;
+ int preserve_buffer, max_swap_interval;
native_configs = gdpy->native->get_configs(gdpy->native, &num_configs);
if (!num_configs) {
@@ -357,6 +366,11 @@ egl_g3d_add_configs(_EGLDriver *drv, _EGLDisplay *dpy, EGLint id)
return id;
}
+ preserve_buffer =
+ gdpy->native->get_param(gdpy->native, NATIVE_PARAM_PRESERVE_BUFFER);
+ max_swap_interval =
+ gdpy->native->get_param(gdpy->native, NATIVE_PARAM_MAX_SWAP_INTERVAL);
+
num_formats = egl_g3d_fill_depth_stencil_formats(dpy,
depth_stencil_formats);
@@ -368,12 +382,13 @@ egl_g3d_add_configs(_EGLDriver *drv, _EGLDisplay *dpy, EGLint id)
if (gconf) {
_eglInitConfig(&gconf->base, dpy, id);
if (!egl_g3d_init_config(drv, dpy, &gconf->base,
- native_configs[i], depth_stencil_formats[j])) {
+ native_configs[i], depth_stencil_formats[j],
+ preserve_buffer, max_swap_interval)) {
FREE(gconf);
break;
}
- _eglAddConfig(dpy, &gconf->base);
+ _eglLinkConfig(&gconf->base);
id++;
}
}
@@ -538,7 +553,8 @@ egl_g3d_initialize(_EGLDriver *drv, _EGLDisplay *dpy,
if (dpy->Platform == _EGL_PLATFORM_DRM) {
dpy->Extensions.MESA_drm_display = EGL_TRUE;
- dpy->Extensions.MESA_drm_image = EGL_TRUE;
+ if (gdpy->native->buffer)
+ dpy->Extensions.MESA_drm_image = EGL_TRUE;
}
if (egl_g3d_add_configs(drv, dpy, 1) == 1) {
diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.h b/src/gallium/state_trackers/egl/common/egl_g3d.h
index be450bbede..72c14f0ac4 100644
--- a/src/gallium/state_trackers/egl/common/egl_g3d.h
+++ b/src/gallium/state_trackers/egl/common/egl_g3d.h
@@ -106,8 +106,6 @@ _EGL_DRIVER_TYPECAST(egl_g3d_image, _EGLImage, obj)
struct egl_g3d_sync {
_EGLSync base;
- int refs;
-
/* the mutex protects only the condvar, not the struct */
pipe_mutex mutex;
pipe_condvar condvar;
diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_api.c b/src/gallium/state_trackers/egl/common/egl_g3d_api.c
index 3bde39737b..fd7dc8f814 100644
--- a/src/gallium/state_trackers/egl/common/egl_g3d_api.c
+++ b/src/gallium/state_trackers/egl/common/egl_g3d_api.c
@@ -97,6 +97,70 @@ egl_g3d_choose_st(_EGLDriver *drv, _EGLContext *ctx,
return stapi;
}
+static int
+egl_g3d_compare_config(const _EGLConfig *conf1, const _EGLConfig *conf2,
+ void *priv_data)
+{
+ const _EGLConfig *criteria = (const _EGLConfig *) priv_data;
+
+ /* EGL_NATIVE_VISUAL_TYPE ignored? */
+ return _eglCompareConfigs(conf1, conf2, criteria, EGL_TRUE);
+}
+
+static EGLBoolean
+egl_g3d_match_config(const _EGLConfig *conf, const _EGLConfig *criteria)
+{
+ if (!_eglMatchConfig(conf, criteria))
+ return EGL_FALSE;
+
+ if (criteria->MatchNativePixmap != EGL_NONE &&
+ criteria->MatchNativePixmap != EGL_DONT_CARE) {
+ struct egl_g3d_display *gdpy = egl_g3d_display(conf->Display);
+ struct egl_g3d_config *gconf = egl_g3d_config(conf);
+ EGLNativePixmapType pix =
+ (EGLNativePixmapType) criteria->MatchNativePixmap;
+
+ if (!gdpy->native->is_pixmap_supported(gdpy->native, pix, gconf->native))
+ return EGL_FALSE;
+ }
+
+ return EGL_TRUE;
+}
+
+static EGLBoolean
+egl_g3d_choose_config(_EGLDriver *drv, _EGLDisplay *dpy, const EGLint *attribs,
+ EGLConfig *configs, EGLint size, EGLint *num_configs)
+{
+ _EGLConfig **tmp_configs, criteria;
+ EGLint tmp_size, i;
+
+ if (!num_configs)
+ return _eglError(EGL_BAD_PARAMETER, "eglChooseConfigs");
+
+ if (!_eglParseConfigAttribList(&criteria, dpy, attribs))
+ return _eglError(EGL_BAD_ATTRIBUTE, "eglChooseConfig");
+
+ tmp_configs = (_EGLConfig **) _eglFilterArray(dpy->Configs, &tmp_size,
+ (_EGLArrayForEach) egl_g3d_match_config, (void *) &criteria);
+ if (!tmp_configs)
+ return _eglError(EGL_BAD_ALLOC, "eglChooseConfig(out of memory)");
+
+ /* perform sorting of configs */
+ if (tmp_configs && tmp_size) {
+ _eglSortConfigs((const _EGLConfig **) tmp_configs, tmp_size,
+ egl_g3d_compare_config, (void *) &criteria);
+ size = MIN2(tmp_size, size);
+ for (i = 0; i < size; i++)
+ configs[i] = _eglGetConfigHandle(tmp_configs[i]);
+ }
+
+ free(tmp_configs);
+
+ *num_configs = size;
+
+ return EGL_TRUE;
+}
+
static _EGLContext *
egl_g3d_create_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf,
_EGLContext *share, const EGLint *attribs)
@@ -160,7 +224,7 @@ destroy_context(_EGLDisplay *dpy, _EGLContext *ctx)
static EGLBoolean
egl_g3d_destroy_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx)
{
- if (!_eglIsContextBound(ctx))
+ if (_eglPutContext(ctx))
destroy_context(dpy, ctx);
return EGL_TRUE;
}
@@ -433,7 +497,7 @@ destroy_surface(_EGLDisplay *dpy, _EGLSurface *surf)
static EGLBoolean
egl_g3d_destroy_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf)
{
- if (!_eglIsSurfaceBound(surf))
+ if (_eglPutSurface(surf))
destroy_surface(dpy, surf);
return EGL_TRUE;
}
@@ -446,13 +510,15 @@ egl_g3d_make_current(_EGLDriver *drv, _EGLDisplay *dpy,
struct egl_g3d_surface *gdraw = egl_g3d_surface(draw);
struct egl_g3d_surface *gread = egl_g3d_surface(read);
struct egl_g3d_context *old_gctx;
+ _EGLContext *old_ctx;
+ _EGLSurface *old_draw, *old_read;
EGLBoolean ok = EGL_TRUE;
- /* bind the new context and return the "orphaned" one */
- if (!_eglBindContext(&ctx, &draw, &read))
+ /* make new bindings */
+ if (!_eglBindContext(ctx, draw, read, &old_ctx, &old_draw, &old_read))
return EGL_FALSE;
- old_gctx = egl_g3d_context(ctx);
+ old_gctx = egl_g3d_context(old_ctx);
if (old_gctx) {
/* flush old context */
old_gctx->stctxi->flush(old_gctx->stctxi,
@@ -481,15 +547,33 @@ egl_g3d_make_current(_EGLDriver *drv, _EGLDisplay *dpy,
}
else if (old_gctx) {
ok = old_gctx->stapi->make_current(old_gctx->stapi, NULL, NULL, NULL);
- old_gctx->base.WindowRenderBuffer = EGL_NONE;
+ if (ok)
+ old_gctx->base.WindowRenderBuffer = EGL_NONE;
}
- if (ctx && !_eglIsContextLinked(ctx))
- destroy_context(dpy, ctx);
- if (draw && !_eglIsSurfaceLinked(draw))
- destroy_surface(dpy, draw);
- if (read && read != draw && !_eglIsSurfaceLinked(read))
- destroy_surface(dpy, read);
+ if (ok) {
+ if (_eglPutContext(old_ctx))
+ destroy_context(dpy, old_ctx);
+ if (_eglPutSurface(old_draw))
+ destroy_surface(dpy, old_draw);
+ if (_eglPutSurface(old_read))
+ destroy_surface(dpy, old_read);
+ }
+ else {
+ /* undo the previous _eglBindContext */
+ _eglBindContext(old_ctx, old_draw, old_read, &ctx, &draw, &read);
+ assert(&gctx->base == ctx &&
+ &gdraw->base == draw &&
+ &gread->base == read);
+
+ _eglPutSurface(draw);
+ _eglPutSurface(read);
+ _eglPutContext(ctx);
+
+ _eglPutSurface(old_draw);
+ _eglPutSurface(old_read);
+ _eglPutContext(old_ctx);
+ }
return ok;
}
@@ -519,7 +603,10 @@ egl_g3d_swap_buffers(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf)
PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, NULL);
}
- return gsurf->native->swap_buffers(gsurf->native);
+ return gsurf->native->present(gsurf->native,
+ NATIVE_ATTACHMENT_BACK_LEFT,
+ gsurf->base.SwapBehavior == EGL_BUFFER_PRESERVED,
+ gsurf->base.SwapInterval);
}
/**
@@ -587,8 +674,7 @@ egl_g3d_copy_buffers(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf,
if (psrc) {
gdpy->pipe->resource_copy_region(gdpy->pipe, ptex, subdst, 0, 0, 0,
gsurf->render_texture, subsrc, 0, 0, 0, ptex->width0, ptex->height0);
-
- nsurf->flush_frontbuffer(nsurf);
+ nsurf->present(nsurf, NATIVE_ATTACHMENT_FRONT_LEFT, FALSE, 0);
}
pipe_resource_reference(&ptex, NULL);
@@ -818,6 +904,8 @@ egl_g3d_init_driver_api(_EGLDriver *drv)
{
_eglInitDriverFallbacks(drv);
+ drv->API.ChooseConfig = egl_g3d_choose_config;
+
drv->API.CreateContext = egl_g3d_create_context;
drv->API.DestroyContext = egl_g3d_destroy_context;
drv->API.CreateWindowSurface = egl_g3d_create_window_surface;
diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_image.c b/src/gallium/state_trackers/egl/common/egl_g3d_image.c
index be9c88e5e4..6a1f8cc697 100644
--- a/src/gallium/state_trackers/egl/common/egl_g3d_image.c
+++ b/src/gallium/state_trackers/egl/common/egl_g3d_image.c
@@ -38,7 +38,7 @@
#include "egl_g3d_api.h"
#include "egl_g3d_image.h"
-/* move this to native display? */
+/* for struct winsys_handle */
#include "state_tracker/drm_driver.h"
/**
@@ -137,13 +137,11 @@ egl_g3d_reference_drm_buffer(_EGLDisplay *dpy, EGLint name,
_EGLImage *img, const EGLint *attribs)
{
struct egl_g3d_display *gdpy = egl_g3d_display(dpy);
- struct pipe_screen *screen = gdpy->native->screen;
struct pipe_resource templ;
struct winsys_handle wsh;
_EGLImageAttribs attrs;
EGLint format;
- /* winsys_handle is in theory platform-specific */
if (dpy->Platform != _EGL_PLATFORM_DRM)
return NULL;
@@ -178,9 +176,10 @@ egl_g3d_reference_drm_buffer(_EGLDisplay *dpy, EGLint name,
memset(&wsh, 0, sizeof(wsh));
wsh.handle = (unsigned) name;
- wsh.stride = attrs.DRMBufferStrideMESA;
+ wsh.stride =
+ attrs.DRMBufferStrideMESA * util_format_get_blocksize(templ.format);
- return screen->resource_from_handle(screen, &templ, &wsh);
+ return gdpy->native->buffer->import_buffer(gdpy->native, &templ, &wsh);
}
#endif /* EGL_MESA_drm_image */
@@ -302,10 +301,8 @@ egl_g3d_export_drm_image(_EGLDriver *drv, _EGLDisplay *dpy, _EGLImage *img,
{
struct egl_g3d_display *gdpy = egl_g3d_display(dpy);
struct egl_g3d_image *gimg = egl_g3d_image(img);
- struct pipe_screen *screen = gdpy->native->screen;
struct winsys_handle wsh;
- /* winsys_handle is in theory platform-specific */
if (dpy->Platform != _EGL_PLATFORM_DRM)
return EGL_FALSE;
@@ -313,9 +310,9 @@ egl_g3d_export_drm_image(_EGLDriver *drv, _EGLDisplay *dpy, _EGLImage *img,
if (name) {
memset(&handle, 0, sizeof(handle));
wsh.type = DRM_API_HANDLE_TYPE_SHARED;
- if (!screen->resource_get_handle(screen, gimg->texture, &wsh)) {
+ if (!gdpy->native->buffer->export_buffer(gdpy->native,
+ gimg->texture, &wsh))
return EGL_FALSE;
- }
*name = wsh.handle;
}
@@ -324,7 +321,8 @@ egl_g3d_export_drm_image(_EGLDriver *drv, _EGLDisplay *dpy, _EGLImage *img,
if (handle || stride) {
memset(&wsh, 0, sizeof(wsh));
wsh.type = DRM_API_HANDLE_TYPE_KMS;
- if (!screen->resource_get_handle(screen, gimg->texture, &wsh))
+ if (!gdpy->native->buffer->export_buffer(gdpy->native,
+ gimg->texture, &wsh))
return EGL_FALSE;
if (handle)
diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_st.c b/src/gallium/state_trackers/egl/common/egl_g3d_st.c
index 0affe632cf..25e2999590 100644
--- a/src/gallium/state_trackers/egl/common/egl_g3d_st.c
+++ b/src/gallium/state_trackers/egl/common/egl_g3d_st.c
@@ -192,7 +192,8 @@ egl_g3d_st_framebuffer_flush_front(struct st_framebuffer_iface *stfbi,
_EGLSurface *surf = (_EGLSurface *) stfbi->st_manager_private;
struct egl_g3d_surface *gsurf = egl_g3d_surface(surf);
- return gsurf->native->flush_frontbuffer(gsurf->native);
+ return gsurf->native->present(gsurf->native,
+ NATIVE_ATTACHMENT_FRONT_LEFT, FALSE, 0);
}
static boolean
diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_sync.c b/src/gallium/state_trackers/egl/common/egl_g3d_sync.c
index ec74e9eb94..4e6d944c15 100644
--- a/src/gallium/state_trackers/egl/common/egl_g3d_sync.c
+++ b/src/gallium/state_trackers/egl/common/egl_g3d_sync.c
@@ -128,13 +128,13 @@ egl_g3d_wait_fence_sync(struct egl_g3d_sync *gsync, EGLTimeKHR timeout)
static INLINE void
egl_g3d_ref_sync(struct egl_g3d_sync *gsync)
{
- p_atomic_inc(&gsync->refs);
+ _eglGetSync(&gsync->base);
}
static INLINE void
egl_g3d_unref_sync(struct egl_g3d_sync *gsync)
{
- if (p_atomic_dec_zero(&gsync->refs)) {
+ if (_eglPutSync(&gsync->base)) {
pipe_condvar_destroy(gsync->condvar);
pipe_mutex_destroy(gsync->mutex);
@@ -194,7 +194,6 @@ egl_g3d_create_sync(_EGLDriver *drv, _EGLDisplay *dpy,
pipe_mutex_init(gsync->mutex);
pipe_condvar_init(gsync->condvar);
- p_atomic_set(&gsync->refs, 1);
return &gsync->base;
}
diff --git a/src/gallium/state_trackers/egl/common/native.h b/src/gallium/state_trackers/egl/common/native.h
index 3c3f57e267..3886ca2056 100644
--- a/src/gallium/state_trackers/egl/common/native.h
+++ b/src/gallium/state_trackers/egl/common/native.h
@@ -34,6 +34,11 @@
#include "pipe/p_state.h"
#include "state_tracker/sw_winsys.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "native_buffer.h"
#include "native_modeset.h"
/**
@@ -54,7 +59,17 @@ enum native_param_type {
* Return TRUE if window/pixmap surfaces use the buffers of the native
* types.
*/
- NATIVE_PARAM_USE_NATIVE_BUFFER
+ NATIVE_PARAM_USE_NATIVE_BUFFER,
+
+ /**
+ * Return TRUE if native_surface::present can preserve the buffer.
+ */
+ NATIVE_PARAM_PRESERVE_BUFFER,
+
+ /**
+ * Return the maximum supported swap interval.
+ */
+ NATIVE_PARAM_MAX_SWAP_INTERVAL
};
struct native_surface {
@@ -66,17 +81,12 @@ struct native_surface {
void (*destroy)(struct native_surface *nsurf);
/**
- * Swap the front and back buffers so that the back buffer is visible. It
- * is no-op if the surface is single-buffered. The contents of the back
- * buffer after swapping may or may not be preserved.
- */
- boolean (*swap_buffers)(struct native_surface *nsurf);
-
- /**
- * Make the front buffer visible. In some native displays, changes to the
- * front buffer might not be visible immediately and require manual flush.
+ * Present the given buffer to the native engine.
*/
- boolean (*flush_frontbuffer)(struct native_surface *nsurf);
+ boolean (*present)(struct native_surface *nsurf,
+ enum native_attachment natt,
+ boolean preserve,
+ uint swap_interval);
/**
* Validate the buffers of the surface. textures, if not NULL, points to an
@@ -181,6 +191,7 @@ struct native_display {
EGLNativePixmapType pix,
const struct native_config *nconf);
+ const struct native_display_buffer *buffer;
const struct native_display_modeset *modeset;
};
@@ -232,4 +243,8 @@ native_get_drm_platform(void);
const struct native_platform *
native_get_fbdev_platform(void);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _NATIVE_H_ */
diff --git a/src/gallium/state_trackers/egl/common/native_buffer.h b/src/gallium/state_trackers/egl/common/native_buffer.h
new file mode 100644
index 0000000000..5c29ab9741
--- /dev/null
+++ b/src/gallium/state_trackers/egl/common/native_buffer.h
@@ -0,0 +1,59 @@
+/*
+ * 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 _NATIVE_BUFFER_H_
+#define _NATIVE_BUFFER_H_
+
+#include "pipe/p_compiler.h"
+
+struct native_display;
+struct pipe_resource;
+
+/**
+ * Buffer interface of the native display. It allows native buffers to be
+ * imported and exported.
+ *
+ * Just like a native window or a native pixmap, a native buffer is another
+ * native type. Its definition depends on the native display.
+ *
+ * For DRM platform, the type of a native buffer is struct winsys_handle.
+ */
+struct native_display_buffer {
+ struct pipe_resource *(*import_buffer)(struct native_display *ndpy,
+ const struct pipe_resource *templ,
+ void *buf);
+
+ /**
+ * The resource must be creatred with PIPE_BIND_SHARED.
+ */
+ boolean (*export_buffer)(struct native_display *ndpy,
+ struct pipe_resource *res,
+ void *buf);
+};
+
+#endif /* _NATIVE_BUFFER_H_ */
diff --git a/src/gallium/state_trackers/egl/common/native_modeset.h b/src/gallium/state_trackers/egl/common/native_modeset.h
index dee757b3a8..2598082d68 100644
--- a/src/gallium/state_trackers/egl/common/native_modeset.h
+++ b/src/gallium/state_trackers/egl/common/native_modeset.h
@@ -39,7 +39,7 @@ struct native_connector {
struct native_mode {
const char *desc;
int width, height;
- int refresh_rate;
+ int refresh_rate; /* HZ * 1000 */
};
/**
diff --git a/src/gallium/state_trackers/egl/drm/modeset.c b/src/gallium/state_trackers/egl/drm/modeset.c
index 06a6077053..0cc06caa2a 100644
--- a/src/gallium/state_trackers/egl/drm/modeset.c
+++ b/src/gallium/state_trackers/egl/drm/modeset.c
@@ -167,6 +167,32 @@ drm_surface_swap_buffers(struct native_surface *nsurf)
return TRUE;
}
+static boolean
+drm_surface_present(struct native_surface *nsurf,
+ enum native_attachment natt,
+ boolean preserve,
+ uint swap_interval)
+{
+ boolean ret;
+
+ if (preserve || swap_interval)
+ return FALSE;
+
+ switch (natt) {
+ case NATIVE_ATTACHMENT_FRONT_LEFT:
+ ret = drm_surface_flush_frontbuffer(nsurf);
+ break;
+ case NATIVE_ATTACHMENT_BACK_LEFT:
+ ret = drm_surface_swap_buffers(nsurf);
+ break;
+ default:
+ ret = FALSE;
+ break;
+ }
+
+ return ret;
+}
+
static void
drm_surface_wait(struct native_surface *nsurf)
{
@@ -225,8 +251,7 @@ drm_display_create_surface(struct native_display *ndpy,
resource_surface_set_size(drmsurf->rsurf, drmsurf->width, drmsurf->height);
drmsurf->base.destroy = drm_surface_destroy;
- drmsurf->base.swap_buffers = drm_surface_swap_buffers;
- drmsurf->base.flush_frontbuffer = drm_surface_flush_frontbuffer;
+ drmsurf->base.present = drm_surface_present;
drmsurf->base.validate = drm_surface_validate;
drmsurf->base.wait = drm_surface_wait;
@@ -469,8 +494,8 @@ drm_display_get_modes(struct native_display *ndpy,
drmmode->base.height = drmmode->mode.vdisplay;
drmmode->base.refresh_rate = drmmode->mode.vrefresh;
/* not all kernels have vrefresh = refresh_rate * 1000 */
- if (drmmode->base.refresh_rate > 1000)
- drmmode->base.refresh_rate = (drmmode->base.refresh_rate + 500) / 1000;
+ if (drmmode->base.refresh_rate < 1000)
+ drmmode->base.refresh_rate *= 1000;
}
nmodes_return = MALLOC(count * sizeof(*nmodes_return));
diff --git a/src/gallium/state_trackers/egl/drm/native_drm.c b/src/gallium/state_trackers/egl/drm/native_drm.c
index f6dc558437..3759c2a26d 100644
--- a/src/gallium/state_trackers/egl/drm/native_drm.c
+++ b/src/gallium/state_trackers/egl/drm/native_drm.c
@@ -103,6 +103,9 @@ drm_display_get_param(struct native_display *ndpy,
int val;
switch (param) {
+ case NATIVE_PARAM_USE_NATIVE_BUFFER:
+ case NATIVE_PARAM_PRESERVE_BUFFER:
+ case NATIVE_PARAM_MAX_SWAP_INTERVAL:
default:
val = 0;
break;
@@ -182,6 +185,29 @@ drm_display_init_screen(struct native_display *ndpy)
return TRUE;
}
+static struct pipe_resource *
+drm_display_import_buffer(struct native_display *ndpy,
+ const struct pipe_resource *templ,
+ void *buf)
+{
+ return ndpy->screen->resource_from_handle(ndpy->screen,
+ templ, (struct winsys_handle *) buf);
+}
+
+static boolean
+drm_display_export_buffer(struct native_display *ndpy,
+ struct pipe_resource *res,
+ void *buf)
+{
+ return ndpy->screen->resource_get_handle(ndpy->screen,
+ res, (struct winsys_handle *) buf);
+}
+
+static struct native_display_buffer drm_display_buffer = {
+ drm_display_import_buffer,
+ drm_display_export_buffer
+};
+
static struct native_display *
drm_create_display(int fd, struct native_event_handler *event_handler,
void *user_data)
@@ -205,6 +231,7 @@ drm_create_display(int fd, struct native_event_handler *event_handler,
drmdpy->base.get_param = drm_display_get_param;
drmdpy->base.get_configs = drm_display_get_configs;
+ drmdpy->base.buffer = &drm_display_buffer;
drm_display_init_modeset(&drmdpy->base);
return &drmdpy->base;
diff --git a/src/gallium/state_trackers/egl/fbdev/native_fbdev.c b/src/gallium/state_trackers/egl/fbdev/native_fbdev.c
index e459402076..1b5ea8bf9d 100644
--- a/src/gallium/state_trackers/egl/fbdev/native_fbdev.c
+++ b/src/gallium/state_trackers/egl/fbdev/native_fbdev.c
@@ -137,6 +137,32 @@ fbdev_surface_swap_buffers(struct native_surface *nsurf)
return ret;
}
+static boolean
+fbdev_surface_present(struct native_surface *nsurf,
+ enum native_attachment natt,
+ boolean preserve,
+ uint swap_interval)
+{
+ boolean ret;
+
+ if (preserve || swap_interval)
+ return FALSE;
+
+ switch (natt) {
+ case NATIVE_ATTACHMENT_FRONT_LEFT:
+ ret = fbdev_surface_flush_frontbuffer(nsurf);
+ break;
+ case NATIVE_ATTACHMENT_BACK_LEFT:
+ ret = fbdev_surface_swap_buffers(nsurf);
+ break;
+ default:
+ ret = FALSE;
+ break;
+ }
+
+ return ret;
+}
+
static void
fbdev_surface_wait(struct native_surface *nsurf)
{
@@ -181,8 +207,7 @@ fbdev_display_create_scanout_surface(struct native_display *ndpy,
resource_surface_set_size(fbsurf->rsurf, fbsurf->width, fbsurf->height);
fbsurf->base.destroy = fbdev_surface_destroy;
- fbsurf->base.swap_buffers = fbdev_surface_swap_buffers;
- fbsurf->base.flush_frontbuffer = fbdev_surface_flush_frontbuffer;
+ fbsurf->base.present = fbdev_surface_present;
fbsurf->base.validate = fbdev_surface_validate;
fbsurf->base.wait = fbdev_surface_wait;
@@ -279,6 +304,9 @@ fbdev_display_get_param(struct native_display *ndpy,
int val;
switch (param) {
+ case NATIVE_PARAM_USE_NATIVE_BUFFER:
+ case NATIVE_PARAM_PRESERVE_BUFFER:
+ case NATIVE_PARAM_MAX_SWAP_INTERVAL:
default:
val = 0;
break;
diff --git a/src/gallium/state_trackers/egl/gdi/native_gdi.c b/src/gallium/state_trackers/egl/gdi/native_gdi.c
index 91701e5b7d..d259e6edc8 100644
--- a/src/gallium/state_trackers/egl/gdi/native_gdi.c
+++ b/src/gallium/state_trackers/egl/gdi/native_gdi.c
@@ -160,6 +160,32 @@ gdi_surface_swap_buffers(struct native_surface *nsurf)
}
static boolean
+gdi_surface_present(struct native_surface *nsurf,
+ enum native_attachment natt,
+ boolean preserve,
+ uint swap_interval)
+{
+ boolean ret;
+
+ if (preserve || swap_interval)
+ return FALSE;
+
+ switch (natt) {
+ case NATIVE_ATTACHMENT_FRONT_LEFT:
+ ret = gdi_surface_flush_frontbuffer(nsurf);
+ break;
+ case NATIVE_ATTACHMENT_BACK_LEFT:
+ ret = gdi_surface_swap_buffers(nsurf);
+ break;
+ default:
+ ret = FALSE;
+ break;
+ }
+
+ return ret;
+}
+
+static boolean
gdi_surface_validate(struct native_surface *nsurf, uint attachment_mask,
unsigned int *seq_num, struct pipe_resource **textures,
int *width, int *height)
@@ -231,8 +257,7 @@ gdi_display_create_window_surface(struct native_display *ndpy,
gdi_surface_update_geometry(&gsurf->base);
gsurf->base.destroy = gdi_surface_destroy;
- gsurf->base.swap_buffers = gdi_surface_swap_buffers;
- gsurf->base.flush_frontbuffer = gdi_surface_flush_frontbuffer;
+ gsurf->base.present = gdi_surface_present;
gsurf->base.validate = gdi_surface_validate;
gsurf->base.wait = gdi_surface_wait;
@@ -321,6 +346,8 @@ gdi_display_get_param(struct native_display *ndpy,
/* private buffers are allocated */
val = FALSE;
break;
+ case NATIVE_PARAM_PRESERVE_BUFFER:
+ case NATIVE_PARAM_MAX_SWAP_INTERVAL:
default:
val = 0;
break;
diff --git a/src/gallium/state_trackers/egl/x11/native_dri2.c b/src/gallium/state_trackers/egl/x11/native_dri2.c
index 1169e273c3..331a7de432 100644
--- a/src/gallium/state_trackers/egl/x11/native_dri2.c
+++ b/src/gallium/state_trackers/egl/x11/native_dri2.c
@@ -338,6 +338,32 @@ dri2_surface_swap_buffers(struct native_surface *nsurf)
}
static boolean
+dri2_surface_present(struct native_surface *nsurf,
+ enum native_attachment natt,
+ boolean preserve,
+ uint swap_interval)
+{
+ boolean ret;
+
+ if (swap_interval)
+ return FALSE;
+
+ switch (natt) {
+ case NATIVE_ATTACHMENT_FRONT_LEFT:
+ ret = dri2_surface_flush_frontbuffer(nsurf);
+ break;
+ case NATIVE_ATTACHMENT_BACK_LEFT:
+ ret = dri2_surface_swap_buffers(nsurf);
+ break;
+ default:
+ ret = FALSE;
+ break;
+ }
+
+ return ret;
+}
+
+static boolean
dri2_surface_validate(struct native_surface *nsurf, uint attachment_mask,
unsigned int *seq_num, struct pipe_resource **textures,
int *width, int *height)
@@ -430,8 +456,7 @@ dri2_display_create_surface(struct native_display *ndpy,
dri2surf->color_format = dri2conf->base.color_format;
dri2surf->base.destroy = dri2_surface_destroy;
- dri2surf->base.swap_buffers = dri2_surface_swap_buffers;
- dri2surf->base.flush_frontbuffer = dri2_surface_flush_frontbuffer;
+ dri2surf->base.present = dri2_surface_present;
dri2surf->base.validate = dri2_surface_validate;
dri2surf->base.wait = dri2_surface_wait;
@@ -630,9 +655,14 @@ dri2_display_get_param(struct native_display *ndpy,
switch (param) {
case NATIVE_PARAM_USE_NATIVE_BUFFER:
- /* DRI2GetBuffers use the native buffers */
+ /* DRI2GetBuffers uses the native buffers */
+ val = TRUE;
+ break;
+ case NATIVE_PARAM_PRESERVE_BUFFER:
+ /* DRI2CopyRegion is used */
val = TRUE;
break;
+ case NATIVE_PARAM_MAX_SWAP_INTERVAL:
default:
val = 0;
break;
diff --git a/src/gallium/state_trackers/egl/x11/native_x11.h b/src/gallium/state_trackers/egl/x11/native_x11.h
index 0b47837e1b..8945117276 100644
--- a/src/gallium/state_trackers/egl/x11/native_x11.h
+++ b/src/gallium/state_trackers/egl/x11/native_x11.h
@@ -27,6 +27,7 @@
#define _NATIVE_X11_H_
#include "common/native.h"
+#include <X11/Xlib.h>
struct native_display *
x11_create_ximage_display(Display *dpy,
diff --git a/src/gallium/state_trackers/egl/x11/native_ximage.c b/src/gallium/state_trackers/egl/x11/native_ximage.c
index 4b32f6e36e..84811fb6e1 100644
--- a/src/gallium/state_trackers/egl/x11/native_ximage.c
+++ b/src/gallium/state_trackers/egl/x11/native_ximage.c
@@ -175,6 +175,32 @@ ximage_surface_swap_buffers(struct native_surface *nsurf)
}
static boolean
+ximage_surface_present(struct native_surface *nsurf,
+ enum native_attachment natt,
+ boolean preserve,
+ uint swap_interval)
+{
+ boolean ret;
+
+ if (preserve || swap_interval)
+ return FALSE;
+
+ switch (natt) {
+ case NATIVE_ATTACHMENT_FRONT_LEFT:
+ ret = ximage_surface_flush_frontbuffer(nsurf);
+ break;
+ case NATIVE_ATTACHMENT_BACK_LEFT:
+ ret = ximage_surface_swap_buffers(nsurf);
+ break;
+ default:
+ ret = FALSE;
+ break;
+ }
+
+ return ret;
+}
+
+static boolean
ximage_surface_validate(struct native_surface *nsurf, uint attachment_mask,
unsigned int *seq_num, struct pipe_resource **textures,
int *width, int *height)
@@ -257,8 +283,7 @@ ximage_display_create_surface(struct native_display *ndpy,
xsurf->xdraw.drawable = xsurf->drawable;
xsurf->base.destroy = ximage_surface_destroy;
- xsurf->base.swap_buffers = ximage_surface_swap_buffers;
- xsurf->base.flush_frontbuffer = ximage_surface_flush_frontbuffer;
+ xsurf->base.present = ximage_surface_present;
xsurf->base.validate = ximage_surface_validate;
xsurf->base.wait = ximage_surface_wait;
@@ -416,6 +441,8 @@ ximage_display_get_param(struct native_display *ndpy,
/* private buffers are allocated */
val = FALSE;
break;
+ case NATIVE_PARAM_PRESERVE_BUFFER:
+ case NATIVE_PARAM_MAX_SWAP_INTERVAL:
default:
val = 0;
break;
diff --git a/src/gallium/state_trackers/glx/xlib/SConscript b/src/gallium/state_trackers/glx/xlib/SConscript
index 9df351a276..9e7ebf3fc9 100644
--- a/src/gallium/state_trackers/glx/xlib/SConscript
+++ b/src/gallium/state_trackers/glx/xlib/SConscript
@@ -3,25 +3,24 @@
Import('*')
-if env['platform'] == 'linux' \
- and 'mesa' in env['statetrackers']:
+env = env.Clone()
- env = env.Clone()
+env.Append(CPPPATH = [
+ '#/src/mapi',
+ '#/src/mesa',
+ '#/src/mesa/main',
+])
- env.Append(CPPPATH = [
- '#/src/mapi',
- '#/src/mesa',
- '#/src/mesa/main',
- ])
+sources = [
+ 'glx_api.c',
+ 'glx_getproc.c',
+ 'glx_usefont.c',
+ 'xm_api.c',
+ 'xm_st.c',
+]
- st_xlib = env.ConvenienceLibrary(
- target = 'st_xlib',
- source = [
- 'glx_api.c',
- 'glx_getproc.c',
- 'glx_usefont.c',
- 'xm_api.c',
- 'xm_st.c',
- ]
- )
- Export('st_xlib')
+st_xlib = env.ConvenienceLibrary(
+ target = 'st_xlib',
+ source = sources,
+)
+Export('st_xlib')
diff --git a/src/gallium/state_trackers/glx/xlib/glx_api.c b/src/gallium/state_trackers/glx/xlib/glx_api.c
index dcd50e19d7..205a7e3c19 100644
--- a/src/gallium/state_trackers/glx/xlib/glx_api.c
+++ b/src/gallium/state_trackers/glx/xlib/glx_api.c
@@ -46,9 +46,6 @@
#define SERVER_MAJOR_VERSION 1
#define SERVER_MINOR_VERSION 4
-/* This is appended onto the glXGetClient/ServerString version strings. */
-#define MESA_GLX_VERSION "Mesa " MESA_VERSION_STRING
-
/* Who implemented this GLX? */
#define VENDOR "Brian Paul"
@@ -1672,7 +1669,7 @@ glXQueryServerString( Display *dpy, int screen, int name )
{
static char version[1000];
sprintf(version, "%d.%d %s",
- SERVER_MAJOR_VERSION, SERVER_MINOR_VERSION, MESA_GLX_VERSION);
+ SERVER_MAJOR_VERSION, SERVER_MINOR_VERSION, xmesa_get_name());
(void) dpy;
(void) screen;
@@ -1697,7 +1694,7 @@ glXGetClientString( Display *dpy, int name )
{
static char version[1000];
sprintf(version, "%d.%d %s", CLIENT_MAJOR_VERSION,
- CLIENT_MINOR_VERSION, MESA_GLX_VERSION);
+ CLIENT_MINOR_VERSION, xmesa_get_name());
(void) dpy;
diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c
index 8332633f01..7c47a25ceb 100644
--- a/src/gallium/state_trackers/glx/xlib/xm_api.c
+++ b/src/gallium/state_trackers/glx/xlib/xm_api.c
@@ -828,6 +828,16 @@ void XMesaDestroyVisual( XMesaVisual v )
/**
+ * Return the informative name.
+ */
+const char *
+xmesa_get_name(void)
+{
+ return stapi->name;
+}
+
+
+/**
* Do per-display initializations.
*/
void
diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.h b/src/gallium/state_trackers/glx/xlib/xm_api.h
index b8ac979edc..4ea42dc375 100644
--- a/src/gallium/state_trackers/glx/xlib/xm_api.h
+++ b/src/gallium/state_trackers/glx/xlib/xm_api.h
@@ -57,7 +57,7 @@ and create a window, you must do the following to use the X/Mesa interface:
#define XMESA_H
-#include "main/core.h" /* for GLvisual and MESA_VERSION_STRING */
+#include "main/core.h" /* for gl_config */
#include "state_tracker/st_api.h"
#include "os/os_thread.h"
@@ -351,6 +351,9 @@ struct xmesa_buffer {
+extern const char *
+xmesa_get_name(void);
+
extern void
xmesa_init(Display *dpy);
diff --git a/src/gallium/state_trackers/python/SConscript b/src/gallium/state_trackers/python/SConscript
index aadeaa0a35..b8371865a6 100644
--- a/src/gallium/state_trackers/python/SConscript
+++ b/src/gallium/state_trackers/python/SConscript
@@ -3,57 +3,64 @@ import os.path
Import('*')
-if 'python' in env['statetrackers']:
-
- env = env.Clone()
-
- env.Tool('python')
-
- env.Tool('swig')
- env.Append(SWIGPATH = ['#src/gallium/include', '#src/gallium/include/pipe'])
- env.Append(SWIGFLAGS = ['-python', '-keyword'])
-
- env.Append(CPPPATH = '.')
-
- if env['platform'] == 'windows':
- env.Append(LIBS = [
- 'opengl32',
- 'gdi32',
- 'user32',
- 'kernel32',
- 'ws2_32',
- ])
- else:
- env.Append(CPPDEFINES = ['GCC_HASCLASSVISIBILITY'])
- env.Append(LIBS = [
- 'GL',
- 'X11',
- ])
-
- sources = [
- 'gallium.i',
- 'st_device.c',
- 'st_sample.c',
- 'st_hardpipe_winsys.c',
- 'st_softpipe_winsys.c',
- ]
-
- env.Prepend(LIBS = [
- ws_null,
- trace,
- gallium,
+if env['toolchain'] == 'crossmingw':
+ # Cross-compilation not supported
+ Return()
+
+if not env.Detect(['swig']):
+ Return()
+
+env = env.Clone()
+
+env.Tool('python')
+
+env.Tool('swig')
+env.Append(SWIGPATH = ['#src/gallium/include', '#src/gallium/include/pipe'])
+env.Append(SWIGFLAGS = ['-python', '-keyword'])
+
+env.Append(CPPPATH = '.')
+
+if env['platform'] == 'windows':
+ env.Append(LIBS = [
+ 'opengl32',
+ 'gdi32',
+ 'user32',
+ 'kernel32',
+ 'ws2_32',
+ ])
+else:
+ env.Append(CPPDEFINES = ['GCC_HASCLASSVISIBILITY'])
+ env.Append(LIBS = [
+ 'GL',
+ 'X11',
])
- if env['llvm']:
- env.Append(CPPDEFINES = ['HAVE_LLVMPIPE'])
- env.Prepend(LIBS = [llvmpipe])
- if True:
- env.Append(CPPDEFINES = ['HAVE_SOFTPIPE'])
- env.Prepend(LIBS = [softpipe])
+sources = [
+ 'gallium.i',
+ 'st_device.c',
+ 'st_sample.c',
+ 'st_hardpipe_winsys.c',
+ 'st_softpipe_winsys.c',
+]
+
+env.Prepend(LIBS = [
+ ws_null,
+ trace,
+ gallium,
+])
+
+if env['llvm']:
+ env.Append(CPPDEFINES = ['HAVE_LLVMPIPE'])
+ env.Prepend(LIBS = [llvmpipe])
+if True:
+ env.Append(CPPDEFINES = ['HAVE_SOFTPIPE'])
+ env.Prepend(LIBS = [softpipe])
+
+env['no_import_lib'] = 1
- env['no_import_lib'] = 1
+pyst = env.SharedLibrary(
+ target = '_gallium',
+ source = sources,
+)
- env.SharedLibrary(
- target = '_gallium',
- source = sources,
- )
+env.Alias('python', pyst)
diff --git a/src/gallium/state_trackers/vega/Makefile b/src/gallium/state_trackers/vega/Makefile
index e0a87151c4..0543fac094 100644
--- a/src/gallium/state_trackers/vega/Makefile
+++ b/src/gallium/state_trackers/vega/Makefile
@@ -9,6 +9,9 @@ LIBRARY_INCLUDES = \
-I$(TOP)/include \
-I$(TOP)/src/mapi
+LIBRARY_DEFINES = \
+ -DVEGA_VERSION_STRING=\"$(MESA_VERSION)\"
+
C_SOURCES = \
api.c \
api_context.c \
diff --git a/src/gallium/state_trackers/vega/SConscript b/src/gallium/state_trackers/vega/SConscript
index 548053eb64..a62783ab18 100644
--- a/src/gallium/state_trackers/vega/SConscript
+++ b/src/gallium/state_trackers/vega/SConscript
@@ -3,49 +3,51 @@
Import('*')
-if 'egl' in env['statetrackers']:
+env = env.Clone()
- env = env.Clone()
+env.Append(CPPPATH = [
+ '#/src/mapi',
+])
+env.Append(CPPDEFINES = [
+ 'VEGA_VERSION_STRING=',
+])
- env.Append(CPPPATH = [
- '#/src/mapi',
- ])
+vega_sources = [
+ 'api.c',
+ 'api_context.c',
+ 'api_filters.c',
+ 'api_images.c',
+ 'api_masks.c',
+ 'api_misc.c',
+ 'api_paint.c',
+ 'api_params.c',
+ 'api_path.c',
+ 'api_text.c',
+ 'api_transform.c',
+ 'vgu.c',
+ 'vg_context.c',
+ 'vg_manager.c',
+ 'vg_state.c',
+ 'vg_translate.c',
+ 'polygon.c',
+ 'bezier.c',
+ 'path.c',
+ 'paint.c',
+ 'arc.c',
+ 'image.c',
+ 'renderer.c',
+ 'stroker.c',
+ 'mask.c',
+ 'shader.c',
+ 'shaders_cache.c',
+]
- vega_sources = [
- 'api.c',
- 'api_context.c',
- 'api_filters.c',
- 'api_images.c',
- 'api_masks.c',
- 'api_misc.c',
- 'api_paint.c',
- 'api_params.c',
- 'api_path.c',
- 'api_text.c',
- 'api_transform.c',
- 'vgu.c',
- 'vg_context.c',
- 'vg_manager.c',
- 'vg_state.c',
- 'vg_translate.c',
- 'polygon.c',
- 'bezier.c',
- 'path.c',
- 'paint.c',
- 'arc.c',
- 'image.c',
- 'renderer.c',
- 'stroker.c',
- 'mask.c',
- 'shader.c',
- 'shaders_cache.c',
- ]
+# vgapi_header must be generated first
+env.Depends(vega_sources, vgapi_header)
- # vgapi_header must be generated first
- env.Depends(vega_sources, vgapi_header)
+st_vega = env.ConvenienceLibrary(
+ target = 'st_vega',
+ source = vega_sources,
+)
- st_vega = env.ConvenienceLibrary(
- target = 'st_vega',
- source = vega_sources,
- )
- Export('st_vega')
+Export('st_vega')
diff --git a/src/gallium/state_trackers/vega/api_context.c b/src/gallium/state_trackers/vega/api_context.c
index 0d04d8e871..d6bbda5e07 100644
--- a/src/gallium/state_trackers/vega/api_context.c
+++ b/src/gallium/state_trackers/vega/api_context.c
@@ -73,7 +73,8 @@ void vegaFinish(void)
pipe = ctx->pipe;
pipe->flush(pipe, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, &fence);
-
- pipe->screen->fence_finish(pipe->screen, fence, 0);
- pipe->screen->fence_reference(pipe->screen, &fence, NULL);
+ if (fence) {
+ pipe->screen->fence_finish(pipe->screen, fence, 0);
+ pipe->screen->fence_reference(pipe->screen, &fence, NULL);
+ }
}
diff --git a/src/gallium/state_trackers/vega/api_filters.c b/src/gallium/state_trackers/vega/api_filters.c
index 8ace985336..fa1e00d1f8 100644
--- a/src/gallium/state_trackers/vega/api_filters.c
+++ b/src/gallium/state_trackers/vega/api_filters.c
@@ -37,10 +37,8 @@
#include "pipe/p_state.h"
#include "util/u_inlines.h"
#include "pipe/p_screen.h"
-#include "pipe/p_shader_tokens.h"
#include "util/u_format.h"
-#include "util/u_memory.h"
#include "util/u_sampler.h"
#include "util/u_string.h"
@@ -798,6 +796,8 @@ void vegaLookupSingle(VGImage dst, VGImage src,
return;
}
+ vg_validate_state(ctx);
+
for (i = 0; i < 256; ++i) {
VGuint rgba = lookupTable[i];
VGubyte blue, green, red, alpha;
diff --git a/src/gallium/state_trackers/vega/api_images.c b/src/gallium/state_trackers/vega/api_images.c
index c36b3d2f3c..e9f038c5f9 100644
--- a/src/gallium/state_trackers/vega/api_images.c
+++ b/src/gallium/state_trackers/vega/api_images.c
@@ -36,9 +36,8 @@
#include "pipe/p_context.h"
#include "pipe/p_screen.h"
#include "util/u_inlines.h"
-#include "util/u_blit.h"
#include "util/u_tile.h"
-#include "util/u_memory.h"
+#include "util/u_math.h"
static INLINE VGboolean supported_image_format(VGImageFormat format)
{
@@ -404,7 +403,6 @@ void vegaReadPixels(void * data, VGint dataStride,
VGfloat temp[VEGA_MAX_IMAGE_WIDTH][4];
VGfloat *df = (VGfloat*)temp;
- VGint y = (fb->height - sy) - 1, yStep = -1;
VGint i;
VGubyte *dst = (VGubyte *)data;
VGint xoffset = 0, yoffset = 0;
@@ -432,18 +430,26 @@ void vegaReadPixels(void * data, VGint dataStride,
}
if (sy < 0) {
yoffset = -sy;
+ yoffset *= dataStride;
height += sy;
sy = 0;
- y = (fb->height - sy) - 1;
- yoffset *= dataStride;
+ }
+
+ if (sx + width > fb->width || sy + height > fb->height) {
+ width = fb->width - sx;
+ height = fb->height - sy;
+ /* nothing to read */
+ if (width <= 0 || height <= 0)
+ return;
}
{
+ VGint y = (fb->height - sy) - 1, yStep = -1;
struct pipe_transfer *transfer;
transfer = pipe_get_transfer(pipe, strb->texture, 0, 0, 0,
PIPE_TRANSFER_READ,
- 0, 0, width, height);
+ 0, 0, sx + width, fb->height - sy);
/* Do a row at a time to flip image data vertically */
for (i = 0; i < height; i++) {
diff --git a/src/gallium/state_trackers/vega/api_masks.c b/src/gallium/state_trackers/vega/api_masks.c
index 94c1ff5375..189390ec2d 100644
--- a/src/gallium/state_trackers/vega/api_masks.c
+++ b/src/gallium/state_trackers/vega/api_masks.c
@@ -27,7 +27,6 @@
#include "VG/openvg.h"
#include "mask.h"
-#include "renderer.h"
#include "api.h"
#include "vg_context.h"
@@ -36,7 +35,6 @@
#include "util/u_pack_color.h"
#include "util/u_draw_quad.h"
-#include "util/u_memory.h"
#define DISABLE_1_1_MASKING 1
diff --git a/src/gallium/state_trackers/vega/api_paint.c b/src/gallium/state_trackers/vega/api_paint.c
index d88341b04f..1411806455 100644
--- a/src/gallium/state_trackers/vega/api_paint.c
+++ b/src/gallium/state_trackers/vega/api_paint.c
@@ -28,7 +28,6 @@
#include "vg_context.h"
#include "paint.h"
-#include "image.h"
#include "api.h"
VGPaint vegaCreatePaint(void)
diff --git a/src/gallium/state_trackers/vega/api_path.c b/src/gallium/state_trackers/vega/api_path.c
index 6c9a2e8d65..f76adddb58 100644
--- a/src/gallium/state_trackers/vega/api_path.c
+++ b/src/gallium/state_trackers/vega/api_path.c
@@ -28,13 +28,9 @@
#include "vg_context.h"
#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 vegaCreatePath(VGint pathFormat,
VGPathDatatype datatype,
diff --git a/src/gallium/state_trackers/vega/api_text.c b/src/gallium/state_trackers/vega/api_text.c
index b35f3be90a..2a62da0a1d 100644
--- a/src/gallium/state_trackers/vega/api_text.c
+++ b/src/gallium/state_trackers/vega/api_text.c
@@ -27,7 +27,6 @@
#include "VG/openvg.h"
#include "vg_context.h"
-#include "api.h"
#include "util/u_memory.h"
diff --git a/src/gallium/state_trackers/vega/image.c b/src/gallium/state_trackers/vega/image.c
index c12dc71b86..28bbe420a2 100644
--- a/src/gallium/state_trackers/vega/image.c
+++ b/src/gallium/state_trackers/vega/image.c
@@ -32,13 +32,11 @@
#include "renderer.h"
#include "util_array.h"
#include "api_consts.h"
-#include "shaders_cache.h"
#include "shader.h"
#include "pipe/p_context.h"
#include "pipe/p_screen.h"
#include "util/u_inlines.h"
-#include "util/u_blit.h"
#include "util/u_format.h"
#include "util/u_tile.h"
#include "util/u_memory.h"
diff --git a/src/gallium/state_trackers/vega/paint.c b/src/gallium/state_trackers/vega/paint.c
index 2c0eb6b23d..c0c8cddabe 100644
--- a/src/gallium/state_trackers/vega/paint.c
+++ b/src/gallium/state_trackers/vega/paint.c
@@ -26,7 +26,6 @@
#include "paint.h"
-#include "shaders_cache.h"
#include "matrix.h"
#include "image.h"
#include "st_inlines.h"
@@ -34,7 +33,6 @@
#include "pipe/p_compiler.h"
#include "util/u_inlines.h"
-#include "util/u_format.h"
#include "util/u_memory.h"
#include "util/u_math.h"
#include "util/u_sampler.h"
diff --git a/src/gallium/state_trackers/vega/polygon.c b/src/gallium/state_trackers/vega/polygon.c
index bc94170eb9..ca8831064c 100644
--- a/src/gallium/state_trackers/vega/polygon.c
+++ b/src/gallium/state_trackers/vega/polygon.c
@@ -29,7 +29,6 @@
#include "matrix.h" /*for floatsEqual*/
#include "vg_context.h"
#include "vg_state.h"
-#include "paint.h"
#include "renderer.h"
#include "util_array.h"
#include "VG/openvg.h"
diff --git a/src/gallium/state_trackers/vega/renderer.c b/src/gallium/state_trackers/vega/renderer.c
index 8c023044c4..c6f5f7a05b 100644
--- a/src/gallium/state_trackers/vega/renderer.c
+++ b/src/gallium/state_trackers/vega/renderer.c
@@ -35,12 +35,9 @@
#include "pipe/p_shader_tokens.h"
#include "util/u_draw_quad.h"
-#include "util/u_format.h"
#include "util/u_simple_shaders.h"
#include "util/u_memory.h"
-#include "util/u_rect.h"
#include "util/u_sampler.h"
-#include "util/u_surface.h"
#include "cso_cache/cso_context.h"
diff --git a/src/gallium/state_trackers/vega/shaders_cache.c b/src/gallium/state_trackers/vega/shaders_cache.c
index 53e6bfcf16..e002a7ed42 100644
--- a/src/gallium/state_trackers/vega/shaders_cache.c
+++ b/src/gallium/state_trackers/vega/shaders_cache.c
@@ -30,8 +30,6 @@
#include "pipe/p_context.h"
#include "pipe/p_defines.h"
-#include "util/u_inlines.h"
-#include "pipe/p_screen.h"
#include "pipe/p_shader_tokens.h"
#include "tgsi/tgsi_build.h"
diff --git a/src/gallium/state_trackers/vega/vg_context.c b/src/gallium/state_trackers/vega/vg_context.c
index 5cb2590602..99e444affd 100644
--- a/src/gallium/state_trackers/vega/vg_context.c
+++ b/src/gallium/state_trackers/vega/vg_context.c
@@ -37,7 +37,6 @@
#include "pipe/p_context.h"
#include "util/u_inlines.h"
-#include "pipe/p_shader_tokens.h"
#include "cso_cache/cso_context.h"
@@ -128,6 +127,7 @@ struct vg_context * vg_create_context(struct pipe_context *pipe,
ctx->mask.sampler.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
ctx->mask.sampler.wrap_t = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
+ ctx->mask.sampler.wrap_r = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
ctx->mask.sampler.min_mip_filter = PIPE_TEX_MIPFILTER_NONE;
ctx->mask.sampler.min_img_filter = PIPE_TEX_FILTER_NEAREST;
ctx->mask.sampler.mag_img_filter = PIPE_TEX_FILTER_NEAREST;
@@ -135,6 +135,7 @@ struct vg_context * vg_create_context(struct pipe_context *pipe,
ctx->blend_sampler.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
ctx->blend_sampler.wrap_t = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
+ ctx->blend_sampler.wrap_r = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
ctx->blend_sampler.min_mip_filter = PIPE_TEX_MIPFILTER_NONE;
ctx->blend_sampler.min_img_filter = PIPE_TEX_FILTER_NEAREST;
ctx->blend_sampler.mag_img_filter = PIPE_TEX_FILTER_NEAREST;
diff --git a/src/gallium/state_trackers/vega/vg_manager.c b/src/gallium/state_trackers/vega/vg_manager.c
index 232deefa16..bb15ec024f 100644
--- a/src/gallium/state_trackers/vega/vg_manager.c
+++ b/src/gallium/state_trackers/vega/vg_manager.c
@@ -535,6 +535,7 @@ vg_api_destroy(struct st_api *stapi)
}
static const struct st_api vg_api = {
+ "Vega " VEGA_VERSION_STRING,
ST_API_OPENVG,
ST_PROFILE_DEFAULT_MASK,
vg_api_destroy,
diff --git a/src/gallium/state_trackers/wgl/SConscript b/src/gallium/state_trackers/wgl/SConscript
index 0f580b859c..ec55f042f9 100644
--- a/src/gallium/state_trackers/wgl/SConscript
+++ b/src/gallium/state_trackers/wgl/SConscript
@@ -2,41 +2,38 @@ import os
Import('*')
-if env['platform'] in ['windows']:
-
- env = env.Clone()
-
- env.Append(CPPPATH = [
- '#src/mapi',
- '#src/mesa',
- '.',
- ])
-
- env.AppendUnique(CPPDEFINES = [
- '_GDI32_', # prevent wgl* being declared __declspec(dllimport)
- 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
- 'WIN32_THREADS', # use Win32 thread API
- 'WIN32_LEAN_AND_MEAN', # http://msdn2.microsoft.com/en-us/library/6dwk3a1z.aspx
- ])
-
- sources = [
- 'stw_context.c',
- 'stw_device.c',
- 'stw_ext_extensionsstring.c',
- 'stw_ext_gallium.c',
- 'stw_ext_pixelformat.c',
- 'stw_ext_swapinterval.c',
- 'stw_framebuffer.c',
- 'stw_getprocaddress.c',
- 'stw_pixelformat.c',
- 'stw_st.c',
- 'stw_tls.c',
- 'stw_wgl.c',
- ]
+env = env.Clone()
- wgl = env.ConvenienceLibrary(
- target ='wgl',
- source = sources,
- )
-
- Export('wgl')
+env.Append(CPPPATH = [
+ '#src/mapi',
+ '#src/mesa',
+ '.',
+])
+
+env.AppendUnique(CPPDEFINES = [
+ '_GDI32_', # prevent wgl* being declared __declspec(dllimport)
+ 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
+ 'WIN32_THREADS', # use Win32 thread API
+ 'WIN32_LEAN_AND_MEAN', # http://msdn2.microsoft.com/en-us/library/6dwk3a1z.aspx
+])
+
+sources = [
+ 'stw_context.c',
+ 'stw_device.c',
+ 'stw_ext_extensionsstring.c',
+ 'stw_ext_gallium.c',
+ 'stw_ext_pixelformat.c',
+ 'stw_ext_swapinterval.c',
+ 'stw_framebuffer.c',
+ 'stw_getprocaddress.c',
+ 'stw_pixelformat.c',
+ 'stw_st.c',
+ 'stw_tls.c',
+ 'stw_wgl.c',
+]
+
+wgl = env.ConvenienceLibrary(
+ target ='wgl',
+ source = sources,
+)
+Export('wgl')
diff --git a/src/gallium/state_trackers/wgl/stw_context.c b/src/gallium/state_trackers/wgl/stw_context.c
index 85878b4673..86c0a28e8d 100644
--- a/src/gallium/state_trackers/wgl/stw_context.c
+++ b/src/gallium/state_trackers/wgl/stw_context.c
@@ -29,12 +29,10 @@
#include "pipe/p_compiler.h"
#include "pipe/p_context.h"
+#include "pipe/p_state.h"
+#include "util/u_memory.h"
#include "state_tracker/st_api.h"
-/* for _mesa_share_state */
-#include "state_tracker/st_context.h"
-#include "main/core.h"
-
#include "stw_icd.h"
#include "stw_device.h"
#include "stw_winsys.h"
@@ -102,13 +100,8 @@ DrvShareLists(
ctx1 = stw_lookup_context_locked( dhglrc1 );
ctx2 = stw_lookup_context_locked( dhglrc2 );
- if (ctx1 && ctx2) {
- struct st_context *st1, *st2;
-
- st1 = (struct st_context *) ctx1->st;
- st2 = (struct st_context *) ctx2->st;
- ret = _mesa_share_state(st2->ctx, st1->ctx);
- }
+ if (ctx1 && ctx2 && ctx2->st->share)
+ ret = ctx2->st->share(ctx2->st, ctx1->st);
pipe_mutex_unlock( stw_dev->ctx_mutex );
diff --git a/src/gallium/state_trackers/xorg/SConscript b/src/gallium/state_trackers/xorg/SConscript
index 0b598dab6e..19315694b7 100644
--- a/src/gallium/state_trackers/xorg/SConscript
+++ b/src/gallium/state_trackers/xorg/SConscript
@@ -3,34 +3,38 @@
Import('*')
-if 'xorg' in env['statetrackers']:
+env = env.Clone()
- env = env.Clone()
+env.Append(CPPPATH = [
+ '#/src/mesa',
+])
- env.Append(CPPPATH = [
- '#/src/mesa',
- ])
+env.ParseConfig('pkg-config --cflags --libs libdrm xorg-server')
- env.ParseConfig('pkg-config --cflags --libs libdrm xorg-server')
+if env['kms']:
+ env.Append(CPPDEFINES = ['HAVE_LIBKMS'])
- conf = env.Configure()
+conf = env.Configure()
- if conf.CheckHeader('X11/extensions/dpmsconst.h'):
- env.Append(CPPDEFINES = [('HAVE_XEXTPROTO_71', '1')])
+if conf.CheckHeader('X11/extensions/dpmsconst.h'):
+ env.Append(CPPDEFINES = [('HAVE_XEXTPROTO_71', '1')])
- conf.Finish()
+conf.Finish()
- st_xorg = env.ConvenienceLibrary(
- target = 'st_xorg',
- source = [ 'xorg_composite.c',
- 'xorg_crtc.c',
- 'xorg_dri2.c',
- 'xorg_driver.c',
- 'xorg_exa.c',
- 'xorg_exa_tgsi.c',
- 'xorg_output.c',
- 'xorg_renderer.c',
- 'xorg_xv.c',
- ]
- )
- Export('st_xorg')
+sources = [
+ 'xorg_composite.c',
+ 'xorg_crtc.c',
+ 'xorg_dri2.c',
+ 'xorg_driver.c',
+ 'xorg_exa.c',
+ 'xorg_exa_tgsi.c',
+ 'xorg_output.c',
+ 'xorg_renderer.c',
+ 'xorg_xv.c',
+]
+
+st_xorg = env.ConvenienceLibrary(
+ target = 'st_xorg',
+ source = sources,
+)
+Export('st_xorg')
diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c
index 1ec772df17..1ee79ae177 100644
--- a/src/gallium/state_trackers/xorg/xorg_driver.c
+++ b/src/gallium/state_trackers/xorg/xorg_driver.c
@@ -447,7 +447,7 @@ drv_pre_init(ScrnInfoPtr pScrn, int flags)
if (!drv_init_resource_management(pScrn)) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Could not init "
- "Gallium3D or libKMS.");
+ "Gallium3D or libKMS.\n");
return FALSE;
}
diff --git a/src/gallium/targets/Makefile.dri b/src/gallium/targets/Makefile.dri
index 59961e982a..3fb4cc6b86 100644
--- a/src/gallium/targets/Makefile.dri
+++ b/src/gallium/targets/Makefile.dri
@@ -80,7 +80,7 @@ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(PIPE_DRIVERS) Makefile \
$(OBJECTS) $(PIPE_DRIVERS) \
-Wl,--start-group $(MESA_MODULES) -Wl,--end-group \
$(DRI_LIB_DEPS) $(DRIVER_EXTRAS)
- $(CXX) $(CFLAGS) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS);
+ $(CXX) $(CFLAGS) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS) $(LDFLAGS);
@rm -f $@.test
mv -f $@.tmp $@
diff --git a/src/gallium/targets/Makefile.xorg b/src/gallium/targets/Makefile.xorg
index 87eedd7136..47040bb14c 100644
--- a/src/gallium/targets/Makefile.xorg
+++ b/src/gallium/targets/Makefile.xorg
@@ -42,7 +42,7 @@ endif
default: depend $(TOP)/$(LIB_DIR)/gallium $(LIBNAME) $(LIBNAME_STAGING)
$(LIBNAME): $(OBJECTS) Makefile ../Makefile.xorg $(LIBS) $(DRIVER_PIPES)
- $(MKLIB) -linker $(CC) -noprefix -o $@ $(LDFLAGS) $(OBJECTS) $(DRIVER_PIPES) $(GALLIUM_AUXILIARIES) $(DRIVER_LINKS)
+ $(MKLIB) -linker '$(CC)' -noprefix -o $@ $(LDFLAGS) $(OBJECTS) $(DRIVER_PIPES) $(GALLIUM_AUXILIARIES) $(DRIVER_LINKS)
depend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(SYMLINKS) $(GENERATED_SOURCES)
rm -f depend
diff --git a/src/gallium/targets/SConscript b/src/gallium/targets/SConscript
deleted file mode 100644
index e447d09361..0000000000
--- a/src/gallium/targets/SConscript
+++ /dev/null
@@ -1,41 +0,0 @@
-import os
-Import('*')
-
-# Compatibility with old build scripts:
-#
-if 'mesa' in env['statetrackers']:
- if 'xlib' in env['winsys'] and 'libgl-xlib' not in env['targets']:
- env['targets'].append('libgl-xlib')
- if 'gdi' in env['winsys'] and 'libgl-gdi' not in env['targets']:
- env['targets'].append('libgl-gdi')
-
-if not 'graw-xlib' in env['targets'] and not 'graw-null' in env['targets'] and not env['msvc']:
- # XXX: disable until MSVC can link correctly
- SConscript('graw-null/SConscript')
-
-
-if env['dri']:
- SConscript([
- 'SConscript.dri'
- ])
-
-if 'xorg' in env['statetrackers']:
- if 'vmware' in env['winsys']:
- SConscript([
- 'xorg-vmwgfx/SConscript',
- ])
-
-if 'egl' in env['statetrackers']:
- SConscript([
- 'egl-gdi/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'))
-
-
-
diff --git a/src/gallium/targets/SConscript.dri b/src/gallium/targets/SConscript.dri
index bc8d179e3d..bc3671a256 100644
--- a/src/gallium/targets/SConscript.dri
+++ b/src/gallium/targets/SConscript.dri
@@ -3,68 +3,71 @@
Import('*')
+if not env['dri']:
+ Return()
+
drienv = env.Clone()
drienv.Replace(CPPPATH = [
- '#src/mesa/drivers/dri/common',
- '#include',
- '#include/GL/internal',
- '#src/mapi',
- '#src/gallium/include',
- '#src/gallium/auxiliary',
- '#src/gallium/drivers',
- '#src/gallium/winsys',
- '#src/mesa',
- '#src/mesa/main',
- '#src/mesa/glapi',
- '#src/mesa/math',
- '#src/mesa/transform',
- '#src/mesa/shader',
- '#src/mesa/swrast',
- '#src/mesa/swrast_setup',
- '#src/egl/main',
- '#src/egl/drivers/dri',
+ '#src/mesa/drivers/dri/common',
+ '#include',
+ '#include/GL/internal',
+ '#src/mapi',
+ '#src/gallium/include',
+ '#src/gallium/auxiliary',
+ '#src/gallium/drivers',
+ '#src/gallium/winsys',
+ '#src/mesa',
+ '#src/mesa/main',
+ '#src/mesa/glapi',
+ '#src/mesa/math',
+ '#src/mesa/transform',
+ '#src/mesa/shader',
+ '#src/mesa/swrast',
+ '#src/mesa/swrast_setup',
+ '#src/egl/main',
+ '#src/egl/drivers/dri',
])
drienv.ParseConfig('pkg-config --cflags --libs libdrm')
dri_common_utils = drienv.SharedObject(
- target = 'utils.o',
- source = '#src/mesa/drivers/dri/common/utils.c'
+ target = 'utils.o',
+ source = '#src/mesa/drivers/dri/common/utils.c'
)
dri_common_xmlconfig = drienv.SharedObject(
- target = 'xmlconfig.o',
- source = '#src/mesa/drivers/dri/common/xmlconfig.c'
+ target = 'xmlconfig.o',
+ source = '#src/mesa/drivers/dri/common/xmlconfig.c'
)
dri_common_vblank = drienv.SharedObject(
- target = 'vblank.o',
- source = '#src/mesa/drivers/dri/common/vblank.c'
+ target = 'vblank.o',
+ source = '#src/mesa/drivers/dri/common/vblank.c'
)
dri_common_dri_util = drienv.SharedObject(
- target = 'dri_util.o',
- source = '#src/mesa/drivers/dri/common/dri_util.c'
+ target = 'dri_util.o',
+ source = '#src/mesa/drivers/dri/common/dri_util.c'
)
dri_common_drisw_util = drienv.SharedObject(
- target = 'drisw_util.o',
- source = '#src/mesa/drivers/dri/common/drisw_util.c'
+ target = 'drisw_util.o',
+ source = '#src/mesa/drivers/dri/common/drisw_util.c'
)
COMMON_DRI_SW_OBJECTS = [
- dri_common_utils,
- dri_common_xmlconfig,
- dri_common_drisw_util,
+ dri_common_utils,
+ dri_common_xmlconfig,
+ dri_common_drisw_util,
]
COMMON_DRI_DRM_OBJECTS = [
- dri_common_utils,
- dri_common_xmlconfig,
- dri_common_vblank,
- dri_common_dri_util,
+ dri_common_utils,
+ dri_common_xmlconfig,
+ dri_common_vblank,
+ dri_common_dri_util,
]
drienv.AppendUnique(LIBS = [
@@ -73,36 +76,7 @@ drienv.AppendUnique(LIBS = [
])
Export([
- 'drienv',
- 'COMMON_DRI_SW_OBJECTS',
- 'COMMON_DRI_DRM_OBJECTS',
-])
-
-SConscript([
- 'dri-swrast/SConscript',
+ 'drienv',
+ 'COMMON_DRI_SW_OBJECTS',
+ 'COMMON_DRI_DRM_OBJECTS',
])
-
-if 'vmware' in env['winsys']:
- SConscript([
- 'dri-vmwgfx/SConscript',
- ])
-
-if 'i915' in env['winsys']:
- SConscript([
- 'dri-i915/SConscript',
- ])
-
-if 'i965' in env['winsys']:
- SConscript([
- 'dri-i965/SConscript',
- ])
-
-if 'radeon' in env['winsys']:
- SConscript([
- 'dri-radeong/SConscript',
- ])
-
-if 'r600' in env['winsys']:
- SConscript([
- 'dri-r600/SConscript',
- ])
diff --git a/src/gallium/targets/dri-i915/SConscript b/src/gallium/targets/dri-i915/SConscript
index 172f92d6b8..ab60013830 100644
--- a/src/gallium/targets/dri-i915/SConscript
+++ b/src/gallium/targets/dri-i915/SConscript
@@ -1,9 +1,5 @@
Import('*')
-if not 'i915' in env['drivers']:
- print 'warning: i915 pipe driver not built skipping i915_dri.so'
- Return()
-
env = drienv.Clone()
env.ParseConfig('pkg-config --cflags --libs libdrm_intel')
@@ -24,8 +20,10 @@ env.Prepend(LIBS = [
COMMON_DRI_DRM_OBJECTS
])
-env.LoadableModule(
+module = env.LoadableModule(
target = 'i915_dri.so',
source = 'target.c',
SHLIBPREFIX = '',
)
+
+env.Alias('dri-i915', module) \ No newline at end of file
diff --git a/src/gallium/targets/dri-i965/SConscript b/src/gallium/targets/dri-i965/SConscript
index 684e3488f7..669f70d6b8 100644
--- a/src/gallium/targets/dri-i965/SConscript
+++ b/src/gallium/targets/dri-i965/SConscript
@@ -1,9 +1,5 @@
Import('*')
-if not 'i965' in env['drivers']:
- print 'warning: i965 pipe driver not built skipping i965_dri.so'
- Return()
-
env = drienv.Clone()
env.ParseConfig('pkg-config --cflags --libs libdrm_intel')
@@ -27,8 +23,10 @@ env.Prepend(LIBS = [
COMMON_DRI_DRM_OBJECTS
])
-env.LoadableModule(
+module = env.LoadableModule(
target = 'i965_dri.so',
source = 'target.c',
SHLIBPREFIX = '',
)
+
+env.Alias('dri-i965', module) \ No newline at end of file
diff --git a/src/gallium/targets/dri-noop/Makefile b/src/gallium/targets/dri-noop/Makefile
new file mode 100644
index 0000000000..21c5f4f9f2
--- /dev/null
+++ b/src/gallium/targets/dri-noop/Makefile
@@ -0,0 +1,34 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = noop_dri.so
+
+DRIVER_DEFINES = \
+ -D__NOT_HAVE_DRM_H
+
+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/rbug/librbug.a \
+ $(TOP)/src/gallium/drivers/noop/libnoop.a
+
+SWRAST_COMMON_GALLIUM_SOURCES = \
+ $(TOP)/src/mesa/drivers/dri/common/utils.c \
+ $(TOP)/src/mesa/drivers/dri/common/drisw_util.c \
+ $(TOP)/src/mesa/drivers/dri/common/xmlconfig.c
+
+C_SOURCES = \
+ swrast_drm_api.c \
+ $(SWRAST_COMMON_GALLIUM_SOURCES) \
+ $(DRIVER_SOURCES)
+
+ASM_SOURCES =
+
+include ../Makefile.dri
+
+INCLUDES += \
+ -I$(TOP)/src/gallium/winsys/sw/dri
+
+symlinks:
diff --git a/src/gallium/targets/dri-noop/SConscript b/src/gallium/targets/dri-noop/SConscript
new file mode 100644
index 0000000000..9c04ee6631
--- /dev/null
+++ b/src/gallium/targets/dri-noop/SConscript
@@ -0,0 +1,31 @@
+Import('*')
+
+env = drienv.Clone()
+
+env.Append(CPPPATH = [
+ '#/src/gallium/winsys/sw/dri',
+])
+
+env.Prepend(LIBS = [
+ st_drisw,
+ ws_dri,
+ noop,
+ mesa,
+ glsl,
+ gallium,
+ COMMON_DRI_SW_OBJECTS
+])
+
+env.Prepend(LIBS = [noop])
+
+swrastg_sources = [
+ 'swrast_drm_api.c'
+]
+
+module = env.LoadableModule(
+ target ='noop_dri.so',
+ source = swrastg_sources,
+ SHLIBPREFIX = '',
+)
+
+env.Alias('dri-noop', module)
diff --git a/src/gallium/targets/dri-noop/swrast_drm_api.c b/src/gallium/targets/dri-noop/swrast_drm_api.c
new file mode 100644
index 0000000000..a99779f183
--- /dev/null
+++ b/src/gallium/targets/dri-noop/swrast_drm_api.c
@@ -0,0 +1,63 @@
+/**************************************************************************
+ *
+ * Copyright 2009, VMware, Inc.
+ * All Rights Reserved.
+ * Copyright 2010 George Sapountzis <gsapountzis@gmail.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation 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_compiler.h"
+#include "util/u_memory.h"
+#include "dri_sw_winsys.h"
+#include "noop/noop_public.h"
+
+#include "target-helpers/inline_debug_helper.h"
+#include "target-helpers/inline_sw_helper.h"
+
+
+struct pipe_screen *
+drisw_create_screen(struct drisw_loader_funcs *lf)
+{
+ struct sw_winsys *winsys = NULL;
+ struct pipe_screen *screen = NULL;
+
+ winsys = dri_create_sw_winsys(lf);
+ if (winsys == NULL)
+ return NULL;
+
+ screen = noop_screen_create(winsys);
+ if (!screen)
+ goto fail;
+
+ screen = debug_screen_wrap(screen);
+
+ return screen;
+
+fail:
+ if (winsys)
+ winsys->destroy(winsys);
+
+ return NULL;
+}
+
+/* vim: set sw=3 ts=8 sts=3 expandtab: */
diff --git a/src/gallium/targets/dri-r300/SConscript b/src/gallium/targets/dri-r300/SConscript
index 33a458f2e6..005b4bbf7f 100644
--- a/src/gallium/targets/dri-r300/SConscript
+++ b/src/gallium/targets/dri-r300/SConscript
@@ -1,9 +1,5 @@
Import('*')
-if not 'r300' in env['drivers']:
- print 'warning: r300 pipe driver not built skipping r300_dri.so'
- Return()
-
env = drienv.Clone()
env.ParseConfig('pkg-config --cflags --libs libdrm_radeon')
@@ -23,8 +19,10 @@ env.Prepend(LIBS = [
COMMON_DRI_DRM_OBJECTS
])
-env.SharedLibrary(
+module = env.SharedLibrary(
target ='r300_dri.so',
source = 'target.c',
SHLIBPREFIX = '',
)
+
+env.Alias('dri-r300', module) \ No newline at end of file
diff --git a/src/gallium/targets/dri-r600/SConscript b/src/gallium/targets/dri-r600/SConscript
index 64d6d2a7f6..aa771db2d1 100644
--- a/src/gallium/targets/dri-r600/SConscript
+++ b/src/gallium/targets/dri-r600/SConscript
@@ -1,9 +1,5 @@
Import('*')
-if not 'r600' in env['drivers']:
- print 'warning: r600 pipe driver not built skipping r600_dri.so'
- Return()
-
env = drienv.Clone()
env.ParseConfig('pkg-config --cflags --libs libdrm_radeon')
@@ -22,8 +18,10 @@ env.Prepend(LIBS = [
COMMON_DRI_DRM_OBJECTS
])
-env.SharedLibrary(
+module = env.SharedLibrary(
target ='r600_dri.so',
source = 'target.c',
SHLIBPREFIX = '',
)
+
+env.Alias('dri-r600', module)
diff --git a/src/gallium/targets/dri-swrast/SConscript b/src/gallium/targets/dri-swrast/SConscript
index d814347119..b67483800e 100644
--- a/src/gallium/targets/dri-swrast/SConscript
+++ b/src/gallium/targets/dri-swrast/SConscript
@@ -27,15 +27,16 @@ if True:
if env['llvm']:
env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
- env.Tool('udis86')
env.Prepend(LIBS = [llvmpipe])
swrastg_sources = [
'swrast_drm_api.c'
]
-env.LoadableModule(
+module = env.LoadableModule(
target ='swrastg_dri.so',
source = swrastg_sources,
SHLIBPREFIX = '',
)
+
+env.Alias('dri-swrast', module)
diff --git a/src/gallium/targets/dri-vmwgfx/Makefile b/src/gallium/targets/dri-vmwgfx/Makefile
index 97c703b373..38f78932e1 100644
--- a/src/gallium/targets/dri-vmwgfx/Makefile
+++ b/src/gallium/targets/dri-vmwgfx/Makefile
@@ -12,6 +12,7 @@ PIPE_DRIVERS = \
C_SOURCES = \
target.c \
+ vmw_powf.c \
$(COMMON_GALLIUM_SOURCES)
DRIVER_DEFINES = \
diff --git a/src/gallium/targets/dri-vmwgfx/SConscript b/src/gallium/targets/dri-vmwgfx/SConscript
index 7afabc7429..7888e4f2c8 100644
--- a/src/gallium/targets/dri-vmwgfx/SConscript
+++ b/src/gallium/targets/dri-vmwgfx/SConscript
@@ -1,9 +1,5 @@
Import('*')
-if not 'svga' in env['drivers']:
- print 'warning: svga pipe driver not built skipping vmwgfx_dri.so'
- Return()
-
env = drienv.Clone()
env.Append(CPPDEFINES = ['GALLIUM_RBUG', 'GALLIUM_TRACE'])
@@ -20,8 +16,10 @@ env.Prepend(LIBS = [
COMMON_DRI_DRM_OBJECTS
])
-env.LoadableModule(
+module = env.LoadableModule(
target = 'vmwgfx_dri.so',
source = 'target.c',
SHLIBPREFIX = '',
)
+
+env.Alias('dri-vmwgfx', module) \ No newline at end of file
diff --git a/src/gallium/targets/dri-vmwgfx/vmw_powf.c b/src/gallium/targets/dri-vmwgfx/vmw_powf.c
new file mode 100644
index 0000000000..ca5e39b389
--- /dev/null
+++ b/src/gallium/targets/dri-vmwgfx/vmw_powf.c
@@ -0,0 +1,17 @@
+/**
+ * Powf may leave an unresolved symbol pointing to a libstdc++.so powf.
+ * However, not all libstdc++.so include this function, so optionally
+ * replace the powf function with calls to expf and logf.
+ */
+
+#ifdef VMW_RESOLVE_POWF
+
+extern float expf(float x);
+extern float logf(float x);
+extern float powf(float x, float y);
+
+float powf(float x, float y) {
+ return expf(logf(x)*y);
+}
+
+#endif
diff --git a/src/gallium/targets/egl-gdi/SConscript b/src/gallium/targets/egl-gdi/SConscript
index 8f8b28ef67..d52eeb70fd 100644
--- a/src/gallium/targets/egl-gdi/SConscript
+++ b/src/gallium/targets/egl-gdi/SConscript
@@ -3,45 +3,53 @@
Import('*')
-if env['platform'] == 'windows':
-
- env = env.Clone()
-
- env.Append(CPPPATH = [
- '#/src/gallium/state_trackers/egl',
- '#/src/gallium/state_trackers/vega',
- '#/src/egl/main',
- '#/src/mesa',
- ])
-
- env.Append(CPPDEFINES = [
- 'FEATURE_VG=1',
- 'GALLIUM_SOFTPIPE',
- 'GALLIUM_RBUG',
- 'GALLIUM_TRACE',
- ])
-
- env.Append(LIBS = [
- 'gdi32',
- 'user32',
- 'kernel32',
- 'ws2_32',
- ])
-
- env['no_import_lib'] = 1
-
- drivers = [softpipe]
- if env['llvm']:
- env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
- drivers += [llvmpipe]
- drivers += [identity, trace, rbug]
-
- apis = [vgapi, st_vega]
-
- egl_gallium = env.SharedLibrary(
- target ='egl_gallium',
- source = 'egl-static.c',
- LIBS = st_egl_gdi + ws_gdi + drivers + apis + gallium + egl + env['LIBS'],
- )
-
- env.InstallSharedLibrary(egl_gallium)
+env = env.Clone()
+
+env.Append(CPPPATH = [
+ '#/src/gallium/state_trackers/egl',
+ '#/src/gallium/state_trackers/vega',
+ '#/src/egl/main',
+ '#/src/mesa',
+])
+
+env.Append(CPPDEFINES = [
+ 'FEATURE_VG=1',
+ 'GALLIUM_SOFTPIPE',
+ 'GALLIUM_RBUG',
+ 'GALLIUM_TRACE',
+])
+
+env.Append(LIBS = [
+ 'gdi32',
+ 'user32',
+ 'kernel32',
+ 'ws2_32',
+])
+
+env.Prepend(LIBS = [
+ st_egl_gdi,
+ ws_gdi,
+ identity,
+ trace,
+ rbug,
+ softpipe,
+ vgapi,
+ st_vega,
+ gallium,
+ egl,
+])
+
+if env['llvm']:
+ env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
+ env.Prepend(LIBS = [llvmpipe])
+
+egl_gallium = env.SharedLibrary(
+ target ='egl_gallium',
+ source = 'egl-static.c',
+)
+
+env['no_import_lib'] = 1
+
+egl_gdi = env.InstallSharedLibrary(egl_gallium)
+
+env.Alias('egl-gdi', egl_gdi)
diff --git a/src/gallium/targets/egl/Makefile b/src/gallium/targets/egl/Makefile
index 38e60dbafb..63e9352144 100644
--- a/src/gallium/targets/egl/Makefile
+++ b/src/gallium/targets/egl/Makefile
@@ -39,7 +39,7 @@ egl_CPPFLAGS := \
-I$(TOP)/src/gallium/state_trackers/egl \
-I$(TOP)/src/egl/main \
-DPIPE_PREFIX=\"$(PIPE_PREFIX)\" -DST_PREFIX=\"$(ST_PREFIX)\"
-egl_SYS := -lm $(DLOPEN_LIBS) -L$(TOP)/$(LIB_DIR) -lEGL
+egl_SYS := -lm $(DLOPEN_LIBS) -lEGL
egl_LIBS := $(TOP)/src/gallium/state_trackers/egl/libegl.a
ifneq ($(findstring x11, $(EGL_PLATFORMS)),)
@@ -54,9 +54,8 @@ egl_LIBS += $(TOP)/src/gallium/winsys/sw/fbdev/libfbdev.a
endif
# EGL_RENDERABLE_TYPE is a compile time attribute
-egl_CPPFLAGS += $(API_DEFINES)
ifneq ($(filter $(GL_LIB), $(EGL_CLIENT_APIS)),)
-egl_CPPFLAGS += -DFEATURE_GL=1
+egl_CPPFLAGS += $(API_DEFINES)
endif
ifneq ($(filter $(GLESv1_CM_LIB), $(EGL_CLIENT_APIS)),)
egl_CPPFLAGS += -DFEATURE_ES1=1
@@ -134,17 +133,17 @@ GL_LIBS := $(TOP)/src/mesa/libmesagallium.a
# OpenGL ES 1.x state tracker
GLESv1_CM_CPPFLAGS := -I$(TOP)/src/mesa
-GLESv1_CM_SYS := $(DRI_LIB_DEPS) -L$(TOP)/$(LIB_DIR) -l$(GLESv1_CM_LIB)
+GLESv1_CM_SYS := $(DRI_LIB_DEPS) -l$(GLESv1_CM_LIB)
GLESv1_CM_LIBS := $(TOP)/src/mesa/libes1gallium.a
# OpenGL ES 2.x state tracker
GLESv2_CPPFLAGS := -I$(TOP)/src/mesa
-GLESv2_SYS := $(DRI_LIB_DEPS) -L$(TOP)/$(LIB_DIR) -l$(GLESv2_LIB)
+GLESv2_SYS := $(DRI_LIB_DEPS) -l$(GLESv2_LIB)
GLESv2_LIBS := $(TOP)/src/mesa/libes2gallium.a
# OpenVG state tracker
OpenVG_CPPFLAGS := -I$(TOP)/src/gallium/state_trackers/vega
-OpenVG_SYS := -lm -L$(TOP)/$(LIB_DIR) -l$(VG_LIB)
+OpenVG_SYS := -lm -l$(VG_LIB)
OpenVG_LIBS := $(TOP)/src/gallium/state_trackers/vega/libvega.a
@@ -181,14 +180,16 @@ OUTPUTS := $(addprefix $(OUTPUT_PATH)/, $(OUTPUTS))
default: $(OUTPUTS)
define mklib
-$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' \
+ -L$(TOP)/$(LIB_DIR) -ldflags '$(LDFLAGS)' \
-install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \
-Wl,--start-group $(common_LIBS) $($(1)_LIBS) -Wl,--end-group \
$(common_SYS) $($(1)_SYS)
endef
define mklib-cxx
-$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CXX)' -ldflags '$(LDFLAGS)' \
+$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CXX)' \
+ -L$(TOP)/$(LIB_DIR) -ldflags '$(LDFLAGS)' \
-cplusplus -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \
-Wl,--start-group $(common_LIBS) $($(1)_LIBS) -Wl,--end-group \
$(common_SYS) $($(1)_SYS)
diff --git a/src/gallium/targets/graw-gdi/SConscript b/src/gallium/targets/graw-gdi/SConscript
new file mode 100644
index 0000000000..352efe95d0
--- /dev/null
+++ b/src/gallium/targets/graw-gdi/SConscript
@@ -0,0 +1,43 @@
+#######################################################################
+# SConscript for graw-gdi
+
+Import('*')
+
+env = env.Clone()
+
+env.Append(CPPPATH = [
+ '#src/gallium/winsys/sw',
+])
+
+env.Prepend(LIBS = [
+ gallium,
+ 'gdi32',
+ 'user32',
+ 'ws2_32',
+])
+
+sources = [
+ 'graw_gdi.c',
+ graw_util,
+]
+
+if True:
+ env.Append(CPPDEFINES = ['GALLIUM_TRACE', 'GALLIUM_RBUG', 'GALLIUM_GALAHAD', 'GALLIUM_SOFTPIPE'])
+ env.Prepend(LIBS = [trace, rbug, galahad, softpipe])
+
+if env['llvm']:
+ env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
+ env.Prepend(LIBS = [llvmpipe])
+
+graw = env.SharedLibrary(
+ target = 'graw',
+ source = sources,
+ LIBS = ws_gdi + env['LIBS'],
+)
+
+if env['platform'] == 'windows':
+ graw = env.FindIxes(graw, 'LIBPREFIX', 'LIBSUFFIX')
+else:
+ graw = env.FindIxes(graw, 'SHLIBPREFIX', 'SHLIBSUFFIX')
+
+env.Alias('graw-gdi', graw)
diff --git a/src/gallium/targets/graw-gdi/graw_gdi.c b/src/gallium/targets/graw-gdi/graw_gdi.c
new file mode 100644
index 0000000000..17ca2a761c
--- /dev/null
+++ b/src/gallium/targets/graw-gdi/graw_gdi.c
@@ -0,0 +1,157 @@
+/**************************************************************************
+ *
+ * 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.
+ *
+ *
+ **************************************************************************/
+
+#include "gdi/gdi_sw_winsys.h"
+#include "pipe/p_screen.h"
+#include "state_tracker/graw.h"
+#include "target-helpers/inline_debug_helper.h"
+#include "target-helpers/inline_sw_helper.h"
+#include <windows.h>
+
+
+static LRESULT CALLBACK
+window_proc(HWND hWnd,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+ switch (uMsg) {
+ case WM_DESTROY:
+ PostQuitMessage(0);
+ break;
+
+ default:
+ return DefWindowProc(hWnd, uMsg, wParam, lParam);
+ }
+
+ return 0;
+}
+
+static struct {
+ void (* draw)(void);
+} graw;
+
+struct pipe_screen *
+graw_create_window_and_screen(int x,
+ int y,
+ unsigned width,
+ unsigned height,
+ enum pipe_format format,
+ void **handle)
+{
+ struct sw_winsys *winsys = NULL;
+ struct pipe_screen *screen = NULL;
+ WNDCLASSEX wc = {sizeof(wc)};
+ UINT style = WS_VISIBLE | WS_TILEDWINDOW;
+ RECT rect;
+ HWND hWnd = NULL;
+ HDC hDC = NULL;
+
+ if (format != PIPE_FORMAT_R8G8B8A8_UNORM)
+ goto fail;
+
+ winsys = gdi_create_sw_winsys();
+ if (winsys == NULL)
+ goto fail;
+
+ screen = sw_screen_create(winsys);
+ if (screen == NULL)
+ goto fail;
+
+ wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
+ wc.lpfnWndProc = window_proc;
+ wc.lpszClassName = "graw-gdi";
+ wc.hInstance = GetModuleHandle(NULL);
+ wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
+ wc.hCursor = LoadCursor(NULL, IDC_ARROW);
+ wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
+ RegisterClassEx(&wc);
+
+ SetRect(&rect, 0, 0, width, height);
+ AdjustWindowRectEx(&rect, style, FALSE, 0);
+
+ hWnd = CreateWindowEx(0,
+ wc.lpszClassName,
+ wc.lpszClassName,
+ style,
+ x,
+ y,
+ rect.right - rect.left,
+ rect.bottom - rect.top,
+ NULL,
+ NULL,
+ wc.hInstance,
+ 0);
+ if (hWnd == NULL)
+ goto fail;
+
+ hDC = GetDC(hWnd);
+ if (hDC == NULL)
+ goto fail;
+
+ *handle = (void *)hDC;
+
+ return debug_screen_wrap(screen);
+
+fail:
+ if (hWnd)
+ DestroyWindow(hWnd);
+
+ if (screen)
+ screen->destroy(screen);
+
+ return NULL;
+}
+
+void
+graw_set_display_func(void (* draw)(void))
+{
+ graw.draw = draw;
+}
+
+void
+graw_main_loop(void)
+{
+ for (;;) {
+ MSG msg;
+
+ while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
+ if (msg.message == WM_QUIT) {
+ return;
+ }
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+
+ if (graw.draw) {
+ graw.draw();
+ }
+
+ Sleep(0);
+ }
+}
diff --git a/src/gallium/targets/graw-null/SConscript b/src/gallium/targets/graw-null/SConscript
index 3416989d8e..ebac1728f0 100644
--- a/src/gallium/targets/graw-null/SConscript
+++ b/src/gallium/targets/graw-null/SConscript
@@ -5,54 +5,28 @@ Import('*')
env = env.Clone()
-env.Prepend(LIBS = [
- ws_null,
- trace,
- rbug,
- identity,
-# gallium,
-])
-
-env.Append(CPPPATH = [
- '#src/gallium/drivers',
-])
+graw_util = env.SharedObject(
+ source = ['graw_util.c'],
+)
-if env['platform'] == 'windows':
- # For trace
- env.Append(LIBS = [
- 'ws2_32',
- ])
+env = env.Clone()
sources = [
'graw_null.c',
- '../graw-xlib/graw_util.c',
+ graw_util,
]
-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',
+ 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')
+Export('graw_util', 'graw')
diff --git a/src/gallium/targets/graw-null/graw_null.c b/src/gallium/targets/graw-null/graw_null.c
index 5939a5acd3..f1fe3872c9 100644
--- a/src/gallium/targets/graw-null/graw_null.c
+++ b/src/gallium/targets/graw-null/graw_null.c
@@ -1,31 +1,5 @@
-#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"
-#include "os/os_time.h"
#include "state_tracker/graw.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>
-
-
-static struct {
- void (*draw)(void);
-} graw;
@@ -37,45 +11,7 @@ graw_create_window_and_screen( int x,
enum pipe_format format,
void **handle)
{
- const char *default_driver;
- const char *driver;
- struct pipe_screen *screen = NULL;
- struct sw_winsys *winsys = NULL;
- static int dummy;
-
-
- /* 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
-
- *handle = &dummy;
-
- /* Inject any wrapping layers we want to here:
- */
- return gallium_wrap_screen( screen );
+ return NULL;
}
@@ -83,13 +19,10 @@ graw_create_window_and_screen( int x,
void
graw_set_display_func( void (*draw)( void ) )
{
- graw.draw = draw;
}
void
graw_main_loop( void )
{
- graw.draw();
- os_time_sleep(100000);
}
diff --git a/src/gallium/targets/graw-null/graw_util.c b/src/gallium/targets/graw-null/graw_util.c
new file mode 100644
index 0000000000..e5cf526d33
--- /dev/null
+++ b/src/gallium/targets/graw-null/graw_util.c
@@ -0,0 +1,92 @@
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_context.h"
+#include "pipe/p_state.h"
+#include "tgsi/tgsi_text.h"
+#include "util/u_debug.h"
+#include "util/u_memory.h"
+#include "state_tracker/graw.h"
+
+
+/* Helper functions. These are the same for all graw implementations.
+ */
+PUBLIC void *
+graw_parse_geometry_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_gs_state(pipe, &state);
+}
+
+PUBLIC 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);
+}
+
+PUBLIC 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);
+}
+
+static char out_filename[256] = "";
+
+PUBLIC boolean
+graw_parse_args(int *argi,
+ int argc,
+ char *argv[])
+{
+ if (strcmp(argv[*argi], "-o") == 0) {
+ if (*argi + 1 >= argc) {
+ return FALSE;
+ }
+
+ strncpy(out_filename, argv[*argi + 1], sizeof(out_filename) - 1);
+ out_filename[sizeof(out_filename) - 1] = '\0';
+ *argi += 2;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+PUBLIC boolean
+graw_save_surface_to_file(struct pipe_context *pipe,
+ struct pipe_surface *surface,
+ const char *filename)
+{
+ if (!filename || !*filename) {
+ filename = out_filename;
+ if (!filename || !*filename) {
+ return FALSE;
+ }
+ }
+
+ /* XXX: Make that working in release builds.
+ */
+ debug_dump_surface_bmp(pipe, filename, surface);
+ return TRUE;
+}
diff --git a/src/gallium/targets/graw-xlib/SConscript b/src/gallium/targets/graw-xlib/SConscript
index 21fce948f4..42cb349cc9 100644
--- a/src/gallium/targets/graw-xlib/SConscript
+++ b/src/gallium/targets/graw-xlib/SConscript
@@ -3,56 +3,40 @@
Import('*')
-if env['platform'] != 'linux':
- Return()
-
env = env.Clone()
-env.Tool('x11')
-
env.Prepend(LIBS = [
ws_xlib,
- trace,
- rbug,
- identity,
-# gallium,
+ gallium,
])
+env.Prepend(LIBS = env['X11_LIBS'])
+
env.Append(CPPPATH = [
'#src/gallium/drivers',
'#src/gallium/include/state_tracker',
])
+env.Append(CPPDEFINES = ['GALLIUM_RBUG', 'GALLIUM_TRACE', 'GALLIUM_GALAHAD'])
sources = [
'graw_xlib.c',
- 'graw_util.c',
+ graw_util
]
-env.Tool('x11')
-
if True:
- env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE')
- env.Prepend(LIBS = [softpipe])
+ env.Append(CPPDEFINES = ['GALLIUM_TRACE', 'GALLIUM_RBUG', 'GALLIUM_GALAHAD', 'GALLIUM_SOFTPIPE'])
+ env.Prepend(LIBS = [trace, rbug, galahad, 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))
-
-graw = env.FindIxes(graw, 'SHLIBPREFIX', 'SHLIBSUFFIX')
+graw = env.InstallSharedLibrary(graw, version=(1, 0))
-Export('graw')
+env.Alias('graw-xlib', graw)
diff --git a/src/gallium/targets/graw-xlib/graw_util.c b/src/gallium/targets/graw-xlib/graw_util.c
deleted file mode 100644
index fc7c9ae6f9..0000000000
--- a/src/gallium/targets/graw-xlib/graw_util.c
+++ /dev/null
@@ -1,50 +0,0 @@
-
-#include "pipe/p_compiler.h"
-#include "pipe/p_context.h"
-#include "pipe/p_state.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_geometry_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_gs_state(pipe, &state);
-}
-
-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);
-}
-
diff --git a/src/gallium/targets/graw-xlib/graw_xlib.c b/src/gallium/targets/graw-xlib/graw_xlib.c
index 8b64a0b819..578086f8f9 100644
--- a/src/gallium/targets/graw-xlib/graw_xlib.c
+++ b/src/gallium/targets/graw-xlib/graw_xlib.c
@@ -3,23 +3,9 @@
#include "pipe/p_screen.h"
#include "util/u_debug.h"
#include "util/u_memory.h"
-#include "target-helpers/wrap_screen.h"
+#include "target-helpers/inline_sw_helper.h"
+#include "target-helpers/inline_debug_helper.h"
#include "state_tracker/xlib_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 "state_tracker/graw.h"
#include <X11/Xlib.h>
@@ -36,8 +22,6 @@ static struct {
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;
@@ -48,35 +32,14 @@ graw_create_screen( void )
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
+ screen = sw_screen_create( winsys );
/* Inject any wrapping layers we want to here:
*/
- return gallium_wrap_screen( screen );
+ return debug_screen_wrap( screen );
}
-
-
-
struct pipe_screen *
graw_create_window_and_screen( int x,
int y,
diff --git a/src/gallium/targets/libgl-gdi/SConscript b/src/gallium/targets/libgl-gdi/SConscript
index 12fe403f62..6fa0851a1a 100644
--- a/src/gallium/targets/libgl-gdi/SConscript
+++ b/src/gallium/targets/libgl-gdi/SConscript
@@ -3,45 +3,45 @@
Import('*')
-if env['platform'] == 'windows':
-
- env = env.Clone()
-
- env.Append(CPPPATH = [
- '#src/gallium/state_trackers/wgl',
- '#src/gallium/winsys/sw',
- ])
-
- env.Append(LIBS = [
- 'gdi32',
- 'user32',
- 'kernel32',
- 'ws2_32',
- talloc,
- ])
-
- sources = []
- drivers = []
-
- if True:
- sources = ['gdi_softpipe_winsys.c']
- drivers = [softpipe]
-
- if env['llvm']:
- sources = ['gdi_llvmpipe_winsys.c']
- drivers = [llvmpipe]
-
- if env['gcc']:
- sources += ['#src/gallium/state_trackers/wgl/opengl32.mingw.def']
- else:
- sources += ['#src/gallium/state_trackers/wgl/opengl32.def']
-
- drivers += [trace, rbug]
-
- env['no_import_lib'] = 1
-
- env.SharedLibrary(
- target ='opengl32',
- source = sources,
- LIBS = wgl + ws_gdi + glapi + mesa + drivers + gallium + glsl + env['LIBS'],
- )
+env = env.Clone()
+
+env.Append(CPPPATH = [
+ '#src/gallium/state_trackers/wgl',
+ '#src/gallium/winsys/sw',
+])
+
+env.Append(LIBS = [
+ 'gdi32',
+ 'user32',
+ 'kernel32',
+ 'ws2_32',
+ talloc,
+])
+
+sources = ['libgl_gdi.c']
+drivers = []
+
+if True:
+ drivers += [softpipe]
+
+if env['llvm']:
+ env.Append(CPPDEFINES = 'HAVE_LLVMPIPE')
+ drivers += [llvmpipe]
+
+if env['gcc']:
+ sources += ['#src/gallium/state_trackers/wgl/opengl32.mingw.def']
+else:
+ sources += ['#src/gallium/state_trackers/wgl/opengl32.def']
+
+drivers += [trace, rbug]
+
+env['no_import_lib'] = 1
+
+opengl32 = env.SharedLibrary(
+ target ='opengl32',
+ source = sources,
+ LIBS = wgl + ws_gdi + glapi + mesa + drivers + gallium + glsl + env['LIBS'],
+)
+
+env.Alias('opengl32', opengl32)
+env.Alias('libgl-gdi', opengl32)
diff --git a/src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c b/src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c
deleted file mode 100644
index 4ac507ff9c..0000000000
--- a/src/gallium/targets/libgl-gdi/gdi_softpipe_winsys.c
+++ /dev/null
@@ -1,124 +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 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.
- *
- *
- **************************************************************************/
-
-/**
- * @file
- * LLVMpipe support.
- *
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-
-#include <windows.h>
-
-#include "stw_winsys.h"
-#include "gdi/gdi_sw_winsys.h"
-#include "softpipe/sp_texture.h"
-#include "softpipe/sp_screen.h"
-#include "softpipe/sp_public.h"
-
-
-static struct pipe_screen *
-gdi_softpipe_screen_create(void)
-{
- static struct sw_winsys *winsys;
- struct pipe_screen *screen;
-
- winsys = gdi_create_sw_winsys();
- if(!winsys)
- goto no_winsys;
-
- screen = softpipe_create_screen(winsys);
- if(!screen)
- goto no_screen;
-
- return screen;
-
-no_screen:
- winsys->destroy(winsys);
-no_winsys:
- return NULL;
-}
-
-
-
-
-static void
-gdi_softpipe_present(struct pipe_screen *screen,
- struct pipe_surface *surface,
- HDC hDC)
-{
- /* This will fail if any interposing layer (trace, debug, etc) has
- * been introduced between the state-trackers and softpipe.
- *
- * Ideally this would get replaced with a call to
- * pipe_screen::flush_frontbuffer().
- *
- * Failing that, it may be necessary for intervening layers to wrap
- * other structs such as this stw_winsys as well...
- */
- gdi_sw_display(softpipe_screen(screen)->winsys,
- softpipe_resource(surface->texture)->dt,
- hDC);
-}
-
-
-static const struct stw_winsys stw_winsys = {
- &gdi_softpipe_screen_create,
- &gdi_softpipe_present,
- NULL, /* get_adapter_luid */
- NULL, /* shared_surface_open */
- NULL, /* shared_surface_close */
- NULL /* compose */
-};
-
-
-BOOL WINAPI
-DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
-{
- switch (fdwReason) {
- case DLL_PROCESS_ATTACH:
- stw_init(&stw_winsys);
- stw_init_thread();
- break;
-
- case DLL_THREAD_ATTACH:
- stw_init_thread();
- break;
-
- case DLL_THREAD_DETACH:
- stw_cleanup_thread();
- break;
-
- case DLL_PROCESS_DETACH:
- stw_cleanup_thread();
- stw_cleanup();
- break;
- }
- return TRUE;
-}
diff --git a/src/gallium/targets/libgl-gdi/gdi_llvmpipe_winsys.c b/src/gallium/targets/libgl-gdi/libgl_gdi.c
index 58c941a03b..1d6e664eab 100644
--- a/src/gallium/targets/libgl-gdi/gdi_llvmpipe_winsys.c
+++ b/src/gallium/targets/libgl-gdi/libgl_gdi.c
@@ -1,6 +1,6 @@
/**************************************************************************
*
- * Copyright 2009 VMware, Inc.
+ * Copyright 2009-2010 VMware, Inc.
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,7 +28,7 @@
/**
* @file
- * LLVMpipe support.
+ * Softpipe/LLVMpipe support.
*
* @author Jose Fonseca <jfonseca@vmware.com>
*/
@@ -36,24 +36,56 @@
#include <windows.h>
+#include "util/u_debug.h"
#include "stw_winsys.h"
#include "gdi/gdi_sw_winsys.h"
+
+#include "softpipe/sp_texture.h"
+#include "softpipe/sp_screen.h"
+#include "softpipe/sp_public.h"
+
+#ifdef HAVE_LLVMPIPE
#include "llvmpipe/lp_texture.h"
#include "llvmpipe/lp_screen.h"
#include "llvmpipe/lp_public.h"
+#endif
+
+
+static boolean use_llvmpipe = FALSE;
static struct pipe_screen *
-gdi_llvmpipe_screen_create(void)
+gdi_screen_create(void)
{
- static struct sw_winsys *winsys;
- struct pipe_screen *screen;
+ const char *default_driver;
+ const char *driver;
+ struct pipe_screen *screen = NULL;
+ struct sw_winsys *winsys;
winsys = gdi_create_sw_winsys();
if(!winsys)
goto no_winsys;
- screen = llvmpipe_create_screen(winsys);
+#ifdef HAVE_LLVMPIPE
+ default_driver = "llvmpipe";
+#else
+ default_driver = "softpipe";
+#endif
+
+ driver = debug_get_option("GALLIUM_DRIVER", default_driver);
+
+#ifdef HAVE_LLVMPIPE
+ if (strcmp(driver, "llvmpipe") == 0) {
+ screen = llvmpipe_create_screen( winsys );
+ }
+#endif
+
+ if (screen == NULL) {
+ screen = softpipe_create_screen( winsys );
+ } else {
+ use_llvmpipe = TRUE;
+ }
+
if(!screen)
goto no_screen;
@@ -66,15 +98,13 @@ no_winsys:
}
-
-
static void
-gdi_llvmpipe_present(struct pipe_screen *screen,
- struct pipe_surface *surface,
- HDC hDC)
+gdi_present(struct pipe_screen *screen,
+ struct pipe_surface *surface,
+ HDC hDC)
{
/* This will fail if any interposing layer (trace, debug, etc) has
- * been introduced between the state-trackers and llvmpipe.
+ * been introduced between the state-trackers and the pipe driver.
*
* Ideally this would get replaced with a call to
* pipe_screen::flush_frontbuffer().
@@ -82,15 +112,28 @@ gdi_llvmpipe_present(struct pipe_screen *screen,
* Failing that, it may be necessary for intervening layers to wrap
* other structs such as this stw_winsys as well...
*/
- gdi_sw_display(llvmpipe_screen(screen)->winsys,
- llvmpipe_resource(surface->texture)->dt,
- hDC);
+
+ struct sw_winsys *winsys = NULL;
+ struct sw_displaytarget *dt = NULL;
+
+#ifdef HAVE_LLVMPIPE
+ if (use_llvmpipe) {
+ winsys = llvmpipe_screen(screen)->winsys;
+ dt = llvmpipe_resource(surface->texture)->dt;
+ gdi_sw_display(winsys, dt, hDC);
+ return;
+ }
+#endif
+
+ winsys = softpipe_screen(screen)->winsys,
+ dt = softpipe_resource(surface->texture)->dt,
+ gdi_sw_display(winsys, dt, hDC);
}
static const struct stw_winsys stw_winsys = {
- &gdi_llvmpipe_screen_create,
- &gdi_llvmpipe_present,
+ &gdi_screen_create,
+ &gdi_present,
NULL, /* get_adapter_luid */
NULL, /* shared_surface_open */
NULL, /* shared_surface_close */
diff --git a/src/gallium/targets/libgl-xlib/Makefile b/src/gallium/targets/libgl-xlib/Makefile
index 076a040a5a..fb537c3155 100644
--- a/src/gallium/targets/libgl-xlib/Makefile
+++ b/src/gallium/targets/libgl-xlib/Makefile
@@ -26,6 +26,8 @@ INCLUDE_DIRS = \
DEFINES += \
-DGALLIUM_SOFTPIPE \
+ -DGALLIUM_RBUG \
+ -DGALLIUM_TRACE \
-DGALLIUM_GALAHAD
#-DGALLIUM_CELL will be defined by the config */
@@ -44,7 +46,7 @@ LIBS = \
$(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/gallium/drivers/galahad/libgalahad.a \
$(TOP)/src/mapi/glapi/libglapi.a \
$(TOP)/src/mesa/libmesagallium.a \
$(GALLIUM_AUXILIARIES) \
diff --git a/src/gallium/targets/libgl-xlib/SConscript b/src/gallium/targets/libgl-xlib/SConscript
index 27b562e1d5..d932736be7 100644
--- a/src/gallium/targets/libgl-xlib/SConscript
+++ b/src/gallium/targets/libgl-xlib/SConscript
@@ -3,17 +3,6 @@
Import('*')
-if env['platform'] != 'linux':
- Return()
-
-if 'mesa' not in env['statetrackers']:
- print 'warning: Mesa state tracker disabled: skipping build of xlib libGL.so'
- Return()
-
-if env['dri']:
- print 'warning: DRI enabled: skipping build of xlib libGL.so'
- Return()
-
env = env.Clone()
env.Append(CPPPATH = [
@@ -25,12 +14,11 @@ env.Append(CPPPATH = [
env.Append(CPPDEFINES = ['USE_XSHM'])
+env.Prepend(LIBS = env['X11_LIBS'])
+
env.Prepend(LIBS = [
st_xlib,
ws_xlib,
- trace,
- rbug,
- identity,
glapi,
mesa,
glsl,
@@ -42,22 +30,16 @@ sources = [
'xlib.c',
]
-env.Tool('x11')
-
if True:
- env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE')
- env.Prepend(LIBS = [softpipe])
-
-if True:
- env.Append(CPPDEFINES = 'GALLIUM_GALAHAD')
- env.Prepend(LIBS = [galahad])
+ env.Append(CPPDEFINES = ['GALLIUM_TRACE', 'GALLIUM_RBUG', 'GALLIUM_GALAHAD', 'GALLIUM_SOFTPIPE'])
+ env.Prepend(LIBS = [trace, rbug, galahad, softpipe])
if env['llvm']:
- env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
- env.Tool('udis86')
+ env.Append(CPPDEFINES = ['GALLIUM_LLVMPIPE'])
env.Prepend(LIBS = [llvmpipe])
-if 'cell' in env['drivers']:
+if False:
+ # TODO: Detect Cell SDK
env.Append(CPPDEFINES = 'GALLIUM_CELL')
env.Prepend(LIBS = [cell])
@@ -67,6 +49,8 @@ libgl = env.SharedLibrary(
source = sources,
)
-if not env['dri']:
- # Only install this libGL.so if DRI not enabled
- env.InstallSharedLibrary(libgl, version=(1, 5))
+if True:
+ # XXX: Only install this libGL.so if DRI not enabled
+ libgl = env.InstallSharedLibrary(libgl, version=(1, 5))
+
+env.Alias('libgl-xlib', libgl)
diff --git a/src/gallium/targets/libgl-xlib/xlib.c b/src/gallium/targets/libgl-xlib/xlib.c
index 2f8cd2d404..9a3e0e07b0 100644
--- a/src/gallium/targets/libgl-xlib/xlib.c
+++ b/src/gallium/targets/libgl-xlib/xlib.c
@@ -32,92 +32,15 @@
*/
#include "pipe/p_compiler.h"
#include "util/u_debug.h"
-#include "target-helpers/wrap_screen.h"
#include "state_tracker/xlib_sw_winsys.h"
#include "xm_public.h"
#include "state_tracker/st_api.h"
#include "state_tracker/st_gl_api.h"
+#include "target-helpers/inline_sw_helper.h"
+#include "target-helpers/inline_debug_helper.h"
-/* Helper function to choose and instantiate one of the software rasterizers:
- * cell, llvmpipe, softpipe.
- *
- * This function could be shared, but currently causes headaches for
- * the build systems, particularly scons if we try. Long term, want
- * to avoid having global #defines for things like GALLIUM_LLVMPIPE,
- * GALLIUM_CELL, etc. Scons already eliminates those #defines, so
- * things that are painful for it now are likely to be painful for
- * other build systems in the future.
- *
- * Copies (full or partial):
- * targets/libgl-xlib
- * targets/graw-xlib
- * targets/dri-swrast
- * winsys/sw/drm
- * drivers/sw
- *
- */
-
-#ifdef GALLIUM_SOFTPIPE
-#include "softpipe/sp_public.h"
-#endif
-
-#ifdef GALLIUM_LLVMPIPE
-#include "llvmpipe/lp_public.h"
-#endif
-
-#ifdef GALLIUM_CELL
-#include "cell/ppu/cell_public.h"
-#endif
-
-#ifdef GALLIUM_GALAHAD
-#include "galahad/glhd_public.h"
-#endif
-
-static struct pipe_screen *
-swrast_create_screen(struct sw_winsys *winsys)
-{
- const char *default_driver;
- const char *driver;
- struct pipe_screen *screen = NULL;
-
-#if defined(GALLIUM_CELL)
- default_driver = "cell";
-#elif 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_CELL)
- if (screen == NULL && strcmp(driver, "cell") == 0)
- screen = cell_create_screen( winsys );
-#endif
-
-#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
-
-#if defined(GALLIUM_GALAHAD)
- if (screen) {
- struct pipe_screen *galahad_screen = galahad_screen_create(screen);
- if (galahad_screen)
- screen = galahad_screen;
- }
-#endif
-
- return screen;
-}
/* Helper function to build a subset of a driver stack consisting of
* one of the software rasterizers (cell, llvmpipe, softpipe) and the
@@ -138,13 +61,13 @@ swrast_xlib_create_screen( Display *display )
/* Create a software rasterizer on top of that winsys:
*/
- screen = swrast_create_screen( winsys );
+ screen = sw_screen_create( winsys );
if (screen == NULL)
goto fail;
/* Inject any wrapping layers we want to here:
*/
- return gallium_wrap_screen( screen );
+ return debug_screen_wrap( screen );
fail:
if (winsys)
@@ -195,7 +118,6 @@ extern void (*linker_foo(const unsigned char *procName))()
#include "GL/gl.h"
#include "glapi/glapi.h"
#include "glapi/glapitable.h"
-#include "glapi/glapidispatch.h"
#if defined(USE_MGL_NAMESPACE)
#define NAME(func) mgl##func
@@ -204,10 +126,10 @@ extern void (*linker_foo(const unsigned char *procName))()
#endif
#define DISPATCH(FUNC, ARGS, MESSAGE) \
- CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+ GET_DISPATCH()->FUNC ARGS
#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
- return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+ return GET_DISPATCH()->FUNC ARGS
/* skip normal ones */
#define _GLAPI_SKIP_NORMAL_ENTRY_POINTS
diff --git a/src/gallium/targets/xorg-vmwgfx/SConscript b/src/gallium/targets/xorg-vmwgfx/SConscript
index 43b2c74f9c..099d49cf1b 100644
--- a/src/gallium/targets/xorg-vmwgfx/SConscript
+++ b/src/gallium/targets/xorg-vmwgfx/SConscript
@@ -2,62 +2,62 @@ import os.path
Import('*')
-if not 'svga' in env['drivers']:
- print 'warning: svga pipe driver not built skipping vmwgfx_drv.so'
- Return()
-
-if env['platform'] == 'linux':
-
- env = env.Clone()
-
- env.ParseConfig('pkg-config --cflags --libs libdrm xorg-server')
-
- env.Prepend(CPPPATH = [
- '#/include',
- '#/src/gallium',
- '#/src/mesa',
- '#/src/gallium/drivers/svga',
- '#/src/gallium/drivers/svga/include',
- ])
-
- env.Append(CPPDEFINES = [
- ])
-
- if env['gcc']:
- env.Append(CPPDEFINES = [
- 'HAVE_STDINT_H',
- 'HAVE_SYS_TYPES_H',
- ])
-
- env.Append(CFLAGS = [
- '-std=gnu99',
- '-D_FILE_OFFSET_BITS=64',
- ])
-
- env.Prepend(LIBPATH = [
- ])
-
- env.Prepend(LIBS = [
- trace,
- rbug,
- st_xorg,
- svgadrm,
- svga,
- gallium,
- ])
-
- sources = [
- 'vmw_ioctl.c',
- 'vmw_ctrl.c',
- 'vmw_screen.c',
- 'vmw_video.c',
- 'vmw_xorg.c',
- ]
-
- # TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions
- env.LoadableModule(
- target ='vmwgfx_drv.so',
- source = sources,
- LIBS = env['LIBS'],
- SHLIBPREFIX = '',
- )
+env = env.Clone()
+
+env.ParseConfig('pkg-config --cflags --libs libdrm xorg-server')
+
+if env['kms']:
+ env.ParseConfig('pkg-config --cflags --libs libkms')
+
+env.Prepend(CPPPATH = [
+ '#/include',
+ '#/src/gallium',
+ '#/src/mesa',
+ '#/src/gallium/drivers/svga',
+ '#/src/gallium/drivers/svga/include',
+])
+
+env.Append(CPPDEFINES = [
+])
+
+if env['gcc']:
+ env.Append(CPPDEFINES = [
+ 'HAVE_STDINT_H',
+ 'HAVE_SYS_TYPES_H',
+ ])
+
+env.Append(CFLAGS = [
+ '-std=gnu99',
+ '-D_FILE_OFFSET_BITS=64',
+])
+
+env.Prepend(LIBPATH = [
+])
+
+env.Prepend(LIBS = [
+ trace,
+ rbug,
+ st_xorg,
+ svgadrm,
+ svga,
+ gallium,
+])
+
+sources = [
+ 'vmw_ioctl.c',
+ 'vmw_ctrl.c',
+ 'vmw_screen.c',
+ 'vmw_target.c',
+ 'vmw_video.c',
+ 'vmw_xorg.c',
+]
+
+# TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions
+module = env.LoadableModule(
+ target ='vmwgfx_drv.so',
+ source = sources,
+ LIBS = env['LIBS'],
+ SHLIBPREFIX = '',
+)
+
+env.Alias('xorg-vmwgfx', module)
diff --git a/src/gallium/tests/graw/SConscript b/src/gallium/tests/graw/SConscript
index ffde61965b..3341b88498 100644
--- a/src/gallium/tests/graw/SConscript
+++ b/src/gallium/tests/graw/SConscript
@@ -1,20 +1,17 @@
Import('*')
-try:
- graw
-except NameError:
- print 'warning: graw library not avaiable: skipping build of graw test'
- Return()
-
env = env.Clone()
+env.Prepend(LIBS = [gallium])
+
env.Prepend(LIBPATH = [graw.dir])
-env.Prepend(LIBS = ['graw'] + gallium)
+env.Prepend(LIBS = ['graw'])
+
-if platform in ('freebsd8', 'sunos5'):
+if env['platform'] in ('freebsd8', 'sunos5'):
env.Append(LIBS = ['m'])
-if platform == 'freebsd8':
+if env['platform'] == 'freebsd8':
env.Append(LIBS = ['pthread'])
progs = [
@@ -29,9 +26,10 @@ progs = [
'tri-gs',
]
-for prog in progs:
- env.Program(
- target = prog,
- source = prog + '.c',
+for name in progs:
+ program = env.Program(
+ target = name,
+ source = name + '.c',
)
-
+ #env.Depends(program, graw)
+ env.Alias('graw-progs', program)
diff --git a/src/gallium/tests/graw/clear.c b/src/gallium/tests/graw/clear.c
index ce52a93aa1..ee4581ef1e 100644
--- a/src/gallium/tests/graw/clear.c
+++ b/src/gallium/tests/graw/clear.c
@@ -8,8 +8,6 @@
#include "pipe/p_state.h"
#include "pipe/p_defines.h"
-#include "util/u_debug.h" /* debug_dump_surface_bmp() */
-
enum pipe_format formats[] = {
PIPE_FORMAT_R8G8B8A8_UNORM,
PIPE_FORMAT_B8G8R8A8_UNORM,
@@ -31,17 +29,7 @@ static void draw( void )
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
+ graw_save_surface_to_file(ctx, surf, NULL);
screen->flush_frontbuffer(screen, surf, window);
}
@@ -103,10 +91,21 @@ static void init( void )
ctx->set_framebuffer_state(ctx, &fb);
}
+static void args(int argc, char *argv[])
+{
+ int i;
+ for (i = 1; i < argc;) {
+ if (graw_parse_args(&i, argc, argv)) {
+ continue;
+ }
+ exit(1);
+ }
+}
int main( int argc, char *argv[] )
{
+ args(argc, argv);
init();
graw_set_display_func( draw );
diff --git a/src/gallium/tests/graw/fs-test.c b/src/gallium/tests/graw/fs-test.c
index 53fbb744d8..19af83fda8 100644
--- a/src/gallium/tests/graw/fs-test.c
+++ b/src/gallium/tests/graw/fs-test.c
@@ -10,7 +10,6 @@
#include "pipe/p_defines.h"
#include <stdio.h> /* for fread(), etc */
-#include "util/u_debug.h" /* debug_dump_surface_bmp() */
#include "util/u_inlines.h"
#include "util/u_memory.h" /* Offset() */
#include "util/u_draw_quad.h"
@@ -279,17 +278,7 @@ static void draw( void )
util_draw_arrays(ctx, PIPE_PRIM_TRIANGLES, 0, 3);
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
+ graw_save_surface_to_file(ctx, surf, NULL);
screen->flush_frontbuffer(screen, surf, window);
}
@@ -526,16 +515,21 @@ static void args(int argc, char *argv[])
{
int i;
- for (i = 1; i < argc; i++) {
+ for (i = 1; i < argc;) {
+ if (graw_parse_args(&i, argc, argv)) {
+ continue;
+ }
if (strcmp(argv[i], "-fps") == 0) {
show_fps = 1;
+ i++;
}
else if (i == argc - 1) {
- filename = argv[i];
+ filename = argv[i];
+ i++;
}
else {
- usage(argv[0]);
- exit(1);
+ usage(argv[0]);
+ exit(1);
}
}
diff --git a/src/gallium/tests/graw/gs-test.c b/src/gallium/tests/graw/gs-test.c
index 62714900bd..ef29f13498 100644
--- a/src/gallium/tests/graw/gs-test.c
+++ b/src/gallium/tests/graw/gs-test.c
@@ -10,7 +10,6 @@
#include "pipe/p_defines.h"
#include <stdio.h> /* for fread(), etc */
-#include "util/u_debug.h" /* debug_dump_surface_bmp() */
#include "util/u_inlines.h"
#include "util/u_memory.h" /* Offset() */
#include "util/u_draw_quad.h"
@@ -343,17 +342,7 @@ static void draw( void )
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
+ graw_save_surface_to_file(ctx, surf, NULL);
screen->flush_frontbuffer(screen, surf, window);
}
@@ -591,19 +580,25 @@ static void args(int argc, char *argv[])
{
int i;
- for (i = 1; i < argc; i++) {
+ for (i = 1; i < argc;) {
+ if (graw_parse_args(&i, argc, argv)) {
+ continue;
+ }
if (strcmp(argv[i], "-fps") == 0) {
show_fps = 1;
+ i++;
}
else if (strcmp(argv[i], "-strip") == 0) {
draw_strip = 1;
+ i++;
}
else if (i == argc - 1) {
- filename = argv[i];
+ filename = argv[i];
+ i++;
}
else {
- usage(argv[0]);
- exit(1);
+ usage(argv[0]);
+ exit(1);
}
}
diff --git a/src/gallium/tests/graw/quad-tex.c b/src/gallium/tests/graw/quad-tex.c
index c50ef12ab5..35eade939e 100644
--- a/src/gallium/tests/graw/quad-tex.c
+++ b/src/gallium/tests/graw/quad-tex.c
@@ -9,7 +9,6 @@
#include "pipe/p_state.h"
#include "pipe/p_defines.h"
-#include "util/u_debug.h" /* debug_dump_surface_bmp() */
#include "util/u_inlines.h"
#include "util/u_memory.h" /* Offset() */
#include "util/u_draw_quad.h"
@@ -150,17 +149,7 @@ static void draw( void )
util_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
+ graw_save_surface_to_file(ctx, surf, NULL);
screen->flush_frontbuffer(screen, surf, window);
}
@@ -392,9 +381,21 @@ static void init( void )
set_fragment_shader();
}
+static void args(int argc, char *argv[])
+{
+ int i;
+
+ for (i = 1; i < argc;) {
+ if (graw_parse_args(&i, argc, argv)) {
+ continue;
+ }
+ exit(1);
+ }
+}
int main( int argc, char *argv[] )
{
+ args(argc, argv);
init();
graw_set_display_func( draw );
diff --git a/src/gallium/tests/graw/shader-leak.c b/src/gallium/tests/graw/shader-leak.c
index ec30871e82..0a6c362d17 100644
--- a/src/gallium/tests/graw/shader-leak.c
+++ b/src/gallium/tests/graw/shader-leak.c
@@ -9,7 +9,6 @@
#include "pipe/p_state.h"
#include "pipe/p_defines.h"
-#include "util/u_debug.h" /* debug_dump_surface_bmp() */
#include "util/u_memory.h" /* Offset() */
#include "util/u_draw_quad.h"
diff --git a/src/gallium/tests/graw/tri-gs.c b/src/gallium/tests/graw/tri-gs.c
index 152ae408eb..731c4e10cf 100644
--- a/src/gallium/tests/graw/tri-gs.c
+++ b/src/gallium/tests/graw/tri-gs.c
@@ -8,7 +8,6 @@
#include "pipe/p_state.h"
#include "pipe/p_defines.h"
-#include "util/u_debug.h" /* debug_dump_surface_bmp() */
#include "util/u_memory.h" /* Offset() */
#include "util/u_draw_quad.h"
diff --git a/src/gallium/tests/graw/tri-instanced.c b/src/gallium/tests/graw/tri-instanced.c
index 8859f745fd..7644381162 100644
--- a/src/gallium/tests/graw/tri-instanced.c
+++ b/src/gallium/tests/graw/tri-instanced.c
@@ -11,7 +11,6 @@
#include "pipe/p_state.h"
#include "pipe/p_defines.h"
-#include "util/u_debug.h" /* debug_dump_surface_bmp() */
#include "util/u_memory.h" /* Offset() */
#include "util/u_draw_quad.h"
@@ -215,17 +214,7 @@ static void draw( void )
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
+ graw_save_surface_to_file(ctx, surf, NULL);
screen->flush_frontbuffer(screen, surf, window);
}
@@ -322,9 +311,18 @@ static void init( void )
static void options(int argc, char *argv[])
{
int i;
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-e") == 0)
+
+ for (i = 1; i < argc;) {
+ if (graw_parse_args(&i, argc, argv)) {
+ continue;
+ }
+ if (strcmp(argv[i], "-e") == 0) {
draw_elements = 1;
+ i++;
+ }
+ else {
+ i++;
+ }
}
if (draw_elements)
printf("Using pipe_context::draw_elements_instanced()\n");
diff --git a/src/gallium/tests/graw/tri.c b/src/gallium/tests/graw/tri.c
index f7e39588a4..025a1470dc 100644
--- a/src/gallium/tests/graw/tri.c
+++ b/src/gallium/tests/graw/tri.c
@@ -10,7 +10,6 @@
#include "pipe/p_state.h"
#include "pipe/p_defines.h"
-#include "util/u_debug.h" /* debug_dump_surface_bmp() */
#include "util/u_memory.h" /* Offset() */
#include "util/u_draw_quad.h"
@@ -143,17 +142,7 @@ static void draw( void )
util_draw_arrays(ctx, PIPE_PRIM_TRIANGLES, 0, 3);
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
+ graw_save_surface_to_file(ctx, surf, NULL);
screen->flush_frontbuffer(screen, surf, window);
}
@@ -252,9 +241,21 @@ static void init( void )
set_fragment_shader();
}
+static void args(int argc, char *argv[])
+{
+ int i;
+
+ for (i = 1; i < argc;) {
+ if (graw_parse_args(&i, argc, argv)) {
+ continue;
+ }
+ exit(1);
+ }
+}
int main( int argc, char *argv[] )
{
+ args(argc, argv);
init();
graw_set_display_func( draw );
diff --git a/src/gallium/tests/graw/vs-test.c b/src/gallium/tests/graw/vs-test.c
index e1cd814bf7..440c40bdcd 100644
--- a/src/gallium/tests/graw/vs-test.c
+++ b/src/gallium/tests/graw/vs-test.c
@@ -11,7 +11,6 @@
#include <stdio.h> /* for fread(), etc */
-#include "util/u_debug.h" /* debug_dump_surface_bmp() */
#include "util/u_inlines.h"
#include "util/u_memory.h" /* Offset() */
#include "util/u_draw_quad.h"
@@ -230,17 +229,7 @@ static void draw( void )
util_draw_arrays(ctx, PIPE_PRIM_POINTS, 0, Elements(vertices));
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
+ graw_save_surface_to_file(ctx, surf, NULL);
screen->flush_frontbuffer(screen, surf, window);
}
@@ -478,16 +467,21 @@ static void args(int argc, char *argv[])
{
int i;
- for (i = 1; i < argc; i++) {
+ for (i = 1; i < argc;) {
+ if (graw_parse_args(&i, argc, argv)) {
+ continue;
+ }
if (strcmp(argv[i], "-fps") == 0) {
show_fps = 1;
+ i++;
}
else if (i == argc - 1) {
- filename = argv[i];
+ filename = argv[i];
+ i++;
}
else {
- usage(argv[0]);
- exit(1);
+ usage(argv[0]);
+ exit(1);
}
}
diff --git a/src/gallium/tests/unit/SConscript b/src/gallium/tests/unit/SConscript
index 359759e22b..655e8a9b41 100644
--- a/src/gallium/tests/unit/SConscript
+++ b/src/gallium/tests/unit/SConscript
@@ -4,10 +4,10 @@ env = env.Clone()
env.Prepend(LIBS = [gallium])
-if platform in ('freebsd8', 'sunos5'):
+if env['platform'] in ('freebsd8', 'sunos5'):
env.Append(LIBS = ['m'])
-if platform == 'freebsd8':
+if env['platform'] == 'freebsd8':
env.Append(LIBS = ['pthread'])
progs = [
diff --git a/src/gallium/winsys/SConscript b/src/gallium/winsys/SConscript
index 65b12287df..d74f8a2e98 100644
--- a/src/gallium/winsys/SConscript
+++ b/src/gallium/winsys/SConscript
@@ -2,45 +2,38 @@ Import('*')
SConscript([
- 'sw/wrapper/SConscript',
+ 'sw/wrapper/SConscript',
])
-if 'xlib' in env['winsys']:
- SConscript([
- 'sw/xlib/SConscript',
- ])
+SConscript([
+ 'sw/xlib/SConscript',
+])
-if 'gdi' in env['winsys']:
- SConscript([
- 'sw/gdi/SConscript',
- ])
+SConscript([
+ 'sw/gdi/SConscript',
+])
if env['dri']:
- SConscript([
- 'sw/dri/SConscript',
- ])
-
- if 'vmware' in env['winsys']:
- SConscript([
- 'svga/drm/SConscript',
- ])
-
- if 'i915' in env['winsys']:
- SConscript([
- 'i915/drm/SConscript',
- ])
-
- if 'i965' in env['winsys']:
- SConscript([
- 'i965/drm/SConscript',
- ])
-
- if 'radeon' in env['winsys']:
- SConscript([
- 'radeon/drm/SConscript',
- ])
-
- if 'r600' in env['winsys']:
- SConscript([
- 'r600/drm/SConscript',
- ])
+ SConscript([
+ 'sw/dri/SConscript',
+ ])
+
+ SConscript([
+ 'svga/drm/SConscript',
+ ])
+
+ SConscript([
+ 'i915/drm/SConscript',
+ ])
+
+ SConscript([
+ 'i965/drm/SConscript',
+ ])
+
+ SConscript([
+ 'radeon/drm/SConscript',
+ ])
+
+ SConscript([
+ 'r600/drm/SConscript',
+ ])
diff --git a/src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c b/src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c
index e50e7801c0..c6daa52a37 100644
--- a/src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c
+++ b/src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c
@@ -41,7 +41,7 @@ i915_drm_batchbuffer_reset(struct i915_drm_batchbuffer *batch)
if (batch->bo)
drm_intel_bo_unreference(batch->bo);
- batch->bo = drm_intel_bo_alloc(idws->pools.gem,
+ batch->bo = drm_intel_bo_alloc(idws->gem_manager,
"gallium3d_batchbuffer",
batch->actual_size,
4096);
diff --git a/src/gallium/winsys/i915/drm/i915_drm_buffer.c b/src/gallium/winsys/i915/drm/i915_drm_buffer.c
index 6b06e7ae99..15ec448745 100644
--- a/src/gallium/winsys/i915/drm/i915_drm_buffer.c
+++ b/src/gallium/winsys/i915/drm/i915_drm_buffer.c
@@ -12,7 +12,6 @@ i915_drm_buffer_create(struct i915_winsys *iws,
{
struct i915_drm_buffer *buf = CALLOC_STRUCT(i915_drm_buffer);
struct i915_drm_winsys *idws = i915_drm_winsys(iws);
- drm_intel_bufmgr *pool;
char *name;
if (!buf)
@@ -21,26 +20,19 @@ i915_drm_buffer_create(struct i915_winsys *iws,
buf->magic = 0xDEAD1337;
buf->flinked = FALSE;
buf->flink = 0;
- buf->map_gtt = FALSE;
if (type == I915_NEW_TEXTURE) {
name = "gallium3d_texture";
- pool = idws->pools.gem;
} else if (type == I915_NEW_VERTEX) {
name = "gallium3d_vertex";
- pool = idws->pools.gem;
- buf->map_gtt = TRUE;
} else if (type == I915_NEW_SCANOUT) {
name = "gallium3d_scanout";
- pool = idws->pools.gem;
- buf->map_gtt = TRUE;
} else {
assert(0);
name = "gallium3d_unknown";
- pool = idws->pools.gem;
}
- buf->bo = drm_intel_bo_alloc(pool, name, size, alignment);
+ buf->bo = drm_intel_bo_alloc(idws->gem_manager, name, size, alignment);
if (!buf->bo)
goto err;
@@ -66,7 +58,7 @@ i915_drm_buffer_from_handle(struct i915_winsys *iws,
return NULL;
buf->magic = 0xDEAD1337;
- buf->bo = drm_intel_bo_gem_create_from_name(idws->pools.gem, "gallium3d_from_handle", whandle->handle);
+ buf->bo = drm_intel_bo_gem_create_from_name(idws->gem_manager, "gallium3d_from_handle", whandle->handle);
buf->flinked = TRUE;
buf->flink = whandle->handle;
@@ -74,8 +66,6 @@ i915_drm_buffer_from_handle(struct i915_winsys *iws,
goto err;
drm_intel_bo_get_tiling(buf->bo, &tile, &swizzle);
- if (tile != I915_TILE_NONE)
- buf->map_gtt = TRUE;
*stride = whandle->stride;
@@ -126,7 +116,6 @@ i915_drm_buffer_set_fence_reg(struct i915_winsys *iws,
if (tile != I915_TILE_NONE) {
assert(buf->map_count == 0);
- buf->map_gtt = TRUE;
}
return drm_intel_bo_set_tiling(buf->bo, &tile, stride);
@@ -146,10 +135,7 @@ i915_drm_buffer_map(struct i915_winsys *iws,
if (buf->map_count)
goto out;
- if (buf->map_gtt)
- ret = drm_intel_gem_bo_map_gtt(bo);
- else
- ret = drm_intel_bo_map(bo, write);
+ ret = drm_intel_gem_bo_map_gtt(bo);
buf->ptr = bo->virtual;
@@ -171,10 +157,7 @@ i915_drm_buffer_unmap(struct i915_winsys *iws,
if (--buf->map_count)
return;
- if (buf->map_gtt)
- drm_intel_gem_bo_unmap_gtt(intel_bo(buffer));
- else
- drm_intel_bo_unmap(intel_bo(buffer));
+ drm_intel_gem_bo_unmap_gtt(intel_bo(buffer));
}
static int
diff --git a/src/gallium/winsys/i915/drm/i915_drm_winsys.c b/src/gallium/winsys/i915/drm/i915_drm_winsys.c
index 179a84a704..cc0b6a9957 100644
--- a/src/gallium/winsys/i915/drm/i915_drm_winsys.c
+++ b/src/gallium/winsys/i915/drm/i915_drm_winsys.c
@@ -40,7 +40,7 @@ i915_drm_winsys_destroy(struct i915_winsys *iws)
{
struct i915_drm_winsys *idws = i915_drm_winsys(iws);
- drm_intel_bufmgr_destroy(idws->pools.gem);
+ drm_intel_bufmgr_destroy(idws->gem_manager);
FREE(idws);
}
@@ -67,8 +67,8 @@ i915_drm_winsys_create(int drmFD)
idws->base.destroy = i915_drm_winsys_destroy;
- idws->pools.gem = drm_intel_bufmgr_gem_init(idws->fd, idws->max_batch_size);
- drm_intel_bufmgr_gem_enable_reuse(idws->pools.gem);
+ idws->gem_manager = drm_intel_bufmgr_gem_init(idws->fd, idws->max_batch_size);
+ drm_intel_bufmgr_gem_enable_reuse(idws->gem_manager);
idws->dump_cmd = debug_get_bool_option("I915_DUMP_CMD", FALSE);
idws->send_cmd = !debug_get_bool_option("I915_NO_HW", FALSE);
diff --git a/src/gallium/winsys/i915/drm/i915_drm_winsys.h b/src/gallium/winsys/i915/drm/i915_drm_winsys.h
index 88a71f2424..0d74d0270c 100644
--- a/src/gallium/winsys/i915/drm/i915_drm_winsys.h
+++ b/src/gallium/winsys/i915/drm/i915_drm_winsys.h
@@ -24,9 +24,7 @@ struct i915_drm_winsys
size_t max_batch_size;
- struct {
- drm_intel_bufmgr *gem;
- } pools;
+ drm_intel_bufmgr *gem_manager;
};
static INLINE struct i915_drm_winsys *
@@ -54,7 +52,6 @@ struct i915_drm_buffer {
void *ptr;
unsigned map_count;
- boolean map_gtt;
boolean flinked;
unsigned flink;
diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c b/src/gallium/winsys/r600/drm/evergreen_hw_context.c
index 7f21b53ace..b93cc65027 100644
--- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c
+++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c
@@ -577,6 +577,12 @@ int evergreen_context_init(struct r600_context *ctx, struct radeon *radeon)
if (r)
goto out_err;
}
+ /* FS RESOURCE */
+ for (int j = 0, offset = 0x7C00; j < 16; j++, offset += 0x20) {
+ r = evergreen_state_resource_init(ctx, offset);
+ if (r)
+ goto out_err;
+ }
/* PS loop const */
evergreen_loop_const_init(ctx, 0);
@@ -686,6 +692,13 @@ void evergreen_context_pipe_state_set_vs_resource(struct r600_context *ctx, stru
evergreen_context_pipe_state_set_resource(ctx, state, offset);
}
+void evergreen_context_pipe_state_set_fs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid)
+{
+ unsigned offset = R_030000_SQ_TEX_RESOURCE_WORD0_0 + 0x7C00 + 0x20 * rid;
+
+ evergreen_context_pipe_state_set_resource(ctx, state, offset);
+}
+
static inline void evergreen_context_pipe_state_set_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned offset)
{
struct r600_range *range;
@@ -917,3 +930,10 @@ void evergreen_vs_resource_set(struct r600_context *ctx, struct r600_pipe_state
evergreen_resource_set(ctx, state, offset);
}
+
+void evergreen_fs_resource_set(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid)
+{
+ unsigned offset = R_030000_RESOURCE0_WORD0 + 0x7C00 + 0x20 * rid;
+
+ evergreen_resource_set(ctx, state, offset);
+}
diff --git a/src/gallium/winsys/r600/drm/r600_bo.c b/src/gallium/winsys/r600/drm/r600_bo.c
index 7d54ff18fc..251f009a6b 100644
--- a/src/gallium/winsys/r600/drm/r600_bo.c
+++ b/src/gallium/winsys/r600/drm/r600_bo.c
@@ -26,26 +26,41 @@
#include <pipe/p_compiler.h>
#include <pipe/p_screen.h>
#include <pipebuffer/pb_bufmgr.h>
-#include "radeon_drm.h"
+#include "state_tracker/drm_driver.h"
#include "r600_priv.h"
#include "r600d.h"
+#include "drm.h"
+#include "radeon_drm.h"
struct r600_bo *r600_bo(struct radeon *radeon,
- unsigned size, unsigned alignment, unsigned usage)
+ unsigned size, unsigned alignment,
+ unsigned binding, unsigned usage)
{
struct r600_bo *ws_bo = calloc(1, sizeof(struct r600_bo));
struct pb_desc desc;
struct pb_manager *man;
desc.alignment = alignment;
- desc.usage = usage;
+ desc.usage = (PB_USAGE_CPU_READ_WRITE | PB_USAGE_GPU_READ_WRITE);
ws_bo->size = size;
- if (usage & (PIPE_BIND_CONSTANT_BUFFER | PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_INDEX_BUFFER))
+ if (binding & (PIPE_BIND_CONSTANT_BUFFER | PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_INDEX_BUFFER))
man = radeon->cman;
else
man = radeon->kman;
+ /* Staging resources particpate in transfers and blits only
+ * and are used for uploads and downloads from regular
+ * resources. We generate them internally for some transfers.
+ */
+ if (usage == PIPE_USAGE_STAGING)
+ ws_bo->domains = RADEON_GEM_DOMAIN_CPU | RADEON_GEM_DOMAIN_GTT;
+ else
+ ws_bo->domains = (RADEON_GEM_DOMAIN_CPU |
+ RADEON_GEM_DOMAIN_GTT |
+ RADEON_GEM_DOMAIN_VRAM);
+
+
ws_bo->pb = man->create_buffer(man, size, &desc);
if (ws_bo->pb == NULL) {
free(ws_bo);
@@ -69,6 +84,10 @@ struct r600_bo *r600_bo_handle(struct radeon *radeon,
}
bo = radeon_bo_pb_get_bo(ws_bo->pb);
ws_bo->size = bo->size;
+ ws_bo->domains = (RADEON_GEM_DOMAIN_CPU |
+ RADEON_GEM_DOMAIN_GTT |
+ RADEON_GEM_DOMAIN_VRAM);
+
pipe_reference_init(&ws_bo->reference, 1);
radeon_bo_get_tiling_flags(radeon, bo, &ws_bo->tiling_flags,
@@ -136,3 +155,28 @@ unsigned r600_bo_get_size(struct r600_bo *pb_bo)
return bo->size;
}
+
+boolean r600_bo_get_winsys_handle(struct radeon *radeon, struct r600_bo *pb_bo,
+ unsigned stride, struct winsys_handle *whandle)
+{
+ struct radeon_bo *bo;
+
+ bo = radeon_bo_pb_get_bo(pb_bo->pb);
+ if (!bo)
+ return FALSE;
+
+ whandle->stride = stride;
+ switch(whandle->type) {
+ case DRM_API_HANDLE_TYPE_KMS:
+ whandle->handle = r600_bo_get_handle(pb_bo);
+ break;
+ case DRM_API_HANDLE_TYPE_SHARED:
+ if (radeon_bo_get_name(radeon, bo, &whandle->handle))
+ return FALSE;
+ break;
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
diff --git a/src/gallium/winsys/r600/drm/r600_drm.c b/src/gallium/winsys/r600/drm/r600_drm.c
index c9de95ffc0..6742993ef3 100644
--- a/src/gallium/winsys/r600/drm/r600_drm.c
+++ b/src/gallium/winsys/r600/drm/r600_drm.c
@@ -65,7 +65,7 @@ static int radeon_drm_get_tiling(struct radeon *radeon)
sizeof(struct drm_radeon_info));
if (r)
- return r;
+ return 0;
switch ((tiling_config & 0xe) >> 1) {
case 0:
@@ -195,12 +195,16 @@ struct radeon *radeon_new(int fd, unsigned device)
case CHIP_RS780:
case CHIP_RS880:
radeon->chip_class = R600;
+ /* set default group bytes, overridden by tiling info ioctl */
+ radeon->tiling_info.group_bytes = 256;
break;
case CHIP_RV770:
case CHIP_RV730:
case CHIP_RV710:
case CHIP_RV740:
radeon->chip_class = R700;
+ /* set default group bytes, overridden by tiling info ioctl */
+ radeon->tiling_info.group_bytes = 256;
break;
case CHIP_CEDAR:
case CHIP_REDWOOD:
@@ -208,6 +212,8 @@ struct radeon *radeon_new(int fd, unsigned device)
case CHIP_CYPRESS:
case CHIP_HEMLOCK:
radeon->chip_class = EVERGREEN;
+ /* set default group bytes, overridden by tiling info ioctl */
+ radeon->tiling_info.group_bytes = 512;
break;
default:
fprintf(stderr, "%s unknown or unsupported chipset 0x%04X\n",
diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c
index 2521ff9647..de22891895 100644
--- a/src/gallium/winsys/r600/drm/r600_hw_context.c
+++ b/src/gallium/winsys/r600/drm/r600_hw_context.c
@@ -44,7 +44,7 @@
int r600_context_init_fence(struct r600_context *ctx)
{
ctx->fence = 1;
- ctx->fence_bo = r600_bo(ctx->radeon, 4096, 0, 0);
+ ctx->fence_bo = r600_bo(ctx->radeon, 4096, 0, 0, 0);
if (ctx->fence_bo == NULL) {
return -ENOMEM;
}
@@ -384,6 +384,7 @@ static const struct r600_reg r600_context_reg_list[] = {
{PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028A0C_PA_SC_LINE_STIPPLE, 0, 0, 0},
{PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028A48_PA_SC_MPASS_PS_CNTL, 0, 0, 0},
{PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028C00_PA_SC_LINE_CNTL, 0, 0, 0},
+ {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028C08_PA_SU_VTX_CNTL, 0, 0, 0},
{PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028C0C_PA_CL_GB_VERT_CLIP_ADJ, 0, 0, 0},
{PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028C10_PA_CL_GB_VERT_DISC_ADJ, 0, 0, 0},
{PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028C14_PA_CL_GB_HORZ_CLIP_ADJ, 0, 0, 0},
@@ -592,6 +593,17 @@ static int r600_loop_const_init(struct r600_context *ctx, u32 offset)
return r600_context_add_block(ctx, r600_loop_consts, nreg);
}
+static void r600_context_clear_fenced_bo(struct r600_context *ctx)
+{
+ struct radeon_bo *bo, *tmp;
+
+ LIST_FOR_EACH_ENTRY_SAFE(bo, tmp, &ctx->fenced_bo, fencedlist) {
+ LIST_DELINIT(&bo->fencedlist);
+ bo->fence = 0;
+ bo->ctx = NULL;
+ }
+}
+
/* initialize */
void r600_context_fini(struct r600_context *ctx)
{
@@ -611,8 +623,12 @@ void r600_context_fini(struct r600_context *ctx)
}
free(ctx->range[i].blocks);
}
+ free(ctx->blocks);
free(ctx->reloc);
+ free(ctx->bo);
free(ctx->pm4);
+
+ r600_context_clear_fenced_bo(ctx);
if (ctx->fence_bo) {
r600_bo_reference(ctx->radeon, &ctx->fence_bo, NULL);
}
@@ -690,6 +706,12 @@ int r600_context_init(struct r600_context *ctx, struct radeon *radeon)
if (r)
goto out_err;
}
+ /* FS RESOURCE */
+ for (int j = 0, offset = 0x2300; j < 16; j++, offset += 0x1C) {
+ r = r600_state_resource_init(ctx, offset);
+ if (r)
+ goto out_err;
+ }
/* PS loop const */
r600_loop_const_init(ctx, 0);
@@ -785,8 +807,8 @@ void r600_context_bo_reloc(struct r600_context *ctx, u32 *pm4, struct r600_bo *r
bo->reloc = &ctx->reloc[ctx->creloc];
bo->reloc_id = ctx->creloc * sizeof(struct r600_reloc) / 4;
ctx->reloc[ctx->creloc].handle = bo->handle;
- ctx->reloc[ctx->creloc].read_domain = RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM;
- ctx->reloc[ctx->creloc].write_domain = RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM;
+ ctx->reloc[ctx->creloc].read_domain = rbo->domains & (RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM);
+ ctx->reloc[ctx->creloc].write_domain = rbo->domains & (RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM);
ctx->reloc[ctx->creloc].flags = 0;
radeon_bo_reference(ctx->radeon, &ctx->bo[ctx->creloc], bo);
ctx->creloc++;
@@ -877,6 +899,13 @@ void r600_context_pipe_state_set_vs_resource(struct r600_context *ctx, struct r6
r600_context_pipe_state_set_resource(ctx, state, offset);
}
+void r600_context_pipe_state_set_fs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid)
+{
+ unsigned offset = R_038000_SQ_TEX_RESOURCE_WORD0_0 + 0x2300 + 0x1C * rid;
+
+ r600_context_pipe_state_set_resource(ctx, state, offset);
+}
+
static inline void r600_context_pipe_state_set_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned offset)
{
struct r600_range *range;
@@ -1046,7 +1075,7 @@ void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw)
ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_draw_initiator;
}
ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 0);
- ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT;
+ ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT) | EVENT_INDEX(0);
/* flush color buffer */
for (int i = 0; i < 8; i++) {
@@ -1083,7 +1112,7 @@ void r600_context_flush(struct r600_context *ctx)
/* emit fence */
ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE_EOP, 4);
- ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE_CACHE_FLUSH_AND_INV_TS_EVENT | (5 << 8);
+ ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH_AND_INV_TS_EVENT) | EVENT_INDEX(5);
ctx->pm4[ctx->pm4_cdwords++] = 0;
ctx->pm4[ctx->pm4_cdwords++] = (1 << 29) | (0 << 24);
ctx->pm4[ctx->pm4_cdwords++] = ctx->fence;
@@ -1106,6 +1135,8 @@ void r600_context_flush(struct r600_context *ctx)
chunk_array[1] = (uint64_t)(uintptr_t)&chunks[1];
r = drmCommandWriteRead(ctx->radeon->fd, DRM_RADEON_CS, &drmib,
sizeof(struct drm_radeon_cs));
+#else
+ *ctx->cfence = ctx->fence;
#endif
r600_context_update_fenced_list(ctx);
@@ -1261,7 +1292,7 @@ void r600_query_begin(struct r600_context *ctx, struct r600_query *query)
/* emit begin query */
ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 2);
- ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE_ZPASS_DONE;
+ ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_ZPASS_DONE) | EVENT_INDEX(1);
ctx->pm4[ctx->pm4_cdwords++] = query->num_results + r600_bo_offset(query->buffer);
ctx->pm4[ctx->pm4_cdwords++] = 0;
ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NOP, 0);
@@ -1277,7 +1308,7 @@ void r600_query_end(struct r600_context *ctx, struct r600_query *query)
{
/* emit begin query */
ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 2);
- ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE_ZPASS_DONE;
+ ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_ZPASS_DONE) | EVENT_INDEX(1);
ctx->pm4[ctx->pm4_cdwords++] = query->num_results + 8 + r600_bo_offset(query->buffer);
ctx->pm4[ctx->pm4_cdwords++] = 0;
ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NOP, 0);
@@ -1304,7 +1335,12 @@ struct r600_query *r600_context_query_create(struct r600_context *ctx, unsigned
query->type = query_type;
query->buffer_size = 4096;
- query->buffer = r600_bo(ctx->radeon, query->buffer_size, 1, 0);
+ /* As of GL4, query buffers are normally read by the CPU after
+ * being written by the gpu, hence staging is probably a good
+ * usage pattern.
+ */
+ query->buffer = r600_bo(ctx->radeon, query->buffer_size, 1, 0,
+ PIPE_USAGE_STAGING);
if (!query->buffer) {
free(query);
return NULL;
diff --git a/src/gallium/winsys/r600/drm/r600_priv.h b/src/gallium/winsys/r600/drm/r600_priv.h
index b5bd7bd92c..9fd77b71c7 100644
--- a/src/gallium/winsys/r600/drm/r600_priv.h
+++ b/src/gallium/winsys/r600/drm/r600_priv.h
@@ -62,7 +62,7 @@ struct radeon_bo {
unsigned handle;
unsigned size;
unsigned alignment;
- unsigned map_count;
+ int map_count;
void *data;
struct list_head fencedlist;
unsigned fence;
@@ -79,6 +79,7 @@ struct r600_bo {
unsigned size;
unsigned tiling_flags;
unsigned kernel_pitch;
+ unsigned domains;
};
@@ -90,7 +91,7 @@ struct radeon *radeon_decref(struct radeon *radeon);
/* radeon_bo.c */
struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle,
- unsigned size, unsigned alignment, void *ptr);
+ unsigned size, unsigned alignment);
void radeon_bo_reference(struct radeon *radeon, struct radeon_bo **dst,
struct radeon_bo *src);
int radeon_bo_wait(struct radeon *radeon, struct radeon_bo *bo);
@@ -101,6 +102,9 @@ int radeon_bo_get_tiling_flags(struct radeon *radeon,
struct radeon_bo *bo,
uint32_t *tiling_flags,
uint32_t *pitch);
+int radeon_bo_get_name(struct radeon *radeon,
+ struct radeon_bo *bo,
+ uint32_t *name);
/* radeon_bo_pb.c */
struct radeon_bo *radeon_bo_pb_get_bo(struct pb_buffer *_buf);
diff --git a/src/gallium/winsys/r600/drm/r600d.h b/src/gallium/winsys/r600/drm/r600d.h
index d91f7737af..4a08d504aa 100644
--- a/src/gallium/winsys/r600/drm/r600d.h
+++ b/src/gallium/winsys/r600/drm/r600d.h
@@ -94,6 +94,15 @@
#define EVENT_TYPE_CACHE_FLUSH_AND_INV_TS_EVENT 0x14
#define EVENT_TYPE_ZPASS_DONE 0x15
#define EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT 0x16
+#define EVENT_TYPE(x) ((x) << 0)
+#define EVENT_INDEX(x) ((x) << 8)
+ /* 0 - any non-TS event
+ * 1 - ZPASS_DONE
+ * 2 - SAMPLE_PIPELINESTAT
+ * 3 - SAMPLE_STREAMOUTSTAT*
+ * 4 - *S_PARTIAL_FLUSH
+ * 5 - TS events
+ */
#define PKT_TYPE_S(x) (((x) & 0x3) << 30)
#define PKT_TYPE_G(x) (((x) >> 30) & 0x3)
@@ -795,6 +804,7 @@
#define R_028A48_PA_SC_MPASS_PS_CNTL 0x028A48
#define R_028C00_PA_SC_LINE_CNTL 0x028C00
#define R_028C04_PA_SC_AA_CONFIG 0x028C04
+#define R_028C08_PA_SU_VTX_CNTL 0x028C08
#define R_028C1C_PA_SC_AA_SAMPLE_LOCS_MCTX 0x028C1C
#define R_028C48_PA_SC_AA_MASK 0x028C48
#define R_028810_PA_CL_CLIP_CNTL 0x028810
diff --git a/src/gallium/winsys/r600/drm/radeon_bo.c b/src/gallium/winsys/r600/drm/radeon_bo.c
index 9d664b7e53..557cfb9597 100644
--- a/src/gallium/winsys/r600/drm/radeon_bo.c
+++ b/src/gallium/winsys/r600/drm/radeon_bo.c
@@ -69,7 +69,7 @@ static void radeon_bo_fixed_unmap(struct radeon *radeon, struct radeon_bo *bo)
}
struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle,
- unsigned size, unsigned alignment, void *ptr)
+ unsigned size, unsigned alignment)
{
struct radeon_bo *bo;
int r;
@@ -82,6 +82,7 @@ struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle,
bo->handle = handle;
pipe_reference_init(&bo->reference, 1);
bo->alignment = alignment;
+ LIST_INITHEAD(&bo->fencedlist);
if (handle) {
struct drm_gem_open open_arg;
@@ -120,10 +121,6 @@ struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle,
radeon_bo_reference(radeon, &bo, NULL);
return bo;
}
- if (ptr) {
- memcpy(bo->data, ptr, size);
- }
- LIST_INITHEAD(&bo->fencedlist);
return bo;
}
@@ -156,14 +153,15 @@ int radeon_bo_wait(struct radeon *radeon, struct radeon_bo *bo)
struct drm_radeon_gem_wait_idle args;
int ret;
- if (!bo->fence && !bo->shared)
- return 0;
-
- if (bo->fence <= *bo->ctx->cfence) {
- LIST_DELINIT(&bo->fencedlist);
- bo->fence = 0;
- return 0;
- }
+ if (!bo->shared) {
+ if (!bo->fence)
+ return 0;
+ if (bo->fence <= *bo->ctx->cfence) {
+ LIST_DELINIT(&bo->fencedlist);
+ bo->fence = 0;
+ return 0;
+ }
+ }
/* Zero out args to make valgrind happy */
memset(&args, 0, sizeof(args));
@@ -219,3 +217,19 @@ int radeon_bo_get_tiling_flags(struct radeon *radeon,
*pitch = args.pitch;
return ret;
}
+
+int radeon_bo_get_name(struct radeon *radeon,
+ struct radeon_bo *bo,
+ uint32_t *name)
+{
+ struct drm_gem_flink flink;
+ int ret;
+
+ flink.handle = bo->handle;
+ ret = drmIoctl(radeon->fd, DRM_IOCTL_GEM_FLINK, &flink);
+ if (ret)
+ return ret;
+
+ *name = flink.name;
+ return ret;
+}
diff --git a/src/gallium/winsys/r600/drm/radeon_bo_pb.c b/src/gallium/winsys/r600/drm/radeon_bo_pb.c
index a3452027f2..312552f075 100644
--- a/src/gallium/winsys/r600/drm/radeon_bo_pb.c
+++ b/src/gallium/winsys/r600/drm/radeon_bo_pb.c
@@ -63,11 +63,13 @@ static void radeon_bo_pb_destroy(struct pb_buffer *_buf)
{
struct radeon_bo_pb *buf = radeon_bo_pb(_buf);
- LIST_DEL(&buf->maplist);
-
- if (buf->bo->data != NULL) {
+ /* If this buffer is on the list of buffers to unmap,
+ * do the unmapping now.
+ */
+ if (!LIST_IS_EMPTY(&buf->maplist))
radeon_bo_unmap(buf->mgr->radeon, buf->bo);
- }
+
+ LIST_DEL(&buf->maplist);
radeon_bo_reference(buf->mgr->radeon, &buf->bo, NULL);
FREE(buf);
}
@@ -80,7 +82,7 @@ radeon_bo_pb_map_internal(struct pb_buffer *_buf,
struct pipe_context *pctx = ctx;
if (flags & PB_USAGE_UNSYNCHRONIZED) {
- if (!buf->bo->data && radeon_bo_map(buf->mgr->radeon, buf->bo)) {
+ if (radeon_bo_map(buf->mgr->radeon, buf->bo)) {
return NULL;
}
LIST_DELINIT(&buf->maplist);
@@ -106,18 +108,12 @@ radeon_bo_pb_map_internal(struct pb_buffer *_buf,
goto out;
}
- if (buf->bo->data != NULL) {
- if (radeon_bo_wait(buf->mgr->radeon, buf->bo)) {
- return NULL;
- }
- } else {
- if (radeon_bo_map(buf->mgr->radeon, buf->bo)) {
- return NULL;
- }
- if (radeon_bo_wait(buf->mgr->radeon, buf->bo)) {
- radeon_bo_unmap(buf->mgr->radeon, buf->bo);
- return NULL;
- }
+ if (radeon_bo_map(buf->mgr->radeon, buf->bo)) {
+ return NULL;
+ }
+ if (radeon_bo_wait(buf->mgr->radeon, buf->bo)) {
+ radeon_bo_unmap(buf->mgr->radeon, buf->bo);
+ return NULL;
}
out:
LIST_DELINIT(&buf->maplist);
@@ -172,7 +168,7 @@ radeon_bo_pb_create_buffer_from_handle(struct pb_manager *_mgr,
struct radeon_bo_pb *bo;
struct radeon_bo *hw_bo;
- hw_bo = radeon_bo(radeon, handle, 0, 0, NULL);
+ hw_bo = radeon_bo(radeon, handle, 0, 0);
if (hw_bo == NULL)
return NULL;
@@ -217,8 +213,7 @@ radeon_bo_pb_create_buffer(struct pb_manager *_mgr,
LIST_INITHEAD(&bo->maplist);
- bo->bo = radeon_bo(radeon, 0, size,
- desc->alignment, NULL);
+ bo->bo = radeon_bo(radeon, 0, size, desc->alignment);
if (bo->bo == NULL)
goto error2;
return &bo->b;
diff --git a/src/gallium/winsys/svga/drm/SConscript b/src/gallium/winsys/svga/drm/SConscript
index 3ad4c72572..b049ea60aa 100644
--- a/src/gallium/winsys/svga/drm/SConscript
+++ b/src/gallium/winsys/svga/drm/SConscript
@@ -5,37 +5,37 @@ env = env.Clone()
env.ParseConfig('pkg-config --cflags libdrm')
if env['gcc']:
- env.Append(CCFLAGS = ['-fvisibility=hidden'])
- env.Append(CPPDEFINES = [
- 'HAVE_STDINT_H',
- 'HAVE_SYS_TYPES_H',
- '-D_FILE_OFFSET_BITS=64',
- ])
-
+ env.Append(CCFLAGS = ['-fvisibility=hidden'])
+ env.Append(CPPDEFINES = [
+ 'HAVE_STDINT_H',
+ 'HAVE_SYS_TYPES_H',
+ '-D_FILE_OFFSET_BITS=64',
+ ])
+
env.Prepend(CPPPATH = [
- 'include',
- '#/src/gallium/drivers/svga',
- '#/src/gallium/drivers/svga/include',
+ 'include',
+ '#/src/gallium/drivers/svga',
+ '#/src/gallium/drivers/svga/include',
])
env.Append(CPPDEFINES = [
])
sources = [
- 'vmw_buffer.c',
- 'vmw_context.c',
- 'vmw_fence.c',
- 'vmw_screen.c',
- 'vmw_screen_dri.c',
- 'vmw_screen_ioctl.c',
- 'vmw_screen_pools.c',
- 'vmw_screen_svga.c',
- 'vmw_surface.c',
+ 'vmw_buffer.c',
+ 'vmw_context.c',
+ 'vmw_fence.c',
+ 'vmw_screen.c',
+ 'vmw_screen_dri.c',
+ 'vmw_screen_ioctl.c',
+ 'vmw_screen_pools.c',
+ 'vmw_screen_svga.c',
+ 'vmw_surface.c',
]
svgadrm = env.ConvenienceLibrary(
- target = 'svgadrm',
- source = sources,
+ target = 'svgadrm',
+ source = sources,
)
Export('svgadrm')
diff --git a/src/gallium/winsys/sw/xlib/SConscript b/src/gallium/winsys/sw/xlib/SConscript
index 2af6153b4c..df01a9ec2b 100644
--- a/src/gallium/winsys/sw/xlib/SConscript
+++ b/src/gallium/winsys/sw/xlib/SConscript
@@ -4,7 +4,7 @@
Import('*')
-if env['platform'] == 'linux':
+if env['platform'] in ('cygwin', 'linux'):
env = env.Clone()
diff --git a/src/glsl/Makefile b/src/glsl/Makefile
index 83869b1d84..f5aadc347b 100644
--- a/src/glsl/Makefile
+++ b/src/glsl/Makefile
@@ -30,55 +30,53 @@ CXX_SOURCES = \
glsl_types.cpp \
glsl_symbol_table.cpp \
hir_field_selection.cpp \
- ir_algebraic.cpp \
ir_basic_block.cpp \
ir_clone.cpp \
ir_constant_expression.cpp \
- ir_constant_folding.cpp \
- ir_constant_propagation.cpp \
- ir_constant_variable.cpp \
- ir_copy_propagation.cpp \
ir.cpp \
- ir_dead_code.cpp \
- ir_dead_code_local.cpp \
- ir_dead_functions.cpp \
- ir_div_to_mul_rcp.cpp \
- ir_explog_to_explog2.cpp \
ir_expression_flattening.cpp \
ir_function_can_inline.cpp \
ir_function.cpp \
- ir_function_inlining.cpp \
ir_hierarchical_visitor.cpp \
ir_hv_accept.cpp \
- ir_if_simplification.cpp \
- ir_if_to_cond_assign.cpp \
ir_import_prototypes.cpp \
- ir_lower_jumps.cpp \
- ir_mat_op_to_vec.cpp \
- ir_mod_to_fract.cpp \
- ir_noop_swizzle.cpp \
ir_print_visitor.cpp \
ir_reader.cpp \
ir_rvalue_visitor.cpp \
ir_set_program_inouts.cpp \
- ir_structure_splitting.cpp \
- ir_sub_to_add_neg.cpp \
- ir_swizzle_swizzle.cpp \
- ir_tree_grafting.cpp \
ir_validate.cpp \
ir_variable.cpp \
ir_variable_refcount.cpp \
- ir_vec_index_to_cond_assign.cpp \
- ir_vec_index_to_swizzle.cpp \
linker.cpp \
link_functions.cpp \
loop_analysis.cpp \
loop_controls.cpp \
loop_unroll.cpp \
+ lower_if_to_cond_assign.cpp \
+ lower_instructions.cpp \
+ lower_jumps.cpp \
+ lower_mat_op_to_vec.cpp \
lower_noise.cpp \
lower_texture_projection.cpp \
lower_variable_index_to_cond_assign.cpp \
+ lower_vec_index_to_cond_assign.cpp \
+ lower_vec_index_to_swizzle.cpp \
+ lower_vector.cpp \
+ opt_algebraic.cpp \
+ opt_constant_folding.cpp \
+ opt_constant_propagation.cpp \
+ opt_constant_variable.cpp \
+ opt_copy_propagation.cpp \
+ opt_dead_code.cpp \
+ opt_dead_code_local.cpp \
+ opt_dead_functions.cpp \
+ opt_function_inlining.cpp \
+ opt_if_simplification.cpp \
+ opt_noop_swizzle.cpp \
opt_redundant_jumps.cpp \
+ opt_structure_splitting.cpp \
+ opt_swizzle_swizzle.cpp \
+ opt_tree_grafting.cpp \
s_expression.cpp
LIBS = \
@@ -178,7 +176,7 @@ builtins: builtin_function.cpp builtins/profiles/* builtins/ir/* builtins/tools/
cp builtins/tools/builtin_function.cpp .
make glsl_compiler
@echo Regenerating builtin_function.cpp...
- ./builtins/tools/generate_builtins.py > builtin_function.cpp
+ $(PYTHON2) $(PYTHON_FLAGS) builtins/tools/generate_builtins.py > builtin_function.cpp
@echo Rebuilding the real compiler...
make glsl_compiler
diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am
deleted file mode 100644
index 5f013c31e9..0000000000
--- a/src/glsl/Makefile.am
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright © 2010 Intel Corporation
-# 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
-# AUTHORS, COPYRIGHT HOLDERS, 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.
-
-AUTOMAKE_OPTIONS = foreign
-AM_CPPFLAGS = -I mesa
-
-SUBDIRS = glcpp
-
-bin_PROGRAMS = glsl
-
-glsl_LDADD = ./glcpp/libglcpp.la
-glsl_LDFLAGS = @LDFLAGS@ $(talloc_LIBS)
-glsl_SOURCES = \
- main.cpp \
- builtin_types.h \
- glsl_types.cpp \
- glsl_parser.ypp glsl_lexer.lpp glsl_parser_extras.cpp \
- ast_expr.cpp ast_to_hir.cpp ast_function.cpp ast_type.cpp \
- ir.cpp hir_field_selection.cpp builtin_function.cpp \
- ir_print_visitor.cpp ir_variable.cpp ir_function.cpp \
- ir_basic_block.cpp \
- ir_basic_block.h \
- ir_clone.cpp \
- ir_constant_expression.cpp \
- ir_constant_folding.cpp \
- ir_constant_variable.cpp \
- ir_copy_propagation.cpp \
- ir_copy_propagation.h \
- ir_dead_code.cpp \
- ir_dead_code.h \
- ir_dead_code_local.cpp \
- ir_expression_flattening.cpp \
- ir_function_can_inline.cpp \
- ir_function_inlining.cpp \
- ir_if_simplification.cpp \
- ir_optimization.h \
- ir_reader.cpp s_expression.cpp \
- ir_hv_accept.cpp \
- ir_hierarchical_visitor.h \
- ir_hierarchical_visitor.cpp \
- ir_swizzle_swizzle.cpp \
- ir_to_mesa.cpp \
- ir_to_mesa.h \
- ir_validate.cpp \
- ir_vec_index_to_swizzle.cpp \
- linker.cpp \
- loop_analysis.cpp \
- loop_controls.cpp \
- loop_unroll.cpp \
- lower_noise.cpp \
- lower_variable_index_to_cond_assign.cpp \
- opt_redundant_jumps.cpp
-
-BUILT_SOURCES = glsl_parser.h glsl_parser.cpp glsl_lexer.cpp
-CLEANFILES = $(BUILT_SOURCES)
-
-builtin_function.cpp: builtins/*/*
- ./builtins/tools/generate_builtins.pl > builtin_function.cpp
-glsl_parser.h: glsl_parser.cpp
-
-.lpp.cpp:
- $(LEXCOMPILE) --outfile="$@" $<
diff --git a/src/glsl/SConscript b/src/glsl/SConscript
index c183e208d6..fd22f66863 100644
--- a/src/glsl/SConscript
+++ b/src/glsl/SConscript
@@ -27,54 +27,52 @@ sources = [
'glsl_types.cpp',
'glsl_symbol_table.cpp',
'hir_field_selection.cpp',
- 'ir_algebraic.cpp',
'ir_basic_block.cpp',
'ir_clone.cpp',
'ir_constant_expression.cpp',
- 'ir_constant_folding.cpp',
- 'ir_constant_propagation.cpp',
- 'ir_constant_variable.cpp',
- 'ir_copy_propagation.cpp',
'ir.cpp',
- 'ir_dead_code.cpp',
- 'ir_dead_code_local.cpp',
- 'ir_dead_functions.cpp',
- 'ir_div_to_mul_rcp.cpp',
- 'ir_explog_to_explog2.cpp',
'ir_expression_flattening.cpp',
'ir_function_can_inline.cpp',
'ir_function.cpp',
- 'ir_function_inlining.cpp',
'ir_hierarchical_visitor.cpp',
'ir_hv_accept.cpp',
- 'ir_if_simplification.cpp',
- 'ir_if_to_cond_assign.cpp',
'ir_import_prototypes.cpp',
- 'ir_lower_jumps.cpp',
- 'ir_mat_op_to_vec.cpp',
- 'ir_mod_to_fract.cpp',
- 'ir_noop_swizzle.cpp',
'ir_print_visitor.cpp',
'ir_reader.cpp',
'ir_rvalue_visitor.cpp',
'ir_set_program_inouts.cpp',
- 'ir_structure_splitting.cpp',
- 'ir_sub_to_add_neg.cpp',
- 'ir_swizzle_swizzle.cpp',
- 'ir_tree_grafting.cpp',
'ir_validate.cpp',
'ir_variable.cpp',
'ir_variable_refcount.cpp',
- 'ir_vec_index_to_cond_assign.cpp',
- 'ir_vec_index_to_swizzle.cpp',
'linker.cpp',
'link_functions.cpp',
'loop_analysis.cpp',
'loop_controls.cpp',
'loop_unroll.cpp',
+ 'lower_if_to_cond_assign.cpp',
+ 'lower_instructions.cpp',
+ 'lower_jumps.cpp',
+ 'lower_mat_op_to_vec.cpp',
'lower_noise.cpp',
'lower_variable_index_to_cond_assign.cpp',
+ 'lower_vec_index_to_cond_assign.cpp',
+ 'lower_vec_index_to_swizzle.cpp',
+ 'lower_vector.cpp',
+ 'opt_algebraic.cpp',
+ 'opt_constant_folding.cpp',
+ 'opt_constant_propagation.cpp',
+ 'opt_constant_variable.cpp',
+ 'opt_copy_propagation.cpp',
+ 'opt_dead_code.cpp',
+ 'opt_dead_code_local.cpp',
+ 'opt_dead_functions.cpp',
+ 'opt_function_inlining.cpp',
+ 'opt_if_simplification.cpp',
+ 'opt_noop_swizzle.cpp',
'opt_redundant_jumps.cpp',
+ 'opt_structure_splitting.cpp',
+ 'opt_swizzle_swizzle.cpp',
+ 'opt_tree_grafting.cpp',
's_expression.cpp',
]
diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp
index 20448f5a97..1e66033348 100644
--- a/src/glsl/ast_function.cpp
+++ b/src/glsl/ast_function.cpp
@@ -101,9 +101,6 @@ process_call(exec_list *instructions, ir_function *f,
ir_function_signature *sig = f->matching_signature(actual_parameters);
- /* The instructions param will be used when the FINISHMEs below are done */
- (void) instructions;
-
if (sig != NULL) {
/* Verify that 'out' and 'inout' actual parameters are lvalues. This
* isn't done in ir_function::matching_signature because that function
@@ -545,7 +542,7 @@ emit_inline_vector_constructor(const glsl_type *type,
/* Mask of fields to be written in the assignment.
*/
constant_mask |= ((1U << rhs_components) - 1) << base_lhs_component;
- constant_components++;
+ constant_components += rhs_components;
base_component += rhs_components;
}
@@ -580,18 +577,17 @@ emit_inline_vector_constructor(const glsl_type *type,
const ir_constant *const c = param->as_constant();
if (c == NULL) {
- /* Generate a swizzle in case rhs_components != rhs->type->vector_elements. */
- unsigned swiz[4] = { 0, 0, 0, 0 };
- for (unsigned i = 0; i < rhs_components; i++)
- swiz[i] = i;
-
/* Mask of fields to be written in the assignment.
*/
const unsigned write_mask = ((1U << rhs_components) - 1)
<< base_component;
ir_dereference *lhs = new(ctx) ir_dereference_variable(var);
- ir_rvalue *rhs = new(ctx) ir_swizzle(param, swiz, rhs_components);
+
+ /* Generate a swizzle so that LHS and RHS sizes match.
+ */
+ ir_rvalue *rhs =
+ new(ctx) ir_swizzle(param, 0, 1, 2, 3, rhs_components);
ir_instruction *inst =
new(ctx) ir_assignment(lhs, rhs, NULL, write_mask);
@@ -631,21 +627,21 @@ assign_to_matrix_column(ir_variable *var, unsigned column, unsigned row_base,
assert(column_ref->type->components() >= (row_base + count));
assert(src->type->components() >= (src_base + count));
- /* Generate a swizzle that puts the first element of the source at the
- * location of the first element of the destination.
+ /* Generate a swizzle that extracts the number of components from the source
+ * that are to be assigned to the column of the matrix.
*/
- unsigned swiz[4] = { src_base, src_base, src_base, src_base };
- for (unsigned i = 0; i < count; i++)
- swiz[i + row_base] = i;
-
- ir_rvalue *const rhs =
- new(mem_ctx) ir_swizzle(src, swiz, count);
+ if (count < src->type->vector_elements) {
+ src = new(mem_ctx) ir_swizzle(src,
+ src_base + 0, src_base + 1,
+ src_base + 2, src_base + 3,
+ count);
+ }
/* Mask of fields to be written in the assignment.
*/
const unsigned write_mask = ((1U << count) - 1) << row_base;
- return new(mem_ctx) ir_assignment(column_ref, rhs, NULL, write_mask);
+ return new(mem_ctx) ir_assignment(column_ref, src, NULL, write_mask);
}
diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index 15e1afc4dd..d615b30e7d 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -2210,7 +2210,7 @@ ast_declarator_list::hir(exec_list *instructions,
earlier->type = var->type;
delete var;
var = NULL;
- } else if (state->extensions->ARB_fragment_coord_conventions
+ } else if (state->ARB_fragment_coord_conventions_enable
&& strcmp(var->name, "gl_FragCoord") == 0
&& earlier->type == var->type
&& earlier->mode == var->mode) {
@@ -2636,8 +2636,7 @@ ast_jump_statement::hir(exec_list *instructions,
state->current_function->function_name());
}
- ir_expression *const ret = (ir_expression *)
- opt_return_value->hir(instructions, state);
+ ir_rvalue *const ret = opt_return_value->hir(instructions, state);
assert(ret != NULL);
/* Implicit conversions are not allowed for return values. */
diff --git a/src/glsl/builtin_function.cpp b/src/glsl/builtin_function.cpp
index f0206431fb..bc36814105 100644
--- a/src/glsl/builtin_function.cpp
+++ b/src/glsl/builtin_function.cpp
@@ -123,6 +123,30 @@ static const char builtin_acos[] =
"))\n"
""
;
+static const char builtin_acosh[] =
+ "((function acosh\n"
+ " (signature float\n"
+ " (parameters\n"
+ " (declare (in) float x))\n"
+ " ((return (expression float log (expression float + (var_ref x) (expression float sqrt (expression float - (expression float * (var_ref x) (var_ref x)) (constant float (1)))))))))\n"
+ "\n"
+ " (signature vec2\n"
+ " (parameters\n"
+ " (declare (in) vec2 x))\n"
+ " ((return (expression vec2 log (expression vec2 + (var_ref x) (expression vec2 sqrt (expression vec2 - (expression vec2 * (var_ref x) (var_ref x)) (constant vec2 (1)))))))))\n"
+ "\n"
+ " (signature vec3\n"
+ " (parameters\n"
+ " (declare (in) vec3 x))\n"
+ " ((return (expression vec3 log (expression vec3 + (var_ref x) (expression vec3 sqrt (expression vec3 - (expression vec3 * (var_ref x) (var_ref x)) (constant vec3 (1)))))))))\n"
+ "\n"
+ " (signature vec4\n"
+ " (parameters\n"
+ " (declare (in) vec4 x))\n"
+ " ((return (expression vec4 log (expression vec4 + (var_ref x) (expression vec4 sqrt (expression vec4 - (expression vec4 * (var_ref x) (var_ref x)) (constant vec4 (1)))))))))\n"
+ "))\n"
+ ""
+;
static const char builtin_all[] =
"((function all\n"
" (signature bool\n"
@@ -261,18 +285,42 @@ static const char builtin_asin[] =
"))\n"
""
;
+static const char builtin_asinh[] =
+ "((function asinh\n"
+ " (signature float\n"
+ " (parameters\n"
+ " (declare (in) float x))\n"
+ " ((return (expression float log (expression float + (var_ref x) (expression float sqrt (expression float + (expression float * (var_ref x) (var_ref x)) (constant float (1)))))))))\n"
+ "\n"
+ " (signature vec2\n"
+ " (parameters\n"
+ " (declare (in) vec2 x))\n"
+ " ((return (expression vec2 log (expression vec2 + (var_ref x) (expression vec2 sqrt (expression vec2 + (expression vec2 * (var_ref x) (var_ref x)) (constant vec2 (1)))))))))\n"
+ "\n"
+ " (signature vec3\n"
+ " (parameters\n"
+ " (declare (in) vec3 x))\n"
+ " ((return (expression vec3 log (expression vec3 + (var_ref x) (expression vec3 sqrt (expression vec3 + (expression vec3 * (var_ref x) (var_ref x)) (constant vec3 (1)))))))))\n"
+ "\n"
+ " (signature vec4\n"
+ " (parameters\n"
+ " (declare (in) vec4 x))\n"
+ " ((return (expression vec4 log (expression vec4 + (var_ref x) (expression vec4 sqrt (expression vec4 + (expression vec4 * (var_ref x) (var_ref x)) (constant vec4 (1)))))))))\n"
+ "))\n"
+ ""
+;
static const char builtin_atan[] =
"((function atan\n"
" (signature float\n"
" (parameters\n"
- " (declare (in) float x))\n"
+ " (declare (in) float y_over_x))\n"
" ((return (call asin ((expression float *\n"
- " (var_ref x)\n"
+ " (var_ref y_over_x)\n"
" (expression float rsq\n"
" (expression float +\n"
" (expression float *\n"
- " (var_ref x)\n"
- " (var_ref x))\n"
+ " (var_ref y_over_x)\n"
+ " (var_ref y_over_x))\n"
" (constant float (1.0))))))))))\n"
"\n"
" (signature vec2\n"
@@ -318,30 +366,15 @@ static const char builtin_atan[] =
" )\n"
" (\n"
" (declare () float r)\n"
- " (declare ( ) float abs_retval)\n"
- " (assign (constant bool (1)) (x) (var_ref abs_retval) (call abs ((var_ref x) ))\n"
- ")\n"
- " (if (expression bool > (var_ref abs_retval) (constant float (0.000100)) ) (\n"
- " (declare ( ) float atan_retval)\n"
- " (assign (constant bool (1)) (x) (var_ref atan_retval) (call atan ((expression float / (var_ref y) (var_ref x) ) ))\n"
- ")\n"
- " (assign (constant bool (1)) (x) (var_ref r) (var_ref atan_retval) )\n"
+ " (if (expression bool > (expression float abs (var_ref x)) (constant float (0.000100))) (\n"
+ " (assign (constant bool (1)) (x) (var_ref r) (call atan ((expression float / (var_ref y) (var_ref x)))))\n"
" (if (expression bool < (var_ref x) (constant float (0.000000)) ) (\n"
- " (if (expression bool >= (var_ref y) (constant float (0.000000)) ) (\n"
- " (declare ( ) float assignment_tmp)\n"
- " (assign (constant bool (1)) (x) (var_ref assignment_tmp) (expression float + (var_ref r) (constant float (3.141593)) ) )\n"
- " (assign (constant bool (1)) (x) (var_ref r) (var_ref assignment_tmp) )\n"
- " )\n"
- " (\n"
- " (declare ( ) float assignment_tmp)\n"
- " (assign (constant bool (1)) (x) (var_ref assignment_tmp) (expression float - (var_ref r) (constant float (3.141593)) ) )\n"
- " (assign (constant bool (1)) (x) (var_ref r) (var_ref assignment_tmp) )\n"
- " ))\n"
- "\n"
+ " (if (expression bool >= (var_ref y) (constant float (0.000000)) )\n"
+ " ((assign (constant bool (1)) (x) (var_ref r) (expression float + (var_ref r) (constant float (3.141593)))))\n"
+ " ((assign (constant bool (1)) (x) (var_ref r) (expression float - (var_ref r) (constant float (3.141593))))))\n"
" )\n"
" (\n"
" ))\n"
- "\n"
" )\n"
" (\n"
" (declare () float sgn)\n"
@@ -405,6 +438,46 @@ static const char builtin_atan[] =
"))\n"
""
;
+static const char builtin_atanh[] =
+ "((function atanh\n"
+ " (signature float\n"
+ " (parameters\n"
+ " (declare (in) float x))\n"
+ " ((return (expression float * (constant float (0.5))\n"
+ " (expression float log\n"
+ " (expression float /\n"
+ " (expression float + (constant float (1)) (var_ref x))\n"
+ " (expression float - (constant float (1)) (var_ref x))))))))\n"
+ "\n"
+ " (signature vec2\n"
+ " (parameters\n"
+ " (declare (in) vec2 x))\n"
+ " ((return (expression vec2 * (constant vec2 (0.5))\n"
+ " (expression vec2 log\n"
+ " (expression vec2 /\n"
+ " (expression vec2 + (constant vec2 (1)) (var_ref x))\n"
+ " (expression vec2 - (constant vec2 (1)) (var_ref x))))))))\n"
+ "\n"
+ " (signature vec3\n"
+ " (parameters\n"
+ " (declare (in) vec3 x))\n"
+ " ((return (expression vec3 * (constant vec3 (0.5))\n"
+ " (expression vec3 log\n"
+ " (expression vec3 /\n"
+ " (expression vec3 + (constant vec3 (1)) (var_ref x))\n"
+ " (expression vec3 - (constant vec3 (1)) (var_ref x))))))))\n"
+ "\n"
+ " (signature vec4\n"
+ " (parameters\n"
+ " (declare (in) vec4 x))\n"
+ " ((return (expression vec4 * (constant vec4 (0.5))\n"
+ " (expression vec4 log\n"
+ " (expression vec4 /\n"
+ " (expression vec4 + (constant vec4 (1)) (var_ref x))\n"
+ " (expression vec4 - (constant vec4 (1)) (var_ref x))))))))\n"
+ "))\n"
+ ""
+;
static const char builtin_ceil[] =
"((function ceil\n"
" (signature float\n"
@@ -641,9 +714,11 @@ static const char builtin_cross[] =
"((function cross\n"
" (signature vec3\n"
" (parameters\n"
- " (declare (in) vec3 arg0)\n"
- " (declare (in) vec3 arg1))\n"
- " ((return (expression vec3 cross (var_ref arg0) (var_ref arg1)))))\n"
+ " (declare (in) vec3 a)\n"
+ " (declare (in) vec3 b))\n"
+ " ((return (expression vec3 -\n"
+ " (expression vec3 * (swiz yzx (var_ref a)) (swiz zxy (var_ref b)))\n"
+ " (expression vec3 * (swiz zxy (var_ref a)) (swiz yzx (var_ref b)))))))\n"
"))\n"
""
;
@@ -12940,6 +13015,9 @@ static const char prototypes_for_130_frag[] =
'(','f','u','n','c','t','i','o','n',' ','s','i','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
'(','f','u','n','c','t','i','o','n',' ','c','o','s','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
'(','f','u','n','c','t','i','o','n',' ','t','a','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','s','i','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','c','o','s','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','t','a','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
'(','f','u','n','c','t','i','o','n',' ','p','o','w',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',')',
'(','f','u','n','c','t','i','o','n',' ','e','x','p',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
'(','f','u','n','c','t','i','o','n',' ','l','o','g',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
@@ -13022,10 +13100,13 @@ static const char prototypes_for_130_frag[] =
static const char *functions_for_130_frag [] = {
builtin_abs,
builtin_acos,
+ builtin_acosh,
builtin_all,
builtin_any,
builtin_asin,
+ builtin_asinh,
builtin_atan,
+ builtin_atanh,
builtin_ceil,
builtin_clamp,
builtin_cos,
@@ -13112,3012 +13193,108 @@ static const char *functions_for_130_frag [] = {
builtin_trunc,
};
static const char prototypes_for_130_vert[] =
- "(\n"
- "(function radians\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float degrees))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 degrees))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 degrees))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 degrees))\n"
- " ()))\n"
- "(function degrees\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float radians))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 radians))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 radians))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 radians))\n"
- " ()))\n"
- "(function sin\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float angle))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 angle))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 angle))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 angle))\n"
- " ()))\n"
- "(function cos\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float angle))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 angle))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 angle))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 angle))\n"
- " ()))\n"
- "(function tan\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float angle))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 angle))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 angle))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 angle))\n"
- " ()))\n"
- "(function asin\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float angle))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 angle))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 angle))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 angle))\n"
- " ()))\n"
- "(function acos\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float angle))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 angle))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 angle))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 angle))\n"
- " ()))\n"
- "(function atan\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float y)\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 y)\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 y)\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 y)\n"
- " (declare (in) vec4 x))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float y_over_x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 y_over_x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 y_over_x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 y_over_x))\n"
- " ()))\n"
- "(function sinh\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function cosh\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function tanh\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function pow\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y))\n"
- " ()))\n"
- "(function exp\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function log\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function exp2\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function log2\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function sqrt\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function inversesqrt\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function abs\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ())\n"
- " (signature int\n"
- " (parameters\n"
- " (declare (in) int x))\n"
- " ())\n"
- " (signature ivec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x))\n"
- " ())\n"
- " (signature ivec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x))\n"
- " ()))\n"
- "(function sign\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ())\n"
- " (signature int\n"
- " (parameters\n"
- " (declare (in) int x))\n"
- " ())\n"
- " (signature ivec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x))\n"
- " ())\n"
- " (signature ivec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x))\n"
- " ()))\n"
- "(function floor\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function trunc\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function round\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function roundEven\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function ceil\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function fract\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function mod\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y))\n"
- " ()))\n"
- "(function modf\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x)\n"
- " (declare (out) float i))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (out) vec2 i))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (out) vec3 i))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (out) vec4 i))\n"
- " ()))\n"
- "(function min\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature int\n"
- " (parameters\n"
- " (declare (in) int x)\n"
- " (declare (in) int y))\n"
- " ())\n"
- " (signature ivec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) ivec2 y))\n"
- " ())\n"
- " (signature ivec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) ivec3 y))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) ivec4 y))\n"
- " ())\n"
- " (signature ivec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) int y))\n"
- " ())\n"
- " (signature ivec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) int y))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) int y))\n"
- " ())\n"
- " (signature uint\n"
- " (parameters\n"
- " (declare (in) uint x)\n"
- " (declare (in) uint y))\n"
- " ())\n"
- " (signature uvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uvec2 y))\n"
- " ())\n"
- " (signature uvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uvec3 y))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uvec4 y))\n"
- " ())\n"
- " (signature uvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uint y))\n"
- " ())\n"
- " (signature uvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uint y))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uint y))\n"
- " ()))\n"
- "(function max\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature int\n"
- " (parameters\n"
- " (declare (in) int x)\n"
- " (declare (in) int y))\n"
- " ())\n"
- " (signature ivec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) ivec2 y))\n"
- " ())\n"
- " (signature ivec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) ivec3 y))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) ivec4 y))\n"
- " ())\n"
- " (signature ivec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) int y))\n"
- " ())\n"
- " (signature ivec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) int y))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) int y))\n"
- " ())\n"
- " (signature uint\n"
- " (parameters\n"
- " (declare (in) uint x)\n"
- " (declare (in) uint y))\n"
- " ())\n"
- " (signature uvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uvec2 y))\n"
- " ())\n"
- " (signature uvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uvec3 y))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uvec4 y))\n"
- " ())\n"
- " (signature uvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uint y))\n"
- " ())\n"
- " (signature uvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uint y))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uint y))\n"
- " ()))\n"
- "(function clamp\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x)\n"
- " (declare (in) float minVal)\n"
- " (declare (in) float maxVal))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 minVal)\n"
- " (declare (in) vec2 maxVal))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 minVal)\n"
- " (declare (in) vec3 maxVal))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 minVal)\n"
- " (declare (in) vec4 maxVal))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) float minVal)\n"
- " (declare (in) float maxVal))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) float minVal)\n"
- " (declare (in) float maxVal))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) float minVal)\n"
- " (declare (in) float maxVal))\n"
- " ())\n"
- " (signature int\n"
- " (parameters\n"
- " (declare (in) int x)\n"
- " (declare (in) int minVal)\n"
- " (declare (in) int maxVal))\n"
- " ())\n"
- " (signature ivec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) ivec2 minVal)\n"
- " (declare (in) ivec2 maxVal))\n"
- " ())\n"
- " (signature ivec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) ivec3 minVal)\n"
- " (declare (in) ivec3 maxVal))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) ivec4 minVal)\n"
- " (declare (in) ivec4 maxVal))\n"
- " ())\n"
- " (signature ivec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) int minVal)\n"
- " (declare (in) int maxVal))\n"
- " ())\n"
- " (signature ivec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) int minVal)\n"
- " (declare (in) int maxVal))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) int minVal)\n"
- " (declare (in) int maxVal))\n"
- " ())\n"
- " (signature uint\n"
- " (parameters\n"
- " (declare (in) uint x)\n"
- " (declare (in) uint minVal)\n"
- " (declare (in) uint maxVal))\n"
- " ())\n"
- " (signature uvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uvec2 minVal)\n"
- " (declare (in) uvec2 maxVal))\n"
- " ())\n"
- " (signature uvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uvec3 minVal)\n"
- " (declare (in) uvec3 maxVal))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uvec4 minVal)\n"
- " (declare (in) uvec4 maxVal))\n"
- " ())\n"
- " (signature uvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uint minVal)\n"
- " (declare (in) uint maxVal))\n"
- " ())\n"
- " (signature uvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uint minVal)\n"
- " (declare (in) uint maxVal))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uint minVal)\n"
- " (declare (in) uint maxVal))\n"
- " ()))\n"
- "(function mix\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x)\n"
- " (declare (in) float y)\n"
- " (declare (in) float a))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y)\n"
- " (declare (in) vec2 a))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y)\n"
- " (declare (in) vec3 a))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y)\n"
- " (declare (in) vec4 a))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y)\n"
- " (declare (in) float a))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y)\n"
- " (declare (in) float a))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y)\n"
- " (declare (in) float a))\n"
- " ()))\n"
- "(function step\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float edge)\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 edge)\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 edge)\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 edge)\n"
- " (declare (in) vec4 x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) float edge)\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) float edge)\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) float edge)\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function smoothstep\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float edge0)\n"
- " (declare (in) float edge1)\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 edge0)\n"
- " (declare (in) vec2 edge1)\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 edge0)\n"
- " (declare (in) vec3 edge1)\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 edge0)\n"
- " (declare (in) vec4 edge1)\n"
- " (declare (in) vec4 x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) float edge0)\n"
- " (declare (in) float edge1)\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) float edge0)\n"
- " (declare (in) float edge1)\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) float edge0)\n"
- " (declare (in) float edge1)\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function length\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function distance\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float p0)\n"
- " (declare (in) float p1))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec2 p0)\n"
- " (declare (in) vec2 p1))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec3 p0)\n"
- " (declare (in) vec3 p1))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec4 p0)\n"
- " (declare (in) vec4 p1))\n"
- " ()))\n"
- "(function dot\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x)\n"
- " (declare (in) float y))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y))\n"
- " ()))\n"
- "(function cross\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ()))\n"
- "(function normalize\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function ftransform\n"
- " (signature vec4\n"
- " (parameters)\n"
- " ()))\n"
- "(function faceforward\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float N)\n"
- " (declare (in) float I)\n"
- " (declare (in) float Nref))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 N)\n"
- " (declare (in) vec2 I)\n"
- " (declare (in) vec2 Nref))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 N)\n"
- " (declare (in) vec3 I)\n"
- " (declare (in) vec3 Nref))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 N)\n"
- " (declare (in) vec4 I)\n"
- " (declare (in) vec4 Nref))\n"
- " ()))\n"
- "(function reflect\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float I)\n"
- " (declare (in) float N))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 I)\n"
- " (declare (in) vec2 N))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 I)\n"
- " (declare (in) vec3 N))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 I)\n"
- " (declare (in) vec4 N))\n"
- " ()))\n"
- "(function refract\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float I)\n"
- " (declare (in) float N)\n"
- " (declare (in) float eta))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 I)\n"
- " (declare (in) vec2 N)\n"
- " (declare (in) float eta))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 I)\n"
- " (declare (in) vec3 N)\n"
- " (declare (in) float eta))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 I)\n"
- " (declare (in) vec4 N)\n"
- " (declare (in) float eta))\n"
- " ()))\n"
- "(function matrixCompMult\n"
- " (signature mat2\n"
- " (parameters\n"
- " (declare (in) mat2 x)\n"
- " (declare (in) mat2 y))\n"
- " ())\n"
- " (signature mat3\n"
- " (parameters\n"
- " (declare (in) mat3 x)\n"
- " (declare (in) mat3 y))\n"
- " ())\n"
- " (signature mat4\n"
- " (parameters\n"
- " (declare (in) mat4 x)\n"
- " (declare (in) mat4 y))\n"
- " ())\n"
- " (signature mat2x3\n"
- " (parameters\n"
- " (declare (in) mat2x3 x)\n"
- " (declare (in) mat2x3 y))\n"
- " ())\n"
- " (signature mat2x4\n"
- " (parameters\n"
- " (declare (in) mat2x4 x)\n"
- " (declare (in) mat2x4 y))\n"
- " ())\n"
- " (signature mat3x2\n"
- " (parameters\n"
- " (declare (in) mat3x2 x)\n"
- " (declare (in) mat3x2 y))\n"
- " ())\n"
- " (signature mat3x4\n"
- " (parameters\n"
- " (declare (in) mat3x4 x)\n"
- " (declare (in) mat3x4 y))\n"
- " ())\n"
- " (signature mat4x2\n"
- " (parameters\n"
- " (declare (in) mat4x2 x)\n"
- " (declare (in) mat4x2 y))\n"
- " ())\n"
- " (signature mat4x3\n"
- " (parameters\n"
- " (declare (in) mat4x3 x)\n"
- " (declare (in) mat4x3 y))\n"
- " ()))\n"
- "(function outerProduct\n"
- " (signature mat2\n"
- " (parameters\n"
- " (declare (in) vec2 c)\n"
- " (declare (in) vec2 r))\n"
- " ())\n"
- " (signature mat3\n"
- " (parameters\n"
- " (declare (in) vec3 c)\n"
- " (declare (in) vec3 r))\n"
- " ())\n"
- " (signature mat4\n"
- " (parameters\n"
- " (declare (in) vec4 c)\n"
- " (declare (in) vec4 r))\n"
- " ())\n"
- " (signature mat2x3\n"
- " (parameters\n"
- " (declare (in) vec3 c)\n"
- " (declare (in) vec2 r))\n"
- " ())\n"
- " (signature mat3x2\n"
- " (parameters\n"
- " (declare (in) vec2 c)\n"
- " (declare (in) vec3 r))\n"
- " ())\n"
- " (signature mat2x4\n"
- " (parameters\n"
- " (declare (in) vec4 c)\n"
- " (declare (in) vec2 r))\n"
- " ())\n"
- " (signature mat4x2\n"
- " (parameters\n"
- " (declare (in) vec2 c)\n"
- " (declare (in) vec4 r))\n"
- " ())\n"
- " (signature mat3x4\n"
- " (parameters\n"
- " (declare (in) vec4 c)\n"
- " (declare (in) vec3 r))\n"
- " ())\n"
- " (signature mat4x3\n"
- " (parameters\n"
- " (declare (in) vec3 c)\n"
- " (declare (in) vec4 r))\n"
- " ()))\n"
- "(function transpose\n"
- " (signature mat2\n"
- " (parameters\n"
- " (declare (in) mat2 m))\n"
- " ())\n"
- " (signature mat3\n"
- " (parameters\n"
- " (declare (in) mat3 m))\n"
- " ())\n"
- " (signature mat4\n"
- " (parameters\n"
- " (declare (in) mat4 m))\n"
- " ())\n"
- " (signature mat2x3\n"
- " (parameters\n"
- " (declare (in) mat3x2 m))\n"
- " ())\n"
- " (signature mat3x2\n"
- " (parameters\n"
- " (declare (in) mat2x3 m))\n"
- " ())\n"
- " (signature mat2x4\n"
- " (parameters\n"
- " (declare (in) mat4x2 m))\n"
- " ())\n"
- " (signature mat4x2\n"
- " (parameters\n"
- " (declare (in) mat2x4 m))\n"
- " ())\n"
- " (signature mat3x4\n"
- " (parameters\n"
- " (declare (in) mat4x3 m))\n"
- " ())\n"
- " (signature mat4x3\n"
- " (parameters\n"
- " (declare (in) mat3x4 m))\n"
- " ()))\n"
- "(function lessThan\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) ivec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) ivec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) ivec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uvec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uvec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uvec4 y))\n"
- " ()))\n"
- "(function lessThanEqual\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) ivec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) ivec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) ivec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uvec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uvec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uvec4 y))\n"
- " ()))\n"
- "(function greaterThan\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) ivec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) ivec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) ivec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uvec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uvec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uvec4 y))\n"
- " ()))\n"
- "(function greaterThanEqual\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) ivec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) ivec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) ivec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uvec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uvec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uvec4 y))\n"
- " ()))\n"
- "(function equal\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) ivec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) ivec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) ivec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uvec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uvec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uvec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) bvec2 x)\n"
- " (declare (in) bvec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) bvec3 x)\n"
- " (declare (in) bvec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) bvec4 x)\n"
- " (declare (in) bvec4 y))\n"
- " ()))\n"
- "(function notEqual\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) vec2 x)\n"
- " (declare (in) vec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) vec3 x)\n"
- " (declare (in) vec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) vec4 x)\n"
- " (declare (in) vec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) ivec2 x)\n"
- " (declare (in) ivec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) ivec3 x)\n"
- " (declare (in) ivec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) ivec4 x)\n"
- " (declare (in) ivec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) uvec2 x)\n"
- " (declare (in) uvec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) uvec3 x)\n"
- " (declare (in) uvec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) uvec4 x)\n"
- " (declare (in) uvec4 y))\n"
- " ())\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) bvec2 x)\n"
- " (declare (in) bvec2 y))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) bvec3 x)\n"
- " (declare (in) bvec3 y))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) bvec4 x)\n"
- " (declare (in) bvec4 y))\n"
- " ()))\n"
- "(function any\n"
- " (signature bool\n"
- " (parameters\n"
- " (declare (in) bvec2 x))\n"
- " ())\n"
- " (signature bool\n"
- " (parameters\n"
- " (declare (in) bvec3 x))\n"
- " ())\n"
- " (signature bool\n"
- " (parameters\n"
- " (declare (in) bvec4 x))\n"
- " ()))\n"
- "(function all\n"
- " (signature bool\n"
- " (parameters\n"
- " (declare (in) bvec2 x))\n"
- " ())\n"
- " (signature bool\n"
- " (parameters\n"
- " (declare (in) bvec3 x))\n"
- " ())\n"
- " (signature bool\n"
- " (parameters\n"
- " (declare (in) bvec4 x))\n"
- " ()))\n"
- "(function not\n"
- " (signature bvec2\n"
- " (parameters\n"
- " (declare (in) bvec2 x))\n"
- " ())\n"
- " (signature bvec3\n"
- " (parameters\n"
- " (declare (in) bvec3 x))\n"
- " ())\n"
- " (signature bvec4\n"
- " (parameters\n"
- " (declare (in) bvec4 x))\n"
- " ()))\n"
- "(function texture\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) float P))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) float P))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) float P))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec2 P))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec2 P))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec2 P))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler3D sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler3D sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) samplerCube sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isamplerCube sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usamplerCube sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) samplerCubeShadow sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1DArray sampler)\n"
- " (declare (in) vec2 P))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1DArray sampler)\n"
- " (declare (in) vec2 P))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1DArray sampler)\n"
- " (declare (in) vec2 P))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2DArray sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2DArray sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2DArray sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DArrayShadow sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler2DArrayShadow sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) float P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) float P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) float P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler3D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler3D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) samplerCube sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isamplerCube sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usamplerCube sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) samplerCubeShadow sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1DArray sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1DArray sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1DArray sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2DArray sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2DArray sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2DArray sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DArrayShadow sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function textureProj\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec2 P))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) vec2 P))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) vec2 P))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec3 P))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler3D sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler3D sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec4 P))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler3D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler3D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function textureLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) float P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) float P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) float P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler3D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler3D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) samplerCube sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isamplerCube sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usamplerCube sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1DArray sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1DArray sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1DArray sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2DArray sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2DArray sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2DArray sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DArrayShadow sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function texelFetch\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) int P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) int P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) int P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) ivec2 P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) ivec2 P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) ivec2 P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) ivec3 P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler3D sampler)\n"
- " (declare (in) ivec3 P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler3D sampler)\n"
- " (declare (in) ivec3 P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1DArray sampler)\n"
- " (declare (in) ivec2 P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1DArray sampler)\n"
- " (declare (in) ivec2 P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1DArray sampler)\n"
- " (declare (in) ivec2 P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2DArray sampler)\n"
- " (declare (in) ivec3 P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2DArray sampler)\n"
- " (declare (in) ivec3 P)\n"
- " (declare (in) int lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2DArray sampler)\n"
- " (declare (in) ivec3 P)\n"
- " (declare (in) int lod))\n"
- " ()))\n"
- "(function textureProjLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler3D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler3D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function textureGrad\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) float P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) float P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) float P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec3 dPdx)\n"
- " (declare (in) vec3 dPdy))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler3D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec3 dPdx)\n"
- " (declare (in) vec3 dPdy))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler3D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec3 dPdx)\n"
- " (declare (in) vec3 dPdy))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) samplerCube sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec3 dPdx)\n"
- " (declare (in) vec3 dPdy))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isamplerCube sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec3 dPdx)\n"
- " (declare (in) vec3 dPdy))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usamplerCube sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec3 dPdx)\n"
- " (declare (in) vec3 dPdy))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) samplerCubeShadow sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) vec3 dPdx)\n"
- " (declare (in) vec3 dPdy))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1DArray sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1DArray sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1DArray sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2DArray sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2DArray sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2DArray sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DArrayShadow sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler2DArrayShadow sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ()))\n"
- "(function textureProjGrad\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) vec2 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler1D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler1D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec3 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler2D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler2D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) vec3 dPdx)\n"
- " (declare (in) vec3 dPdy))\n"
- " ())\n"
- " (signature ivec4\n"
- " (parameters\n"
- " (declare (in) isampler3D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) vec3 dPdx)\n"
- " (declare (in) vec3 dPdy))\n"
- " ())\n"
- " (signature uvec4\n"
- " (parameters\n"
- " (declare (in) usampler3D sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) vec3 dPdx)\n"
- " (declare (in) vec3 dPdy))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) float dPdx)\n"
- " (declare (in) float dPdy))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec4 P)\n"
- " (declare (in) vec2 dPdx)\n"
- " (declare (in) vec2 dPdy))\n"
- " ()))\n"
- "(function texture1D\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) float coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) float coord)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function texture1DProj\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec2 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec4 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec2 coord)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec4 coord)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function texture1DLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) float coord)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function texture1DProjLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec2 coord)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1D sampler)\n"
- " (declare (in) vec4 coord)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function texture2D\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec2 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec2 coord)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function texture2DProj\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec3 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec4 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec3 coord)\n"
- " (declare (in) float bias))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec4 coord)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function texture2DLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec2 coord)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function texture2DProjLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec3 coord)\n"
- " (declare (in) float lod))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2D sampler)\n"
- " (declare (in) vec4 coord)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function texture3D\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec3 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec3 coord)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function texture3DProj\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec4 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec4 coord)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function texture3DLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec3 coord)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function texture3DProjLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler3D sampler)\n"
- " (declare (in) vec4 coord)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function textureCube\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) samplerCube sampler)\n"
- " (declare (in) vec3 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) samplerCube sampler)\n"
- " (declare (in) vec3 coord)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function textureCubeLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) samplerCube sampler)\n"
- " (declare (in) vec3 coord)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function shadow1D\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec3 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec3 coord)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function shadow2D\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec3 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec3 coord)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function shadow1DProj\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec4 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec4 coord)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function shadow2DProj\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec4 coord))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec4 coord)\n"
- " (declare (in) float bias))\n"
- " ()))\n"
- "(function shadow1DLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec3 coord)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function shadow2DLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec3 coord)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function shadow1DProjLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler1DShadow sampler)\n"
- " (declare (in) vec4 coord)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function shadow2DProjLod\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) sampler2DShadow sampler)\n"
- " (declare (in) vec4 coord)\n"
- " (declare (in) float lod))\n"
- " ()))\n"
- "(function noise1\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature float\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function noise2\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec2\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function noise3\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec3\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ()))\n"
- "(function noise4\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) float x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec2 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec3 x))\n"
- " ())\n"
- " (signature vec4\n"
- " (parameters\n"
- " (declare (in) vec4 x))\n"
- " ())))"
-;
+{'(',
+'(','f','u','n','c','t','i','o','n',' ','r','a','d','i','a','n','s',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','e','g','r','e','e','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','e','g','r','e','e','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','e','g','r','e','e','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','d','e','g','r','e','e','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','d','e','g','r','e','e','s',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','r','a','d','i','a','n','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','r','a','d','i','a','n','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','r','a','d','i','a','n','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','r','a','d','i','a','n','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','i','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a','n','g','l','e',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','c','o','s',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a','n','g','l','e',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','a','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a','n','g','l','e',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','s','i','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a','n','g','l','e',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','c','o','s',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a','n','g','l','e',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a','n','g','l','e',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','t','a','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y','_','o','v','e','r','_','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y','_','o','v','e','r','_','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y','_','o','v','e','r','_','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y','_','o','v','e','r','_','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','i','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','c','o','s','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','a','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','s','i','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','c','o','s','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','t','a','n','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','p','o','w',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','e','x','p',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','l','o','g',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','e','x','p','2',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','l','o','g','2',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','q','r','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','i','n','v','e','r','s','e','s','q','r','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','b','s',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','i','g','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','f','l','o','o','r',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','r','u','n','c',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','r','o','u','n','d',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','r','o','u','n','d','E','v','e','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','c','e','i','l',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','f','r','a','c','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','m','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','m','o','d','f',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','o','u','t',')',' ','f','l','o','a','t',' ','i',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','o','u','t',')',' ','v','e','c','2',' ','i',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','o','u','t',')',' ','v','e','c','3',' ','i',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','o','u','t',')',' ','v','e','c','4',' ','i',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','m','i','n',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','m','a','x',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','c','l','a','m','p',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','i','n','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','i','n','V','a','l',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','i','n','t',' ','m','a','x','V','a','l',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','m','i','x',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','a',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','t','e','p',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','m','o','o','t','h','s','t','e','p',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','d','g','e','1',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','l','e','n','g','t','h',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','d','i','s','t','a','n','c','e',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','p','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','p','1',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','p','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','p','1',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','p','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','p','1',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','p','0',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','p','1',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','d','o','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','c','r','o','s','s',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','n','o','r','m','a','l','i','z','e',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','f','t','r','a','n','s','f','o','r','m',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','f','a','c','e','f','o','r','w','a','r','d',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','N','r','e','f',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','N','r','e','f',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','N','r','e','f',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','N','r','e','f',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','r','e','f','l','e','c','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','N',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','N',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','N',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','N',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','r','e','f','r','a','c','t',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','t','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','t','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','t','a',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','I',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','N',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','e','t','a',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','m','a','t','r','i','x','C','o','m','p','M','u','l','t',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','3',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','o','u','t','e','r','P','r','o','d','u','c','t',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','r',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','r',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','r','a','n','s','p','o','s','e',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','2',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','3',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','2','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','2',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','2','x','4',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','3','x','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','4','x','3',' ','m',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','m','a','t','4','x','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','m','a','t','3','x','4',' ','m',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','l','e','s','s','T','h','a','n',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','l','e','s','s','T','h','a','n','E','q','u','a','l',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','g','r','e','a','t','e','r','T','h','a','n',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','g','r','e','a','t','e','r','T','h','a','n','E','q','u','a','l',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','e','q','u','a','l',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','n','o','t','E','q','u','a','l',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','v','e','c','4',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','n','y',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','a','l','l',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','o','o','l',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','n','o','t',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','b','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','b','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','e','l','F','e','t','c','h',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','n','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','G','r','a','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D','A','r','r','a','y',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','A','r','r','a','y','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','P','r','o','j','G','r','a','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','i','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','i','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','u','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','u','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','d','P','d','y',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','P',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','x',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','d','P','d','y',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','1','D',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','1','D','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','1','D','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','1','D','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','2','D',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','2','D','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','2','D','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','2','D','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','3','D',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','3','D','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','3','D','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','3','D','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','3','D',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','C','u','b','e',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','t','e','x','t','u','r','e','C','u','b','e','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','C','u','b','e',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','1','D',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','2','D',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','1','D','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','2','D','P','r','o','j',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','b','i','a','s',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','1','D','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','2','D','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','1','D','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','1','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','s','h','a','d','o','w','2','D','P','r','o','j','L','o','d',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','s','a','m','p','l','e','r','2','D','S','h','a','d','o','w',' ','s','a','m','p','l','e','r',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','c','o','o','r','d',')',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','l','o','d',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','n','o','i','s','e','1',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','f','l','o','a','t',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','n','o','i','s','e','2',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','2',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','n','o','i','s','e','3',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','3',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',
+'(','f','u','n','c','t','i','o','n',' ','n','o','i','s','e','4',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','f','l','o','a','t',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','2',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','3',' ','x',')',')',' ','(',')',')',' ','(','s','i','g','n','a','t','u','r','e',' ','v','e','c','4',' ','(','p','a','r','a','m','e','t','e','r','s',' ','(','d','e','c','l','a','r','e',' ','(','i','n',')',' ','v','e','c','4',' ','x',')',')',' ','(',')',')',')',')'} ;
static const char *functions_for_130_vert [] = {
builtin_abs,
builtin_acos,
+ builtin_acosh,
builtin_all,
builtin_any,
builtin_asin,
+ builtin_asinh,
builtin_atan,
+ builtin_atanh,
builtin_ceil,
builtin_clamp,
builtin_cos,
diff --git a/src/glsl/builtin_types.h b/src/glsl/builtin_types.h
index 7175e08afb..443ae1606e 100644
--- a/src/glsl/builtin_types.h
+++ b/src/glsl/builtin_types.h
@@ -275,9 +275,9 @@ const glsl_type glsl_type::builtin_ARB_texture_rectangle_types[] = {
const glsl_type glsl_type::builtin_EXT_texture_array_types[] = {
glsl_type(GL_SAMPLER_1D_ARRAY,
GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT, "sampler1DArray"),
- glsl_type(GL_SAMPLER_1D_ARRAY_SHADOW,
- GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT, "sampler2DArray"),
glsl_type(GL_SAMPLER_2D_ARRAY,
+ GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT, "sampler2DArray"),
+ glsl_type(GL_SAMPLER_1D_ARRAY_SHADOW,
GLSL_SAMPLER_DIM_1D, 1, 1, GLSL_TYPE_FLOAT, "sampler1DArrayShadow"),
glsl_type(GL_SAMPLER_2D_ARRAY_SHADOW,
GLSL_SAMPLER_DIM_2D, 1, 1, GLSL_TYPE_FLOAT, "sampler2DArrayShadow"),
diff --git a/src/glsl/builtins/ir/acosh b/src/glsl/builtins/ir/acosh
new file mode 100644
index 0000000000..5518e75753
--- /dev/null
+++ b/src/glsl/builtins/ir/acosh
@@ -0,0 +1,21 @@
+((function acosh
+ (signature float
+ (parameters
+ (declare (in) float x))
+ ((return (expression float log (expression float + (var_ref x) (expression float sqrt (expression float - (expression float * (var_ref x) (var_ref x)) (constant float (1)))))))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 x))
+ ((return (expression vec2 log (expression vec2 + (var_ref x) (expression vec2 sqrt (expression vec2 - (expression vec2 * (var_ref x) (var_ref x)) (constant vec2 (1)))))))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 x))
+ ((return (expression vec3 log (expression vec3 + (var_ref x) (expression vec3 sqrt (expression vec3 - (expression vec3 * (var_ref x) (var_ref x)) (constant vec3 (1)))))))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 x))
+ ((return (expression vec4 log (expression vec4 + (var_ref x) (expression vec4 sqrt (expression vec4 - (expression vec4 * (var_ref x) (var_ref x)) (constant vec4 (1)))))))))
+))
diff --git a/src/glsl/builtins/ir/asinh b/src/glsl/builtins/ir/asinh
new file mode 100644
index 0000000000..cdc2c20e76
--- /dev/null
+++ b/src/glsl/builtins/ir/asinh
@@ -0,0 +1,21 @@
+((function asinh
+ (signature float
+ (parameters
+ (declare (in) float x))
+ ((return (expression float log (expression float + (var_ref x) (expression float sqrt (expression float + (expression float * (var_ref x) (var_ref x)) (constant float (1)))))))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 x))
+ ((return (expression vec2 log (expression vec2 + (var_ref x) (expression vec2 sqrt (expression vec2 + (expression vec2 * (var_ref x) (var_ref x)) (constant vec2 (1)))))))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 x))
+ ((return (expression vec3 log (expression vec3 + (var_ref x) (expression vec3 sqrt (expression vec3 + (expression vec3 * (var_ref x) (var_ref x)) (constant vec3 (1)))))))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 x))
+ ((return (expression vec4 log (expression vec4 + (var_ref x) (expression vec4 sqrt (expression vec4 + (expression vec4 * (var_ref x) (var_ref x)) (constant vec4 (1)))))))))
+))
diff --git a/src/glsl/builtins/ir/atan b/src/glsl/builtins/ir/atan
index 6dc99d74d3..3f97e0d46f 100644
--- a/src/glsl/builtins/ir/atan
+++ b/src/glsl/builtins/ir/atan
@@ -1,14 +1,14 @@
((function atan
(signature float
(parameters
- (declare (in) float x))
+ (declare (in) float y_over_x))
((return (call asin ((expression float *
- (var_ref x)
+ (var_ref y_over_x)
(expression float rsq
(expression float +
(expression float *
- (var_ref x)
- (var_ref x))
+ (var_ref y_over_x)
+ (var_ref y_over_x))
(constant float (1.0))))))))))
(signature vec2
@@ -54,30 +54,15 @@
)
(
(declare () float r)
- (declare ( ) float abs_retval)
- (assign (constant bool (1)) (x) (var_ref abs_retval) (call abs ((var_ref x) ))
-)
- (if (expression bool > (var_ref abs_retval) (constant float (0.000100)) ) (
- (declare ( ) float atan_retval)
- (assign (constant bool (1)) (x) (var_ref atan_retval) (call atan ((expression float / (var_ref y) (var_ref x) ) ))
-)
- (assign (constant bool (1)) (x) (var_ref r) (var_ref atan_retval) )
+ (if (expression bool > (expression float abs (var_ref x)) (constant float (0.000100))) (
+ (assign (constant bool (1)) (x) (var_ref r) (call atan ((expression float / (var_ref y) (var_ref x)))))
(if (expression bool < (var_ref x) (constant float (0.000000)) ) (
- (if (expression bool >= (var_ref y) (constant float (0.000000)) ) (
- (declare ( ) float assignment_tmp)
- (assign (constant bool (1)) (x) (var_ref assignment_tmp) (expression float + (var_ref r) (constant float (3.141593)) ) )
- (assign (constant bool (1)) (x) (var_ref r) (var_ref assignment_tmp) )
- )
- (
- (declare ( ) float assignment_tmp)
- (assign (constant bool (1)) (x) (var_ref assignment_tmp) (expression float - (var_ref r) (constant float (3.141593)) ) )
- (assign (constant bool (1)) (x) (var_ref r) (var_ref assignment_tmp) )
- ))
-
+ (if (expression bool >= (var_ref y) (constant float (0.000000)) )
+ ((assign (constant bool (1)) (x) (var_ref r) (expression float + (var_ref r) (constant float (3.141593)))))
+ ((assign (constant bool (1)) (x) (var_ref r) (expression float - (var_ref r) (constant float (3.141593))))))
)
(
))
-
)
(
(declare () float sgn)
diff --git a/src/glsl/builtins/ir/atanh b/src/glsl/builtins/ir/atanh
new file mode 100644
index 0000000000..5559e97406
--- /dev/null
+++ b/src/glsl/builtins/ir/atanh
@@ -0,0 +1,37 @@
+((function atanh
+ (signature float
+ (parameters
+ (declare (in) float x))
+ ((return (expression float * (constant float (0.5))
+ (expression float log
+ (expression float /
+ (expression float + (constant float (1)) (var_ref x))
+ (expression float - (constant float (1)) (var_ref x))))))))
+
+ (signature vec2
+ (parameters
+ (declare (in) vec2 x))
+ ((return (expression vec2 * (constant vec2 (0.5))
+ (expression vec2 log
+ (expression vec2 /
+ (expression vec2 + (constant vec2 (1)) (var_ref x))
+ (expression vec2 - (constant vec2 (1)) (var_ref x))))))))
+
+ (signature vec3
+ (parameters
+ (declare (in) vec3 x))
+ ((return (expression vec3 * (constant vec3 (0.5))
+ (expression vec3 log
+ (expression vec3 /
+ (expression vec3 + (constant vec3 (1)) (var_ref x))
+ (expression vec3 - (constant vec3 (1)) (var_ref x))))))))
+
+ (signature vec4
+ (parameters
+ (declare (in) vec4 x))
+ ((return (expression vec4 * (constant vec4 (0.5))
+ (expression vec4 log
+ (expression vec4 /
+ (expression vec4 + (constant vec4 (1)) (var_ref x))
+ (expression vec4 - (constant vec4 (1)) (var_ref x))))))))
+))
diff --git a/src/glsl/builtins/ir/cross b/src/glsl/builtins/ir/cross
index 24717a2183..02991fe422 100644
--- a/src/glsl/builtins/ir/cross
+++ b/src/glsl/builtins/ir/cross
@@ -1,7 +1,9 @@
((function cross
(signature vec3
(parameters
- (declare (in) vec3 arg0)
- (declare (in) vec3 arg1))
- ((return (expression vec3 cross (var_ref arg0) (var_ref arg1)))))
+ (declare (in) vec3 a)
+ (declare (in) vec3 b))
+ ((return (expression vec3 -
+ (expression vec3 * (swiz yzx (var_ref a)) (swiz zxy (var_ref b)))
+ (expression vec3 * (swiz zxy (var_ref a)) (swiz yzx (var_ref b)))))))
))
diff --git a/src/glsl/builtins/profiles/130.frag b/src/glsl/builtins/profiles/130.frag
index 0d860eb9ed..329116f2a2 100644
--- a/src/glsl/builtins/profiles/130.frag
+++ b/src/glsl/builtins/profiles/130.frag
@@ -62,7 +62,6 @@ vec2 tanh(vec2 x);
vec3 tanh(vec3 x);
vec4 tanh(vec4 x);
-#if 0
float asinh(float x);
vec2 asinh(vec2 x);
vec3 asinh(vec3 x);
@@ -77,7 +76,6 @@ float atanh(float x);
vec2 atanh(vec2 x);
vec3 atanh(vec3 x);
vec4 atanh(vec4 x);
-#endif
/*
* 8.2 - Exponential Functions
diff --git a/src/glsl/builtins/profiles/130.vert b/src/glsl/builtins/profiles/130.vert
index 2fd44dce8c..1c212ebb3c 100644
--- a/src/glsl/builtins/profiles/130.vert
+++ b/src/glsl/builtins/profiles/130.vert
@@ -62,7 +62,6 @@ vec2 tanh(vec2 x);
vec3 tanh(vec3 x);
vec4 tanh(vec4 x);
-#if 0
float asinh(float x);
vec2 asinh(vec2 x);
vec3 asinh(vec3 x);
@@ -77,7 +76,6 @@ float atanh(float x);
vec2 atanh(vec2 x);
vec3 atanh(vec3 x);
vec4 atanh(vec4 x);
-#endif
/*
* 8.2 - Exponential Functions
diff --git a/src/glsl/builtins/tools/generate_builtins.py b/src/glsl/builtins/tools/generate_builtins.py
index 9bde17157a..1f1056ea09 100755
--- a/src/glsl/builtins/tools/generate_builtins.py
+++ b/src/glsl/builtins/tools/generate_builtins.py
@@ -29,12 +29,12 @@ def stringify(s):
# rather than actual string literals.
if len(s) >= 65535:
#t = "/* Warning: length " + repr(len(s)) + " too large */\n"
- t = ""
+ t = ""
for c in re.sub('\s\s+', ' ', s):
if c == '\n':
- t += '\n'
+ t += '\n'
else:
- t += "'" + c + "',"
+ t += "'" + c + "',"
return '{' + t[:-1] + '}'
t = s.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n"\n "')
diff --git a/src/glsl/glcpp/glcpp-lex.c b/src/glsl/glcpp/glcpp-lex.c
index af8f07419a..156af3008c 100644
--- a/src/glsl/glcpp/glcpp-lex.c
+++ b/src/glsl/glcpp/glcpp-lex.c
@@ -795,10 +795,6 @@ int glcpp_get_lineno (yyscan_t yyscanner );
void glcpp_set_lineno (int line_number ,yyscan_t yyscanner );
-int glcpp_get_column (yyscan_t yyscanner );
-
-void glcpp_set_column (int column_no ,yyscan_t yyscanner );
-
YYSTYPE * glcpp_get_lval (yyscan_t yyscanner );
void glcpp_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
@@ -958,7 +954,7 @@ YY_DECL
/* Single-line comments */
-#line 962 "glcpp/glcpp-lex.c"
+#line 958 "glcpp/glcpp-lex.c"
yylval = yylval_param;
@@ -1475,7 +1471,7 @@ YY_RULE_SETUP
#line 319 "glcpp/glcpp-lex.l"
ECHO;
YY_BREAK
-#line 1479 "glcpp/glcpp-lex.c"
+#line 1475 "glcpp/glcpp-lex.c"
case YY_STATE_EOF(DONE):
case YY_STATE_EOF(COMMENT):
case YY_STATE_EOF(UNREACHABLE):
diff --git a/src/glsl/glcpp/glcpp-parse.c b/src/glsl/glcpp/glcpp-parse.c
index 30b6fd6ef9..0cd1fe5d59 100644
--- a/src/glsl/glcpp/glcpp-parse.c
+++ b/src/glsl/glcpp/glcpp-parse.c
@@ -1,10 +1,9 @@
-
-/* A Bison parser, made by GNU Bison 2.4.1. */
+/* A Bison parser, made by GNU Bison 2.4.3. */
/* Skeleton implementation for Bison's Yacc-like parsers in C
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -46,7 +45,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "2.4.3"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -220,7 +219,7 @@ add_builtin_define(glcpp_parser_t *parser, const char *name, int value);
/* Line 189 of yacc.c */
-#line 224 "glcpp/glcpp-parse.c"
+#line 223 "glcpp/glcpp-parse.c"
/* Enabling traces. */
#ifndef YYDEBUG
@@ -308,7 +307,7 @@ typedef struct YYLTYPE
/* Line 264 of yacc.c */
-#line 312 "glcpp/glcpp-parse.c"
+#line 311 "glcpp/glcpp-parse.c"
#ifdef short
# undef short
@@ -358,7 +357,7 @@ typedef short int yytype_int16;
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -635,15 +634,15 @@ static const yytype_uint16 yyrline[] =
{
0, 188, 188, 190, 194, 197, 202, 203, 207, 210,
216, 219, 222, 225, 233, 252, 262, 267, 272, 291,
- 306, 309, 312, 325, 329, 338, 343, 344, 347, 350,
- 353, 356, 359, 362, 365, 368, 371, 374, 377, 380,
- 383, 386, 389, 392, 395, 398, 401, 404, 407, 410,
- 416, 421, 429, 430, 434, 440, 441, 444, 446, 453,
- 457, 461, 466, 472, 480, 486, 494, 498, 502, 506,
- 510, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547
+ 306, 309, 312, 333, 337, 346, 351, 352, 355, 358,
+ 361, 364, 367, 370, 373, 376, 379, 382, 385, 388,
+ 391, 394, 397, 400, 403, 406, 409, 412, 415, 418,
+ 424, 429, 437, 438, 442, 448, 449, 452, 454, 461,
+ 465, 469, 474, 480, 488, 494, 502, 506, 510, 514,
+ 518, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
+ 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
+ 554, 555
};
#endif
@@ -946,9 +945,18 @@ static const yytype_uint8 yystos[] =
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
+ Once GCC version 2 has supplanted version 1, this can go. However,
+ YYFAIL appears to be in use. Nevertheless, it is formally deprecated
+ in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+ discussed. */
#define YYFAIL goto yyerrlab
+#if defined YYFAIL
+ /* This is here to suppress warnings from the GCC cpp's
+ -Wunused-macros. Normally we don't worry about that warning, but
+ some users do, and we want to make it easy for users to remove
+ YYFAIL uses, which will produce warnings from Bison 2.5. */
+#endif
#define YYRECOVERING() (!!yyerrstatus)
@@ -1005,7 +1013,7 @@ while (YYID (0))
we won't break user code: when these are the locations we know. */
#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
# define YY_LOCATION_PRINT(File, Loc) \
fprintf (File, "%d.%d-%d.%d", \
(Loc).first_line, (Loc).first_column, \
@@ -1547,7 +1555,7 @@ YYLTYPE yylloc;
YYLTYPE *yylsp;
/* The locations where the error started and ended. */
- YYLTYPE yyerror_range[2];
+ YYLTYPE yyerror_range[3];
YYSIZE_T yystacksize;
@@ -1594,7 +1602,7 @@ YYLTYPE yylloc;
yyvsp = yyvs;
yylsp = yyls;
-#if YYLTYPE_IS_TRIVIAL
+#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
/* Initialize the default location before parsing starts. */
yylloc.first_line = yylloc.last_line = 1;
yylloc.first_column = yylloc.last_column = 1;
@@ -1602,7 +1610,7 @@ YYLTYPE yylloc;
/* User initialization code. */
-/* Line 1242 of yacc.c */
+/* Line 1251 of yacc.c */
#line 155 "glcpp/glcpp-parse.y"
{
yylloc.first_line = 1;
@@ -1612,8 +1620,8 @@ YYLTYPE yylloc;
yylloc.source = 0;
}
-/* Line 1242 of yacc.c */
-#line 1617 "glcpp/glcpp-parse.c"
+/* Line 1251 of yacc.c */
+#line 1625 "glcpp/glcpp-parse.c"
yylsp[0] = yylloc;
goto yysetstate;
@@ -1800,7 +1808,7 @@ yyreduce:
{
case 4:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 194 "glcpp/glcpp-parse.y"
{
glcpp_print(parser->output, "\n");
@@ -1809,7 +1817,7 @@ yyreduce:
case 5:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 197 "glcpp/glcpp-parse.y"
{
_glcpp_parser_print_expanded_token_list (parser, (yyvsp[(1) - (1)].token_list));
@@ -1820,7 +1828,7 @@ yyreduce:
case 8:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 207 "glcpp/glcpp-parse.y"
{
_glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (3)]), (yyvsp[(2) - (3)].ival));
@@ -1829,7 +1837,7 @@ yyreduce:
case 9:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 210 "glcpp/glcpp-parse.y"
{
_glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (3)]), "elif", (yyvsp[(2) - (3)].ival));
@@ -1838,7 +1846,7 @@ yyreduce:
case 10:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 216 "glcpp/glcpp-parse.y"
{
_define_object_macro (parser, & (yylsp[(2) - (4)]), (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].token_list));
@@ -1847,7 +1855,7 @@ yyreduce:
case 11:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 219 "glcpp/glcpp-parse.y"
{
_define_function_macro (parser, & (yylsp[(2) - (6)]), (yyvsp[(2) - (6)].str), NULL, (yyvsp[(5) - (6)].token_list));
@@ -1856,7 +1864,7 @@ yyreduce:
case 12:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 222 "glcpp/glcpp-parse.y"
{
_define_function_macro (parser, & (yylsp[(2) - (7)]), (yyvsp[(2) - (7)].str), (yyvsp[(4) - (7)].string_list), (yyvsp[(6) - (7)].token_list));
@@ -1865,7 +1873,7 @@ yyreduce:
case 13:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 225 "glcpp/glcpp-parse.y"
{
macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (3)].str));
@@ -1879,7 +1887,7 @@ yyreduce:
case 14:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 233 "glcpp/glcpp-parse.y"
{
/* Be careful to only evaluate the 'if' expression if
@@ -1904,7 +1912,7 @@ yyreduce:
case 15:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 252 "glcpp/glcpp-parse.y"
{
/* #if without an expression is only an error if we
@@ -1920,7 +1928,7 @@ yyreduce:
case 16:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 262 "glcpp/glcpp-parse.y"
{
macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str));
@@ -1931,7 +1939,7 @@ yyreduce:
case 17:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 267 "glcpp/glcpp-parse.y"
{
macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str));
@@ -1942,7 +1950,7 @@ yyreduce:
case 18:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 272 "glcpp/glcpp-parse.y"
{
/* Be careful to only evaluate the 'elif' expression
@@ -1967,7 +1975,7 @@ yyreduce:
case 19:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 291 "glcpp/glcpp-parse.y"
{
/* #elif without an expression is an error unless we
@@ -1988,7 +1996,7 @@ yyreduce:
case 20:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 306 "glcpp/glcpp-parse.y"
{
_glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (2)]), "else", 1);
@@ -1997,7 +2005,7 @@ yyreduce:
case 21:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 309 "glcpp/glcpp-parse.y"
{
_glcpp_parser_skip_stack_pop (parser, & (yylsp[(1) - (2)]));
@@ -2006,7 +2014,7 @@ yyreduce:
case 22:
-/* Line 1455 of yacc.c */
+/* Line 1464 of yacc.c */
#line 312 "glcpp/glcpp-parse.y"
{
macro_t *macro = hash_table_find (parser->defines, "__VERSION__");
@@ -2019,14 +2027,22 @@ yyreduce:
if ((yyvsp[(2) - (3)].ival) == 100)
add_builtin_define (parser, "GL_ES", 1);
+ /* Currently, all ES2 implementations support highp in the
+ * fragment shader, so we always define this macro in ES2.
+ * If we ever get a driver that doesn't support highp, we'll
+ * need to add a flag to the gl_context and check that here.
+ */
+ if ((yyvsp[(2) - (3)].ival) >= 130 || (yyvsp[(2) - (3)].ival) == 100)
+ add_builtin_define (parser, "GL_FRAGMENT_PRECISION_HIGH", 1);
+
glcpp_printf(parser->output, "#version %" PRIiMAX, (yyvsp[(2) - (3)].ival));
;}
break;
case 24:
-/* Line 1455 of yacc.c */
-#line 329 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 337 "glcpp/glcpp-parse.y"
{
if (strlen ((yyvsp[(1) - (1)].str)) >= 3 && strncmp ((yyvsp[(1) - (1)].str), "0x", 2) == 0) {
(yyval.ival) = strtoll ((yyvsp[(1) - (1)].str) + 2, NULL, 16);
@@ -2040,8 +2056,8 @@ yyreduce:
case 25:
-/* Line 1455 of yacc.c */
-#line 338 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 346 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (1)].ival);
;}
@@ -2049,8 +2065,8 @@ yyreduce:
case 27:
-/* Line 1455 of yacc.c */
-#line 344 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 352 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) || (yyvsp[(3) - (3)].ival);
;}
@@ -2058,8 +2074,8 @@ yyreduce:
case 28:
-/* Line 1455 of yacc.c */
-#line 347 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 355 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) && (yyvsp[(3) - (3)].ival);
;}
@@ -2067,8 +2083,8 @@ yyreduce:
case 29:
-/* Line 1455 of yacc.c */
-#line 350 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 358 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival);
;}
@@ -2076,8 +2092,8 @@ yyreduce:
case 30:
-/* Line 1455 of yacc.c */
-#line 353 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 361 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) ^ (yyvsp[(3) - (3)].ival);
;}
@@ -2085,8 +2101,8 @@ yyreduce:
case 31:
-/* Line 1455 of yacc.c */
-#line 356 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 364 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) & (yyvsp[(3) - (3)].ival);
;}
@@ -2094,8 +2110,8 @@ yyreduce:
case 32:
-/* Line 1455 of yacc.c */
-#line 359 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 367 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) != (yyvsp[(3) - (3)].ival);
;}
@@ -2103,8 +2119,8 @@ yyreduce:
case 33:
-/* Line 1455 of yacc.c */
-#line 362 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 370 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) == (yyvsp[(3) - (3)].ival);
;}
@@ -2112,8 +2128,8 @@ yyreduce:
case 34:
-/* Line 1455 of yacc.c */
-#line 365 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 373 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) >= (yyvsp[(3) - (3)].ival);
;}
@@ -2121,8 +2137,8 @@ yyreduce:
case 35:
-/* Line 1455 of yacc.c */
-#line 368 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 376 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) <= (yyvsp[(3) - (3)].ival);
;}
@@ -2130,8 +2146,8 @@ yyreduce:
case 36:
-/* Line 1455 of yacc.c */
-#line 371 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 379 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) > (yyvsp[(3) - (3)].ival);
;}
@@ -2139,8 +2155,8 @@ yyreduce:
case 37:
-/* Line 1455 of yacc.c */
-#line 374 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 382 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) < (yyvsp[(3) - (3)].ival);
;}
@@ -2148,8 +2164,8 @@ yyreduce:
case 38:
-/* Line 1455 of yacc.c */
-#line 377 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 385 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) >> (yyvsp[(3) - (3)].ival);
;}
@@ -2157,8 +2173,8 @@ yyreduce:
case 39:
-/* Line 1455 of yacc.c */
-#line 380 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 388 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) << (yyvsp[(3) - (3)].ival);
;}
@@ -2166,8 +2182,8 @@ yyreduce:
case 40:
-/* Line 1455 of yacc.c */
-#line 383 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 391 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) - (yyvsp[(3) - (3)].ival);
;}
@@ -2175,8 +2191,8 @@ yyreduce:
case 41:
-/* Line 1455 of yacc.c */
-#line 386 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 394 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) + (yyvsp[(3) - (3)].ival);
;}
@@ -2184,8 +2200,8 @@ yyreduce:
case 42:
-/* Line 1455 of yacc.c */
-#line 389 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 397 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) % (yyvsp[(3) - (3)].ival);
;}
@@ -2193,8 +2209,8 @@ yyreduce:
case 43:
-/* Line 1455 of yacc.c */
-#line 392 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 400 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) / (yyvsp[(3) - (3)].ival);
;}
@@ -2202,8 +2218,8 @@ yyreduce:
case 44:
-/* Line 1455 of yacc.c */
-#line 395 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 403 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(1) - (3)].ival) * (yyvsp[(3) - (3)].ival);
;}
@@ -2211,8 +2227,8 @@ yyreduce:
case 45:
-/* Line 1455 of yacc.c */
-#line 398 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 406 "glcpp/glcpp-parse.y"
{
(yyval.ival) = ! (yyvsp[(2) - (2)].ival);
;}
@@ -2220,8 +2236,8 @@ yyreduce:
case 46:
-/* Line 1455 of yacc.c */
-#line 401 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 409 "glcpp/glcpp-parse.y"
{
(yyval.ival) = ~ (yyvsp[(2) - (2)].ival);
;}
@@ -2229,8 +2245,8 @@ yyreduce:
case 47:
-/* Line 1455 of yacc.c */
-#line 404 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 412 "glcpp/glcpp-parse.y"
{
(yyval.ival) = - (yyvsp[(2) - (2)].ival);
;}
@@ -2238,8 +2254,8 @@ yyreduce:
case 48:
-/* Line 1455 of yacc.c */
-#line 407 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 415 "glcpp/glcpp-parse.y"
{
(yyval.ival) = + (yyvsp[(2) - (2)].ival);
;}
@@ -2247,8 +2263,8 @@ yyreduce:
case 49:
-/* Line 1455 of yacc.c */
-#line 410 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 418 "glcpp/glcpp-parse.y"
{
(yyval.ival) = (yyvsp[(2) - (3)].ival);
;}
@@ -2256,8 +2272,8 @@ yyreduce:
case 50:
-/* Line 1455 of yacc.c */
-#line 416 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 424 "glcpp/glcpp-parse.y"
{
(yyval.string_list) = _string_list_create (parser);
_string_list_append_item ((yyval.string_list), (yyvsp[(1) - (1)].str));
@@ -2267,8 +2283,8 @@ yyreduce:
case 51:
-/* Line 1455 of yacc.c */
-#line 421 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 429 "glcpp/glcpp-parse.y"
{
(yyval.string_list) = (yyvsp[(1) - (3)].string_list);
_string_list_append_item ((yyval.string_list), (yyvsp[(3) - (3)].str));
@@ -2278,15 +2294,15 @@ yyreduce:
case 52:
-/* Line 1455 of yacc.c */
-#line 429 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 437 "glcpp/glcpp-parse.y"
{ (yyval.token_list) = NULL; ;}
break;
case 54:
-/* Line 1455 of yacc.c */
-#line 434 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 442 "glcpp/glcpp-parse.y"
{
yyerror (& (yylsp[(1) - (2)]), parser, "Invalid tokens after #");
;}
@@ -2294,15 +2310,15 @@ yyreduce:
case 55:
-/* Line 1455 of yacc.c */
-#line 440 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 448 "glcpp/glcpp-parse.y"
{ (yyval.token_list) = NULL; ;}
break;
case 58:
-/* Line 1455 of yacc.c */
-#line 446 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 454 "glcpp/glcpp-parse.y"
{
glcpp_warning(&(yylsp[(1) - (1)]), parser, "extra tokens at end of directive");
;}
@@ -2310,8 +2326,8 @@ yyreduce:
case 59:
-/* Line 1455 of yacc.c */
-#line 453 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 461 "glcpp/glcpp-parse.y"
{
int v = hash_table_find (parser->defines, (yyvsp[(2) - (2)].str)) ? 1 : 0;
(yyval.token) = _token_create_ival (parser, INTEGER, v);
@@ -2320,8 +2336,8 @@ yyreduce:
case 60:
-/* Line 1455 of yacc.c */
-#line 457 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 465 "glcpp/glcpp-parse.y"
{
int v = hash_table_find (parser->defines, (yyvsp[(3) - (4)].str)) ? 1 : 0;
(yyval.token) = _token_create_ival (parser, INTEGER, v);
@@ -2330,8 +2346,8 @@ yyreduce:
case 62:
-/* Line 1455 of yacc.c */
-#line 466 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 474 "glcpp/glcpp-parse.y"
{
parser->space_tokens = 1;
(yyval.token_list) = _token_list_create (parser);
@@ -2342,8 +2358,8 @@ yyreduce:
case 63:
-/* Line 1455 of yacc.c */
-#line 472 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 480 "glcpp/glcpp-parse.y"
{
(yyval.token_list) = (yyvsp[(1) - (2)].token_list);
_token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token));
@@ -2353,8 +2369,8 @@ yyreduce:
case 64:
-/* Line 1455 of yacc.c */
-#line 480 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 488 "glcpp/glcpp-parse.y"
{
parser->space_tokens = 1;
(yyval.token_list) = _token_list_create (parser);
@@ -2365,8 +2381,8 @@ yyreduce:
case 65:
-/* Line 1455 of yacc.c */
-#line 486 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 494 "glcpp/glcpp-parse.y"
{
(yyval.token_list) = (yyvsp[(1) - (2)].token_list);
_token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token));
@@ -2376,8 +2392,8 @@ yyreduce:
case 66:
-/* Line 1455 of yacc.c */
-#line 494 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 502 "glcpp/glcpp-parse.y"
{
(yyval.token) = _token_create_str (parser, IDENTIFIER, (yyvsp[(1) - (1)].str));
(yyval.token)->location = yylloc;
@@ -2386,8 +2402,8 @@ yyreduce:
case 67:
-/* Line 1455 of yacc.c */
-#line 498 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 506 "glcpp/glcpp-parse.y"
{
(yyval.token) = _token_create_str (parser, INTEGER_STRING, (yyvsp[(1) - (1)].str));
(yyval.token)->location = yylloc;
@@ -2396,8 +2412,8 @@ yyreduce:
case 68:
-/* Line 1455 of yacc.c */
-#line 502 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 510 "glcpp/glcpp-parse.y"
{
(yyval.token) = _token_create_ival (parser, (yyvsp[(1) - (1)].ival), (yyvsp[(1) - (1)].ival));
(yyval.token)->location = yylloc;
@@ -2406,8 +2422,8 @@ yyreduce:
case 69:
-/* Line 1455 of yacc.c */
-#line 506 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 514 "glcpp/glcpp-parse.y"
{
(yyval.token) = _token_create_str (parser, OTHER, (yyvsp[(1) - (1)].str));
(yyval.token)->location = yylloc;
@@ -2416,8 +2432,8 @@ yyreduce:
case 70:
-/* Line 1455 of yacc.c */
-#line 510 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 518 "glcpp/glcpp-parse.y"
{
(yyval.token) = _token_create_ival (parser, SPACE, SPACE);
(yyval.token)->location = yylloc;
@@ -2426,225 +2442,225 @@ yyreduce:
case 71:
-/* Line 1455 of yacc.c */
-#line 517 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 525 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '['; ;}
break;
case 72:
-/* Line 1455 of yacc.c */
-#line 518 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 526 "glcpp/glcpp-parse.y"
{ (yyval.ival) = ']'; ;}
break;
case 73:
-/* Line 1455 of yacc.c */
-#line 519 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 527 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '('; ;}
break;
case 74:
-/* Line 1455 of yacc.c */
-#line 520 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 528 "glcpp/glcpp-parse.y"
{ (yyval.ival) = ')'; ;}
break;
case 75:
-/* Line 1455 of yacc.c */
-#line 521 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 529 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '{'; ;}
break;
case 76:
-/* Line 1455 of yacc.c */
-#line 522 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 530 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '}'; ;}
break;
case 77:
-/* Line 1455 of yacc.c */
-#line 523 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 531 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '.'; ;}
break;
case 78:
-/* Line 1455 of yacc.c */
-#line 524 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 532 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '&'; ;}
break;
case 79:
-/* Line 1455 of yacc.c */
-#line 525 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 533 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '*'; ;}
break;
case 80:
-/* Line 1455 of yacc.c */
-#line 526 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 534 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '+'; ;}
break;
case 81:
-/* Line 1455 of yacc.c */
-#line 527 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 535 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '-'; ;}
break;
case 82:
-/* Line 1455 of yacc.c */
-#line 528 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 536 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '~'; ;}
break;
case 83:
-/* Line 1455 of yacc.c */
-#line 529 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 537 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '!'; ;}
break;
case 84:
-/* Line 1455 of yacc.c */
-#line 530 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 538 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '/'; ;}
break;
case 85:
-/* Line 1455 of yacc.c */
-#line 531 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 539 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '%'; ;}
break;
case 86:
-/* Line 1455 of yacc.c */
-#line 532 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 540 "glcpp/glcpp-parse.y"
{ (yyval.ival) = LEFT_SHIFT; ;}
break;
case 87:
-/* Line 1455 of yacc.c */
-#line 533 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 541 "glcpp/glcpp-parse.y"
{ (yyval.ival) = RIGHT_SHIFT; ;}
break;
case 88:
-/* Line 1455 of yacc.c */
-#line 534 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 542 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '<'; ;}
break;
case 89:
-/* Line 1455 of yacc.c */
-#line 535 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 543 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '>'; ;}
break;
case 90:
-/* Line 1455 of yacc.c */
-#line 536 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 544 "glcpp/glcpp-parse.y"
{ (yyval.ival) = LESS_OR_EQUAL; ;}
break;
case 91:
-/* Line 1455 of yacc.c */
-#line 537 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 545 "glcpp/glcpp-parse.y"
{ (yyval.ival) = GREATER_OR_EQUAL; ;}
break;
case 92:
-/* Line 1455 of yacc.c */
-#line 538 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 546 "glcpp/glcpp-parse.y"
{ (yyval.ival) = EQUAL; ;}
break;
case 93:
-/* Line 1455 of yacc.c */
-#line 539 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 547 "glcpp/glcpp-parse.y"
{ (yyval.ival) = NOT_EQUAL; ;}
break;
case 94:
-/* Line 1455 of yacc.c */
-#line 540 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 548 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '^'; ;}
break;
case 95:
-/* Line 1455 of yacc.c */
-#line 541 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 549 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '|'; ;}
break;
case 96:
-/* Line 1455 of yacc.c */
-#line 542 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 550 "glcpp/glcpp-parse.y"
{ (yyval.ival) = AND; ;}
break;
case 97:
-/* Line 1455 of yacc.c */
-#line 543 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 551 "glcpp/glcpp-parse.y"
{ (yyval.ival) = OR; ;}
break;
case 98:
-/* Line 1455 of yacc.c */
-#line 544 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 552 "glcpp/glcpp-parse.y"
{ (yyval.ival) = ';'; ;}
break;
case 99:
-/* Line 1455 of yacc.c */
-#line 545 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 553 "glcpp/glcpp-parse.y"
{ (yyval.ival) = ','; ;}
break;
case 100:
-/* Line 1455 of yacc.c */
-#line 546 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 554 "glcpp/glcpp-parse.y"
{ (yyval.ival) = '='; ;}
break;
case 101:
-/* Line 1455 of yacc.c */
-#line 547 "glcpp/glcpp-parse.y"
+/* Line 1464 of yacc.c */
+#line 555 "glcpp/glcpp-parse.y"
{ (yyval.ival) = PASTE; ;}
break;
-/* Line 1455 of yacc.c */
-#line 2648 "glcpp/glcpp-parse.c"
+/* Line 1464 of yacc.c */
+#line 2664 "glcpp/glcpp-parse.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2716,7 +2732,7 @@ yyerrlab:
#endif
}
- yyerror_range[0] = yylloc;
+ yyerror_range[1] = yylloc;
if (yyerrstatus == 3)
{
@@ -2753,7 +2769,7 @@ yyerrorlab:
if (/*CONSTCOND*/ 0)
goto yyerrorlab;
- yyerror_range[0] = yylsp[1-yylen];
+ yyerror_range[1] = yylsp[1-yylen];
/* Do not reclaim the symbols of the rule which action triggered
this YYERROR. */
YYPOPSTACK (yylen);
@@ -2787,7 +2803,7 @@ yyerrlab1:
if (yyssp == yyss)
YYABORT;
- yyerror_range[0] = *yylsp;
+ yyerror_range[1] = *yylsp;
yydestruct ("Error: popping",
yystos[yystate], yyvsp, yylsp, parser);
YYPOPSTACK (1);
@@ -2797,10 +2813,10 @@ yyerrlab1:
*++yyvsp = yylval;
- yyerror_range[1] = yylloc;
+ yyerror_range[2] = yylloc;
/* Using YYLLOC is tempting, but would change the location of
the lookahead. YYLOC is available though. */
- YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
+ YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
*++yylsp = yyloc;
/* Shift the error token. */
@@ -2862,8 +2878,8 @@ yyreturn:
-/* Line 1675 of yacc.c */
-#line 550 "glcpp/glcpp-parse.y"
+/* Line 1684 of yacc.c */
+#line 558 "glcpp/glcpp-parse.y"
string_list_t *
diff --git a/src/glsl/glcpp/glcpp-parse.h b/src/glsl/glcpp/glcpp-parse.h
index 50758930e9..40556854f3 100644
--- a/src/glsl/glcpp/glcpp-parse.h
+++ b/src/glsl/glcpp/glcpp-parse.h
@@ -1,10 +1,9 @@
-
-/* A Bison parser, made by GNU Bison 2.4.1. */
+/* A Bison parser, made by GNU Bison 2.4.3. */
/* Skeleton interface for Bison's Yacc-like parsers in C
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y
index b31a18f87d..8475e08f00 100644
--- a/src/glsl/glcpp/glcpp-parse.y
+++ b/src/glsl/glcpp/glcpp-parse.y
@@ -320,6 +320,14 @@ control_line:
if ($2 == 100)
add_builtin_define (parser, "GL_ES", 1);
+ /* Currently, all ES2 implementations support highp in the
+ * fragment shader, so we always define this macro in ES2.
+ * If we ever get a driver that doesn't support highp, we'll
+ * need to add a flag to the gl_context and check that here.
+ */
+ if ($2 >= 130 || $2 == 100)
+ add_builtin_define (parser, "GL_FRAGMENT_PRECISION_HIGH", 1);
+
glcpp_printf(parser->output, "#version %" PRIiMAX, $2);
}
| HASH NEWLINE
diff --git a/src/glsl/glsl_lexer.cpp b/src/glsl/glsl_lexer.cpp
index d3bc3aa9f1..e3d0a3cfc9 100644
--- a/src/glsl/glsl_lexer.cpp
+++ b/src/glsl/glsl_lexer.cpp
@@ -54,6 +54,7 @@ typedef int flex_int32_t;
typedef unsigned char flex_uint8_t;
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
/* Limits of integral types. */
#ifndef INT8_MIN
@@ -84,8 +85,6 @@ typedef unsigned int flex_uint32_t;
#define UINT32_MAX (4294967295U)
#endif
-#endif /* ! C99 */
-
#endif /* ! FLEXINT_H */
#ifdef __cplusplus
@@ -159,15 +158,7 @@ typedef void* yyscan_t;
/* Size of default input buffer. */
#ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
#define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
#endif
/* The state buf must be large enough to hold one state per character in the main buffer.
@@ -358,8 +349,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
-#define YY_NUM_RULES 189
-#define YY_END_OF_BUFFER 190
+#define YY_NUM_RULES 209
+#define YY_END_OF_BUFFER 210
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -367,87 +358,98 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[716] =
+static yyconst flex_int16_t yy_accept[813] =
{ 0,
- 0, 0, 15, 15, 0, 0, 190, 188, 1, 20,
- 188, 188, 188, 188, 188, 188, 188, 188, 102, 100,
- 188, 188, 188, 187, 188, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 188, 1, 188, 189, 15,
- 19, 189, 18, 16, 17, 13, 12, 1, 84, 93,
- 85, 96, 90, 79, 92, 80, 99, 104, 91, 105,
- 102, 0, 0, 107, 0, 100, 88, 81, 83, 82,
- 89, 187, 97, 87, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 29, 187, 187, 187,
-
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 33, 187, 187, 60, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 98, 86, 1, 0,
- 0, 2, 0, 0, 0, 0, 15, 14, 18, 17,
- 0, 104, 103, 0, 105, 0, 106, 101, 94, 95,
- 187, 110, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 32, 187, 187, 187, 187, 187, 187,
-
- 187, 187, 187, 187, 25, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 61, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 0, 0, 0, 0, 14,
- 0, 104, 0, 103, 0, 105, 106, 187, 187, 23,
- 187, 187, 150, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 31, 113, 187, 187, 187, 187, 67, 187,
- 187, 118, 132, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 129, 153, 48, 49, 50, 187,
-
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 116,
- 108, 187, 187, 26, 187, 187, 187, 187, 187, 187,
- 45, 46, 47, 77, 187, 187, 0, 0, 0, 0,
- 0, 103, 187, 187, 27, 36, 37, 38, 187, 111,
- 187, 22, 187, 187, 187, 187, 140, 141, 142, 187,
- 109, 187, 133, 24, 143, 144, 145, 155, 137, 138,
- 139, 187, 187, 187, 62, 135, 187, 187, 39, 40,
- 41, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 130, 187, 187,
-
- 187, 187, 187, 187, 187, 187, 187, 187, 112, 187,
- 152, 42, 43, 44, 187, 187, 30, 0, 0, 0,
- 0, 159, 187, 187, 157, 187, 187, 187, 131, 126,
- 162, 187, 187, 187, 187, 187, 187, 121, 187, 187,
- 78, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 187, 187, 187, 187, 136, 117, 187, 187, 124, 35,
- 187, 187, 149, 68, 125, 76, 160, 119, 187, 187,
- 187, 187, 187, 187, 187, 0, 0, 0, 0, 187,
- 187, 187, 120, 34, 187, 187, 187, 187, 187, 187,
- 163, 164, 165, 187, 187, 187, 187, 154, 187, 187,
-
- 187, 187, 187, 187, 187, 187, 114, 187, 187, 187,
- 187, 187, 63, 187, 64, 187, 0, 0, 0, 0,
- 0, 187, 65, 28, 127, 167, 168, 169, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 122,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 115,
- 171, 172, 173, 187, 187, 134, 123, 0, 0, 6,
- 0, 0, 0, 11, 3, 21, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 166, 128, 66, 151, 187,
- 158, 156, 186, 70, 71, 72, 187, 187, 187, 187,
- 187, 187, 0, 0, 0, 0, 0, 0, 187, 187,
-
- 187, 170, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 174, 4, 0,
- 5, 0, 0, 0, 0, 0, 187, 187, 187, 187,
- 187, 187, 187, 183, 187, 187, 187, 187, 187, 187,
- 73, 187, 187, 187, 0, 0, 0, 187, 187, 184,
- 175, 187, 176, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 185, 0, 0, 177, 178, 181, 182, 69,
- 187, 146, 187, 147, 161, 179, 180, 0, 0, 187,
- 187, 187, 0, 0, 0, 74, 187, 75, 0, 0,
- 0, 187, 0, 0, 0, 187, 0, 0, 7, 0,
-
- 0, 187, 0, 8, 0, 0, 148, 0, 0, 0,
- 0, 9, 0, 10, 0
+ 0, 0, 15, 15, 0, 0, 210, 208, 1, 20,
+ 208, 208, 208, 208, 208, 208, 208, 208, 119, 117,
+ 208, 208, 208, 207, 208, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 208, 1, 208, 209, 15,
+ 19, 209, 18, 16, 17, 13, 12, 1, 101, 110,
+ 102, 113, 107, 96, 109, 97, 116, 121, 108, 122,
+ 119, 0, 0, 124, 119, 0, 117, 117, 105, 98,
+ 100, 99, 106, 207, 114, 104, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 29, 207,
+
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 207, 207, 33, 207, 207, 60, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 115,
+ 103, 1, 0, 0, 2, 0, 0, 0, 0, 15,
+ 14, 18, 17, 0, 121, 120, 0, 122, 0, 123,
+ 118, 111, 112, 207, 127, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 32, 207, 207, 207,
+
+ 207, 207, 207, 207, 207, 207, 207, 25, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 61,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 0, 0, 0, 0, 14, 0, 121, 0, 120, 0,
+ 122, 123, 118, 207, 207, 23, 207, 207, 174, 167,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 31,
+ 130, 207, 207, 207, 207, 67, 207, 207, 135, 149,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+
+ 207, 207, 146, 170, 48, 49, 50, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 133, 125, 207,
+ 207, 26, 207, 207, 207, 207, 207, 207, 207, 45,
+ 46, 47, 94, 207, 207, 0, 0, 0, 0, 0,
+ 120, 207, 207, 27, 36, 37, 38, 207, 128, 207,
+ 22, 207, 207, 207, 207, 157, 158, 159, 207, 126,
+ 207, 150, 24, 160, 161, 162, 172, 154, 155, 156,
+ 207, 207, 207, 62, 152, 207, 207, 207, 39, 40,
+ 41, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+
+ 207, 207, 207, 207, 207, 207, 207, 147, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 129, 207,
+ 207, 169, 42, 43, 44, 207, 207, 30, 0, 0,
+ 0, 0, 177, 207, 207, 175, 207, 207, 207, 148,
+ 143, 180, 207, 207, 207, 207, 207, 207, 138, 207,
+ 207, 207, 95, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 207, 207, 207, 207, 153, 134, 207, 207,
+ 141, 35, 207, 207, 166, 68, 142, 93, 178, 136,
+ 207, 207, 207, 207, 207, 207, 207, 207, 0, 0,
+ 0, 0, 207, 207, 207, 137, 34, 207, 207, 207,
+
+ 207, 207, 207, 181, 182, 183, 207, 207, 207, 207,
+ 207, 171, 207, 207, 207, 207, 207, 207, 207, 207,
+ 131, 207, 207, 207, 207, 207, 63, 207, 207, 64,
+ 207, 0, 0, 0, 0, 0, 207, 65, 28, 144,
+ 185, 186, 187, 207, 207, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 139, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 132, 189, 190, 191, 207,
+ 207, 151, 207, 140, 0, 0, 6, 0, 0, 0,
+ 11, 3, 21, 207, 207, 207, 207, 207, 207, 207,
+ 207, 207, 184, 145, 66, 207, 207, 207, 207, 168,
+
+ 207, 176, 173, 206, 70, 71, 72, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 0, 0, 0,
+ 0, 0, 0, 207, 207, 207, 188, 207, 207, 207,
+ 207, 207, 81, 82, 83, 207, 207, 207, 207, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 192, 87,
+ 88, 89, 207, 4, 0, 5, 0, 0, 0, 0,
+ 0, 207, 207, 207, 207, 207, 207, 207, 203, 207,
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 73, 207, 207, 207, 207, 207, 207, 0, 0, 0,
+ 207, 207, 204, 193, 207, 194, 207, 207, 207, 84,
+
+ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 207, 205, 207, 207, 90, 0, 0, 195, 196, 207,
+ 199, 207, 200, 207, 207, 69, 207, 207, 207, 163,
+ 207, 164, 179, 207, 197, 198, 207, 207, 0, 0,
+ 207, 207, 207, 207, 74, 207, 75, 207, 207, 207,
+ 207, 207, 0, 0, 0, 207, 207, 85, 86, 207,
+ 76, 207, 207, 77, 207, 91, 92, 0, 0, 0,
+ 207, 207, 207, 207, 207, 207, 0, 0, 0, 207,
+ 207, 207, 207, 207, 78, 0, 0, 7, 0, 0,
+ 201, 202, 207, 207, 207, 0, 8, 0, 0, 207,
+
+ 207, 165, 0, 0, 79, 80, 0, 0, 9, 0,
+ 10, 0
} ;
static yyconst flex_int32_t yy_ec[256] =
@@ -460,12 +462,12 @@ static yyconst flex_int32_t yy_ec[256] =
19, 20, 21, 21, 21, 22, 22, 23, 1, 24,
25, 26, 1, 1, 27, 28, 29, 30, 31, 32,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
- 33, 34, 35, 33, 33, 33, 33, 36, 33, 33,
- 1, 1, 1, 37, 38, 1, 39, 40, 41, 42,
+ 33, 34, 35, 33, 36, 33, 33, 37, 33, 33,
+ 1, 1, 1, 38, 39, 1, 40, 41, 42, 43,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 33, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 1, 64, 1, 1, 1, 1, 1, 1,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 33, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 1, 65, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -482,317 +484,350 @@ static yyconst flex_int32_t yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static yyconst flex_int32_t yy_meta[65] =
+static yyconst flex_int32_t yy_meta[66] =
{ 0,
1, 2, 3, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 4, 4, 4, 4, 4,
4, 5, 1, 1, 1, 1, 6, 6, 6, 6,
- 5, 5, 7, 7, 7, 8, 1, 7, 6, 6,
- 6, 6, 5, 5, 7, 7, 7, 7, 7, 7,
+ 5, 5, 7, 7, 7, 7, 8, 1, 7, 6,
+ 6, 6, 6, 5, 5, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 8, 7, 7, 1
+ 7, 8, 7, 7, 1
} ;
-static yyconst flex_int16_t yy_base[727] =
+static yyconst flex_int16_t yy_base[824] =
{ 0,
- 0, 63, 69, 0, 1083, 1082, 1084, 1087, 64, 1087,
- 1058, 1057, 126, 1056, 123, 124, 122, 1055, 138, 186,
- 121, 1054, 136, 0, 128, 122, 113, 134, 133, 133,
- 162, 1025, 151, 172, 97, 128, 136, 1019, 156, 179,
- 187, 193, 190, 211, 1030, 163, 254, 238, 1087, 189,
- 1087, 1060, 249, 1087, 0, 1087, 1087, 249, 1087, 1087,
- 1087, 1087, 1087, 1087, 1087, 1087, 1087, 230, 1087, 246,
- 221, 284, 301, 1087, 0, 0, 1049, 1087, 1087, 1087,
- 1048, 0, 1087, 1087, 1015, 1020, 1013, 1016, 1025, 1024,
- 1010, 1013, 1025, 145, 1019, 1006, 1003, 1017, 1003, 1000,
-
- 1000, 1006, 202, 233, 1000, 1011, 996, 1002, 1006, 1007,
- 0, 998, 1009, 226, 1004, 984, 168, 988, 1002, 992,
- 237, 985, 252, 998, 1000, 982, 978, 986, 983, 972,
- 981, 204, 979, 985, 980, 983, 971, 974, 243, 240,
- 980, 983, 970, 983, 261, 976, 1087, 1087, 327, 307,
- 322, 1087, 961, 974, 965, 976, 328, 0, 318, 0,
- 366, 1087, 310, 377, 1087, 327, 384, 0, 1087, 1087,
- 971, 0, 962, 966, 976, 973, 956, 955, 955, 959,
- 295, 970, 967, 967, 965, 962, 953, 960, 946, 944,
- 957, 942, 959, 0, 956, 943, 951, 948, 952, 953,
-
- 946, 943, 931, 930, 944, 947, 944, 931, 938, 928,
- 340, 934, 937, 927, 935, 923, 927, 918, 933, 923,
- 914, 933, 916, 914, 925, 914, 909, 907, 921, 906,
- 908, 905, 917, 916, 919, 900, 311, 909, 903, 913,
- 891, 349, 910, 912, 900, 892, 896, 908, 891, 0,
- 391, 401, 418, 1087, 430, 437, 1087, 886, 897, 0,
- 894, 355, 0, 887, 885, 887, 882, 891, 879, 897,
- 885, 406, 0, 0, 879, 890, 889, 889, 0, 873,
- 423, 0, 0, 875, 442, 883, 884, 874, 868, 867,
- 868, 867, 445, 863, 0, 0, 859, 858, 857, 859,
-
- 860, 865, 859, 855, 869, 864, 863, 862, 853, 856,
- 856, 848, 851, 846, 855, 860, 845, 858, 848, 0,
- 0, 855, 851, 0, 842, 842, 848, 847, 448, 844,
- 0, 0, 0, 0, 833, 846, 845, 844, 841, 829,
- 454, 466, 841, 843, 0, 0, 0, 0, 829, 0,
- 829, 0, 828, 829, 823, 834, 0, 0, 0, 824,
- 0, 820, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 831, 461, 830, 0, 0, 828, 824, 0, 0,
- 0, 813, 473, 476, 481, 818, 814, 820, 810, 808,
- 822, 806, 806, 820, 808, 820, 815, 0, 813, 810,
-
- 814, 797, 799, 806, 812, 807, 806, 793, 0, 795,
- 0, 0, 0, 0, 794, 798, 0, 792, 841, 791,
- 794, 0, 782, 792, 0, 780, 780, 794, 0, 796,
- 0, 485, 804, 803, 802, 773, 772, 0, 790, 789,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 773, 787, 773, 770, 0, 0, 776, 775, 0, 0,
- 773, 765, 0, 0, 0, 0, 0, 0, 762, 774,
- 488, 766, 773, 770, 764, 757, 506, 773, 758, 753,
- 767, 765, 0, 0, 757, 776, 775, 774, 745, 744,
- 335, 336, 0, 757, 760, 758, 746, 0, 756, 753,
-
- 752, 741, 740, 739, 501, 748, 0, 760, 759, 758,
- 729, 728, 0, 743, 0, 741, 736, 509, 530, 780,
- 729, 737, 0, 0, 0, 752, 751, 0, 733, 736,
- 720, 728, 718, 726, 727, 727, 726, 711, 724, 0,
- 725, 713, 712, 708, 732, 731, 730, 701, 700, 0,
- 730, 729, 0, 711, 714, 0, 0, 700, 537, 1087,
- 558, 0, 564, 560, 1087, 0, 697, 696, 706, 706,
- 693, 708, 691, 706, 701, 0, 0, 0, 0, 686,
- 0, 0, 0, 707, 357, 707, 696, 699, 683, 682,
- 692, 692, 682, 532, 587, 412, 690, 678, 676, 675,
-
- 686, 0, 689, 685, 687, 683, 669, 676, 676, 678,
- 674, 676, 674, 674, 661, 660, 671, 0, 1087, 534,
- 1087, 598, 0, 608, 673, 655, 672, 671, 654, 646,
- 654, 644, 652, 0, 645, 664, 661, 658, 655, 652,
- 0, 648, 647, 630, 539, 618, 600, 584, 583, 0,
- 0, 579, 0, 578, 594, 580, 564, 527, 506, 489,
- 453, 447, 0, 452, 426, 0, 0, 0, 0, 0,
- 391, 397, 376, 0, 0, 0, 0, 529, 380, 320,
- 331, 296, 562, 273, 249, 0, 260, 0, 519, 521,
- 192, 183, 169, 585, 589, 111, 586, 610, 1087, 590,
-
- 541, 87, 621, 1087, 595, 588, 0, 23, 631, 632,
- 633, 1087, 634, 1087, 1087, 648, 653, 658, 663, 665,
- 667, 673, 680, 685, 690, 695
+ 0, 64, 70, 0, 1185, 1184, 1186, 1189, 65, 1189,
+ 1160, 1159, 128, 1158, 125, 126, 124, 1157, 140, 189,
+ 123, 1156, 138, 0, 127, 124, 113, 135, 144, 161,
+ 176, 1126, 130, 187, 140, 143, 161, 1120, 182, 174,
+ 202, 199, 211, 212, 1131, 130, 263, 255, 1189, 189,
+ 1189, 1162, 256, 1189, 0, 1189, 1189, 215, 1189, 1189,
+ 1189, 1189, 1189, 1189, 1189, 1189, 1189, 248, 1189, 250,
+ 112, 302, 319, 1189, 1189, 0, 0, 1189, 1151, 1189,
+ 1189, 1189, 1150, 0, 1189, 1189, 1116, 1121, 1114, 1117,
+ 1126, 1125, 1111, 1114, 1126, 144, 1120, 1107, 1104, 1118,
+
+ 1104, 1101, 1101, 1107, 175, 191, 1101, 1112, 1097, 1103,
+ 1107, 1108, 0, 1099, 1110, 247, 1109, 1104, 1084, 230,
+ 1088, 1102, 1092, 241, 1085, 228, 1098, 1100, 1082, 1078,
+ 1086, 1083, 1072, 1081, 173, 1079, 1085, 1080, 1083, 1071,
+ 1074, 233, 240, 260, 1084, 1071, 1084, 239, 1077, 1189,
+ 1189, 307, 301, 323, 1189, 1062, 1075, 1066, 1077, 249,
+ 0, 368, 0, 379, 1189, 298, 390, 1189, 397, 404,
+ 291, 1189, 1189, 1072, 0, 1063, 1067, 1077, 1074, 270,
+ 1057, 1057, 1061, 291, 1072, 1069, 1069, 1067, 1064, 1055,
+ 1062, 1048, 1046, 1059, 1044, 1061, 0, 1058, 1045, 1053,
+
+ 1050, 1054, 1055, 1048, 1045, 1033, 1032, 1046, 1049, 1036,
+ 1045, 1032, 1039, 1029, 335, 1035, 1038, 1028, 1036, 1024,
+ 1028, 1019, 1034, 1024, 1015, 1034, 1017, 1015, 1026, 1015,
+ 1010, 1008, 1022, 1007, 1009, 1006, 1018, 1017, 1020, 1001,
+ 306, 1010, 1005, 1003, 1013, 991, 339, 1010, 1012, 1000,
+ 992, 996, 1008, 991, 0, 411, 421, 438, 1189, 451,
+ 458, 1189, 1189, 986, 997, 0, 994, 344, 0, 0,
+ 987, 985, 987, 982, 991, 979, 997, 985, 350, 0,
+ 0, 979, 990, 989, 989, 0, 973, 353, 0, 0,
+ 975, 357, 983, 984, 974, 968, 967, 968, 967, 967,
+
+ 361, 962, 0, 0, 958, 957, 956, 958, 959, 964,
+ 958, 954, 968, 963, 962, 961, 952, 955, 955, 947,
+ 950, 945, 954, 959, 944, 957, 947, 0, 0, 954,
+ 950, 0, 941, 941, 947, 937, 945, 426, 942, 0,
+ 0, 0, 0, 931, 944, 943, 942, 939, 927, 465,
+ 475, 939, 941, 0, 0, 0, 0, 927, 0, 927,
+ 0, 926, 927, 921, 932, 0, 0, 0, 922, 0,
+ 918, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 929, 481, 928, 0, 0, 926, 922, 918, 0, 0,
+ 0, 910, 443, 486, 493, 915, 911, 917, 907, 905,
+
+ 919, 903, 903, 917, 905, 917, 912, 0, 910, 907,
+ 911, 894, 896, 903, 909, 904, 903, 890, 0, 892,
+ 893, 0, 0, 0, 0, 890, 894, 0, 888, 938,
+ 887, 890, 0, 878, 888, 0, 876, 876, 890, 0,
+ 892, 0, 497, 901, 900, 899, 869, 868, 0, 886,
+ 885, 880, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 868, 882, 868, 865, 0, 0, 871, 870,
+ 0, 0, 868, 860, 0, 0, 0, 0, 0, 0,
+ 857, 869, 500, 861, 868, 867, 864, 858, 851, 519,
+ 867, 852, 847, 861, 859, 0, 0, 851, 871, 870,
+
+ 869, 839, 838, 495, 496, 0, 851, 854, 852, 840,
+ 836, 0, 849, 846, 845, 834, 833, 832, 515, 841,
+ 0, 854, 853, 852, 822, 821, 0, 836, 822, 0,
+ 833, 828, 543, 545, 873, 821, 829, 0, 0, 0,
+ 845, 844, 0, 825, 828, 812, 820, 810, 818, 819,
+ 819, 818, 803, 539, 816, 0, 817, 805, 804, 800,
+ 825, 824, 823, 793, 792, 0, 823, 822, 0, 803,
+ 806, 0, 552, 0, 792, 557, 1189, 580, 0, 590,
+ 499, 1189, 0, 789, 788, 798, 798, 785, 800, 783,
+ 798, 793, 0, 0, 0, 806, 805, 804, 774, 0,
+
+ 774, 0, 0, 0, 559, 568, 797, 785, 788, 772,
+ 771, 781, 781, 794, 793, 792, 762, 767, 552, 613,
+ 363, 775, 763, 761, 760, 771, 0, 774, 770, 772,
+ 768, 754, 782, 781, 0, 766, 758, 749, 757, 747,
+ 758, 754, 756, 754, 754, 741, 740, 751, 0, 767,
+ 766, 0, 751, 1189, 391, 1189, 620, 0, 640, 750,
+ 732, 749, 748, 731, 723, 731, 721, 729, 0, 726,
+ 725, 736, 719, 722, 737, 720, 733, 734, 731, 728,
+ 736, 730, 729, 712, 711, 710, 721, 402, 705, 715,
+ 699, 698, 0, 725, 698, 723, 696, 700, 699, 0,
+
+ 710, 713, 709, 711, 688, 702, 686, 680, 688, 671,
+ 662, 0, 640, 639, 0, 648, 641, 0, 0, 645,
+ 0, 644, 0, 650, 649, 0, 625, 633, 623, 650,
+ 630, 0, 0, 643, 0, 0, 642, 641, 582, 632,
+ 639, 638, 614, 613, 635, 608, 633, 607, 590, 607,
+ 586, 585, 611, 380, 526, 545, 544, 0, 0, 538,
+ 0, 504, 510, 0, 495, 0, 0, 550, 572, 483,
+ 470, 454, 462, 449, 445, 404, 419, 616, 619, 391,
+ 387, 404, 392, 290, 0, 617, 642, 1189, 644, 570,
+ 0, 0, 263, 258, 139, 645, 1189, 643, 618, 107,
+
+ 77, 0, 23, 662, 0, 0, 663, 664, 1189, 665,
+ 1189, 1189, 697, 702, 707, 712, 714, 716, 722, 729,
+ 734, 739, 744
} ;
-static yyconst flex_int16_t yy_def[727] =
+static yyconst flex_int16_t yy_def[824] =
{ 0,
- 715, 1, 715, 3, 716, 716, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715, 715, 715, 717, 715, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 718, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 719, 715, 720,
- 19, 715, 715, 715, 721, 20, 715, 715, 715, 715,
- 715, 717, 715, 715, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
-
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 722, 715, 718,
- 715, 715, 720, 715, 715, 715, 715, 721, 715, 715,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
-
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 715, 715, 715, 715, 722,
- 715, 715, 715, 715, 715, 715, 715, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
-
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 715, 715, 715, 715,
- 715, 715, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
-
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 715, 715, 715,
- 715, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 715, 715, 715, 715, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
-
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 715, 723, 715, 715,
- 715, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 715, 715, 715,
- 715, 724, 715, 715, 715, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 715, 725, 715, 724, 715, 715, 717, 717,
-
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 715, 715,
- 715, 715, 726, 715, 715, 715, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 726, 715, 715, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 715, 715, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 717, 717, 717, 715, 715, 717,
- 717, 717, 715, 715, 715, 717, 717, 717, 715, 715,
- 715, 717, 715, 715, 715, 717, 715, 715, 715, 715,
-
- 715, 717, 715, 715, 715, 715, 717, 715, 715, 715,
- 715, 715, 715, 715, 0, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715
+ 812, 1, 812, 3, 813, 813, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 814, 812, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 815, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 816, 812, 817,
+ 19, 812, 812, 812, 812, 818, 20, 812, 812, 812,
+ 812, 812, 812, 814, 812, 812, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 819, 812, 815, 812, 812, 817, 812, 812, 812, 812,
+ 818, 812, 812, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 812, 812, 812, 812, 819, 812, 812, 812, 812, 812,
+ 812, 812, 812, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 812, 812, 812, 812, 812,
+ 812, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 812, 812,
+ 812, 812, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 812, 812,
+ 812, 812, 814, 814, 814, 814, 814, 814, 814, 814,
+
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 812, 820, 812, 812, 812, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 812, 812, 812, 812, 821, 812,
+ 812, 812, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 812, 822, 812,
+ 821, 812, 812, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 812, 812, 812, 812, 823, 812, 812,
+ 812, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 823, 812, 812,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 812, 812, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 812, 812,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 812, 812, 812, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 812, 812, 812,
+ 814, 814, 814, 814, 814, 814, 812, 812, 812, 814,
+ 814, 814, 814, 814, 814, 812, 812, 812, 812, 812,
+ 814, 814, 814, 814, 814, 812, 812, 812, 812, 814,
+
+ 814, 814, 812, 812, 814, 814, 812, 812, 812, 812,
+ 812, 0, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812
} ;
-static yyconst flex_int16_t yy_nxt[1152] =
+static yyconst flex_int16_t yy_nxt[1255] =
{ 0,
8, 9, 10, 9, 11, 8, 12, 13, 8, 8,
14, 15, 16, 17, 18, 19, 20, 20, 20, 20,
20, 20, 8, 21, 22, 23, 24, 24, 24, 24,
- 24, 24, 24, 24, 24, 24, 25, 24, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 24, 24, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 24, 24, 24, 46, 47, 58, 710, 58, 48, 49,
- 50, 51, 50, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 49, 52, 49, 53, 53, 53, 53, 53,
- 53, 54, 49, 49, 49, 55, 55, 55, 55, 55,
-
- 55, 55, 55, 55, 55, 49, 55, 55, 55, 55,
+ 24, 24, 24, 24, 24, 24, 24, 25, 24, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 24, 24,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 24, 24, 24, 46, 47, 58, 807, 58, 48,
+ 49, 50, 51, 50, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 52, 49, 53, 53, 53, 53,
+ 53, 53, 54, 49, 49, 49, 55, 55, 55, 55,
+
+ 55, 55, 55, 55, 55, 55, 55, 49, 55, 55,
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
- 55, 55, 49, 61, 64, 116, 66, 68, 68, 68,
- 68, 68, 68, 68, 77, 78, 707, 65, 67, 117,
- 62, 70, 83, 71, 71, 71, 71, 71, 71, 72,
- 80, 81, 85, 702, 84, 88, 118, 89, 73, 74,
- 119, 90, 91, 75, 120, 95, 92, 86, 87, 96,
- 73, 74, 99, 93, 100, 97, 94, 147, 121, 108,
- 157, 98, 157, 101, 123, 180, 181, 109, 75, 70,
-
- 102, 76, 76, 76, 76, 76, 76, 76, 103, 110,
- 124, 104, 697, 125, 105, 111, 73, 74, 112, 209,
- 106, 126, 113, 114, 696, 128, 148, 210, 73, 74,
- 115, 127, 129, 130, 695, 135, 139, 131, 136, 151,
- 152, 140, 227, 132, 133, 141, 134, 137, 142, 143,
- 58, 190, 58, 144, 138, 149, 715, 58, 228, 150,
- 161, 162, 191, 145, 159, 159, 159, 159, 159, 159,
- 159, 192, 161, 162, 689, 202, 164, 165, 203, 204,
- 153, 715, 205, 214, 206, 193, 237, 154, 164, 165,
- 215, 155, 217, 235, 236, 238, 156, 70, 692, 72,
-
- 72, 72, 72, 72, 72, 72, 218, 243, 151, 152,
- 244, 691, 166, 166, 73, 74, 167, 167, 167, 167,
- 167, 167, 167, 151, 152, 690, 73, 74, 149, 157,
- 58, 157, 150, 159, 159, 159, 159, 159, 159, 159,
- 253, 254, 167, 167, 167, 167, 167, 167, 167, 153,
- 267, 268, 253, 254, 325, 688, 154, 297, 298, 299,
- 155, 531, 533, 326, 153, 156, 331, 332, 333, 532,
- 534, 154, 346, 347, 348, 155, 687, 251, 251, 686,
- 156, 252, 252, 252, 252, 252, 252, 252, 255, 255,
- 610, 611, 256, 256, 256, 256, 256, 256, 256, 167,
-
- 167, 167, 167, 167, 167, 167, 252, 252, 252, 252,
- 252, 252, 252, 559, 560, 257, 252, 252, 252, 252,
- 252, 252, 252, 357, 358, 359, 685, 257, 682, 341,
- 341, 681, 162, 342, 342, 342, 342, 342, 342, 342,
- 365, 366, 367, 680, 162, 256, 256, 256, 256, 256,
- 256, 256, 256, 256, 256, 256, 256, 256, 256, 369,
- 370, 371, 379, 380, 381, 412, 413, 414, 165, 342,
- 342, 342, 342, 342, 342, 342, 679, 433, 434, 435,
- 165, 342, 342, 342, 342, 342, 342, 342, 436, 437,
- 442, 443, 444, 445, 446, 447, 678, 254, 448, 449,
-
- 450, 486, 487, 488, 508, 509, 510, 477, 677, 254,
- 559, 560, 489, 490, 676, 511, 512, 545, 546, 547,
- 689, 518, 519, 519, 519, 519, 519, 519, 548, 549,
- 683, 559, 560, 620, 621, 620, 621, 684, 559, 560,
- 620, 621, 705, 675, 562, 563, 563, 563, 563, 563,
- 563, 563, 594, 595, 595, 595, 595, 595, 595, 559,
- 560, 564, 674, 683, 693, 559, 560, 623, 673, 562,
- 684, 690, 694, 561, 561, 561, 561, 561, 561, 563,
- 563, 563, 563, 563, 563, 563, 698, 703, 620, 621,
- 700, 700, 623, 706, 699, 704, 705, 701, 701, 620,
-
- 621, 597, 624, 624, 624, 624, 624, 624, 624, 620,
- 621, 698, 598, 622, 622, 622, 622, 622, 622, 699,
- 672, 671, 703, 624, 624, 624, 624, 624, 624, 624,
- 704, 708, 711, 713, 711, 713, 670, 669, 668, 709,
- 712, 714, 712, 714, 667, 666, 665, 706, 56, 56,
- 56, 56, 56, 56, 56, 56, 82, 82, 82, 82,
- 82, 160, 160, 160, 160, 160, 68, 68, 163, 163,
- 168, 168, 168, 250, 250, 664, 250, 250, 250, 250,
- 250, 561, 561, 561, 663, 662, 661, 561, 596, 596,
- 596, 622, 622, 622, 660, 659, 658, 622, 645, 645,
-
- 645, 657, 656, 655, 654, 653, 652, 651, 650, 649,
- 648, 647, 646, 644, 643, 642, 641, 640, 639, 638,
- 637, 636, 635, 634, 633, 632, 631, 630, 629, 628,
- 627, 626, 625, 619, 618, 617, 616, 615, 614, 613,
- 612, 609, 608, 607, 606, 605, 604, 603, 602, 601,
- 600, 599, 593, 592, 591, 590, 589, 588, 587, 586,
- 585, 584, 583, 582, 581, 580, 579, 578, 577, 576,
- 575, 574, 573, 572, 571, 570, 569, 568, 567, 566,
- 565, 564, 558, 557, 556, 555, 554, 553, 552, 551,
- 550, 544, 543, 542, 541, 540, 539, 538, 537, 536,
-
- 535, 530, 529, 528, 527, 526, 525, 524, 523, 522,
- 521, 520, 517, 516, 515, 514, 513, 507, 506, 505,
- 504, 503, 502, 501, 500, 499, 498, 497, 496, 495,
- 494, 493, 492, 491, 485, 484, 483, 482, 481, 480,
+ 55, 55, 55, 55, 49, 61, 64, 806, 66, 68,
+ 68, 68, 68, 68, 68, 68, 79, 80, 812, 65,
+ 67, 85, 62, 70, 150, 71, 71, 71, 71, 71,
+ 71, 72, 82, 83, 86, 87, 90, 805, 91, 110,
+ 73, 74, 92, 812, 93, 75, 76, 111, 94, 119,
+ 88, 89, 121, 73, 74, 95, 122, 97, 96, 112,
+ 160, 98, 160, 120, 151, 183, 184, 99, 75, 802,
+
+ 123, 76, 70, 100, 77, 77, 77, 77, 77, 77,
+ 77, 101, 231, 102, 124, 104, 58, 129, 58, 73,
+ 74, 126, 103, 105, 78, 193, 106, 130, 232, 107,
+ 195, 113, 73, 74, 114, 108, 194, 127, 115, 116,
+ 128, 131, 138, 117, 196, 139, 118, 78, 132, 133,
+ 160, 146, 160, 134, 140, 147, 154, 155, 142, 135,
+ 136, 141, 137, 143, 152, 148, 58, 144, 153, 221,
+ 145, 162, 162, 162, 162, 162, 162, 162, 164, 165,
+ 167, 168, 213, 222, 239, 240, 248, 241, 218, 249,
+ 214, 164, 165, 167, 168, 219, 242, 205, 156, 243,
+
+ 206, 207, 154, 155, 208, 157, 209, 244, 152, 158,
+ 58, 801, 153, 269, 159, 70, 800, 72, 72, 72,
+ 72, 72, 72, 72, 154, 155, 263, 270, 258, 259,
+ 169, 169, 73, 74, 170, 170, 170, 170, 170, 170,
+ 170, 258, 259, 795, 156, 73, 74, 274, 275, 263,
+ 333, 157, 305, 306, 307, 158, 340, 341, 342, 334,
+ 159, 355, 356, 357, 576, 577, 156, 366, 367, 368,
+ 374, 375, 376, 157, 378, 379, 380, 158, 389, 390,
+ 391, 768, 159, 162, 162, 162, 162, 162, 162, 162,
+ 256, 256, 655, 656, 257, 257, 257, 257, 257, 257,
+
+ 257, 260, 260, 655, 656, 261, 261, 261, 261, 261,
+ 261, 261, 170, 170, 170, 170, 170, 170, 170, 170,
+ 170, 170, 170, 170, 170, 170, 257, 257, 257, 257,
+ 257, 257, 257, 769, 794, 262, 257, 257, 257, 257,
+ 257, 257, 257, 423, 424, 425, 793, 792, 262, 350,
+ 350, 791, 165, 351, 351, 351, 351, 351, 351, 351,
+ 454, 455, 456, 786, 785, 165, 261, 261, 261, 261,
+ 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
+ 351, 351, 351, 351, 351, 351, 351, 784, 783, 168,
+ 351, 351, 351, 351, 351, 351, 351, 444, 445, 446,
+
+ 581, 782, 168, 457, 458, 459, 259, 781, 447, 448,
+ 460, 461, 462, 499, 500, 501, 522, 523, 524, 259,
+ 490, 546, 548, 780, 502, 503, 779, 525, 526, 547,
+ 549, 561, 562, 563, 533, 534, 534, 534, 534, 534,
+ 534, 622, 564, 565, 576, 577, 576, 577, 776, 775,
+ 774, 768, 623, 655, 656, 596, 597, 598, 576, 577,
+ 580, 580, 580, 580, 580, 580, 580, 599, 614, 615,
+ 616, 798, 619, 620, 620, 620, 620, 620, 620, 579,
+ 617, 576, 577, 753, 773, 638, 772, 771, 658, 770,
+ 754, 576, 577, 639, 640, 578, 578, 578, 578, 578,
+
+ 578, 641, 642, 769, 579, 580, 580, 580, 580, 580,
+ 580, 580, 753, 658, 655, 656, 777, 787, 796, 754,
+ 789, 655, 656, 799, 778, 788, 797, 790, 659, 659,
+ 659, 659, 659, 659, 659, 657, 657, 657, 657, 657,
+ 657, 655, 656, 787, 798, 789, 796, 767, 766, 765,
+ 764, 788, 790, 763, 797, 659, 659, 659, 659, 659,
+ 659, 659, 803, 808, 810, 808, 810, 762, 761, 760,
+ 804, 809, 811, 809, 811, 759, 758, 757, 756, 755,
+ 752, 751, 750, 749, 748, 747, 746, 745, 744, 743,
+ 742, 741, 740, 739, 738, 737, 799, 56, 56, 56,
+
+ 56, 56, 56, 56, 56, 84, 84, 84, 84, 84,
+ 163, 163, 163, 163, 163, 68, 68, 166, 166, 171,
+ 171, 171, 255, 255, 736, 255, 255, 255, 255, 255,
+ 578, 578, 578, 735, 734, 733, 578, 621, 621, 621,
+ 657, 657, 657, 732, 731, 730, 657, 688, 688, 688,
+ 729, 728, 727, 726, 725, 724, 723, 722, 721, 720,
+ 719, 718, 717, 716, 715, 714, 713, 712, 711, 710,
+ 709, 708, 707, 706, 705, 704, 703, 702, 701, 700,
+ 699, 698, 697, 696, 695, 694, 693, 692, 691, 690,
+ 689, 687, 686, 685, 684, 683, 682, 681, 680, 679,
+
+ 678, 677, 676, 675, 674, 673, 672, 671, 670, 669,
+ 668, 667, 666, 665, 664, 663, 662, 661, 660, 654,
+ 653, 652, 651, 650, 649, 648, 647, 646, 645, 644,
+ 643, 637, 636, 635, 634, 633, 632, 631, 630, 629,
+ 628, 627, 626, 625, 624, 618, 613, 612, 611, 610,
+ 609, 608, 607, 606, 605, 604, 603, 602, 601, 600,
+ 595, 594, 593, 592, 591, 590, 589, 588, 587, 586,
+ 585, 584, 583, 582, 581, 575, 574, 573, 572, 571,
+ 570, 569, 568, 567, 566, 560, 559, 558, 557, 556,
+ 555, 554, 553, 552, 551, 550, 545, 544, 543, 542,
+
+ 541, 540, 539, 538, 537, 536, 535, 532, 531, 530,
+ 529, 528, 527, 521, 520, 519, 518, 517, 516, 515,
+ 514, 513, 512, 511, 510, 509, 508, 507, 506, 505,
+ 504, 498, 497, 496, 495, 494, 493, 492, 491, 490,
+ 489, 488, 487, 486, 485, 484, 483, 482, 481, 480,
479, 478, 477, 476, 475, 474, 473, 472, 471, 470,
- 469, 468, 467, 466, 465, 464, 463, 462, 461, 460,
- 459, 458, 457, 456, 455, 454, 453, 452, 451, 441,
- 440, 439, 438, 432, 431, 430, 429, 428, 427, 426,
- 425, 424, 423, 422, 421, 420, 419, 418, 417, 416,
- 415, 411, 410, 409, 408, 407, 406, 405, 404, 403,
+ 469, 468, 467, 466, 465, 464, 463, 453, 452, 451,
+ 450, 449, 443, 442, 441, 440, 439, 438, 437, 436,
+ 435, 434, 433, 432, 431, 430, 429, 428, 427, 426,
+ 422, 421, 420, 419, 418, 417, 416, 415, 414, 413,
+ 412, 411, 410, 409, 408, 407, 406, 405, 404, 403,
402, 401, 400, 399, 398, 397, 396, 395, 394, 393,
- 392, 391, 390, 389, 388, 387, 386, 385, 384, 383,
- 382, 378, 377, 376, 375, 374, 373, 372, 368, 364,
- 363, 362, 361, 360, 356, 355, 354, 353, 352, 351,
- 350, 349, 345, 344, 343, 340, 339, 338, 337, 336,
- 335, 334, 330, 329, 328, 327, 324, 323, 322, 321,
+ 392, 388, 387, 386, 385, 384, 383, 382, 381, 377,
+ 373, 372, 371, 370, 369, 365, 364, 363, 362, 361,
+ 360, 359, 358, 354, 353, 352, 349, 348, 347, 346,
+ 345, 344, 343, 339, 338, 337, 336, 335, 332, 331,
+ 330, 329, 328, 327, 326, 325, 324, 323, 322, 321,
320, 319, 318, 317, 316, 315, 314, 313, 312, 311,
- 310, 309, 308, 307, 306, 305, 304, 303, 302, 301,
- 300, 296, 295, 294, 293, 292, 291, 290, 289, 288,
- 287, 286, 285, 284, 283, 282, 281, 280, 279, 278,
+ 310, 309, 308, 304, 303, 302, 301, 300, 299, 298,
+ 297, 296, 295, 294, 293, 292, 291, 290, 289, 288,
- 277, 276, 275, 274, 273, 272, 271, 270, 269, 266,
- 265, 264, 263, 262, 261, 260, 259, 258, 249, 248,
- 247, 246, 245, 242, 241, 240, 239, 234, 233, 232,
- 231, 230, 229, 226, 225, 224, 223, 222, 221, 220,
- 219, 216, 213, 212, 211, 208, 207, 201, 200, 199,
- 198, 197, 196, 195, 194, 189, 188, 187, 186, 185,
- 184, 183, 182, 179, 178, 177, 176, 175, 174, 173,
- 172, 171, 170, 169, 158, 146, 122, 107, 79, 69,
- 63, 60, 59, 715, 57, 57, 7, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
-
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715
+ 287, 286, 285, 284, 283, 282, 281, 280, 279, 278,
+ 277, 276, 273, 272, 271, 268, 267, 266, 265, 264,
+ 254, 253, 252, 251, 250, 247, 246, 245, 238, 237,
+ 236, 235, 234, 233, 230, 229, 228, 227, 226, 225,
+ 224, 223, 220, 217, 216, 215, 212, 211, 210, 204,
+ 203, 202, 201, 200, 199, 198, 197, 192, 191, 190,
+ 189, 188, 187, 186, 185, 182, 181, 180, 179, 178,
+ 177, 176, 175, 174, 173, 172, 161, 149, 125, 109,
+ 81, 69, 63, 60, 59, 812, 57, 57, 7, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812
} ;
-static yyconst flex_int16_t yy_chk[1152] =
+static yyconst flex_int16_t yy_chk[1255] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -800,7 +835,7 @@ static yyconst flex_int16_t yy_chk[1152] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 9, 708, 9, 2, 3,
+ 1, 1, 1, 1, 1, 2, 9, 803, 9, 2,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
@@ -808,119 +843,130 @@ static yyconst flex_int16_t yy_chk[1152] =
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 13, 15, 35, 16, 17, 17, 17,
- 17, 17, 17, 17, 21, 21, 702, 15, 16, 35,
- 13, 19, 25, 19, 19, 19, 19, 19, 19, 19,
- 23, 23, 26, 696, 25, 27, 36, 27, 19, 19,
- 36, 27, 28, 19, 37, 29, 28, 26, 26, 29,
- 19, 19, 30, 28, 30, 29, 28, 46, 37, 33,
- 50, 29, 50, 30, 39, 94, 94, 33, 19, 20,
-
- 31, 20, 20, 20, 20, 20, 20, 20, 31, 33,
- 39, 31, 693, 39, 31, 34, 20, 20, 34, 117,
- 31, 40, 34, 34, 692, 41, 46, 117, 20, 20,
- 34, 40, 41, 41, 691, 42, 43, 41, 42, 48,
- 48, 43, 132, 41, 41, 43, 41, 42, 43, 44,
- 58, 103, 58, 44, 42, 47, 71, 47, 132, 47,
- 68, 68, 103, 44, 53, 53, 53, 53, 53, 53,
- 53, 104, 68, 68, 684, 114, 70, 70, 114, 114,
- 48, 71, 114, 121, 114, 104, 140, 48, 70, 70,
- 121, 48, 123, 139, 139, 140, 48, 72, 687, 72,
-
- 72, 72, 72, 72, 72, 72, 123, 145, 150, 150,
- 145, 685, 73, 73, 72, 72, 73, 73, 73, 73,
- 73, 73, 73, 151, 151, 684, 72, 72, 149, 157,
- 149, 157, 149, 159, 159, 159, 159, 159, 159, 159,
- 163, 163, 166, 166, 166, 166, 166, 166, 166, 150,
- 181, 181, 163, 163, 237, 682, 150, 211, 211, 211,
- 150, 491, 492, 237, 151, 150, 242, 242, 242, 491,
- 492, 151, 262, 262, 262, 151, 681, 161, 161, 680,
- 151, 161, 161, 161, 161, 161, 161, 161, 164, 164,
- 585, 585, 164, 164, 164, 164, 164, 164, 164, 167,
-
- 167, 167, 167, 167, 167, 167, 251, 251, 251, 251,
- 251, 251, 251, 596, 596, 167, 252, 252, 252, 252,
- 252, 252, 252, 272, 272, 272, 679, 167, 673, 253,
- 253, 672, 252, 253, 253, 253, 253, 253, 253, 253,
- 281, 281, 281, 671, 252, 255, 255, 255, 255, 255,
- 255, 255, 256, 256, 256, 256, 256, 256, 256, 285,
- 285, 285, 293, 293, 293, 329, 329, 329, 256, 341,
- 341, 341, 341, 341, 341, 341, 665, 373, 373, 373,
- 256, 342, 342, 342, 342, 342, 342, 342, 373, 373,
- 383, 383, 383, 384, 384, 384, 664, 342, 385, 385,
-
- 385, 432, 432, 432, 471, 471, 471, 477, 662, 342,
- 518, 518, 432, 432, 661, 471, 471, 505, 505, 505,
- 689, 477, 477, 477, 477, 477, 477, 477, 505, 505,
- 678, 519, 519, 594, 594, 620, 620, 678, 559, 559,
- 645, 645, 701, 660, 518, 519, 519, 519, 519, 519,
- 519, 519, 559, 559, 559, 559, 559, 559, 559, 561,
- 561, 564, 659, 683, 690, 563, 563, 594, 658, 518,
- 683, 689, 690, 561, 561, 561, 561, 561, 561, 563,
- 563, 563, 563, 563, 563, 563, 694, 697, 595, 595,
- 695, 700, 594, 701, 694, 697, 705, 695, 700, 622,
-
- 622, 564, 595, 595, 595, 595, 595, 595, 595, 624,
- 624, 698, 564, 622, 622, 622, 622, 622, 622, 698,
- 657, 656, 703, 624, 624, 624, 624, 624, 624, 624,
- 703, 706, 709, 710, 711, 713, 655, 654, 652, 706,
- 709, 710, 711, 713, 649, 648, 647, 705, 716, 716,
- 716, 716, 716, 716, 716, 716, 717, 717, 717, 717,
- 717, 718, 718, 718, 718, 718, 719, 719, 720, 720,
- 721, 721, 721, 722, 722, 646, 722, 722, 722, 722,
- 722, 723, 723, 723, 644, 643, 642, 723, 724, 724,
- 724, 725, 725, 725, 640, 639, 638, 725, 726, 726,
-
- 726, 637, 636, 635, 633, 632, 631, 630, 629, 628,
- 627, 626, 625, 617, 616, 615, 614, 613, 612, 611,
- 610, 609, 608, 607, 606, 605, 604, 603, 601, 600,
- 599, 598, 597, 593, 592, 591, 590, 589, 588, 587,
- 586, 584, 580, 575, 574, 573, 572, 571, 570, 569,
- 568, 567, 558, 555, 554, 552, 551, 549, 548, 547,
- 546, 545, 544, 543, 542, 541, 539, 538, 537, 536,
- 535, 534, 533, 532, 531, 530, 529, 527, 526, 522,
- 521, 520, 517, 516, 514, 512, 511, 510, 509, 508,
- 506, 504, 503, 502, 501, 500, 499, 497, 496, 495,
-
- 494, 490, 489, 488, 487, 486, 485, 482, 481, 480,
- 479, 478, 476, 475, 474, 473, 472, 470, 469, 462,
- 461, 458, 457, 454, 453, 452, 451, 440, 439, 437,
- 436, 435, 434, 433, 430, 428, 427, 426, 424, 423,
- 421, 420, 419, 418, 416, 415, 410, 408, 407, 406,
- 405, 404, 403, 402, 401, 400, 399, 397, 396, 395,
- 394, 393, 392, 391, 390, 389, 388, 387, 386, 382,
- 378, 377, 374, 372, 362, 360, 356, 355, 354, 353,
- 351, 349, 344, 343, 340, 339, 338, 337, 336, 335,
- 330, 328, 327, 326, 325, 323, 322, 319, 318, 317,
-
- 316, 315, 314, 313, 312, 311, 310, 309, 308, 307,
- 306, 305, 304, 303, 302, 301, 300, 299, 298, 297,
- 294, 292, 291, 290, 289, 288, 287, 286, 284, 280,
- 278, 277, 276, 275, 271, 270, 269, 268, 267, 266,
- 265, 264, 261, 259, 258, 249, 248, 247, 246, 245,
- 244, 243, 241, 240, 239, 238, 236, 235, 234, 233,
- 232, 231, 230, 229, 228, 227, 226, 225, 224, 223,
- 222, 221, 220, 219, 218, 217, 216, 215, 214, 213,
- 212, 210, 209, 208, 207, 206, 205, 204, 203, 202,
- 201, 200, 199, 198, 197, 196, 195, 193, 192, 191,
-
- 190, 189, 188, 187, 186, 185, 184, 183, 182, 180,
- 179, 178, 177, 176, 175, 174, 173, 171, 156, 155,
- 154, 153, 146, 144, 143, 142, 141, 138, 137, 136,
- 135, 134, 133, 131, 130, 129, 128, 127, 126, 125,
- 124, 122, 120, 119, 118, 116, 115, 113, 112, 110,
- 109, 108, 107, 106, 105, 102, 101, 100, 99, 98,
- 97, 96, 95, 93, 92, 91, 90, 89, 88, 87,
- 86, 85, 81, 77, 52, 45, 38, 32, 22, 18,
- 14, 12, 11, 7, 6, 5, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
-
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715
+ 3, 3, 3, 3, 3, 13, 15, 801, 16, 17,
+ 17, 17, 17, 17, 17, 17, 21, 21, 71, 15,
+ 16, 25, 13, 19, 46, 19, 19, 19, 19, 19,
+ 19, 19, 23, 23, 25, 26, 27, 800, 27, 33,
+ 19, 19, 27, 71, 28, 19, 19, 33, 28, 35,
+ 26, 26, 36, 19, 19, 28, 36, 29, 28, 33,
+ 50, 29, 50, 35, 46, 96, 96, 29, 19, 795,
+
+ 37, 19, 20, 29, 20, 20, 20, 20, 20, 20,
+ 20, 30, 135, 30, 37, 31, 58, 40, 58, 20,
+ 20, 39, 30, 31, 20, 105, 31, 40, 135, 31,
+ 106, 34, 20, 20, 34, 31, 105, 39, 34, 34,
+ 39, 41, 42, 34, 106, 42, 34, 20, 41, 41,
+ 160, 44, 160, 41, 42, 44, 48, 48, 43, 41,
+ 41, 42, 41, 43, 47, 44, 47, 43, 47, 126,
+ 43, 53, 53, 53, 53, 53, 53, 53, 68, 68,
+ 70, 70, 120, 126, 142, 142, 148, 143, 124, 148,
+ 120, 68, 68, 70, 70, 124, 143, 116, 48, 144,
+
+ 116, 116, 153, 153, 116, 48, 116, 144, 152, 48,
+ 152, 794, 152, 180, 48, 72, 793, 72, 72, 72,
+ 72, 72, 72, 72, 154, 154, 171, 180, 166, 166,
+ 73, 73, 72, 72, 73, 73, 73, 73, 73, 73,
+ 73, 166, 166, 784, 153, 72, 72, 184, 184, 171,
+ 241, 153, 215, 215, 215, 153, 247, 247, 247, 241,
+ 153, 268, 268, 268, 621, 621, 154, 279, 279, 279,
+ 288, 288, 288, 154, 292, 292, 292, 154, 301, 301,
+ 301, 754, 154, 162, 162, 162, 162, 162, 162, 162,
+ 164, 164, 655, 655, 164, 164, 164, 164, 164, 164,
+
+ 164, 167, 167, 688, 688, 167, 167, 167, 167, 167,
+ 167, 167, 169, 169, 169, 169, 169, 169, 169, 170,
+ 170, 170, 170, 170, 170, 170, 256, 256, 256, 256,
+ 256, 256, 256, 754, 783, 170, 257, 257, 257, 257,
+ 257, 257, 257, 338, 338, 338, 782, 781, 170, 258,
+ 258, 780, 257, 258, 258, 258, 258, 258, 258, 258,
+ 393, 393, 393, 777, 776, 257, 260, 260, 260, 260,
+ 260, 260, 260, 261, 261, 261, 261, 261, 261, 261,
+ 350, 350, 350, 350, 350, 350, 350, 775, 774, 261,
+ 351, 351, 351, 351, 351, 351, 351, 382, 382, 382,
+
+ 581, 773, 261, 394, 394, 394, 351, 772, 382, 382,
+ 395, 395, 395, 443, 443, 443, 483, 483, 483, 351,
+ 490, 504, 505, 771, 443, 443, 770, 483, 483, 504,
+ 505, 519, 519, 519, 490, 490, 490, 490, 490, 490,
+ 490, 581, 519, 519, 533, 533, 534, 534, 765, 763,
+ 762, 768, 581, 619, 619, 554, 554, 554, 576, 576,
+ 534, 534, 534, 534, 534, 534, 534, 554, 573, 573,
+ 573, 790, 576, 576, 576, 576, 576, 576, 576, 533,
+ 573, 578, 578, 739, 760, 605, 757, 756, 619, 755,
+ 739, 580, 580, 605, 606, 578, 578, 578, 578, 578,
+
+ 578, 606, 606, 768, 533, 580, 580, 580, 580, 580,
+ 580, 580, 753, 619, 620, 620, 769, 778, 786, 753,
+ 779, 657, 657, 790, 769, 778, 786, 779, 620, 620,
+ 620, 620, 620, 620, 620, 657, 657, 657, 657, 657,
+ 657, 659, 659, 787, 798, 789, 796, 752, 751, 750,
+ 749, 787, 789, 748, 796, 659, 659, 659, 659, 659,
+ 659, 659, 799, 804, 807, 808, 810, 747, 746, 745,
+ 799, 804, 807, 808, 810, 744, 743, 742, 741, 740,
+ 738, 737, 734, 731, 730, 729, 728, 727, 725, 724,
+ 722, 720, 717, 716, 714, 713, 798, 813, 813, 813,
+
+ 813, 813, 813, 813, 813, 814, 814, 814, 814, 814,
+ 815, 815, 815, 815, 815, 816, 816, 817, 817, 818,
+ 818, 818, 819, 819, 711, 819, 819, 819, 819, 819,
+ 820, 820, 820, 710, 709, 708, 820, 821, 821, 821,
+ 822, 822, 822, 707, 706, 705, 822, 823, 823, 823,
+ 704, 703, 702, 701, 699, 698, 697, 696, 695, 694,
+ 692, 691, 690, 689, 687, 686, 685, 684, 683, 682,
+ 681, 680, 679, 678, 677, 676, 675, 674, 673, 672,
+ 671, 670, 668, 667, 666, 665, 664, 663, 662, 661,
+ 660, 653, 651, 650, 648, 647, 646, 645, 644, 643,
+
+ 642, 641, 640, 639, 638, 637, 636, 634, 633, 632,
+ 631, 630, 629, 628, 626, 625, 624, 623, 622, 618,
+ 617, 616, 615, 614, 613, 612, 611, 610, 609, 608,
+ 607, 601, 599, 598, 597, 596, 592, 591, 590, 589,
+ 588, 587, 586, 585, 584, 575, 571, 570, 568, 567,
+ 565, 564, 563, 562, 561, 560, 559, 558, 557, 555,
+ 553, 552, 551, 550, 549, 548, 547, 546, 545, 544,
+ 542, 541, 537, 536, 535, 532, 531, 529, 528, 526,
+ 525, 524, 523, 522, 520, 518, 517, 516, 515, 514,
+ 513, 511, 510, 509, 508, 507, 503, 502, 501, 500,
+
+ 499, 498, 495, 494, 493, 492, 491, 489, 488, 487,
+ 486, 485, 484, 482, 481, 474, 473, 470, 469, 466,
+ 465, 464, 463, 452, 451, 450, 448, 447, 446, 445,
+ 444, 441, 439, 438, 437, 435, 434, 432, 431, 430,
+ 429, 427, 426, 421, 420, 418, 417, 416, 415, 414,
+ 413, 412, 411, 410, 409, 407, 406, 405, 404, 403,
+ 402, 401, 400, 399, 398, 397, 396, 392, 388, 387,
+ 386, 383, 381, 371, 369, 365, 364, 363, 362, 360,
+ 358, 353, 352, 349, 348, 347, 346, 345, 344, 339,
+ 337, 336, 335, 334, 333, 331, 330, 327, 326, 325,
+
+ 324, 323, 322, 321, 320, 319, 318, 317, 316, 315,
+ 314, 313, 312, 311, 310, 309, 308, 307, 306, 305,
+ 302, 300, 299, 298, 297, 296, 295, 294, 293, 291,
+ 287, 285, 284, 283, 282, 278, 277, 276, 275, 274,
+ 273, 272, 271, 267, 265, 264, 254, 253, 252, 251,
+ 250, 249, 248, 246, 245, 244, 243, 242, 240, 239,
+ 238, 237, 236, 235, 234, 233, 232, 231, 230, 229,
+ 228, 227, 226, 225, 224, 223, 222, 221, 220, 219,
+ 218, 217, 216, 214, 213, 212, 211, 210, 209, 208,
+ 207, 206, 205, 204, 203, 202, 201, 200, 199, 198,
+
+ 196, 195, 194, 193, 192, 191, 190, 189, 188, 187,
+ 186, 185, 183, 182, 181, 179, 178, 177, 176, 174,
+ 159, 158, 157, 156, 149, 147, 146, 145, 141, 140,
+ 139, 138, 137, 136, 134, 133, 132, 131, 130, 129,
+ 128, 127, 125, 123, 122, 121, 119, 118, 117, 115,
+ 114, 112, 111, 110, 109, 108, 107, 104, 103, 102,
+ 101, 100, 99, 98, 97, 95, 94, 93, 92, 91,
+ 90, 89, 88, 87, 83, 79, 52, 45, 38, 32,
+ 22, 18, 14, 12, 11, 7, 6, 5, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812
} ;
/* The intent behind this definition is that it'll catch
@@ -969,38 +1015,46 @@ static yyconst flex_int16_t yy_chk[1152] =
#define YY_USER_INIT yylineno = 0; yycolumn = 0;
-#define TOKEN_OR_IDENTIFIER(version, token) \
- do { \
- if (yyextra->language_version >= version) { \
- return token; \
- } else { \
- yylval->identifier = strdup(yytext); \
- return IDENTIFIER; \
- } \
- } while (0)
-
-/* Handle reserved words in GLSL ES (version 100) */
-#define TOKEN_OR_IDENTIFIER_ES(version, token) \
- do { \
- if (yyextra->es_shader) { \
- return token; \
- } else { \
- TOKEN_OR_IDENTIFIER(version, token); \
- } \
- } while (0)
+#define IS_UINT (yytext[yyleng - 1] == 'u' || yytext[yyleng - 1] == 'U')
-#define RESERVED_WORD(version, token) \
+/* A macro for handling reserved words and keywords across language versions.
+ *
+ * Certain words start out as identifiers, become reserved words in
+ * later language revisions, and finally become language keywords.
+ *
+ * For example, consider the following lexer rule:
+ * samplerBuffer KEYWORD(130, 140, SAMPLERBUFFER)
+ *
+ * This means that "samplerBuffer" will be treated as:
+ * - a keyword (SAMPLERBUFFER token) ...in GLSL >= 1.40
+ * - a reserved word - error ...in GLSL >= 1.30
+ * - an identifier ...in GLSL < 1.30
+ */
+#define KEYWORD(reserved_version, allowed_version, token) \
do { \
- if (yyextra->language_version >= version) { \
+ if (yyextra->language_version >= allowed_version) { \
return token; \
- } else { \
+ } else if (yyextra->language_version >= reserved_version) { \
_mesa_glsl_error(yylloc, yyextra, \
"Illegal use of reserved word `%s'", yytext); \
return ERROR_TOK; \
+ } else { \
+ yylval->identifier = strdup(yytext); \
+ return IDENTIFIER; \
} \
} while (0)
-#line 1004 "glsl_lexer.cpp"
+/* The ES macro can be used in KEYWORD checks:
+ *
+ * word KEYWORD(110 || ES, 400, TOKEN)
+ * ...means the word is reserved in GLSL ES 1.00, while
+ *
+ * word KEYWORD(110, 130 || ES, TOKEN)
+ * ...means the word is a legal keyword in GLSL ES 1.00.
+ */
+#define ES yyextra->es_shader
+
+#line 1058 "glsl_lexer.cpp"
#define INITIAL 0
#define PP 1
@@ -1087,6 +1141,10 @@ int _mesa_glsl_get_lineno (yyscan_t yyscanner );
void _mesa_glsl_set_lineno (int line_number ,yyscan_t yyscanner );
+int _mesa_glsl_get_column (yyscan_t yyscanner );
+
+void _mesa_glsl_set_column (int column_no ,yyscan_t yyscanner );
+
YYSTYPE * _mesa_glsl_get_lval (yyscan_t yyscanner );
void _mesa_glsl_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
@@ -1127,12 +1185,7 @@ static int input (yyscan_t yyscanner );
/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
#define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
#endif
/* Copy whatever the last rule matched to the standard output. */
@@ -1151,7 +1204,7 @@ static int input (yyscan_t yyscanner );
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \
int c = '*'; \
- size_t n; \
+ unsigned n; \
for ( n = 0; n < max_size && \
(c = getc( yyin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
@@ -1239,10 +1292,10 @@ YY_DECL
register int yy_act;
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-#line 86 "glsl_lexer.lpp"
+#line 94 "glsl_lexer.lpp"
-#line 1246 "glsl_lexer.cpp"
+#line 1299 "glsl_lexer.cpp"
yylval = yylval_param;
@@ -1300,13 +1353,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 716 )
+ if ( yy_current_state >= 813 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_current_state != 715 );
+ while ( yy_current_state != 812 );
yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state;
@@ -1328,7 +1381,7 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 88 "glsl_lexer.lpp"
+#line 96 "glsl_lexer.lpp"
;
YY_BREAK
/* Preprocessor tokens. */
@@ -1337,17 +1390,17 @@ case 2:
yyg->yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 91 "glsl_lexer.lpp"
+#line 99 "glsl_lexer.lpp"
;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 92 "glsl_lexer.lpp"
+#line 100 "glsl_lexer.lpp"
{ BEGIN PP; return VERSION; }
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 93 "glsl_lexer.lpp"
+#line 101 "glsl_lexer.lpp"
{ BEGIN PP; return EXTENSION; }
YY_BREAK
case 5:
@@ -1355,7 +1408,7 @@ case 5:
yyg->yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 94 "glsl_lexer.lpp"
+#line 102 "glsl_lexer.lpp"
{
/* Eat characters until the first digit is
* encountered
@@ -1377,7 +1430,7 @@ case 6:
yyg->yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 109 "glsl_lexer.lpp"
+#line 117 "glsl_lexer.lpp"
{
/* Eat characters until the first digit is
* encountered
@@ -1395,7 +1448,7 @@ YY_RULE_SETUP
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 123 "glsl_lexer.lpp"
+#line 131 "glsl_lexer.lpp"
{
BEGIN PP;
return PRAGMA_DEBUG_ON;
@@ -1403,7 +1456,7 @@ YY_RULE_SETUP
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 127 "glsl_lexer.lpp"
+#line 135 "glsl_lexer.lpp"
{
BEGIN PP;
return PRAGMA_DEBUG_OFF;
@@ -1411,7 +1464,7 @@ YY_RULE_SETUP
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 131 "glsl_lexer.lpp"
+#line 139 "glsl_lexer.lpp"
{
BEGIN PP;
return PRAGMA_OPTIMIZE_ON;
@@ -1419,7 +1472,7 @@ YY_RULE_SETUP
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 135 "glsl_lexer.lpp"
+#line 143 "glsl_lexer.lpp"
{
BEGIN PP;
return PRAGMA_OPTIMIZE_OFF;
@@ -1427,38 +1480,38 @@ YY_RULE_SETUP
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 139 "glsl_lexer.lpp"
+#line 147 "glsl_lexer.lpp"
{ BEGIN PRAGMA; }
YY_BREAK
case 12:
/* rule 12 can match eol */
YY_RULE_SETUP
-#line 141 "glsl_lexer.lpp"
+#line 149 "glsl_lexer.lpp"
{ BEGIN 0; yylineno++; yycolumn = 0; }
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 142 "glsl_lexer.lpp"
+#line 150 "glsl_lexer.lpp"
{ }
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 144 "glsl_lexer.lpp"
+#line 152 "glsl_lexer.lpp"
{ }
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 145 "glsl_lexer.lpp"
+#line 153 "glsl_lexer.lpp"
{ }
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 146 "glsl_lexer.lpp"
+#line 154 "glsl_lexer.lpp"
return COLON;
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 147 "glsl_lexer.lpp"
+#line 155 "glsl_lexer.lpp"
{
yylval->identifier = strdup(yytext);
return IDENTIFIER;
@@ -1466,7 +1519,7 @@ YY_RULE_SETUP
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 151 "glsl_lexer.lpp"
+#line 159 "glsl_lexer.lpp"
{
yylval->n = strtol(yytext, NULL, 10);
return INTCONSTANT;
@@ -1475,890 +1528,990 @@ YY_RULE_SETUP
case 19:
/* rule 19 can match eol */
YY_RULE_SETUP
-#line 155 "glsl_lexer.lpp"
+#line 163 "glsl_lexer.lpp"
{ BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
YY_BREAK
case 20:
/* rule 20 can match eol */
YY_RULE_SETUP
-#line 157 "glsl_lexer.lpp"
+#line 165 "glsl_lexer.lpp"
{ yylineno++; yycolumn = 0; }
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 159 "glsl_lexer.lpp"
+#line 167 "glsl_lexer.lpp"
return ATTRIBUTE;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 160 "glsl_lexer.lpp"
+#line 168 "glsl_lexer.lpp"
return CONST_TOK;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 161 "glsl_lexer.lpp"
+#line 169 "glsl_lexer.lpp"
return BOOL_TOK;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 162 "glsl_lexer.lpp"
+#line 170 "glsl_lexer.lpp"
return FLOAT_TOK;
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 163 "glsl_lexer.lpp"
+#line 171 "glsl_lexer.lpp"
return INT_TOK;
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 164 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UINT_TOK);
+#line 172 "glsl_lexer.lpp"
+KEYWORD(130, 130, UINT_TOK);
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 166 "glsl_lexer.lpp"
+#line 174 "glsl_lexer.lpp"
return BREAK;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 167 "glsl_lexer.lpp"
+#line 175 "glsl_lexer.lpp"
return CONTINUE;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 168 "glsl_lexer.lpp"
+#line 176 "glsl_lexer.lpp"
return DO;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 169 "glsl_lexer.lpp"
+#line 177 "glsl_lexer.lpp"
return WHILE;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 170 "glsl_lexer.lpp"
+#line 178 "glsl_lexer.lpp"
return ELSE;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 171 "glsl_lexer.lpp"
+#line 179 "glsl_lexer.lpp"
return FOR;
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 172 "glsl_lexer.lpp"
+#line 180 "glsl_lexer.lpp"
return IF;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 173 "glsl_lexer.lpp"
+#line 181 "glsl_lexer.lpp"
return DISCARD;
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 174 "glsl_lexer.lpp"
+#line 182 "glsl_lexer.lpp"
return RETURN;
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 176 "glsl_lexer.lpp"
+#line 184 "glsl_lexer.lpp"
return BVEC2;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 177 "glsl_lexer.lpp"
+#line 185 "glsl_lexer.lpp"
return BVEC3;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 178 "glsl_lexer.lpp"
+#line 186 "glsl_lexer.lpp"
return BVEC4;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 179 "glsl_lexer.lpp"
+#line 187 "glsl_lexer.lpp"
return IVEC2;
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 180 "glsl_lexer.lpp"
+#line 188 "glsl_lexer.lpp"
return IVEC3;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 181 "glsl_lexer.lpp"
+#line 189 "glsl_lexer.lpp"
return IVEC4;
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 182 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UVEC2);
+#line 190 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC2);
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 183 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UVEC3);
+#line 191 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC3);
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 184 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UVEC4);
+#line 192 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC4);
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 185 "glsl_lexer.lpp"
+#line 193 "glsl_lexer.lpp"
return VEC2;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 186 "glsl_lexer.lpp"
+#line 194 "glsl_lexer.lpp"
return VEC3;
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 187 "glsl_lexer.lpp"
+#line 195 "glsl_lexer.lpp"
return VEC4;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 188 "glsl_lexer.lpp"
+#line 196 "glsl_lexer.lpp"
return MAT2X2;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 189 "glsl_lexer.lpp"
+#line 197 "glsl_lexer.lpp"
return MAT3X3;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 190 "glsl_lexer.lpp"
+#line 198 "glsl_lexer.lpp"
return MAT4X4;
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 191 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X2);
+#line 199 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X2);
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 192 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X3);
+#line 200 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X3);
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 193 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X4);
+#line 201 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X4);
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 194 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X2);
+#line 202 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X2);
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 195 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X3);
+#line 203 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X3);
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 196 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X4);
+#line 204 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X4);
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 197 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X2);
+#line 205 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X2);
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 198 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X3);
+#line 206 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X3);
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 199 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X4);
+#line 207 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X4);
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 201 "glsl_lexer.lpp"
+#line 209 "glsl_lexer.lpp"
return IN_TOK;
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 202 "glsl_lexer.lpp"
+#line 210 "glsl_lexer.lpp"
return OUT_TOK;
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 203 "glsl_lexer.lpp"
+#line 211 "glsl_lexer.lpp"
return INOUT_TOK;
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 204 "glsl_lexer.lpp"
+#line 212 "glsl_lexer.lpp"
return UNIFORM;
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 205 "glsl_lexer.lpp"
+#line 213 "glsl_lexer.lpp"
return VARYING;
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 206 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, CENTROID);
+#line 214 "glsl_lexer.lpp"
+KEYWORD(120, 120, CENTROID);
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 207 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, INVARIANT);
+#line 215 "glsl_lexer.lpp"
+KEYWORD(120 || ES, 120 || ES, INVARIANT);
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 209 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(130, FLAT);
+#line 216 "glsl_lexer.lpp"
+KEYWORD(130 || ES, 130, FLAT);
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 210 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, SMOOTH);
+#line 217 "glsl_lexer.lpp"
+KEYWORD(130, 130, SMOOTH);
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 211 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, NOPERSPECTIVE);
+#line 218 "glsl_lexer.lpp"
+KEYWORD(130, 130, NOPERSPECTIVE);
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 213 "glsl_lexer.lpp"
+#line 220 "glsl_lexer.lpp"
return SAMPLER1D;
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 214 "glsl_lexer.lpp"
+#line 221 "glsl_lexer.lpp"
return SAMPLER2D;
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 215 "glsl_lexer.lpp"
+#line 222 "glsl_lexer.lpp"
return SAMPLER3D;
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 216 "glsl_lexer.lpp"
+#line 223 "glsl_lexer.lpp"
return SAMPLERCUBE;
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 217 "glsl_lexer.lpp"
-return SAMPLER1DSHADOW;
+#line 224 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER1DARRAY);
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 218 "glsl_lexer.lpp"
-return SAMPLER2DSHADOW;
+#line 225 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER2DARRAY);
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 220 "glsl_lexer.lpp"
-return STRUCT;
+#line 226 "glsl_lexer.lpp"
+return SAMPLER1DSHADOW;
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 221 "glsl_lexer.lpp"
-return VOID_TOK;
+#line 227 "glsl_lexer.lpp"
+return SAMPLER2DSHADOW;
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 223 "glsl_lexer.lpp"
-{
- if ((yyextra->language_version >= 140)
- || yyextra->ARB_explicit_attrib_location_enable
- || (yyextra->ARB_fragment_coord_conventions_enable)){
- return LAYOUT_TOK;
- } else {
- yylval->identifier = strdup(yytext);
- return IDENTIFIER;
- }
- }
+#line 228 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLERCUBESHADOW);
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 234 "glsl_lexer.lpp"
-return INC_OP;
+#line 229 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER1DARRAYSHADOW);
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 235 "glsl_lexer.lpp"
-return DEC_OP;
+#line 230 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER2DARRAYSHADOW);
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 236 "glsl_lexer.lpp"
-return LE_OP;
+#line 231 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER1D);
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 237 "glsl_lexer.lpp"
-return GE_OP;
+#line 232 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER2D);
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 238 "glsl_lexer.lpp"
-return EQ_OP;
+#line 233 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER3D);
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 239 "glsl_lexer.lpp"
-return NE_OP;
+#line 234 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLERCUBE);
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 240 "glsl_lexer.lpp"
-return AND_OP;
+#line 235 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER1DARRAY);
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 241 "glsl_lexer.lpp"
-return OR_OP;
+#line 236 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER2DARRAY);
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 242 "glsl_lexer.lpp"
-return XOR_OP;
+#line 237 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER1D);
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 243 "glsl_lexer.lpp"
-return LEFT_OP;
+#line 238 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER2D);
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 244 "glsl_lexer.lpp"
-return RIGHT_OP;
+#line 239 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER3D);
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 246 "glsl_lexer.lpp"
-return MUL_ASSIGN;
+#line 240 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLERCUBE);
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 247 "glsl_lexer.lpp"
-return DIV_ASSIGN;
+#line 241 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER1DARRAY);
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 248 "glsl_lexer.lpp"
-return ADD_ASSIGN;
+#line 242 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER2DARRAY);
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 249 "glsl_lexer.lpp"
-return MOD_ASSIGN;
+#line 245 "glsl_lexer.lpp"
+return STRUCT;
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 250 "glsl_lexer.lpp"
-return LEFT_ASSIGN;
+#line 246 "glsl_lexer.lpp"
+return VOID_TOK;
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 251 "glsl_lexer.lpp"
-return RIGHT_ASSIGN;
+#line 248 "glsl_lexer.lpp"
+{
+ if ((yyextra->language_version >= 140)
+ || yyextra->ARB_explicit_attrib_location_enable
+ || (yyextra->ARB_fragment_coord_conventions_enable)){
+ return LAYOUT_TOK;
+ } else {
+ yylval->identifier = strdup(yytext);
+ return IDENTIFIER;
+ }
+ }
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 252 "glsl_lexer.lpp"
-return AND_ASSIGN;
+#line 259 "glsl_lexer.lpp"
+return INC_OP;
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 253 "glsl_lexer.lpp"
-return XOR_ASSIGN;
+#line 260 "glsl_lexer.lpp"
+return DEC_OP;
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 254 "glsl_lexer.lpp"
-return OR_ASSIGN;
+#line 261 "glsl_lexer.lpp"
+return LE_OP;
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 255 "glsl_lexer.lpp"
-return SUB_ASSIGN;
+#line 262 "glsl_lexer.lpp"
+return GE_OP;
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 257 "glsl_lexer.lpp"
-{
- yylval->n = strtol(yytext, NULL, 10);
- return INTCONSTANT;
- }
+#line 263 "glsl_lexer.lpp"
+return EQ_OP;
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 261 "glsl_lexer.lpp"
-{
- yylval->n = strtol(yytext + 2, NULL, 16);
- return INTCONSTANT;
- }
+#line 264 "glsl_lexer.lpp"
+return NE_OP;
YY_BREAK
case 102:
YY_RULE_SETUP
#line 265 "glsl_lexer.lpp"
-{
- yylval->n = strtol(yytext, NULL, 8);
- return INTCONSTANT;
- }
+return AND_OP;
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 270 "glsl_lexer.lpp"
-{
- yylval->real = strtod(yytext, NULL);
- return FLOATCONSTANT;
- }
+#line 266 "glsl_lexer.lpp"
+return OR_OP;
YY_BREAK
case 104:
YY_RULE_SETUP
-#line 274 "glsl_lexer.lpp"
-{
- yylval->real = strtod(yytext, NULL);
- return FLOATCONSTANT;
- }
+#line 267 "glsl_lexer.lpp"
+return XOR_OP;
YY_BREAK
case 105:
YY_RULE_SETUP
-#line 278 "glsl_lexer.lpp"
-{
- yylval->real = strtod(yytext, NULL);
- return FLOATCONSTANT;
- }
+#line 268 "glsl_lexer.lpp"
+return LEFT_OP;
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 282 "glsl_lexer.lpp"
-{
- yylval->real = strtod(yytext, NULL);
- return FLOATCONSTANT;
- }
+#line 269 "glsl_lexer.lpp"
+return RIGHT_OP;
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 286 "glsl_lexer.lpp"
-{
- yylval->real = strtod(yytext, NULL);
- return FLOATCONSTANT;
- }
+#line 271 "glsl_lexer.lpp"
+return MUL_ASSIGN;
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 291 "glsl_lexer.lpp"
-{
- yylval->n = 1;
- return BOOLCONSTANT;
- }
+#line 272 "glsl_lexer.lpp"
+return DIV_ASSIGN;
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 295 "glsl_lexer.lpp"
-{
- yylval->n = 0;
- return BOOLCONSTANT;
- }
+#line 273 "glsl_lexer.lpp"
+return ADD_ASSIGN;
YY_BREAK
-/* Reserved words in GLSL 1.10. */
case 110:
YY_RULE_SETUP
-#line 302 "glsl_lexer.lpp"
-RESERVED_WORD(999, ASM);
+#line 274 "glsl_lexer.lpp"
+return MOD_ASSIGN;
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 303 "glsl_lexer.lpp"
-RESERVED_WORD(999, CLASS);
+#line 275 "glsl_lexer.lpp"
+return LEFT_ASSIGN;
YY_BREAK
case 112:
YY_RULE_SETUP
-#line 304 "glsl_lexer.lpp"
-RESERVED_WORD(999, UNION);
+#line 276 "glsl_lexer.lpp"
+return RIGHT_ASSIGN;
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 305 "glsl_lexer.lpp"
-RESERVED_WORD(999, ENUM);
+#line 277 "glsl_lexer.lpp"
+return AND_ASSIGN;
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 306 "glsl_lexer.lpp"
-RESERVED_WORD(999, TYPEDEF);
+#line 278 "glsl_lexer.lpp"
+return XOR_ASSIGN;
YY_BREAK
case 115:
YY_RULE_SETUP
-#line 307 "glsl_lexer.lpp"
-RESERVED_WORD(999, TEMPLATE);
+#line 279 "glsl_lexer.lpp"
+return OR_ASSIGN;
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 308 "glsl_lexer.lpp"
-RESERVED_WORD(999, THIS);
+#line 280 "glsl_lexer.lpp"
+return SUB_ASSIGN;
YY_BREAK
case 117:
YY_RULE_SETUP
-#line 309 "glsl_lexer.lpp"
-RESERVED_WORD(999, PACKED_TOK);
+#line 282 "glsl_lexer.lpp"
+{
+ yylval->n = strtol(yytext, NULL, 10);
+ return IS_UINT ? UINTCONSTANT : INTCONSTANT;
+ }
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 310 "glsl_lexer.lpp"
-RESERVED_WORD(999, GOTO);
+#line 286 "glsl_lexer.lpp"
+{
+ yylval->n = strtol(yytext + 2, NULL, 16);
+ return IS_UINT ? UINTCONSTANT : INTCONSTANT;
+ }
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 311 "glsl_lexer.lpp"
-RESERVED_WORD(130, SWITCH);
+#line 290 "glsl_lexer.lpp"
+{
+ yylval->n = strtol(yytext, NULL, 8);
+ return IS_UINT ? UINTCONSTANT : INTCONSTANT;
+ }
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 312 "glsl_lexer.lpp"
-RESERVED_WORD(130, DEFAULT);
+#line 295 "glsl_lexer.lpp"
+{
+ yylval->real = strtod(yytext, NULL);
+ return FLOATCONSTANT;
+ }
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 313 "glsl_lexer.lpp"
-RESERVED_WORD(999, INLINE_TOK);
+#line 299 "glsl_lexer.lpp"
+{
+ yylval->real = strtod(yytext, NULL);
+ return FLOATCONSTANT;
+ }
YY_BREAK
case 122:
YY_RULE_SETUP
-#line 314 "glsl_lexer.lpp"
-RESERVED_WORD(999, NOINLINE);
+#line 303 "glsl_lexer.lpp"
+{
+ yylval->real = strtod(yytext, NULL);
+ return FLOATCONSTANT;
+ }
YY_BREAK
case 123:
YY_RULE_SETUP
-#line 315 "glsl_lexer.lpp"
-RESERVED_WORD(999, VOLATILE);
+#line 307 "glsl_lexer.lpp"
+{
+ yylval->real = strtod(yytext, NULL);
+ return FLOATCONSTANT;
+ }
YY_BREAK
case 124:
YY_RULE_SETUP
-#line 316 "glsl_lexer.lpp"
-RESERVED_WORD(999, PUBLIC_TOK);
+#line 311 "glsl_lexer.lpp"
+{
+ yylval->real = strtod(yytext, NULL);
+ return FLOATCONSTANT;
+ }
YY_BREAK
case 125:
YY_RULE_SETUP
-#line 317 "glsl_lexer.lpp"
-RESERVED_WORD(999, STATIC);
+#line 316 "glsl_lexer.lpp"
+{
+ yylval->n = 1;
+ return BOOLCONSTANT;
+ }
YY_BREAK
case 126:
YY_RULE_SETUP
-#line 318 "glsl_lexer.lpp"
-RESERVED_WORD(999, EXTERN);
+#line 320 "glsl_lexer.lpp"
+{
+ yylval->n = 0;
+ return BOOLCONSTANT;
+ }
YY_BREAK
+/* Reserved words in GLSL 1.10. */
case 127:
YY_RULE_SETUP
-#line 319 "glsl_lexer.lpp"
-RESERVED_WORD(999, EXTERNAL);
+#line 327 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, ASM);
YY_BREAK
case 128:
YY_RULE_SETUP
-#line 320 "glsl_lexer.lpp"
-RESERVED_WORD(999, INTERFACE);
+#line 328 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, CLASS);
YY_BREAK
case 129:
YY_RULE_SETUP
-#line 321 "glsl_lexer.lpp"
-RESERVED_WORD(999, LONG_TOK);
+#line 329 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, UNION);
YY_BREAK
case 130:
YY_RULE_SETUP
-#line 322 "glsl_lexer.lpp"
-RESERVED_WORD(999, SHORT_TOK);
+#line 330 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, ENUM);
YY_BREAK
case 131:
YY_RULE_SETUP
-#line 323 "glsl_lexer.lpp"
-RESERVED_WORD(999, DOUBLE_TOK);
+#line 331 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, TYPEDEF);
YY_BREAK
case 132:
YY_RULE_SETUP
-#line 324 "glsl_lexer.lpp"
-RESERVED_WORD(999, HALF);
+#line 332 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, TEMPLATE);
YY_BREAK
case 133:
YY_RULE_SETUP
-#line 325 "glsl_lexer.lpp"
-RESERVED_WORD(999, FIXED_TOK);
+#line 333 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, THIS);
YY_BREAK
case 134:
YY_RULE_SETUP
-#line 326 "glsl_lexer.lpp"
-RESERVED_WORD(999, UNSIGNED);
+#line 334 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, PACKED_TOK);
YY_BREAK
case 135:
YY_RULE_SETUP
-#line 327 "glsl_lexer.lpp"
-RESERVED_WORD(999, INPUT_TOK);
+#line 335 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, GOTO);
YY_BREAK
case 136:
YY_RULE_SETUP
-#line 328 "glsl_lexer.lpp"
-RESERVED_WORD(999, OUTPUT);
+#line 336 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 130, SWITCH);
YY_BREAK
case 137:
YY_RULE_SETUP
-#line 329 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC2);
+#line 337 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 130, DEFAULT);
YY_BREAK
case 138:
YY_RULE_SETUP
-#line 330 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC3);
+#line 338 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INLINE_TOK);
YY_BREAK
case 139:
YY_RULE_SETUP
-#line 331 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC4);
+#line 339 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, NOINLINE);
YY_BREAK
case 140:
YY_RULE_SETUP
-#line 332 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC2);
+#line 340 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, VOLATILE);
YY_BREAK
case 141:
YY_RULE_SETUP
-#line 333 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC3);
+#line 341 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, PUBLIC_TOK);
YY_BREAK
case 142:
YY_RULE_SETUP
-#line 334 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC4);
+#line 342 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, STATIC);
YY_BREAK
case 143:
YY_RULE_SETUP
-#line 335 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC2);
+#line 343 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, EXTERN);
YY_BREAK
case 144:
YY_RULE_SETUP
-#line 336 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC3);
+#line 344 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, EXTERNAL);
YY_BREAK
case 145:
YY_RULE_SETUP
-#line 337 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC4);
+#line 345 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INTERFACE);
YY_BREAK
case 146:
YY_RULE_SETUP
-#line 338 "glsl_lexer.lpp"
-return SAMPLER2DRECT;
+#line 346 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, LONG_TOK);
YY_BREAK
case 147:
YY_RULE_SETUP
-#line 339 "glsl_lexer.lpp"
-RESERVED_WORD(999, SAMPLER3DRECT);
+#line 347 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SHORT_TOK);
YY_BREAK
case 148:
YY_RULE_SETUP
-#line 340 "glsl_lexer.lpp"
-return SAMPLER2DRECTSHADOW;
+#line 348 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DOUBLE_TOK);
YY_BREAK
case 149:
YY_RULE_SETUP
-#line 341 "glsl_lexer.lpp"
-RESERVED_WORD(999, SIZEOF);
+#line 349 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HALF);
YY_BREAK
case 150:
YY_RULE_SETUP
-#line 342 "glsl_lexer.lpp"
-RESERVED_WORD(999, CAST);
+#line 350 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FIXED_TOK);
YY_BREAK
case 151:
YY_RULE_SETUP
-#line 343 "glsl_lexer.lpp"
-RESERVED_WORD(999, NAMESPACE);
+#line 351 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, UNSIGNED);
YY_BREAK
case 152:
YY_RULE_SETUP
-#line 344 "glsl_lexer.lpp"
-RESERVED_WORD(999, USING);
+#line 352 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INPUT_TOK);
YY_BREAK
-/* Additional reserved words in GLSL 1.20. */
case 153:
YY_RULE_SETUP
-#line 347 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, LOWP);
+#line 353 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, OUTPUT);
YY_BREAK
case 154:
YY_RULE_SETUP
-#line 348 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, MEDIUMP);
+#line 354 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC2);
YY_BREAK
case 155:
YY_RULE_SETUP
-#line 349 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, HIGHP);
+#line 355 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC3);
YY_BREAK
case 156:
YY_RULE_SETUP
-#line 350 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, PRECISION);
+#line 356 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC4);
YY_BREAK
-/* Additional reserved words in GLSL 1.30. */
case 157:
YY_RULE_SETUP
-#line 353 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, COMMON);
+#line 357 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC2);
YY_BREAK
case 158:
YY_RULE_SETUP
-#line 354 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, PARTITION);
+#line 358 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC3);
YY_BREAK
case 159:
YY_RULE_SETUP
-#line 355 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, ACTIVE);
+#line 359 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC4);
YY_BREAK
case 160:
YY_RULE_SETUP
-#line 356 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(130, SUPERP);
+#line 360 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC2);
YY_BREAK
case 161:
YY_RULE_SETUP
-#line 357 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, SAMPLERBUFFER);
+#line 361 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC3);
YY_BREAK
case 162:
YY_RULE_SETUP
-#line 358 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, FILTER);
+#line 362 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC4);
YY_BREAK
case 163:
YY_RULE_SETUP
-#line 359 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1D);
+#line 363 "glsl_lexer.lpp"
+return SAMPLER2DRECT;
YY_BREAK
case 164:
YY_RULE_SETUP
-#line 360 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2D);
+#line 364 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SAMPLER3DRECT);
YY_BREAK
case 165:
YY_RULE_SETUP
-#line 361 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE3D);
+#line 365 "glsl_lexer.lpp"
+return SAMPLER2DRECTSHADOW;
YY_BREAK
case 166:
YY_RULE_SETUP
-#line 362 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGECUBE);
+#line 366 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SIZEOF);
YY_BREAK
case 167:
YY_RULE_SETUP
-#line 363 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE1D);
+#line 367 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, CAST);
YY_BREAK
case 168:
YY_RULE_SETUP
-#line 364 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE2D);
+#line 368 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, NAMESPACE);
YY_BREAK
case 169:
YY_RULE_SETUP
-#line 365 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE3D);
+#line 369 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, USING);
YY_BREAK
+/* Additional reserved words in GLSL 1.20. */
case 170:
YY_RULE_SETUP
-#line 366 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGECUBE);
+#line 372 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, LOWP);
YY_BREAK
case 171:
YY_RULE_SETUP
-#line 367 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE1D);
+#line 373 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, MEDIUMP);
YY_BREAK
case 172:
YY_RULE_SETUP
-#line 368 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE2D);
+#line 374 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, HIGHP);
YY_BREAK
case 173:
YY_RULE_SETUP
-#line 369 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE3D);
+#line 375 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, PRECISION);
YY_BREAK
+/* Additional reserved words in GLSL 1.30. */
case 174:
YY_RULE_SETUP
-#line 370 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGECUBE);
+#line 378 "glsl_lexer.lpp"
+KEYWORD(130, 130, CASE);
YY_BREAK
case 175:
YY_RULE_SETUP
-#line 371 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1DARRAY);
+#line 379 "glsl_lexer.lpp"
+KEYWORD(130, 999, COMMON);
YY_BREAK
case 176:
YY_RULE_SETUP
-#line 372 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2DARRAY);
+#line 380 "glsl_lexer.lpp"
+KEYWORD(130, 999, PARTITION);
YY_BREAK
case 177:
YY_RULE_SETUP
-#line 373 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE1DARRAY);
+#line 381 "glsl_lexer.lpp"
+KEYWORD(130, 999, ACTIVE);
YY_BREAK
case 178:
YY_RULE_SETUP
-#line 374 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE2DARRAY);
+#line 382 "glsl_lexer.lpp"
+KEYWORD(130 || ES, 999, SUPERP);
YY_BREAK
case 179:
YY_RULE_SETUP
-#line 375 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE1DARRAY);
+#line 383 "glsl_lexer.lpp"
+KEYWORD(130, 140, SAMPLERBUFFER);
YY_BREAK
case 180:
YY_RULE_SETUP
-#line 376 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE2DARRAY);
+#line 384 "glsl_lexer.lpp"
+KEYWORD(130, 999, FILTER);
YY_BREAK
case 181:
YY_RULE_SETUP
-#line 377 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1DSHADOW);
+#line 385 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE1D);
YY_BREAK
case 182:
YY_RULE_SETUP
-#line 378 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2DSHADOW);
+#line 386 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE2D);
YY_BREAK
case 183:
YY_RULE_SETUP
-#line 379 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGEBUFFER);
+#line 387 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE3D);
YY_BREAK
case 184:
YY_RULE_SETUP
-#line 380 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGEBUFFER);
+#line 388 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGECUBE);
YY_BREAK
case 185:
YY_RULE_SETUP
-#line 381 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGEBUFFER);
+#line 389 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGE1D);
YY_BREAK
case 186:
YY_RULE_SETUP
-#line 382 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, ROW_MAJOR);
+#line 390 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGE2D);
YY_BREAK
case 187:
YY_RULE_SETUP
-#line 384 "glsl_lexer.lpp"
+#line 391 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGE3D);
+ YY_BREAK
+case 188:
+YY_RULE_SETUP
+#line 392 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGECUBE);
+ YY_BREAK
+case 189:
+YY_RULE_SETUP
+#line 393 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGE1D);
+ YY_BREAK
+case 190:
+YY_RULE_SETUP
+#line 394 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGE2D);
+ YY_BREAK
+case 191:
+YY_RULE_SETUP
+#line 395 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGE3D);
+ YY_BREAK
+case 192:
+YY_RULE_SETUP
+#line 396 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGECUBE);
+ YY_BREAK
+case 193:
+YY_RULE_SETUP
+#line 397 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE1DARRAY);
+ YY_BREAK
+case 194:
+YY_RULE_SETUP
+#line 398 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE2DARRAY);
+ YY_BREAK
+case 195:
+YY_RULE_SETUP
+#line 399 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGE1DARRAY);
+ YY_BREAK
+case 196:
+YY_RULE_SETUP
+#line 400 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGE2DARRAY);
+ YY_BREAK
+case 197:
+YY_RULE_SETUP
+#line 401 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGE1DARRAY);
+ YY_BREAK
+case 198:
+YY_RULE_SETUP
+#line 402 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGE2DARRAY);
+ YY_BREAK
+case 199:
+YY_RULE_SETUP
+#line 403 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE1DSHADOW);
+ YY_BREAK
+case 200:
+YY_RULE_SETUP
+#line 404 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE2DSHADOW);
+ YY_BREAK
+case 201:
+YY_RULE_SETUP
+#line 405 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE1DARRAYSHADOW);
+ YY_BREAK
+case 202:
+YY_RULE_SETUP
+#line 406 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE2DARRAYSHADOW);
+ YY_BREAK
+case 203:
+YY_RULE_SETUP
+#line 407 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGEBUFFER);
+ YY_BREAK
+case 204:
+YY_RULE_SETUP
+#line 408 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGEBUFFER);
+ YY_BREAK
+case 205:
+YY_RULE_SETUP
+#line 409 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGEBUFFER);
+ YY_BREAK
+case 206:
+YY_RULE_SETUP
+#line 410 "glsl_lexer.lpp"
+KEYWORD(130, 999, ROW_MAJOR);
+ YY_BREAK
+case 207:
+YY_RULE_SETUP
+#line 412 "glsl_lexer.lpp"
{
struct _mesa_glsl_parse_state *state = yyextra;
void *ctx = state;
@@ -2366,17 +2519,17 @@ YY_RULE_SETUP
return IDENTIFIER;
}
YY_BREAK
-case 188:
+case 208:
YY_RULE_SETUP
-#line 391 "glsl_lexer.lpp"
+#line 419 "glsl_lexer.lpp"
{ return yytext[0]; }
YY_BREAK
-case 189:
+case 209:
YY_RULE_SETUP
-#line 393 "glsl_lexer.lpp"
+#line 421 "glsl_lexer.lpp"
ECHO;
YY_BREAK
-#line 2380 "glsl_lexer.cpp"
+#line 2533 "glsl_lexer.cpp"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(PP):
case YY_STATE_EOF(PRAGMA):
@@ -2674,7 +2827,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 716 )
+ if ( yy_current_state >= 813 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2703,11 +2856,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 716 )
+ if ( yy_current_state >= 813 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 715);
+ yy_is_jam = (yy_current_state == 812);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -3112,8 +3265,8 @@ YY_BUFFER_STATE _mesa_glsl__scan_string (yyconst char * yystr , yyscan_t yyscann
/** Setup the input buffer state to scan the given bytes. The next call to _mesa_glsl_lex() will
* scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
* @param yyscanner The scanner object.
* @return the newly allocated buffer state object.
*/
@@ -3519,7 +3672,7 @@ void _mesa_glsl_free (void * ptr , yyscan_t yyscanner)
#define YYTABLES_NAME "yytables"
-#line 393 "glsl_lexer.lpp"
+#line 421 "glsl_lexer.lpp"
diff --git a/src/glsl/glsl_lexer.lpp b/src/glsl/glsl_lexer.lpp
index f690c4728b..7a3f1a67e6 100644
--- a/src/glsl/glsl_lexer.lpp
+++ b/src/glsl/glsl_lexer.lpp
@@ -36,36 +36,44 @@
#define YY_USER_INIT yylineno = 0; yycolumn = 0;
-#define TOKEN_OR_IDENTIFIER(version, token) \
- do { \
- if (yyextra->language_version >= version) { \
- return token; \
- } else { \
- yylval->identifier = strdup(yytext); \
- return IDENTIFIER; \
- } \
- } while (0)
-
-/* Handle reserved words in GLSL ES (version 100) */
-#define TOKEN_OR_IDENTIFIER_ES(version, token) \
- do { \
- if (yyextra->es_shader) { \
- return token; \
- } else { \
- TOKEN_OR_IDENTIFIER(version, token); \
- } \
- } while (0)
+#define IS_UINT (yytext[yyleng - 1] == 'u' || yytext[yyleng - 1] == 'U')
-#define RESERVED_WORD(version, token) \
+/* A macro for handling reserved words and keywords across language versions.
+ *
+ * Certain words start out as identifiers, become reserved words in
+ * later language revisions, and finally become language keywords.
+ *
+ * For example, consider the following lexer rule:
+ * samplerBuffer KEYWORD(130, 140, SAMPLERBUFFER)
+ *
+ * This means that "samplerBuffer" will be treated as:
+ * - a keyword (SAMPLERBUFFER token) ...in GLSL >= 1.40
+ * - a reserved word - error ...in GLSL >= 1.30
+ * - an identifier ...in GLSL < 1.30
+ */
+#define KEYWORD(reserved_version, allowed_version, token) \
do { \
- if (yyextra->language_version >= version) { \
+ if (yyextra->language_version >= allowed_version) { \
return token; \
- } else { \
+ } else if (yyextra->language_version >= reserved_version) { \
_mesa_glsl_error(yylloc, yyextra, \
"Illegal use of reserved word `%s'", yytext); \
return ERROR_TOK; \
+ } else { \
+ yylval->identifier = strdup(yytext); \
+ return IDENTIFIER; \
} \
} while (0)
+
+/* The ES macro can be used in KEYWORD checks:
+ *
+ * word KEYWORD(110 || ES, 400, TOKEN)
+ * ...means the word is reserved in GLSL ES 1.00, while
+ *
+ * word KEYWORD(110, 130 || ES, TOKEN)
+ * ...means the word is a legal keyword in GLSL ES 1.00.
+ */
+#define ES yyextra->es_shader
%}
%option bison-bridge bison-locations reentrant noyywrap
@@ -161,7 +169,7 @@ const return CONST_TOK;
bool return BOOL_TOK;
float return FLOAT_TOK;
int return INT_TOK;
-uint TOKEN_OR_IDENTIFIER(130, UINT_TOK);
+uint KEYWORD(130, 130, UINT_TOK);
break return BREAK;
continue return CONTINUE;
@@ -179,43 +187,60 @@ bvec4 return BVEC4;
ivec2 return IVEC2;
ivec3 return IVEC3;
ivec4 return IVEC4;
-uvec2 TOKEN_OR_IDENTIFIER(130, UVEC2);
-uvec3 TOKEN_OR_IDENTIFIER(130, UVEC3);
-uvec4 TOKEN_OR_IDENTIFIER(130, UVEC4);
+uvec2 KEYWORD(130, 130, UVEC2);
+uvec3 KEYWORD(130, 130, UVEC3);
+uvec4 KEYWORD(130, 130, UVEC4);
vec2 return VEC2;
vec3 return VEC3;
vec4 return VEC4;
mat2 return MAT2X2;
mat3 return MAT3X3;
mat4 return MAT4X4;
-mat2x2 TOKEN_OR_IDENTIFIER(120, MAT2X2);
-mat2x3 TOKEN_OR_IDENTIFIER(120, MAT2X3);
-mat2x4 TOKEN_OR_IDENTIFIER(120, MAT2X4);
-mat3x2 TOKEN_OR_IDENTIFIER(120, MAT3X2);
-mat3x3 TOKEN_OR_IDENTIFIER(120, MAT3X3);
-mat3x4 TOKEN_OR_IDENTIFIER(120, MAT3X4);
-mat4x2 TOKEN_OR_IDENTIFIER(120, MAT4X2);
-mat4x3 TOKEN_OR_IDENTIFIER(120, MAT4X3);
-mat4x4 TOKEN_OR_IDENTIFIER(120, MAT4X4);
+mat2x2 KEYWORD(120, 120, MAT2X2);
+mat2x3 KEYWORD(120, 120, MAT2X3);
+mat2x4 KEYWORD(120, 120, MAT2X4);
+mat3x2 KEYWORD(120, 120, MAT3X2);
+mat3x3 KEYWORD(120, 120, MAT3X3);
+mat3x4 KEYWORD(120, 120, MAT3X4);
+mat4x2 KEYWORD(120, 120, MAT4X2);
+mat4x3 KEYWORD(120, 120, MAT4X3);
+mat4x4 KEYWORD(120, 120, MAT4X4);
in return IN_TOK;
out return OUT_TOK;
inout return INOUT_TOK;
uniform return UNIFORM;
varying return VARYING;
-centroid TOKEN_OR_IDENTIFIER(120, CENTROID);
-invariant TOKEN_OR_IDENTIFIER_ES(120, INVARIANT);
-
-flat TOKEN_OR_IDENTIFIER_ES(130, FLAT);
-smooth TOKEN_OR_IDENTIFIER(130, SMOOTH);
-noperspective TOKEN_OR_IDENTIFIER(130, NOPERSPECTIVE);
+centroid KEYWORD(120, 120, CENTROID);
+invariant KEYWORD(120 || ES, 120 || ES, INVARIANT);
+flat KEYWORD(130 || ES, 130, FLAT);
+smooth KEYWORD(130, 130, SMOOTH);
+noperspective KEYWORD(130, 130, NOPERSPECTIVE);
sampler1D return SAMPLER1D;
sampler2D return SAMPLER2D;
sampler3D return SAMPLER3D;
samplerCube return SAMPLERCUBE;
+sampler1DArray KEYWORD(130, 130, SAMPLER1DARRAY);
+sampler2DArray KEYWORD(130, 130, SAMPLER2DARRAY);
sampler1DShadow return SAMPLER1DSHADOW;
sampler2DShadow return SAMPLER2DSHADOW;
+samplerCubeShadow KEYWORD(130, 130, SAMPLERCUBESHADOW);
+sampler1DArrayShadow KEYWORD(130, 130, SAMPLER1DARRAYSHADOW);
+sampler2DArrayShadow KEYWORD(130, 130, SAMPLER2DARRAYSHADOW);
+isampler1D KEYWORD(130, 130, ISAMPLER1D);
+isampler2D KEYWORD(130, 130, ISAMPLER2D);
+isampler3D KEYWORD(130, 130, ISAMPLER3D);
+isamplerCube KEYWORD(130, 130, ISAMPLERCUBE);
+isampler1DArray KEYWORD(130, 130, ISAMPLER1DARRAY);
+isampler2DArray KEYWORD(130, 130, ISAMPLER2DARRAY);
+usampler1D KEYWORD(130, 130, USAMPLER1D);
+usampler2D KEYWORD(130, 130, USAMPLER2D);
+usampler3D KEYWORD(130, 130, USAMPLER3D);
+usamplerCube KEYWORD(130, 130, USAMPLERCUBE);
+usampler1DArray KEYWORD(130, 130, USAMPLER1DARRAY);
+usampler2DArray KEYWORD(130, 130, USAMPLER2DARRAY);
+
struct return STRUCT;
void return VOID_TOK;
@@ -254,17 +279,17 @@ layout {
\|= return OR_ASSIGN;
-= return SUB_ASSIGN;
-[1-9][0-9]* {
+[1-9][0-9]*[uU]? {
yylval->n = strtol(yytext, NULL, 10);
- return INTCONSTANT;
+ return IS_UINT ? UINTCONSTANT : INTCONSTANT;
}
-0[xX][0-9a-fA-F]+ {
+0[xX][0-9a-fA-F]+[uU]? {
yylval->n = strtol(yytext + 2, NULL, 16);
- return INTCONSTANT;
+ return IS_UINT ? UINTCONSTANT : INTCONSTANT;
}
-0[0-7]* {
+0[0-7]*[uU]? {
yylval->n = strtol(yytext, NULL, 8);
- return INTCONSTANT;
+ return IS_UINT ? UINTCONSTANT : INTCONSTANT;
}
[0-9]+\.[0-9]+([eE][+-]?[0-9]+)?[fF]? {
@@ -299,87 +324,90 @@ false {
/* Reserved words in GLSL 1.10. */
-asm RESERVED_WORD(999, ASM);
-class RESERVED_WORD(999, CLASS);
-union RESERVED_WORD(999, UNION);
-enum RESERVED_WORD(999, ENUM);
-typedef RESERVED_WORD(999, TYPEDEF);
-template RESERVED_WORD(999, TEMPLATE);
-this RESERVED_WORD(999, THIS);
-packed RESERVED_WORD(999, PACKED_TOK);
-goto RESERVED_WORD(999, GOTO);
-switch RESERVED_WORD(130, SWITCH);
-default RESERVED_WORD(130, DEFAULT);
-inline RESERVED_WORD(999, INLINE_TOK);
-noinline RESERVED_WORD(999, NOINLINE);
-volatile RESERVED_WORD(999, VOLATILE);
-public RESERVED_WORD(999, PUBLIC_TOK);
-static RESERVED_WORD(999, STATIC);
-extern RESERVED_WORD(999, EXTERN);
-external RESERVED_WORD(999, EXTERNAL);
-interface RESERVED_WORD(999, INTERFACE);
-long RESERVED_WORD(999, LONG_TOK);
-short RESERVED_WORD(999, SHORT_TOK);
-double RESERVED_WORD(999, DOUBLE_TOK);
-half RESERVED_WORD(999, HALF);
-fixed RESERVED_WORD(999, FIXED_TOK);
-unsigned RESERVED_WORD(999, UNSIGNED);
-input RESERVED_WORD(999, INPUT_TOK);
-output RESERVED_WORD(999, OUTPUT);
-hvec2 RESERVED_WORD(999, HVEC2);
-hvec3 RESERVED_WORD(999, HVEC3);
-hvec4 RESERVED_WORD(999, HVEC4);
-dvec2 RESERVED_WORD(999, DVEC2);
-dvec3 RESERVED_WORD(999, DVEC3);
-dvec4 RESERVED_WORD(999, DVEC4);
-fvec2 RESERVED_WORD(999, FVEC2);
-fvec3 RESERVED_WORD(999, FVEC3);
-fvec4 RESERVED_WORD(999, FVEC4);
+asm KEYWORD(110 || ES, 999, ASM);
+class KEYWORD(110 || ES, 999, CLASS);
+union KEYWORD(110 || ES, 999, UNION);
+enum KEYWORD(110 || ES, 999, ENUM);
+typedef KEYWORD(110 || ES, 999, TYPEDEF);
+template KEYWORD(110 || ES, 999, TEMPLATE);
+this KEYWORD(110 || ES, 999, THIS);
+packed KEYWORD(110 || ES, 999, PACKED_TOK);
+goto KEYWORD(110 || ES, 999, GOTO);
+switch KEYWORD(110 || ES, 130, SWITCH);
+default KEYWORD(110 || ES, 130, DEFAULT);
+inline KEYWORD(110 || ES, 999, INLINE_TOK);
+noinline KEYWORD(110 || ES, 999, NOINLINE);
+volatile KEYWORD(110 || ES, 999, VOLATILE);
+public KEYWORD(110 || ES, 999, PUBLIC_TOK);
+static KEYWORD(110 || ES, 999, STATIC);
+extern KEYWORD(110 || ES, 999, EXTERN);
+external KEYWORD(110 || ES, 999, EXTERNAL);
+interface KEYWORD(110 || ES, 999, INTERFACE);
+long KEYWORD(110 || ES, 999, LONG_TOK);
+short KEYWORD(110 || ES, 999, SHORT_TOK);
+double KEYWORD(110 || ES, 400, DOUBLE_TOK);
+half KEYWORD(110 || ES, 999, HALF);
+fixed KEYWORD(110 || ES, 999, FIXED_TOK);
+unsigned KEYWORD(110 || ES, 999, UNSIGNED);
+input KEYWORD(110 || ES, 999, INPUT_TOK);
+output KEYWORD(110 || ES, 999, OUTPUT);
+hvec2 KEYWORD(110 || ES, 999, HVEC2);
+hvec3 KEYWORD(110 || ES, 999, HVEC3);
+hvec4 KEYWORD(110 || ES, 999, HVEC4);
+dvec2 KEYWORD(110 || ES, 400, DVEC2);
+dvec3 KEYWORD(110 || ES, 400, DVEC3);
+dvec4 KEYWORD(110 || ES, 400, DVEC4);
+fvec2 KEYWORD(110 || ES, 999, FVEC2);
+fvec3 KEYWORD(110 || ES, 999, FVEC3);
+fvec4 KEYWORD(110 || ES, 999, FVEC4);
sampler2DRect return SAMPLER2DRECT;
-sampler3DRect RESERVED_WORD(999, SAMPLER3DRECT);
+sampler3DRect KEYWORD(110 || ES, 999, SAMPLER3DRECT);
sampler2DRectShadow return SAMPLER2DRECTSHADOW;
-sizeof RESERVED_WORD(999, SIZEOF);
-cast RESERVED_WORD(999, CAST);
-namespace RESERVED_WORD(999, NAMESPACE);
-using RESERVED_WORD(999, USING);
+sizeof KEYWORD(110 || ES, 999, SIZEOF);
+cast KEYWORD(110 || ES, 999, CAST);
+namespace KEYWORD(110 || ES, 999, NAMESPACE);
+using KEYWORD(110 || ES, 999, USING);
/* Additional reserved words in GLSL 1.20. */
-lowp TOKEN_OR_IDENTIFIER_ES(120, LOWP);
-mediump TOKEN_OR_IDENTIFIER_ES(120, MEDIUMP);
-highp TOKEN_OR_IDENTIFIER_ES(120, HIGHP);
-precision TOKEN_OR_IDENTIFIER_ES(120, PRECISION);
+lowp KEYWORD(120, 130 || ES, LOWP);
+mediump KEYWORD(120, 130 || ES, MEDIUMP);
+highp KEYWORD(120, 130 || ES, HIGHP);
+precision KEYWORD(120, 130 || ES, PRECISION);
/* Additional reserved words in GLSL 1.30. */
-common TOKEN_OR_IDENTIFIER(130, COMMON);
-partition TOKEN_OR_IDENTIFIER(130, PARTITION);
-active TOKEN_OR_IDENTIFIER(130, ACTIVE);
-superp TOKEN_OR_IDENTIFIER_ES(130, SUPERP);
-samplerBuffer TOKEN_OR_IDENTIFIER(130, SAMPLERBUFFER);
-filter TOKEN_OR_IDENTIFIER(130, FILTER);
-image1D TOKEN_OR_IDENTIFIER(130, IMAGE1D);
-image2D TOKEN_OR_IDENTIFIER(130, IMAGE2D);
-image3D TOKEN_OR_IDENTIFIER(130, IMAGE3D);
-imageCube TOKEN_OR_IDENTIFIER(130, IMAGECUBE);
-iimage1D TOKEN_OR_IDENTIFIER(130, IIMAGE1D);
-iimage2D TOKEN_OR_IDENTIFIER(130, IIMAGE2D);
-iimage3D TOKEN_OR_IDENTIFIER(130, IIMAGE3D);
-iimageCube TOKEN_OR_IDENTIFIER(130, IIMAGECUBE);
-uimage1D TOKEN_OR_IDENTIFIER(130, UIMAGE1D);
-uimage2D TOKEN_OR_IDENTIFIER(130, UIMAGE2D);
-uimage3D TOKEN_OR_IDENTIFIER(130, UIMAGE3D);
-uimageCube TOKEN_OR_IDENTIFIER(130, UIMAGECUBE);
-image1DArray TOKEN_OR_IDENTIFIER(130, IMAGE1DARRAY);
-image2DArray TOKEN_OR_IDENTIFIER(130, IMAGE2DARRAY);
-iimage1DArray TOKEN_OR_IDENTIFIER(130, IIMAGE1DARRAY);
-iimage2DArray TOKEN_OR_IDENTIFIER(130, IIMAGE2DARRAY);
-uimage1DArray TOKEN_OR_IDENTIFIER(130, UIMAGE1DARRAY);
-uimage2DArray TOKEN_OR_IDENTIFIER(130, UIMAGE2DARRAY);
-image1DShadow TOKEN_OR_IDENTIFIER(130, IMAGE1DSHADOW);
-image2DShadow TOKEN_OR_IDENTIFIER(130, IMAGE2DSHADOW);
-imageBuffer TOKEN_OR_IDENTIFIER(130, IMAGEBUFFER);
-iimageBuffer TOKEN_OR_IDENTIFIER(130, IIMAGEBUFFER);
-uimageBuffer TOKEN_OR_IDENTIFIER(130, UIMAGEBUFFER);
-row_major TOKEN_OR_IDENTIFIER(130, ROW_MAJOR);
+case KEYWORD(130, 130, CASE);
+common KEYWORD(130, 999, COMMON);
+partition KEYWORD(130, 999, PARTITION);
+active KEYWORD(130, 999, ACTIVE);
+superp KEYWORD(130 || ES, 999, SUPERP);
+samplerBuffer KEYWORD(130, 140, SAMPLERBUFFER);
+filter KEYWORD(130, 999, FILTER);
+image1D KEYWORD(130, 999, IMAGE1D);
+image2D KEYWORD(130, 999, IMAGE2D);
+image3D KEYWORD(130, 999, IMAGE3D);
+imageCube KEYWORD(130, 999, IMAGECUBE);
+iimage1D KEYWORD(130, 999, IIMAGE1D);
+iimage2D KEYWORD(130, 999, IIMAGE2D);
+iimage3D KEYWORD(130, 999, IIMAGE3D);
+iimageCube KEYWORD(130, 999, IIMAGECUBE);
+uimage1D KEYWORD(130, 999, UIMAGE1D);
+uimage2D KEYWORD(130, 999, UIMAGE2D);
+uimage3D KEYWORD(130, 999, UIMAGE3D);
+uimageCube KEYWORD(130, 999, UIMAGECUBE);
+image1DArray KEYWORD(130, 999, IMAGE1DARRAY);
+image2DArray KEYWORD(130, 999, IMAGE2DARRAY);
+iimage1DArray KEYWORD(130, 999, IIMAGE1DARRAY);
+iimage2DArray KEYWORD(130, 999, IIMAGE2DARRAY);
+uimage1DArray KEYWORD(130, 999, UIMAGE1DARRAY);
+uimage2DArray KEYWORD(130, 999, UIMAGE2DARRAY);
+image1DShadow KEYWORD(130, 999, IMAGE1DSHADOW);
+image2DShadow KEYWORD(130, 999, IMAGE2DSHADOW);
+image1DArrayShadow KEYWORD(130, 999, IMAGE1DARRAYSHADOW);
+image2DArrayShadow KEYWORD(130, 999, IMAGE2DARRAYSHADOW);
+imageBuffer KEYWORD(130, 999, IMAGEBUFFER);
+iimageBuffer KEYWORD(130, 999, IIMAGEBUFFER);
+uimageBuffer KEYWORD(130, 999, UIMAGEBUFFER);
+row_major KEYWORD(130, 999, ROW_MAJOR);
[_a-zA-Z][_a-zA-Z0-9]* {
struct _mesa_glsl_parse_state *state = yyextra;
diff --git a/src/glsl/glsl_parser.cpp b/src/glsl/glsl_parser.cpp
index e6c8e8a0ec..23e439c7c5 100644
--- a/src/glsl/glsl_parser.cpp
+++ b/src/glsl/glsl_parser.cpp
@@ -327,7 +327,9 @@
IMAGEBUFFER = 442,
IIMAGEBUFFER = 443,
UIMAGEBUFFER = 444,
- ROW_MAJOR = 445
+ IMAGE1DARRAYSHADOW = 445,
+ IMAGE2DARRAYSHADOW = 446,
+ ROW_MAJOR = 447
};
#endif
@@ -371,7 +373,7 @@ typedef union YYSTYPE
/* Line 214 of yacc.c */
-#line 375 "glsl_parser.cpp"
+#line 377 "glsl_parser.cpp"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -396,7 +398,7 @@ typedef struct YYLTYPE
/* Line 264 of yacc.c */
-#line 400 "glsl_parser.cpp"
+#line 402 "glsl_parser.cpp"
#ifdef short
# undef short
@@ -613,10 +615,10 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 5
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 3692
+#define YYLAST 3718
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 215
+#define YYNTOKENS 217
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 87
/* YYNRULES -- Number of rules. */
@@ -626,7 +628,7 @@ union yyalloc
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 445
+#define YYMAXUTOK 447
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -637,16 +639,16 @@ static const yytype_uint8 yytranslate[] =
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 199, 2, 2, 2, 203, 206, 2,
- 191, 192, 201, 197, 196, 198, 195, 202, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 210, 212,
- 204, 211, 205, 209, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 201, 2, 2, 2, 205, 208, 2,
+ 193, 194, 203, 199, 198, 200, 197, 204, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 212, 214,
+ 206, 213, 207, 211, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 193, 2, 194, 207, 2, 2, 2, 2, 2,
+ 2, 195, 2, 196, 209, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 213, 208, 214, 200, 2, 2, 2,
+ 2, 2, 2, 215, 210, 216, 202, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -678,7 +680,7 @@ static const yytype_uint8 yytranslate[] =
155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190
+ 185, 186, 187, 188, 189, 190, 191, 192
};
#if YYDEBUG
@@ -719,57 +721,57 @@ static const yytype_uint16 yyprhs[] =
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int16 yyrhs[] =
{
- 216, 0, -1, -1, 218, 220, 217, 222, -1, -1,
+ 218, 0, -1, -1, 220, 222, 219, 224, -1, -1,
109, 78, 113, -1, 116, 113, -1, 117, 113, -1,
- 118, 113, -1, 119, 113, -1, -1, 220, 221, -1,
- 110, 76, 112, 76, 113, -1, 300, -1, 222, 300,
- -1, 76, -1, 223, -1, 78, -1, 79, -1, 77,
- -1, 80, -1, 191, 250, 192, -1, 224, -1, 225,
- 193, 226, 194, -1, 227, -1, 225, 195, 76, -1,
- 225, 84, -1, 225, 85, -1, 250, -1, 228, -1,
- 229, -1, 225, 195, 229, -1, 231, 192, -1, 230,
- 192, -1, 232, 74, -1, 232, -1, 232, 248, -1,
- 231, 196, 248, -1, 233, 191, -1, 271, -1, 76,
- -1, 81, -1, 225, -1, 84, 234, -1, 85, 234,
- -1, 235, 234, -1, 197, -1, 198, -1, 199, -1,
- 200, -1, 234, -1, 236, 201, 234, -1, 236, 202,
- 234, -1, 236, 203, 234, -1, 236, -1, 237, 197,
- 236, -1, 237, 198, 236, -1, 237, -1, 238, 82,
- 237, -1, 238, 83, 237, -1, 238, -1, 239, 204,
- 238, -1, 239, 205, 238, -1, 239, 86, 238, -1,
- 239, 87, 238, -1, 239, -1, 240, 88, 239, -1,
- 240, 89, 239, -1, 240, -1, 241, 206, 240, -1,
- 241, -1, 242, 207, 241, -1, 242, -1, 243, 208,
- 242, -1, 243, -1, 244, 90, 243, -1, 244, -1,
- 245, 92, 244, -1, 245, -1, 246, 91, 245, -1,
- 246, -1, 246, 209, 250, 210, 248, -1, 247, -1,
- 234, 249, 248, -1, 211, -1, 93, -1, 94, -1,
+ 118, 113, -1, 119, 113, -1, -1, 222, 223, -1,
+ 110, 76, 112, 76, 113, -1, 302, -1, 224, 302,
+ -1, 76, -1, 225, -1, 78, -1, 79, -1, 77,
+ -1, 80, -1, 193, 252, 194, -1, 226, -1, 227,
+ 195, 228, 196, -1, 229, -1, 227, 197, 76, -1,
+ 227, 84, -1, 227, 85, -1, 252, -1, 230, -1,
+ 231, -1, 227, 197, 231, -1, 233, 194, -1, 232,
+ 194, -1, 234, 74, -1, 234, -1, 234, 250, -1,
+ 233, 198, 250, -1, 235, 193, -1, 273, -1, 76,
+ -1, 81, -1, 227, -1, 84, 236, -1, 85, 236,
+ -1, 237, 236, -1, 199, -1, 200, -1, 201, -1,
+ 202, -1, 236, -1, 238, 203, 236, -1, 238, 204,
+ 236, -1, 238, 205, 236, -1, 238, -1, 239, 199,
+ 238, -1, 239, 200, 238, -1, 239, -1, 240, 82,
+ 239, -1, 240, 83, 239, -1, 240, -1, 241, 206,
+ 240, -1, 241, 207, 240, -1, 241, 86, 240, -1,
+ 241, 87, 240, -1, 241, -1, 242, 88, 241, -1,
+ 242, 89, 241, -1, 242, -1, 243, 208, 242, -1,
+ 243, -1, 244, 209, 243, -1, 244, -1, 245, 210,
+ 244, -1, 245, -1, 246, 90, 245, -1, 246, -1,
+ 247, 92, 246, -1, 247, -1, 248, 91, 247, -1,
+ 248, -1, 248, 211, 252, 212, 250, -1, 249, -1,
+ 236, 251, 250, -1, 213, -1, 93, -1, 94, -1,
96, -1, 95, -1, 102, -1, 97, -1, 98, -1,
- 99, -1, 100, -1, 101, -1, 248, -1, 250, 196,
- 248, -1, 247, -1, 253, 212, -1, 261, 212, -1,
- 108, 275, 272, 212, -1, 254, 192, -1, 256, -1,
- 255, -1, 256, 258, -1, 255, 196, 258, -1, 263,
- 76, 191, -1, 271, 76, -1, 271, 76, 193, 251,
- 194, -1, 268, 259, 257, -1, 259, 257, -1, 268,
- 259, 260, -1, 259, 260, -1, -1, 33, -1, 34,
- -1, 35, -1, 271, -1, 262, -1, 261, 196, 76,
- -1, 261, 196, 76, 193, 194, -1, 261, 196, 76,
- 193, 251, 194, -1, 261, 196, 76, 193, 194, 211,
- 281, -1, 261, 196, 76, 193, 251, 194, 211, 281,
- -1, 261, 196, 76, 211, 281, -1, 263, -1, 263,
- 76, -1, 263, 76, 193, 194, -1, 263, 76, 193,
- 251, 194, -1, 263, 76, 193, 194, 211, 281, -1,
- 263, 76, 193, 251, 194, 211, 281, -1, 263, 76,
- 211, 281, -1, 103, 76, -1, 271, -1, 269, 271,
- -1, 120, 191, 265, 192, -1, 266, -1, 265, 196,
- 266, -1, 76, -1, 76, 211, 78, -1, 40, -1,
- 39, -1, 38, -1, 4, -1, 270, -1, 264, -1,
- 264, 270, -1, 267, -1, 267, 270, -1, 103, 270,
- -1, 103, 267, 270, -1, 103, -1, 4, -1, 3,
+ 99, -1, 100, -1, 101, -1, 250, -1, 252, 198,
+ 250, -1, 249, -1, 255, 214, -1, 263, 214, -1,
+ 108, 277, 274, 214, -1, 256, 194, -1, 258, -1,
+ 257, -1, 258, 260, -1, 257, 198, 260, -1, 265,
+ 76, 193, -1, 273, 76, -1, 273, 76, 195, 253,
+ 196, -1, 270, 261, 259, -1, 261, 259, -1, 270,
+ 261, 262, -1, 261, 262, -1, -1, 33, -1, 34,
+ -1, 35, -1, 273, -1, 264, -1, 263, 198, 76,
+ -1, 263, 198, 76, 195, 196, -1, 263, 198, 76,
+ 195, 253, 196, -1, 263, 198, 76, 195, 196, 213,
+ 283, -1, 263, 198, 76, 195, 253, 196, 213, 283,
+ -1, 263, 198, 76, 213, 283, -1, 265, -1, 265,
+ 76, -1, 265, 76, 195, 196, -1, 265, 76, 195,
+ 253, 196, -1, 265, 76, 195, 196, 213, 283, -1,
+ 265, 76, 195, 253, 196, 213, 283, -1, 265, 76,
+ 213, 283, -1, 103, 76, -1, 273, -1, 271, 273,
+ -1, 120, 193, 267, 194, -1, 268, -1, 267, 198,
+ 268, -1, 76, -1, 76, 213, 78, -1, 40, -1,
+ 39, -1, 38, -1, 4, -1, 272, -1, 266, -1,
+ 266, 272, -1, 269, -1, 269, 272, -1, 103, 272,
+ -1, 103, 269, 272, -1, 103, -1, 4, -1, 3,
-1, 37, -1, 32, 37, -1, 33, -1, 34, -1,
- 32, 33, -1, 32, 34, -1, 36, -1, 272, -1,
- 275, 272, -1, 273, -1, 273, 193, 194, -1, 273,
- 193, 251, 194, -1, 274, -1, 276, -1, 76, -1,
+ 32, 33, -1, 32, 34, -1, 36, -1, 274, -1,
+ 277, 274, -1, 275, -1, 275, 195, 196, -1, 275,
+ 195, 253, 196, -1, 276, -1, 278, -1, 76, -1,
74, -1, 6, -1, 7, -1, 8, -1, 5, -1,
29, -1, 30, -1, 31, -1, 20, -1, 21, -1,
22, -1, 23, -1, 24, -1, 25, -1, 26, -1,
@@ -781,57 +783,57 @@ static const yytype_int16 yyrhs[] =
62, -1, 63, -1, 64, -1, 65, -1, 66, -1,
67, -1, 68, -1, 69, -1, 70, -1, 71, -1,
72, -1, 106, -1, 105, -1, 104, -1, 73, 76,
- 213, 277, 214, -1, 73, 213, 277, 214, -1, 278,
- -1, 277, 278, -1, 271, 279, 212, -1, 280, -1,
- 279, 196, 280, -1, 76, -1, 76, 193, 251, 194,
- -1, 248, -1, 252, -1, 285, -1, 284, -1, 282,
- -1, 289, -1, 290, -1, 293, -1, 294, -1, 295,
- -1, 299, -1, 213, 214, -1, 213, 288, 214, -1,
- 287, -1, 284, -1, 213, 214, -1, 213, 288, 214,
- -1, 283, -1, 288, 283, -1, 212, -1, 250, 212,
- -1, 14, 191, 250, 192, 291, -1, 283, 12, 283,
- -1, 283, -1, 250, -1, 263, 76, 211, 281, -1,
- 17, 191, 250, 192, 285, -1, 18, 250, 210, -1,
- 19, 210, -1, 75, 191, 292, 192, 286, -1, 11,
- 283, 75, 191, 250, 192, 212, -1, 13, 191, 296,
- 298, 192, 286, -1, 289, -1, 282, -1, 292, -1,
- -1, 297, 212, -1, 297, 212, 250, -1, 10, 212,
- -1, 9, 212, -1, 16, 212, -1, 16, 250, 212,
- -1, 15, 212, -1, 301, -1, 252, -1, 219, -1,
- 253, 287, -1
+ 215, 279, 216, -1, 73, 215, 279, 216, -1, 280,
+ -1, 279, 280, -1, 273, 281, 214, -1, 282, -1,
+ 281, 198, 282, -1, 76, -1, 76, 195, 253, 196,
+ -1, 250, -1, 254, -1, 287, -1, 286, -1, 284,
+ -1, 291, -1, 292, -1, 295, -1, 296, -1, 297,
+ -1, 301, -1, 215, 216, -1, 215, 290, 216, -1,
+ 289, -1, 286, -1, 215, 216, -1, 215, 290, 216,
+ -1, 285, -1, 290, 285, -1, 214, -1, 252, 214,
+ -1, 14, 193, 252, 194, 293, -1, 285, 12, 285,
+ -1, 285, -1, 252, -1, 265, 76, 213, 283, -1,
+ 17, 193, 252, 194, 287, -1, 18, 252, 212, -1,
+ 19, 212, -1, 75, 193, 294, 194, 288, -1, 11,
+ 285, 75, 193, 252, 194, 214, -1, 13, 193, 298,
+ 300, 194, 288, -1, 291, -1, 284, -1, 294, -1,
+ -1, 299, 214, -1, 299, 214, 252, -1, 10, 214,
+ -1, 9, 214, -1, 16, 214, -1, 16, 252, 214,
+ -1, 15, 214, -1, 303, -1, 254, -1, 221, -1,
+ 255, 289, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 211, 211, 210, 217, 219, 239, 240, 241, 242,
- 245, 247, 251, 260, 268, 279, 283, 290, 297, 304,
- 311, 318, 325, 326, 332, 336, 343, 349, 358, 362,
- 366, 367, 376, 377, 381, 382, 386, 392, 404, 408,
- 414, 421, 432, 433, 439, 445, 455, 456, 457, 458,
- 462, 463, 469, 475, 484, 485, 491, 500, 501, 507,
- 516, 517, 523, 529, 535, 544, 545, 551, 560, 561,
- 570, 571, 580, 581, 590, 591, 600, 601, 610, 611,
- 620, 621, 630, 631, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 654, 658, 674, 678, 682,
- 686, 700, 704, 705, 709, 714, 722, 733, 743, 758,
- 765, 770, 781, 794, 797, 802, 807, 816, 820, 821,
- 830, 839, 848, 857, 866, 879, 890, 899, 908, 917,
- 926, 935, 944, 958, 965, 976, 983, 984, 1003, 1032,
- 1073, 1078, 1083, 1091, 1099, 1100, 1101, 1106, 1107, 1112,
- 1117, 1123, 1131, 1136, 1141, 1146, 1152, 1157, 1162, 1167,
- 1172, 1180, 1181, 1189, 1190, 1196, 1205, 1211, 1217, 1226,
- 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236,
- 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246,
- 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256,
- 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266,
- 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276,
- 1280, 1291, 1302, 1316, 1322, 1331, 1336, 1344, 1359, 1364,
- 1372, 1378, 1387, 1391, 1397, 1398, 1402, 1403, 1404, 1405,
- 1406, 1407, 1408, 1412, 1418, 1427, 1428, 1432, 1438, 1447,
- 1457, 1469, 1475, 1484, 1493, 1498, 1506, 1510, 1524, 1528,
- 1529, 1533, 1540, 1547, 1557, 1558, 1562, 1564, 1570, 1575,
- 1584, 1590, 1596, 1602, 1608, 1617, 1618, 1619, 1623
+ 0, 212, 212, 211, 218, 220, 240, 241, 242, 243,
+ 246, 248, 252, 261, 269, 280, 284, 291, 298, 305,
+ 312, 319, 326, 327, 333, 337, 344, 350, 359, 363,
+ 367, 368, 377, 378, 382, 383, 387, 393, 405, 409,
+ 415, 422, 433, 434, 440, 446, 456, 457, 458, 459,
+ 463, 464, 470, 476, 485, 486, 492, 501, 502, 508,
+ 517, 518, 524, 530, 536, 545, 546, 552, 561, 562,
+ 571, 572, 581, 582, 591, 592, 601, 602, 611, 612,
+ 621, 622, 631, 632, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 655, 659, 675, 679, 683,
+ 687, 701, 705, 706, 710, 715, 723, 734, 744, 759,
+ 766, 771, 782, 795, 798, 803, 808, 817, 821, 822,
+ 831, 840, 849, 858, 867, 880, 891, 900, 909, 918,
+ 927, 936, 945, 959, 966, 977, 984, 985, 1004, 1033,
+ 1074, 1079, 1084, 1092, 1100, 1101, 1102, 1107, 1108, 1113,
+ 1118, 1124, 1132, 1137, 1142, 1147, 1153, 1158, 1163, 1168,
+ 1173, 1181, 1182, 1190, 1191, 1197, 1206, 1212, 1218, 1227,
+ 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237,
+ 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247,
+ 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257,
+ 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267,
+ 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277,
+ 1281, 1292, 1303, 1317, 1323, 1332, 1337, 1345, 1360, 1365,
+ 1373, 1379, 1388, 1392, 1398, 1399, 1403, 1404, 1405, 1406,
+ 1407, 1408, 1409, 1413, 1419, 1428, 1429, 1433, 1439, 1448,
+ 1458, 1470, 1476, 1485, 1494, 1499, 1507, 1511, 1525, 1529,
+ 1530, 1534, 1541, 1548, 1558, 1559, 1563, 1565, 1571, 1576,
+ 1585, 1591, 1597, 1603, 1609, 1618, 1619, 1620, 1624
};
#endif
@@ -875,11 +877,11 @@ static const char *const yytname[] =
"IIMAGE1DARRAY", "IIMAGE2DARRAY", "UIMAGE1D", "UIMAGE2D", "UIMAGE3D",
"UIMAGECUBE", "UIMAGE1DARRAY", "UIMAGE2DARRAY", "IMAGE1DSHADOW",
"IMAGE2DSHADOW", "IMAGEBUFFER", "IIMAGEBUFFER", "UIMAGEBUFFER",
- "ROW_MAJOR", "'('", "')'", "'['", "']'", "'.'", "','", "'+'", "'-'",
- "'!'", "'~'", "'*'", "'/'", "'%'", "'<'", "'>'", "'&'", "'^'", "'|'",
- "'?'", "':'", "'='", "';'", "'{'", "'}'", "$accept", "translation_unit",
- "$@1", "version_statement", "pragma_statement",
- "extension_statement_list", "extension_statement",
+ "IMAGE1DARRAYSHADOW", "IMAGE2DARRAYSHADOW", "ROW_MAJOR", "'('", "')'",
+ "'['", "']'", "'.'", "','", "'+'", "'-'", "'!'", "'~'", "'*'", "'/'",
+ "'%'", "'<'", "'>'", "'&'", "'^'", "'|'", "'?'", "':'", "'='", "';'",
+ "'{'", "'}'", "$accept", "translation_unit", "$@1", "version_statement",
+ "pragma_statement", "extension_statement_list", "extension_statement",
"external_declaration_list", "variable_identifier", "primary_expression",
"postfix_expression", "integer_expression", "function_call",
"function_call_or_method", "function_call_generic",
@@ -938,43 +940,43 @@ static const yytype_uint16 yytoknum[] =
415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 40, 41, 91, 93, 46, 44, 43, 45, 33,
- 126, 42, 47, 37, 60, 62, 38, 94, 124, 63,
- 58, 61, 59, 123, 125
+ 445, 446, 447, 40, 41, 91, 93, 46, 44, 43,
+ 45, 33, 126, 42, 47, 37, 60, 62, 38, 94,
+ 124, 63, 58, 61, 59, 123, 125
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint16 yyr1[] =
{
- 0, 215, 217, 216, 218, 218, 219, 219, 219, 219,
- 220, 220, 221, 222, 222, 223, 224, 224, 224, 224,
- 224, 224, 225, 225, 225, 225, 225, 225, 226, 227,
- 228, 228, 229, 229, 230, 230, 231, 231, 232, 233,
- 233, 233, 234, 234, 234, 234, 235, 235, 235, 235,
- 236, 236, 236, 236, 237, 237, 237, 238, 238, 238,
- 239, 239, 239, 239, 239, 240, 240, 240, 241, 241,
- 242, 242, 243, 243, 244, 244, 245, 245, 246, 246,
- 247, 247, 248, 248, 249, 249, 249, 249, 249, 249,
- 249, 249, 249, 249, 249, 250, 250, 251, 252, 252,
- 252, 253, 254, 254, 255, 255, 256, 257, 257, 258,
- 258, 258, 258, 259, 259, 259, 259, 260, 261, 261,
- 261, 261, 261, 261, 261, 262, 262, 262, 262, 262,
- 262, 262, 262, 263, 263, 264, 265, 265, 266, 266,
- 267, 267, 267, 268, 269, 269, 269, 269, 269, 269,
- 269, 269, 270, 270, 270, 270, 270, 270, 270, 270,
- 270, 271, 271, 272, 272, 272, 273, 273, 273, 274,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
- 275, 275, 275, 276, 276, 277, 277, 278, 279, 279,
- 280, 280, 281, 282, 283, 283, 284, 284, 284, 284,
- 284, 284, 284, 285, 285, 286, 286, 287, 287, 288,
- 288, 289, 289, 290, 291, 291, 292, 292, 293, 294,
- 294, 295, 295, 295, 296, 296, 297, 297, 298, 298,
- 299, 299, 299, 299, 299, 300, 300, 300, 301
+ 0, 217, 219, 218, 220, 220, 221, 221, 221, 221,
+ 222, 222, 223, 224, 224, 225, 226, 226, 226, 226,
+ 226, 226, 227, 227, 227, 227, 227, 227, 228, 229,
+ 230, 230, 231, 231, 232, 232, 233, 233, 234, 235,
+ 235, 235, 236, 236, 236, 236, 237, 237, 237, 237,
+ 238, 238, 238, 238, 239, 239, 239, 240, 240, 240,
+ 241, 241, 241, 241, 241, 242, 242, 242, 243, 243,
+ 244, 244, 245, 245, 246, 246, 247, 247, 248, 248,
+ 249, 249, 250, 250, 251, 251, 251, 251, 251, 251,
+ 251, 251, 251, 251, 251, 252, 252, 253, 254, 254,
+ 254, 255, 256, 256, 257, 257, 258, 259, 259, 260,
+ 260, 260, 260, 261, 261, 261, 261, 262, 263, 263,
+ 263, 263, 263, 263, 263, 264, 264, 264, 264, 264,
+ 264, 264, 264, 265, 265, 266, 267, 267, 268, 268,
+ 269, 269, 269, 270, 271, 271, 271, 271, 271, 271,
+ 271, 271, 272, 272, 272, 272, 272, 272, 272, 272,
+ 272, 273, 273, 274, 274, 274, 275, 275, 275, 276,
+ 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
+ 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
+ 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
+ 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
+ 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
+ 277, 277, 277, 278, 278, 279, 279, 280, 281, 281,
+ 282, 282, 283, 284, 285, 285, 286, 286, 286, 286,
+ 286, 286, 286, 287, 287, 288, 288, 289, 289, 290,
+ 290, 291, 291, 292, 293, 293, 294, 294, 295, 296,
+ 296, 297, 297, 297, 298, 298, 299, 299, 300, 300,
+ 301, 301, 301, 301, 301, 302, 302, 302, 303
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -1075,65 +1077,65 @@ static const yytype_int16 yydefgoto[] =
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -360
+#define YYPACT_NINF -350
static const yytype_int16 yypact[] =
{
- -54, -53, 37, -360, -26, -360, -5, -360, 73, 3276,
- -360, 63, -360, -360, -360, -360, -360, -360, -360, -360,
- -360, -360, -360, -360, -360, -360, -360, -360, -360, -360,
- 105, -360, -360, -360, -360, -360, -360, -360, -360, -360,
- -360, -360, -360, -360, -360, -360, -360, -360, -360, -360,
- -360, -360, -360, -360, -360, -360, -360, -360, -360, -360,
- -360, -360, -360, -360, -360, -360, -360, -360, -360, -360,
- -69, -360, -360, 42, -360, -360, -360, -74, 65, 79,
- 83, 85, 16, -360, -360, -360, 3276, -360, -99, 9,
- 13, 5, -152, -360, 134, 17, 17, 3464, -360, -360,
- -360, 18, -360, 3536, -360, -360, -360, 136, -360, -360,
- -360, 0, 3464, -360, 17, -360, 3536, -360, -360, -360,
- -360, 138, -360, -360, 387, -360, -360, 24, -360, -360,
- -360, -360, -360, 3464, 149, 141, -360, -150, -360, -360,
- -360, 2371, -360, 106, 3464, 144, 1760, -360, -360, 11,
- 14, -144, -360, 12, 20, 1235, 30, 31, 22, 1992,
- 38, 2914, 26, 46, -59, -360, -360, -360, -360, -360,
- 2914, 2914, 2914, -360, -360, -360, -360, -360, 599, -360,
- -360, -360, -70, -360, -360, -360, 36, -56, 3095, 47,
- -30, 2914, -8, -113, 39, -76, 45, 34, 23, 35,
- 154, 153, -79, -360, -360, -123, -360, 41, 55, -360,
- -360, -360, -360, 811, -360, -360, -360, -360, -360, -360,
- -360, -360, -360, 172, 3464, -164, -360, 2552, 2914, -360,
- -360, -360, 56, -360, -360, 1876, 58, -110, -360, -360,
- -360, -360, 171, -360, 138, -360, -360, 179, 1644, 2914,
- -360, -360, -101, 2914, -90, -360, 2190, -360, -360, -51,
- -360, 1023, -360, -360, 2914, 3392, -360, -360, 2914, 64,
- -360, -360, -360, -360, -360, -360, -360, -360, -360, -360,
- -360, -360, -360, 2914, -360, 2914, 2914, 2914, 2914, 2914,
- 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914,
- 2914, 2914, 2914, 2914, 2914, 2914, -360, -360, -360, 62,
- -360, -360, 2733, 2914, 48, 66, -360, -360, -360, -360,
- 2914, 144, -360, -360, -360, 67, -360, -360, 2190, -49,
- -360, -22, -360, 238, 68, 187, 74, -360, -360, 71,
- 68, 76, -360, -360, -360, -360, -360, -360, -8, -8,
- -113, -113, 39, 39, 39, 39, -76, -76, 45, 34,
- 23, 35, 154, 153, -84, -360, 2914, 57, 75, -360,
- 2914, 69, 87, -360, 2914, -360, 70, 91, 1235, 72,
- 78, 1446, -360, 2914, 90, 2914, 81, -360, 2914, -360,
- -16, 2914, 1446, 267, -360, -360, 2914, -360, -360, -360,
- -360, -360, -360, 2914, -360, 82, 68, -360, 1235, -360,
- -360, -360, -360
+ -78, -56, 54, -350, -52, -350, -37, -350, 8, 3302,
+ -350, -26, -350, -350, -350, -350, -350, -350, -350, -350,
+ -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
+ 88, -350, -350, -350, -350, -350, -350, -350, -350, -350,
+ -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
+ -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
+ -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
+ -66, -350, -350, 42, -350, -350, -350, 70, -4, 10,
+ 29, 34, -79, -350, -350, -350, 3302, -350, -19, -24,
+ -69, 5, -154, -350, 102, 16, 16, 3490, -350, -350,
+ -350, 18, -350, 3562, -350, -350, -350, 108, -350, -350,
+ -350, -8, 3490, -350, 16, -350, 3562, -350, -350, -350,
+ -350, 138, -350, -350, 387, -350, -350, 24, -350, -350,
+ -350, -350, -350, 3490, 147, 141, -350, -166, -350, -350,
+ -350, 2387, -350, 106, 3490, 144, 1772, -350, -350, 7,
+ 11, -87, -350, 14, 15, 1243, 30, 32, 20, 2004,
+ 37, 2936, 25, 39, -65, -350, -350, -350, -350, -350,
+ 2936, 2936, 2936, -350, -350, -350, -350, -350, 601, -350,
+ -350, -350, -59, -350, -350, -350, 28, -82, 3119, 43,
+ -30, 2936, -11, -2, 118, -74, 114, 35, 31, 36,
+ 148, 152, -77, -350, -350, -115, -350, 40, 52, -350,
+ -350, -350, -350, 815, -350, -350, -350, -350, -350, -350,
+ -350, -350, -350, 172, 3490, -180, -350, 2570, 2936, -350,
+ -350, -350, 53, -350, -350, 1888, 55, -113, -350, -350,
+ -350, -350, 173, -350, 138, -350, -350, 178, 1656, 2936,
+ -350, -350, -108, 2936, -161, -350, 2204, -350, -350, -68,
+ -350, 1029, -350, -350, 2936, 3418, -350, -350, 2936, 61,
+ -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
+ -350, -350, -350, 2936, -350, 2936, 2936, 2936, 2936, 2936,
+ 2936, 2936, 2936, 2936, 2936, 2936, 2936, 2936, 2936, 2936,
+ 2936, 2936, 2936, 2936, 2936, 2936, -350, -350, -350, 63,
+ -350, -350, 2753, 2936, 46, 60, -350, -350, -350, -350,
+ 2936, 144, -350, -350, -350, 67, -350, -350, 2204, -55,
+ -350, -54, -350, 238, 65, 188, 71, -350, -350, 72,
+ 65, 73, -350, -350, -350, -350, -350, -350, -11, -11,
+ -2, -2, 118, 118, 118, 118, -74, -74, 114, 35,
+ 31, 36, 148, 152, -157, -350, 2936, 56, 83, -350,
+ 2936, 68, 84, -350, 2936, -350, 69, 90, 1243, 74,
+ 77, 1456, -350, 2936, 86, 2936, 79, -350, 2936, -350,
+ -53, 2936, 1456, 255, -350, -350, 2936, -350, -350, -350,
+ -350, -350, -350, 2936, -350, 80, 65, -350, 1243, -350,
+ -350, -350, -350
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -360, -360, -360, -360, -360, -360, -360, -360, -360, -360,
- -360, -360, -360, -360, 25, -360, -360, -360, -360, -135,
- -360, -89, -88, -104, -91, -11, -6, -4, -3, -7,
- -2, -360, -133, -97, -360, -156, -193, 4, 10, -360,
- -360, -360, 80, 170, 166, 84, -360, -360, -229, -360,
- -360, 59, -71, -360, -360, -72, -9, 1, -360, -360,
- 225, -360, 161, -128, -360, -14, -287, 61, -151, -359,
- -68, -82, 224, 135, 77, -360, -360, -13, -360, -360,
- -360, -360, -360, -360, -360, 228, -360
+ -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
+ -350, -350, -350, -350, 22, -350, -350, -350, -350, -135,
+ -350, -83, -81, -104, -85, -13, -6, -5, -3, -1,
+ -7, -350, -133, -97, -350, -156, -193, 9, 12, -350,
+ -350, -350, 76, 170, 168, 81, -350, -350, -239, -350,
+ -350, 59, -71, -350, -350, -72, -9, 1, -350, -350,
+ 227, -350, 163, -139, -350, -12, -283, 62, -151, -349,
+ -67, -84, 223, 135, 66, -350, -350, -10, -350, -350,
+ -350, -350, -350, -350, -350, 229, -350
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -1143,39 +1145,39 @@ static const yytype_int16 yypgoto[] =
#define YYTABLE_NINF -169
static const yytype_int16 yytable[] =
{
- 99, 115, 114, 252, 247, 254, 230, 111, 231, 128,
- 292, 293, 303, 87, 262, 263, 259, -168, 240, 88,
- 12, 13, 397, 138, 139, 4, 369, 335, 128, 312,
- 74, 75, 76, 397, 315, 257, 258, 5, 129, 130,
- 131, 226, 148, 227, 135, 12, 13, 313, 243, 30,
- 31, 32, 244, 33, 34, 1, 284, 129, 130, 131,
- 136, 228, 308, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 305, 30, 31, 32, 99, 33, 34,
- 35, 36, 37, 387, 288, 289, 321, 7, 140, 306,
- 87, 270, 230, 329, 231, 305, 88, 331, 402, 335,
- 334, 404, 322, 145, 142, 8, 305, 240, 340, 409,
- 308, 330, 305, 123, 124, 208, 410, 149, 113, 368,
- 332, 290, 291, 264, 223, 265, 383, 372, 294, 295,
- 304, 316, -40, 296, 297, 145, 267, 145, 108, 109,
- 268, 337, 110, 378, 112, 305, 208, 305, 364, 11,
+ 99, 115, 114, 252, 247, 254, 230, 240, 231, 128,
+ 111, -168, 292, 293, 303, 312, 259, 335, 87, 12,
+ 13, 88, 4, 138, 139, 262, 263, 226, 128, 227,
+ 369, 1, 397, 313, 315, 257, 258, 305, 129, 130,
+ 131, 305, 148, 397, 135, 12, 13, 228, 30, 31,
+ 32, 332, 33, 34, 5, 383, 284, 129, 130, 131,
+ 136, 7, 308, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 8, 30, 31, 32, 99, 33, 34,
+ 35, 36, 37, 305, 11, 321, 107, 387, 140, 335,
+ 305, 270, 230, 329, 231, 87, 240, 331, 88, 306,
+ 334, 322, 402, 145, 142, 404, 330, 243, 340, 117,
+ 308, 244, 267, 409, 121, 208, 268, 149, 113, 368,
+ 410, 108, 109, 118, 223, 110, 337, 372, -40, 127,
+ 305, 316, 294, 295, 304, 145, 264, 145, 265, 378,
+ 379, 405, 119, 305, 305, 305, 208, 120, 364, 112,
345, 346, 347, 230, 230, 230, 230, 230, 230, 230,
230, 230, 230, 230, 230, 230, 230, 230, 230, 208,
- 379, 343, 334, 384, 305, 107, 405, 230, 117, 231,
- 305, 282, 129, 130, 131, 230, 344, 231, 352, 353,
- 354, 355, 118, 285, 286, 287, 119, -102, 120, 348,
- 349, 126, 350, 351, 208, 356, 357, 121, 365, 127,
- 137, 141, 143, 144, 150, 223, 316, 225, 390, 234,
- 236, 248, 249, 241, 245, 242, 145, 393, 266, 253,
- 299, 230, 246, 231, 250, 406, 255, 256, 271, 208,
- 298, 12, 13, 300, 301, 302, -39, 208, 309, 323,
- 318, 320, 208, 123, 325, 366, -34, 412, 374, 370,
- 371, 115, 114, 380, 305, 382, 381, -40, 385, 386,
- 30, 31, 32, 316, 33, 34, 35, 36, 37, 408,
- 388, 389, 391, 392, 401, 178, 400, 358, 316, 396,
- 342, 316, 403, 359, 411, 362, 360, 220, 361, 316,
- 224, 363, 116, 324, 310, 235, 316, 373, 311, 326,
- 407, 395, 125, 261, 122, 375, 0, 0, 0, 208,
- 0, 0, 0, 0, 0, 327, 0, 0, 0, 0,
+ 126, 343, 334, 384, 74, 75, 76, 230, 137, 231,
+ 129, 130, 131, 282, 143, 230, 344, 231, 352, 353,
+ 354, 355, 285, 286, 287, 123, 124, 288, 289, -102,
+ 290, 291, 296, 297, 208, 348, 349, 144, 365, 350,
+ 351, 356, 357, 141, 150, 223, 316, 225, 390, 234,
+ 236, 241, 266, 248, 242, 249, 145, 393, 245, 246,
+ 253, 230, 256, 231, 250, 406, 271, 255, 301, 208,
+ 299, 12, 13, 298, 302, -39, 300, 208, 309, 318,
+ 320, 323, 208, 325, 123, -34, 371, 412, 366, 370,
+ 374, 115, 114, 305, 380, 381, -40, 408, 382, 385,
+ 30, 31, 32, 316, 33, 34, 35, 36, 37, 386,
+ 389, 388, 401, 391, 392, 358, 400, 342, 316, 178,
+ 396, 316, 403, 359, 411, 360, 363, 220, 361, 316,
+ 310, 362, 224, 324, 116, 311, 316, 235, 407, 373,
+ 326, 125, 395, 261, 327, 122, 0, 0, 375, 208,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1200,31 +1202,10 @@ static const yytype_int16 yytable[] =
0, 83, 0, 84, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 172, 0,
- 0, 0, 0, 0, 173, 174, 175, 176, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
- 178, 179, 12, 13, 14, 15, 16, 17, 153, 154,
- 155, 0, 156, 157, 158, 159, 160, 161, 162, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 0, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 163, 164, 165, 166, 167, 168,
- 169, 0, 0, 170, 171, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 73, 74, 75, 76, 0, 77, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 83, 0, 84, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
172, 0, 0, 0, 0, 0, 173, 174, 175, 176,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 177, 178, 260, 12, 13, 14, 15, 16, 17,
+ 0, 177, 178, 179, 12, 13, 14, 15, 16, 17,
153, 154, 155, 0, 156, 157, 158, 159, 160, 161,
162, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 0, 33, 34, 35,
@@ -1243,30 +1224,9 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 172, 0, 0, 0, 0, 0, 173, 174,
- 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 177, 178, 307, 12, 13, 14, 15,
- 16, 17, 153, 154, 155, 0, 156, 157, 158, 159,
- 160, 161, 162, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 0, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 163, 164,
- 165, 166, 167, 168, 169, 0, 0, 170, 171, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 73, 74, 75, 76,
- 0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 82, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 83, 0, 84,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 172, 0, 0, 0, 0, 0,
173, 174, 175, 176, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 177, 178, 338, 12, 13,
+ 0, 0, 0, 0, 0, 177, 178, 260, 12, 13,
14, 15, 16, 17, 153, 154, 155, 0, 156, 157,
158, 159, 160, 161, 162, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
@@ -1285,6 +1245,49 @@ static const yytype_int16 yytable[] =
0, 84, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 172, 0,
+ 0, 0, 0, 0, 173, 174, 175, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
+ 178, 307, 12, 13, 14, 15, 16, 17, 153, 154,
+ 155, 0, 156, 157, 158, 159, 160, 161, 162, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 0, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 163, 164, 165, 166, 167, 168,
+ 169, 0, 0, 170, 171, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 73, 74, 75, 76, 0, 77, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 83, 0, 84, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 172, 0, 0, 0, 0, 0, 173, 174,
+ 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 177, 178, 338, 12, 13, 14, 15,
+ 16, 17, 153, 154, 155, 0, 156, 157, 158, 159,
+ 160, 161, 162, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 0, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 163, 164,
+ 165, 166, 167, 168, 169, 0, 0, 170, 171, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 73, 74, 75, 76,
+ 0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 82, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 83, 0, 84,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 172, 0, 0, 0,
0, 0, 173, 174, 175, 176, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 177, 178, 12,
@@ -1306,114 +1309,115 @@ static const yytype_int16 yytable[] =
83, 0, 84, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 172, 0, 0,
- 0, 0, 0, 173, 174, 175, 176, 12, 13, 14,
- 15, 16, 17, 0, 0, 0, 0, 0, 177, 124,
- 0, 0, 0, 0, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 0,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 0,
- 164, 165, 166, 167, 168, 169, 0, 0, 170, 171,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 73, 74, 75,
- 76, 0, 77, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 14, 15, 16, 17, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 0, 0, 0, 0, 0, 0, 83, 0,
- 84, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 172, 72, 0, 0, 0,
- 0, 173, 174, 175, 176, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
- 0, 0, 0, 0, 74, 75, 76, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 14, 15, 16, 17, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 0, 0,
- 0, 0, 0, 0, 83, 0, 84, 38, 39, 40,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 172,
+ 0, 0, 0, 0, 0, 173, 174, 175, 176, 12,
+ 13, 14, 15, 16, 17, 0, 0, 0, 0, 0,
+ 177, 124, 0, 0, 0, 0, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 0, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 0, 72, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 239, 0, 0, 0, 0, 0,
- 74, 75, 76, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 14, 15, 16,
+ 71, 0, 164, 165, 166, 167, 168, 169, 0, 0,
+ 170, 171, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,
+ 74, 75, 76, 0, 77, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 82, 14, 15, 16,
17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 0, 0, 0, 0, 0, 0,
83, 0, 84, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 0, 164, 165,
- 166, 167, 168, 169, 0, 0, 170, 171, 0, 0,
+ 65, 66, 67, 68, 69, 70, 71, 0, 72, 172,
+ 0, 0, 0, 0, 0, 173, 174, 175, 176, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 319, 0, 0, 0, 0, 0, 74, 75, 76, 0,
+ 177, 0, 0, 0, 0, 0, 74, 75, 76, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 14, 15, 16, 17, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 0, 0, 0, 0, 0, 0, 83, 0, 84, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 0, 72, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 239, 0,
+ 0, 0, 74, 75, 76, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
+ 15, 16, 17, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 0, 0, 0, 0,
+ 0, 0, 83, 0, 84, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 0,
+ 164, 165, 166, 167, 168, 169, 0, 0, 170, 171,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 319, 0, 0, 0, 74, 75,
+ 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 83, 0, 84, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 83, 0,
+ 84, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 172, 0, 0, 0, 0, 0, 173,
- 174, 175, 176, 12, 13, 14, 15, 16, 17, 0,
- 0, 0, 0, 0, 251, 0, 0, 0, 0, 0,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 0, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 0, 164, 165, 166, 167,
- 168, 169, 0, 0, 170, 171, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 333, 74, 75, 76, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 172, 0, 0,
+ 0, 0, 0, 173, 174, 175, 176, 12, 13, 14,
+ 15, 16, 17, 0, 0, 0, 0, 0, 251, 0,
+ 0, 0, 0, 0, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 0,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 0,
+ 164, 165, 166, 167, 168, 169, 0, 0, 170, 171,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 82, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 333, 74, 75,
+ 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 83, 0, 84, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 83, 0,
+ 84, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 14, 15, 16, 17,
- 0, 172, 0, 0, 0, 0, 0, 173, 174, 175,
- 176, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 0, 164, 165, 166,
- 167, 168, 169, 0, 0, 170, 171, 0, 0, 0,
+ 0, 0, 14, 15, 16, 17, 0, 172, 0, 0,
+ 0, 0, 0, 173, 174, 175, 176, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 0, 164, 165, 166, 167, 168, 169, 0,
+ 0, 170, 171, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 74, 75, 76, 0, 0,
+ 0, 74, 75, 76, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 83, 0, 84, 0, 0,
+ 0, 83, 0, 84, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 14, 15, 16,
- 17, 0, 172, 0, 0, 229, 0, 0, 173, 174,
- 175, 176, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 0, 164, 165,
- 166, 167, 168, 169, 0, 0, 170, 171, 0, 0,
+ 0, 0, 0, 0, 0, 14, 15, 16, 17, 0,
+ 172, 0, 0, 229, 0, 0, 173, 174, 175, 176,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 0, 164, 165, 166, 167,
+ 168, 169, 0, 0, 170, 171, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 74, 75, 76, 0,
+ 0, 0, 0, 0, 74, 75, 76, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 83, 0, 84, 0,
+ 0, 0, 0, 0, 83, 0, 84, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 14, 15,
@@ -1434,122 +1438,122 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 83, 0, 84,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
- 15, 16, 17, 0, 172, 0, 0, 367, 0, 0,
- 173, 174, 175, 176, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 0,
- 164, 165, 166, 167, 168, 169, 0, 0, 170, 171,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 74, 75,
- 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 14, 15, 16, 17, 0, 172, 0, 0, 367,
+ 0, 0, 173, 174, 175, 176, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 0, 164, 165, 166, 167, 168, 169, 0, 0,
+ 170, 171, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 74, 75, 76, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 83, 0,
- 84, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 14, 15, 16, 17, 0, 172, 0, 0, 0, 0,
- 0, 173, 174, 175, 176, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 269,
- 0, 164, 165, 166, 167, 168, 169, 0, 0, 170,
- 171, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 74,
- 75, 76, 0, 0, 0, 0, 0, 0, 0, 0,
+ 83, 0, 84, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 14, 15, 16, 17, 0, 172,
+ 0, 0, 0, 0, 0, 173, 174, 175, 176, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 269, 0, 164, 165, 166, 167, 168,
+ 169, 0, 0, 170, 171, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,
- 0, 84, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 74, 75, 76, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
- 13, 14, 15, 16, 17, 0, 172, 0, 0, 0,
- 0, 0, 173, 174, 175, 176, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 0, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 0, 72, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,
- 74, 75, 76, 0, 77, 0, 0, 0, 0, 0,
- 0, 0, 78, 79, 80, 81, 82, 14, 15, 16,
- 17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 83, 0, 84, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 12, 13, 14, 15, 16,
+ 17, 0, 172, 0, 0, 0, 0, 0, 173, 174,
+ 175, 176, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 0, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 0, 72, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 73, 74, 75, 76, 0,
+ 77, 0, 0, 0, 0, 0, 0, 0, 78, 79,
+ 80, 81, 82, 14, 15, 16, 17, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 0, 0, 0, 0, 0, 0, 83, 0, 84, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 0, 341, 14, 15, 16, 17, 169,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 74, 75, 76, 0, 0, 0, 0, 0,
+ 0, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 0, 72, 14, 15, 16,
+ 17, 0, 83, 0, 84, 0, 0, 0, 0, 0,
0, 0, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 0, 0, 0, 0, 0, 0,
- 83, 0, 84, 38, 39, 40, 41, 42, 43, 44,
+ 26, 27, 28, 29, 74, 75, 76, 0, 0, 0,
+ 0, 0, 0, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 0, 341, 14,
- 15, 16, 17, 169, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 74, 75, 76, 0,
- 0, 0, 0, 0, 0, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 0,
- 72, 14, 15, 16, 17, 0, 83, 0, 84, 0,
- 0, 0, 0, 0, 0, 0, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 74, 75,
- 76, 0, 0, 0, 0, 0, 0, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 0, 72, 0, 0, 0, 0, 0, 83, 0,
- 84, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 66, 67, 68, 69, 70, 71, 0, 72, 0,
+ 0, 0, 0, 0, 83, 0, 84, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 83, 0, 84
+ 0, 0, 0, 0, 0, 0, 83, 0, 84
};
static const yytype_int16 yycheck[] =
{
- 9, 73, 73, 159, 155, 161, 141, 76, 141, 4,
- 86, 87, 91, 9, 84, 85, 172, 76, 146, 9,
- 3, 4, 381, 95, 96, 78, 313, 256, 4, 193,
- 104, 105, 106, 392, 227, 170, 171, 0, 33, 34,
- 35, 191, 114, 193, 196, 3, 4, 211, 192, 32,
- 33, 34, 196, 36, 37, 109, 191, 33, 34, 35,
- 212, 211, 213, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 196, 32, 33, 34, 86, 36, 37,
- 38, 39, 40, 370, 197, 198, 196, 113, 97, 212,
- 86, 188, 227, 249, 227, 196, 86, 253, 385, 328,
- 256, 388, 212, 112, 103, 110, 196, 235, 264, 396,
- 261, 212, 196, 212, 213, 124, 403, 116, 76, 312,
- 210, 82, 83, 193, 133, 195, 210, 320, 204, 205,
- 209, 228, 191, 88, 89, 144, 192, 146, 33, 34,
- 196, 192, 37, 192, 213, 196, 155, 196, 304, 76,
+ 9, 73, 73, 159, 155, 161, 141, 146, 141, 4,
+ 76, 76, 86, 87, 91, 195, 172, 256, 9, 3,
+ 4, 9, 78, 95, 96, 84, 85, 193, 4, 195,
+ 313, 109, 381, 213, 227, 170, 171, 198, 33, 34,
+ 35, 198, 114, 392, 198, 3, 4, 213, 32, 33,
+ 34, 212, 36, 37, 0, 212, 191, 33, 34, 35,
+ 214, 113, 213, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 110, 32, 33, 34, 86, 36, 37,
+ 38, 39, 40, 198, 76, 198, 112, 370, 97, 328,
+ 198, 188, 227, 249, 227, 86, 235, 253, 86, 214,
+ 256, 214, 385, 112, 103, 388, 214, 194, 264, 113,
+ 261, 198, 194, 396, 193, 124, 198, 116, 76, 312,
+ 403, 33, 34, 113, 133, 37, 194, 320, 193, 198,
+ 198, 228, 206, 207, 211, 144, 195, 146, 197, 194,
+ 194, 194, 113, 198, 198, 198, 155, 113, 304, 215,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 301, 302, 303, 178,
- 192, 268, 328, 366, 196, 112, 192, 312, 113, 312,
- 196, 211, 33, 34, 35, 320, 283, 320, 292, 293,
- 294, 295, 113, 201, 202, 203, 113, 192, 113, 288,
- 289, 192, 290, 291, 213, 296, 297, 191, 305, 196,
- 76, 193, 76, 213, 76, 224, 313, 76, 374, 113,
- 76, 191, 191, 212, 212, 211, 235, 378, 192, 191,
- 207, 366, 212, 366, 212, 391, 210, 191, 191, 248,
- 206, 3, 4, 208, 90, 92, 191, 256, 76, 78,
- 194, 193, 261, 212, 75, 193, 192, 408, 191, 211,
- 194, 333, 333, 76, 196, 194, 192, 191, 211, 194,
- 32, 33, 34, 370, 36, 37, 38, 39, 40, 12,
- 211, 194, 212, 192, 194, 213, 383, 298, 385, 211,
- 265, 388, 211, 299, 212, 302, 300, 127, 301, 396,
- 134, 303, 77, 244, 224, 144, 403, 321, 224, 248,
- 392, 379, 88, 178, 86, 328, -1, -1, -1, 328,
- -1, -1, -1, -1, -1, 248, -1, -1, -1, -1,
+ 194, 268, 328, 366, 104, 105, 106, 312, 76, 312,
+ 33, 34, 35, 213, 76, 320, 283, 320, 292, 293,
+ 294, 295, 203, 204, 205, 214, 215, 199, 200, 194,
+ 82, 83, 88, 89, 213, 288, 289, 215, 305, 290,
+ 291, 296, 297, 195, 76, 224, 313, 76, 374, 113,
+ 76, 214, 194, 193, 213, 193, 235, 378, 214, 214,
+ 193, 366, 193, 366, 214, 391, 193, 212, 90, 248,
+ 209, 3, 4, 208, 92, 193, 210, 256, 76, 196,
+ 195, 78, 261, 75, 214, 194, 196, 408, 195, 213,
+ 193, 333, 333, 198, 76, 194, 193, 12, 196, 213,
+ 32, 33, 34, 370, 36, 37, 38, 39, 40, 196,
+ 196, 213, 196, 214, 194, 298, 383, 265, 385, 215,
+ 213, 388, 213, 299, 214, 300, 303, 127, 301, 396,
+ 224, 302, 134, 244, 77, 224, 403, 144, 392, 321,
+ 248, 88, 379, 178, 248, 86, -1, -1, 328, 328,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -1574,31 +1578,10 @@ static const yytype_int16 yycheck[] =
-1, 154, -1, 156, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 191, -1,
- -1, -1, -1, -1, 197, 198, 199, 200, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 212,
- 213, 214, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, -1, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, -1, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, -1, -1, 84, 85, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 103, 104, 105, 106, -1, 108, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 154, -1, 156, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 191, -1, -1, -1, -1, -1, 197, 198, 199, 200,
+ 193, -1, -1, -1, -1, -1, 199, 200, 201, 202,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 212, 213, 214, 3, 4, 5, 6, 7, 8,
+ -1, 214, 215, 216, 3, 4, 5, 6, 7, 8,
9, 10, 11, -1, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31, 32, 33, 34, -1, 36, 37, 38,
@@ -1617,30 +1600,9 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 191, -1, -1, -1, -1, -1, 197, 198,
- 199, 200, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 212, 213, 214, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, -1, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, -1, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, -1, -1, 84, 85, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 103, 104, 105, 106,
- -1, 108, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 154, -1, 156,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 191, -1, -1, -1, -1, -1,
- 197, 198, 199, 200, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 212, 213, 214, 3, 4,
+ -1, -1, -1, -1, 193, -1, -1, -1, -1, -1,
+ 199, 200, 201, 202, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 214, 215, 216, 3, 4,
5, 6, 7, 8, 9, 10, 11, -1, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
@@ -1659,9 +1621,52 @@ static const yytype_int16 yycheck[] =
-1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 191, -1, -1, -1,
- -1, -1, 197, 198, 199, 200, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 212, 213, 3,
+ -1, -1, -1, -1, -1, -1, -1, -1, 193, -1,
+ -1, -1, -1, -1, 199, 200, 201, 202, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 214,
+ 215, 216, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, -1, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, -1, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, -1, -1, 84, 85, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 103, 104, 105, 106, -1, 108, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 154, -1, 156, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 193, -1, -1, -1, -1, -1, 199, 200,
+ 201, 202, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 214, 215, 216, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, -1, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, -1, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, -1, -1, 84, 85, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 103, 104, 105, 106,
+ -1, 108, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 154, -1, 156,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 193, -1, -1, -1,
+ -1, -1, 199, 200, 201, 202, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 214, 215, 3,
4, 5, 6, 7, 8, 9, 10, 11, -1, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
@@ -1680,119 +1685,120 @@ static const yytype_int16 yycheck[] =
154, -1, 156, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 191, -1, -1,
- -1, -1, -1, 197, 198, 199, 200, 3, 4, 5,
- 6, 7, 8, -1, -1, -1, -1, -1, 212, 213,
- -1, -1, -1, -1, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, -1,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, -1,
- 76, 77, 78, 79, 80, 81, -1, -1, 84, 85,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 103, 104, 105,
- 106, -1, 108, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 120, 5, 6, 7, 8, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, -1, -1, -1, -1, -1, -1, 154, -1,
- 156, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 191, 76, -1, -1, -1,
- -1, 197, 198, 199, 200, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 212, -1, -1, -1,
- -1, -1, -1, -1, 104, 105, 106, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5, 6, 7, 8, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, -1, -1,
- -1, -1, -1, -1, 154, -1, 156, 41, 42, 43,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 193,
+ -1, -1, -1, -1, -1, 199, 200, 201, 202, 3,
+ 4, 5, 6, 7, 8, -1, -1, -1, -1, -1,
+ 214, 215, -1, -1, -1, -1, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, -1, 36, 37, 38, 39, 40, 41, 42, 43,
44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, -1, 76, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 214, -1, -1, -1, -1, -1,
- 104, 105, 106, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5, 6, 7,
+ 74, -1, 76, 77, 78, 79, 80, 81, -1, -1,
+ 84, 85, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 103,
+ 104, 105, 106, -1, 108, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 120, 5, 6, 7,
8, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, -1, -1, -1, -1, -1, -1,
154, -1, 156, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, -1, 76, 77,
- 78, 79, 80, 81, -1, -1, 84, 85, -1, -1,
+ 68, 69, 70, 71, 72, 73, 74, -1, 76, 193,
+ -1, -1, -1, -1, -1, 199, 200, 201, 202, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
214, -1, -1, -1, -1, -1, 104, 105, 106, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 5, 6, 7, 8, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ -1, -1, -1, -1, -1, -1, 154, -1, 156, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, -1, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 216, -1,
+ -1, -1, 104, 105, 106, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 5,
+ 6, 7, 8, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, -1, -1, -1, -1,
+ -1, -1, 154, -1, 156, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, -1,
+ 76, 77, 78, 79, 80, 81, -1, -1, 84, 85,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 216, -1, -1, -1, 104, 105,
+ 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 154, -1, 156, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 154, -1,
+ 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 191, -1, -1, -1, -1, -1, 197,
- 198, 199, 200, 3, 4, 5, 6, 7, 8, -1,
- -1, -1, -1, -1, 212, -1, -1, -1, -1, -1,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, -1, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, -1, 76, 77, 78, 79,
- 80, 81, -1, -1, 84, 85, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 103, 104, 105, 106, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 193, -1, -1,
+ -1, -1, -1, 199, 200, 201, 202, 3, 4, 5,
+ 6, 7, 8, -1, -1, -1, -1, -1, 214, -1,
+ -1, -1, -1, -1, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, -1,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, -1,
+ 76, 77, 78, 79, 80, 81, -1, -1, 84, 85,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 120, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 103, 104, 105,
+ 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 154, -1, 156, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 154, -1,
+ 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5, 6, 7, 8,
- -1, 191, -1, -1, -1, -1, -1, 197, 198, 199,
- 200, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, -1, 76, 77, 78,
- 79, 80, 81, -1, -1, 84, 85, -1, -1, -1,
+ -1, -1, 5, 6, 7, 8, -1, 193, -1, -1,
+ -1, -1, -1, 199, 200, 201, 202, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, -1, 76, 77, 78, 79, 80, 81, -1,
+ -1, 84, 85, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 104, 105, 106, -1, -1,
+ -1, 104, 105, 106, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 154, -1, 156, -1, -1,
+ -1, 154, -1, 156, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5, 6, 7,
- 8, -1, 191, -1, -1, 194, -1, -1, 197, 198,
- 199, 200, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, -1, 76, 77,
- 78, 79, 80, 81, -1, -1, 84, 85, -1, -1,
+ -1, -1, -1, -1, -1, 5, 6, 7, 8, -1,
+ 193, -1, -1, 196, -1, -1, 199, 200, 201, 202,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, -1, 76, 77, 78, 79,
+ 80, 81, -1, -1, 84, 85, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 104, 105, 106, -1,
+ -1, -1, -1, -1, 104, 105, 106, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 154, -1, 156, -1,
+ -1, -1, -1, -1, 154, -1, 156, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 5, 6,
- 7, 8, -1, 191, -1, -1, 194, -1, -1, 197,
- 198, 199, 200, 20, 21, 22, 23, 24, 25, 26,
+ 7, 8, -1, 193, -1, -1, 196, -1, -1, 199,
+ 200, 201, 202, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
@@ -1808,133 +1814,133 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, 154, -1, 156,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5,
- 6, 7, 8, -1, 191, -1, -1, 194, -1, -1,
- 197, 198, 199, 200, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, -1,
- 76, 77, 78, 79, 80, 81, -1, -1, 84, 85,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 104, 105,
- 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 5, 6, 7, 8, -1, 193, -1, -1, 196,
+ -1, -1, 199, 200, 201, 202, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, -1, 76, 77, 78, 79, 80, 81, -1, -1,
+ 84, 85, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 104, 105, 106, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 154, -1,
- 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 5, 6, 7, 8, -1, 191, -1, -1, -1, -1,
- -1, 197, 198, 199, 200, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- -1, 76, 77, 78, 79, 80, 81, -1, -1, 84,
- 85, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 104,
- 105, 106, -1, -1, -1, -1, -1, -1, -1, -1,
+ 154, -1, 156, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 5, 6, 7, 8, -1, 193,
+ -1, -1, -1, -1, -1, 199, 200, 201, 202, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, 76, 77, 78, 79, 80,
+ 81, -1, -1, 84, 85, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 154,
- -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 104, 105, 106, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
- 4, 5, 6, 7, 8, -1, 191, -1, -1, -1,
- -1, -1, 197, 198, 199, 200, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, -1, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, -1, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 103,
- 104, 105, 106, -1, 108, -1, -1, -1, -1, -1,
- -1, -1, 116, 117, 118, 119, 120, 5, 6, 7,
- 8, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 154, -1, 156, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
+ 8, -1, 193, -1, -1, -1, -1, -1, 199, 200,
+ 201, 202, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, -1, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, 76, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 103, 104, 105, 106, -1,
+ 108, -1, -1, -1, -1, -1, -1, -1, 116, 117,
+ 118, 119, 120, 5, 6, 7, 8, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ -1, -1, -1, -1, -1, -1, 154, -1, 156, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, -1, 76, 5, 6, 7, 8, 81,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 104, 105, 106, -1, -1, -1, -1, -1,
+ -1, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, -1, 76, 5, 6, 7,
+ 8, -1, 154, -1, 156, -1, -1, -1, -1, -1,
-1, -1, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, -1, -1, -1, -1, -1, -1,
- 154, -1, 156, 41, 42, 43, 44, 45, 46, 47,
+ 28, 29, 30, 31, 104, 105, 106, -1, -1, -1,
+ -1, -1, -1, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, -1, 76, 5,
- 6, 7, 8, 81, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 104, 105, 106, -1,
- -1, -1, -1, -1, -1, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, -1,
- 76, 5, 6, 7, 8, -1, 154, -1, 156, -1,
- -1, -1, -1, -1, -1, -1, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 104, 105,
- 106, -1, -1, -1, -1, -1, -1, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, -1, 76, -1, -1, -1, -1, -1, 154, -1,
- 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, 70, 71, 72, 73, 74, -1, 76, -1,
+ -1, -1, -1, -1, 154, -1, 156, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 154, -1, 156
+ -1, -1, -1, -1, -1, -1, 154, -1, 156
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint16 yystos[] =
{
- 0, 109, 216, 218, 78, 0, 220, 113, 110, 217,
- 221, 76, 3, 4, 5, 6, 7, 8, 20, 21,
+ 0, 109, 218, 220, 78, 0, 222, 113, 110, 219,
+ 223, 76, 3, 4, 5, 6, 7, 8, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
73, 74, 76, 103, 104, 105, 106, 108, 116, 117,
- 118, 119, 120, 154, 156, 219, 222, 252, 253, 254,
- 255, 256, 261, 262, 263, 264, 267, 269, 270, 271,
- 272, 273, 274, 275, 276, 300, 301, 112, 33, 34,
- 37, 76, 213, 76, 267, 270, 275, 113, 113, 113,
- 113, 191, 300, 212, 213, 287, 192, 196, 4, 33,
- 34, 35, 258, 259, 268, 196, 212, 76, 270, 270,
- 271, 193, 272, 76, 213, 271, 277, 278, 270, 272,
- 76, 265, 266, 9, 10, 11, 13, 14, 15, 16,
+ 118, 119, 120, 154, 156, 221, 224, 254, 255, 256,
+ 257, 258, 263, 264, 265, 266, 269, 271, 272, 273,
+ 274, 275, 276, 277, 278, 302, 303, 112, 33, 34,
+ 37, 76, 215, 76, 269, 272, 277, 113, 113, 113,
+ 113, 193, 302, 214, 215, 289, 194, 198, 4, 33,
+ 34, 35, 260, 261, 270, 198, 214, 76, 272, 272,
+ 273, 195, 274, 76, 215, 273, 279, 280, 272, 274,
+ 76, 267, 268, 9, 10, 11, 13, 14, 15, 16,
17, 18, 19, 75, 76, 77, 78, 79, 80, 81,
- 84, 85, 191, 197, 198, 199, 200, 212, 213, 214,
- 223, 224, 225, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 250, 252, 253, 271, 282,
- 283, 284, 285, 288, 289, 290, 293, 294, 295, 299,
- 258, 257, 260, 271, 259, 76, 191, 193, 211, 194,
- 234, 247, 251, 271, 113, 277, 76, 279, 280, 214,
- 278, 212, 211, 192, 196, 212, 212, 283, 191, 191,
- 212, 212, 250, 191, 250, 210, 191, 234, 234, 250,
- 214, 288, 84, 85, 193, 195, 192, 192, 196, 74,
- 248, 191, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 211, 249, 234, 201, 202, 203, 197, 198,
- 82, 83, 86, 87, 204, 205, 88, 89, 206, 207,
- 208, 90, 92, 91, 209, 196, 212, 214, 283, 76,
- 257, 260, 193, 211, 194, 251, 248, 281, 194, 214,
- 193, 196, 212, 78, 266, 75, 282, 289, 296, 250,
- 212, 250, 210, 103, 250, 263, 292, 192, 214, 226,
- 250, 76, 229, 248, 248, 234, 234, 234, 236, 236,
- 237, 237, 238, 238, 238, 238, 239, 239, 240, 241,
- 242, 243, 244, 245, 250, 248, 193, 194, 251, 281,
- 211, 194, 251, 280, 191, 292, 297, 298, 192, 192,
- 76, 192, 194, 210, 251, 211, 194, 281, 211, 194,
- 250, 212, 192, 283, 291, 285, 211, 284, 286, 287,
- 248, 194, 281, 211, 281, 192, 250, 286, 12, 281,
- 281, 212, 283
+ 84, 85, 193, 199, 200, 201, 202, 214, 215, 216,
+ 225, 226, 227, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 252, 254, 255, 273, 284,
+ 285, 286, 287, 290, 291, 292, 295, 296, 297, 301,
+ 260, 259, 262, 273, 261, 76, 193, 195, 213, 196,
+ 236, 249, 253, 273, 113, 279, 76, 281, 282, 216,
+ 280, 214, 213, 194, 198, 214, 214, 285, 193, 193,
+ 214, 214, 252, 193, 252, 212, 193, 236, 236, 252,
+ 216, 290, 84, 85, 195, 197, 194, 194, 198, 74,
+ 250, 193, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 213, 251, 236, 203, 204, 205, 199, 200,
+ 82, 83, 86, 87, 206, 207, 88, 89, 208, 209,
+ 210, 90, 92, 91, 211, 198, 214, 216, 285, 76,
+ 259, 262, 195, 213, 196, 253, 250, 283, 196, 216,
+ 195, 198, 214, 78, 268, 75, 284, 291, 298, 252,
+ 214, 252, 212, 103, 252, 265, 294, 194, 216, 228,
+ 252, 76, 231, 250, 250, 236, 236, 236, 238, 238,
+ 239, 239, 240, 240, 240, 240, 241, 241, 242, 243,
+ 244, 245, 246, 247, 252, 250, 195, 196, 253, 283,
+ 213, 196, 253, 282, 193, 294, 299, 300, 194, 194,
+ 76, 194, 196, 212, 253, 213, 196, 283, 213, 196,
+ 252, 214, 194, 285, 293, 287, 213, 286, 288, 289,
+ 250, 196, 283, 213, 283, 194, 252, 288, 12, 283,
+ 283, 214, 285
};
#define yyerrok (yyerrstatus = 0)
@@ -2625,7 +2631,7 @@ YYLTYPE yylloc;
}
/* Line 1251 of yacc.c */
-#line 2629 "glsl_parser.cpp"
+#line 2635 "glsl_parser.cpp"
yylsp[0] = yylloc;
goto yysetstate;
@@ -2813,7 +2819,7 @@ yyreduce:
case 2:
/* Line 1464 of yacc.c */
-#line 211 "glsl_parser.ypp"
+#line 212 "glsl_parser.ypp"
{
_mesa_glsl_initialize_types(state);
;}
@@ -2822,7 +2828,7 @@ yyreduce:
case 5:
/* Line 1464 of yacc.c */
-#line 220 "glsl_parser.ypp"
+#line 221 "glsl_parser.ypp"
{
switch ((yyvsp[(2) - (3)].n)) {
case 100:
@@ -2844,7 +2850,7 @@ yyreduce:
case 12:
/* Line 1464 of yacc.c */
-#line 252 "glsl_parser.ypp"
+#line 253 "glsl_parser.ypp"
{
if (!_mesa_glsl_process_extension((yyvsp[(2) - (5)].identifier), & (yylsp[(2) - (5)]), (yyvsp[(4) - (5)].identifier), & (yylsp[(4) - (5)]), state)) {
YYERROR;
@@ -2855,7 +2861,7 @@ yyreduce:
case 13:
/* Line 1464 of yacc.c */
-#line 261 "glsl_parser.ypp"
+#line 262 "glsl_parser.ypp"
{
/* FINISHME: The NULL test is only required because 'precision'
* FINISHME: statements are not yet supported.
@@ -2868,7 +2874,7 @@ yyreduce:
case 14:
/* Line 1464 of yacc.c */
-#line 269 "glsl_parser.ypp"
+#line 270 "glsl_parser.ypp"
{
/* FINISHME: The NULL test is only required because 'precision'
* FINISHME: statements are not yet supported.
@@ -2881,7 +2887,7 @@ yyreduce:
case 16:
/* Line 1464 of yacc.c */
-#line 284 "glsl_parser.ypp"
+#line 285 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_identifier, NULL, NULL, NULL);
@@ -2893,7 +2899,7 @@ yyreduce:
case 17:
/* Line 1464 of yacc.c */
-#line 291 "glsl_parser.ypp"
+#line 292 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_int_constant, NULL, NULL, NULL);
@@ -2905,7 +2911,7 @@ yyreduce:
case 18:
/* Line 1464 of yacc.c */
-#line 298 "glsl_parser.ypp"
+#line 299 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_uint_constant, NULL, NULL, NULL);
@@ -2917,7 +2923,7 @@ yyreduce:
case 19:
/* Line 1464 of yacc.c */
-#line 305 "glsl_parser.ypp"
+#line 306 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_float_constant, NULL, NULL, NULL);
@@ -2929,7 +2935,7 @@ yyreduce:
case 20:
/* Line 1464 of yacc.c */
-#line 312 "glsl_parser.ypp"
+#line 313 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_bool_constant, NULL, NULL, NULL);
@@ -2941,7 +2947,7 @@ yyreduce:
case 21:
/* Line 1464 of yacc.c */
-#line 319 "glsl_parser.ypp"
+#line 320 "glsl_parser.ypp"
{
(yyval.expression) = (yyvsp[(2) - (3)].expression);
;}
@@ -2950,7 +2956,7 @@ yyreduce:
case 23:
/* Line 1464 of yacc.c */
-#line 327 "glsl_parser.ypp"
+#line 328 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_array_index, (yyvsp[(1) - (4)].expression), (yyvsp[(3) - (4)].expression), NULL);
@@ -2961,7 +2967,7 @@ yyreduce:
case 24:
/* Line 1464 of yacc.c */
-#line 333 "glsl_parser.ypp"
+#line 334 "glsl_parser.ypp"
{
(yyval.expression) = (yyvsp[(1) - (1)].expression);
;}
@@ -2970,7 +2976,7 @@ yyreduce:
case 25:
/* Line 1464 of yacc.c */
-#line 337 "glsl_parser.ypp"
+#line 338 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), NULL, NULL);
@@ -2982,7 +2988,7 @@ yyreduce:
case 26:
/* Line 1464 of yacc.c */
-#line 344 "glsl_parser.ypp"
+#line 345 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_post_inc, (yyvsp[(1) - (2)].expression), NULL, NULL);
@@ -2993,7 +2999,7 @@ yyreduce:
case 27:
/* Line 1464 of yacc.c */
-#line 350 "glsl_parser.ypp"
+#line 351 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_post_dec, (yyvsp[(1) - (2)].expression), NULL, NULL);
@@ -3004,7 +3010,7 @@ yyreduce:
case 31:
/* Line 1464 of yacc.c */
-#line 368 "glsl_parser.ypp"
+#line 369 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL);
@@ -3015,7 +3021,7 @@ yyreduce:
case 36:
/* Line 1464 of yacc.c */
-#line 387 "glsl_parser.ypp"
+#line 388 "glsl_parser.ypp"
{
(yyval.expression) = (yyvsp[(1) - (2)].expression);
(yyval.expression)->set_location(yylloc);
@@ -3026,7 +3032,7 @@ yyreduce:
case 37:
/* Line 1464 of yacc.c */
-#line 393 "glsl_parser.ypp"
+#line 394 "glsl_parser.ypp"
{
(yyval.expression) = (yyvsp[(1) - (3)].expression);
(yyval.expression)->set_location(yylloc);
@@ -3037,7 +3043,7 @@ yyreduce:
case 39:
/* Line 1464 of yacc.c */
-#line 409 "glsl_parser.ypp"
+#line 410 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_function_expression((yyvsp[(1) - (1)].type_specifier));
@@ -3048,7 +3054,7 @@ yyreduce:
case 40:
/* Line 1464 of yacc.c */
-#line 415 "glsl_parser.ypp"
+#line 416 "glsl_parser.ypp"
{
void *ctx = state;
ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier));
@@ -3060,7 +3066,7 @@ yyreduce:
case 41:
/* Line 1464 of yacc.c */
-#line 422 "glsl_parser.ypp"
+#line 423 "glsl_parser.ypp"
{
void *ctx = state;
ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier));
@@ -3072,7 +3078,7 @@ yyreduce:
case 43:
/* Line 1464 of yacc.c */
-#line 434 "glsl_parser.ypp"
+#line 435 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_pre_inc, (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3083,7 +3089,7 @@ yyreduce:
case 44:
/* Line 1464 of yacc.c */
-#line 440 "glsl_parser.ypp"
+#line 441 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_pre_dec, (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3094,7 +3100,7 @@ yyreduce:
case 45:
/* Line 1464 of yacc.c */
-#line 446 "glsl_parser.ypp"
+#line 447 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression((yyvsp[(1) - (2)].n), (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3105,35 +3111,35 @@ yyreduce:
case 46:
/* Line 1464 of yacc.c */
-#line 455 "glsl_parser.ypp"
+#line 456 "glsl_parser.ypp"
{ (yyval.n) = ast_plus; ;}
break;
case 47:
/* Line 1464 of yacc.c */
-#line 456 "glsl_parser.ypp"
+#line 457 "glsl_parser.ypp"
{ (yyval.n) = ast_neg; ;}
break;
case 48:
/* Line 1464 of yacc.c */
-#line 457 "glsl_parser.ypp"
+#line 458 "glsl_parser.ypp"
{ (yyval.n) = ast_logic_not; ;}
break;
case 49:
/* Line 1464 of yacc.c */
-#line 458 "glsl_parser.ypp"
+#line 459 "glsl_parser.ypp"
{ (yyval.n) = ast_bit_not; ;}
break;
case 51:
/* Line 1464 of yacc.c */
-#line 464 "glsl_parser.ypp"
+#line 465 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_mul, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3144,7 +3150,7 @@ yyreduce:
case 52:
/* Line 1464 of yacc.c */
-#line 470 "glsl_parser.ypp"
+#line 471 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_div, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3155,7 +3161,7 @@ yyreduce:
case 53:
/* Line 1464 of yacc.c */
-#line 476 "glsl_parser.ypp"
+#line 477 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_mod, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3166,7 +3172,7 @@ yyreduce:
case 55:
/* Line 1464 of yacc.c */
-#line 486 "glsl_parser.ypp"
+#line 487 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_add, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3177,7 +3183,7 @@ yyreduce:
case 56:
/* Line 1464 of yacc.c */
-#line 492 "glsl_parser.ypp"
+#line 493 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_sub, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3188,7 +3194,7 @@ yyreduce:
case 58:
/* Line 1464 of yacc.c */
-#line 502 "glsl_parser.ypp"
+#line 503 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_lshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3199,7 +3205,7 @@ yyreduce:
case 59:
/* Line 1464 of yacc.c */
-#line 508 "glsl_parser.ypp"
+#line 509 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_rshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3210,7 +3216,7 @@ yyreduce:
case 61:
/* Line 1464 of yacc.c */
-#line 518 "glsl_parser.ypp"
+#line 519 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_less, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3221,7 +3227,7 @@ yyreduce:
case 62:
/* Line 1464 of yacc.c */
-#line 524 "glsl_parser.ypp"
+#line 525 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_greater, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3232,7 +3238,7 @@ yyreduce:
case 63:
/* Line 1464 of yacc.c */
-#line 530 "glsl_parser.ypp"
+#line 531 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_lequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3243,7 +3249,7 @@ yyreduce:
case 64:
/* Line 1464 of yacc.c */
-#line 536 "glsl_parser.ypp"
+#line 537 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_gequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3254,7 +3260,7 @@ yyreduce:
case 66:
/* Line 1464 of yacc.c */
-#line 546 "glsl_parser.ypp"
+#line 547 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_equal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3265,7 +3271,7 @@ yyreduce:
case 67:
/* Line 1464 of yacc.c */
-#line 552 "glsl_parser.ypp"
+#line 553 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_nequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3276,7 +3282,7 @@ yyreduce:
case 69:
/* Line 1464 of yacc.c */
-#line 562 "glsl_parser.ypp"
+#line 563 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_bit_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3287,7 +3293,7 @@ yyreduce:
case 71:
/* Line 1464 of yacc.c */
-#line 572 "glsl_parser.ypp"
+#line 573 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_bit_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3298,7 +3304,7 @@ yyreduce:
case 73:
/* Line 1464 of yacc.c */
-#line 582 "glsl_parser.ypp"
+#line 583 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3309,7 +3315,7 @@ yyreduce:
case 75:
/* Line 1464 of yacc.c */
-#line 592 "glsl_parser.ypp"
+#line 593 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_logic_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3320,7 +3326,7 @@ yyreduce:
case 77:
/* Line 1464 of yacc.c */
-#line 602 "glsl_parser.ypp"
+#line 603 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_logic_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3331,7 +3337,7 @@ yyreduce:
case 79:
/* Line 1464 of yacc.c */
-#line 612 "glsl_parser.ypp"
+#line 613 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression_bin(ast_logic_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3342,7 +3348,7 @@ yyreduce:
case 81:
/* Line 1464 of yacc.c */
-#line 622 "glsl_parser.ypp"
+#line 623 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression(ast_conditional, (yyvsp[(1) - (5)].expression), (yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].expression));
@@ -3353,7 +3359,7 @@ yyreduce:
case 83:
/* Line 1464 of yacc.c */
-#line 632 "glsl_parser.ypp"
+#line 633 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.expression) = new(ctx) ast_expression((yyvsp[(2) - (3)].n), (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL);
@@ -3364,84 +3370,84 @@ yyreduce:
case 84:
/* Line 1464 of yacc.c */
-#line 640 "glsl_parser.ypp"
+#line 641 "glsl_parser.ypp"
{ (yyval.n) = ast_assign; ;}
break;
case 85:
/* Line 1464 of yacc.c */
-#line 641 "glsl_parser.ypp"
+#line 642 "glsl_parser.ypp"
{ (yyval.n) = ast_mul_assign; ;}
break;
case 86:
/* Line 1464 of yacc.c */
-#line 642 "glsl_parser.ypp"
+#line 643 "glsl_parser.ypp"
{ (yyval.n) = ast_div_assign; ;}
break;
case 87:
/* Line 1464 of yacc.c */
-#line 643 "glsl_parser.ypp"
+#line 644 "glsl_parser.ypp"
{ (yyval.n) = ast_mod_assign; ;}
break;
case 88:
/* Line 1464 of yacc.c */
-#line 644 "glsl_parser.ypp"
+#line 645 "glsl_parser.ypp"
{ (yyval.n) = ast_add_assign; ;}
break;
case 89:
/* Line 1464 of yacc.c */
-#line 645 "glsl_parser.ypp"
+#line 646 "glsl_parser.ypp"
{ (yyval.n) = ast_sub_assign; ;}
break;
case 90:
/* Line 1464 of yacc.c */
-#line 646 "glsl_parser.ypp"
+#line 647 "glsl_parser.ypp"
{ (yyval.n) = ast_ls_assign; ;}
break;
case 91:
/* Line 1464 of yacc.c */
-#line 647 "glsl_parser.ypp"
+#line 648 "glsl_parser.ypp"
{ (yyval.n) = ast_rs_assign; ;}
break;
case 92:
/* Line 1464 of yacc.c */
-#line 648 "glsl_parser.ypp"
+#line 649 "glsl_parser.ypp"
{ (yyval.n) = ast_and_assign; ;}
break;
case 93:
/* Line 1464 of yacc.c */
-#line 649 "glsl_parser.ypp"
+#line 650 "glsl_parser.ypp"
{ (yyval.n) = ast_xor_assign; ;}
break;
case 94:
/* Line 1464 of yacc.c */
-#line 650 "glsl_parser.ypp"
+#line 651 "glsl_parser.ypp"
{ (yyval.n) = ast_or_assign; ;}
break;
case 95:
/* Line 1464 of yacc.c */
-#line 655 "glsl_parser.ypp"
+#line 656 "glsl_parser.ypp"
{
(yyval.expression) = (yyvsp[(1) - (1)].expression);
;}
@@ -3450,7 +3456,7 @@ yyreduce:
case 96:
/* Line 1464 of yacc.c */
-#line 659 "glsl_parser.ypp"
+#line 660 "glsl_parser.ypp"
{
void *ctx = state;
if ((yyvsp[(1) - (3)].expression)->oper != ast_sequence) {
@@ -3468,7 +3474,7 @@ yyreduce:
case 98:
/* Line 1464 of yacc.c */
-#line 679 "glsl_parser.ypp"
+#line 680 "glsl_parser.ypp"
{
(yyval.node) = (yyvsp[(1) - (2)].function);
;}
@@ -3477,7 +3483,7 @@ yyreduce:
case 99:
/* Line 1464 of yacc.c */
-#line 683 "glsl_parser.ypp"
+#line 684 "glsl_parser.ypp"
{
(yyval.node) = (yyvsp[(1) - (2)].declarator_list);
;}
@@ -3486,7 +3492,7 @@ yyreduce:
case 100:
/* Line 1464 of yacc.c */
-#line 687 "glsl_parser.ypp"
+#line 688 "glsl_parser.ypp"
{
if (((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_float)
&& ((yyvsp[(3) - (4)].type_specifier)->type_specifier != ast_int)) {
@@ -3502,7 +3508,7 @@ yyreduce:
case 104:
/* Line 1464 of yacc.c */
-#line 710 "glsl_parser.ypp"
+#line 711 "glsl_parser.ypp"
{
(yyval.function) = (yyvsp[(1) - (2)].function);
(yyval.function)->parameters.push_tail(& (yyvsp[(2) - (2)].parameter_declarator)->link);
@@ -3512,7 +3518,7 @@ yyreduce:
case 105:
/* Line 1464 of yacc.c */
-#line 715 "glsl_parser.ypp"
+#line 716 "glsl_parser.ypp"
{
(yyval.function) = (yyvsp[(1) - (3)].function);
(yyval.function)->parameters.push_tail(& (yyvsp[(3) - (3)].parameter_declarator)->link);
@@ -3522,7 +3528,7 @@ yyreduce:
case 106:
/* Line 1464 of yacc.c */
-#line 723 "glsl_parser.ypp"
+#line 724 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.function) = new(ctx) ast_function();
@@ -3535,7 +3541,7 @@ yyreduce:
case 107:
/* Line 1464 of yacc.c */
-#line 734 "glsl_parser.ypp"
+#line 735 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3550,7 +3556,7 @@ yyreduce:
case 108:
/* Line 1464 of yacc.c */
-#line 744 "glsl_parser.ypp"
+#line 745 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3567,7 +3573,7 @@ yyreduce:
case 109:
/* Line 1464 of yacc.c */
-#line 759 "glsl_parser.ypp"
+#line 760 "glsl_parser.ypp"
{
(yyvsp[(1) - (3)].type_qualifier).flags.i |= (yyvsp[(2) - (3)].type_qualifier).flags.i;
@@ -3579,7 +3585,7 @@ yyreduce:
case 110:
/* Line 1464 of yacc.c */
-#line 766 "glsl_parser.ypp"
+#line 767 "glsl_parser.ypp"
{
(yyval.parameter_declarator) = (yyvsp[(2) - (2)].parameter_declarator);
(yyval.parameter_declarator)->type->qualifier = (yyvsp[(1) - (2)].type_qualifier);
@@ -3589,7 +3595,7 @@ yyreduce:
case 111:
/* Line 1464 of yacc.c */
-#line 771 "glsl_parser.ypp"
+#line 772 "glsl_parser.ypp"
{
void *ctx = state;
(yyvsp[(1) - (3)].type_qualifier).flags.i |= (yyvsp[(2) - (3)].type_qualifier).flags.i;
@@ -3605,7 +3611,7 @@ yyreduce:
case 112:
/* Line 1464 of yacc.c */
-#line 782 "glsl_parser.ypp"
+#line 783 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3619,7 +3625,7 @@ yyreduce:
case 113:
/* Line 1464 of yacc.c */
-#line 794 "glsl_parser.ypp"
+#line 795 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
;}
@@ -3628,7 +3634,7 @@ yyreduce:
case 114:
/* Line 1464 of yacc.c */
-#line 798 "glsl_parser.ypp"
+#line 799 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.in = 1;
@@ -3638,7 +3644,7 @@ yyreduce:
case 115:
/* Line 1464 of yacc.c */
-#line 803 "glsl_parser.ypp"
+#line 804 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.out = 1;
@@ -3648,7 +3654,7 @@ yyreduce:
case 116:
/* Line 1464 of yacc.c */
-#line 808 "glsl_parser.ypp"
+#line 809 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.in = 1;
@@ -3659,7 +3665,7 @@ yyreduce:
case 119:
/* Line 1464 of yacc.c */
-#line 822 "glsl_parser.ypp"
+#line 823 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (3)].identifier), false, NULL, NULL);
@@ -3673,7 +3679,7 @@ yyreduce:
case 120:
/* Line 1464 of yacc.c */
-#line 831 "glsl_parser.ypp"
+#line 832 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), true, NULL, NULL);
@@ -3687,7 +3693,7 @@ yyreduce:
case 121:
/* Line 1464 of yacc.c */
-#line 840 "glsl_parser.ypp"
+#line 841 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (6)].identifier), true, (yyvsp[(5) - (6)].expression), NULL);
@@ -3701,7 +3707,7 @@ yyreduce:
case 122:
/* Line 1464 of yacc.c */
-#line 849 "glsl_parser.ypp"
+#line 850 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (7)].identifier), true, NULL, (yyvsp[(7) - (7)].expression));
@@ -3715,7 +3721,7 @@ yyreduce:
case 123:
/* Line 1464 of yacc.c */
-#line 858 "glsl_parser.ypp"
+#line 859 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (8)].identifier), true, (yyvsp[(5) - (8)].expression), (yyvsp[(8) - (8)].expression));
@@ -3729,7 +3735,7 @@ yyreduce:
case 124:
/* Line 1464 of yacc.c */
-#line 867 "glsl_parser.ypp"
+#line 868 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), false, NULL, (yyvsp[(5) - (5)].expression));
@@ -3743,7 +3749,7 @@ yyreduce:
case 125:
/* Line 1464 of yacc.c */
-#line 880 "glsl_parser.ypp"
+#line 881 "glsl_parser.ypp"
{
void *ctx = state;
if ((yyvsp[(1) - (1)].fully_specified_type)->specifier->type_specifier != ast_struct) {
@@ -3759,7 +3765,7 @@ yyreduce:
case 126:
/* Line 1464 of yacc.c */
-#line 891 "glsl_parser.ypp"
+#line 892 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
@@ -3773,7 +3779,7 @@ yyreduce:
case 127:
/* Line 1464 of yacc.c */
-#line 900 "glsl_parser.ypp"
+#line 901 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), true, NULL, NULL);
@@ -3787,7 +3793,7 @@ yyreduce:
case 128:
/* Line 1464 of yacc.c */
-#line 909 "glsl_parser.ypp"
+#line 910 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (5)].identifier), true, (yyvsp[(4) - (5)].expression), NULL);
@@ -3801,7 +3807,7 @@ yyreduce:
case 129:
/* Line 1464 of yacc.c */
-#line 918 "glsl_parser.ypp"
+#line 919 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (6)].identifier), true, NULL, (yyvsp[(6) - (6)].expression));
@@ -3815,7 +3821,7 @@ yyreduce:
case 130:
/* Line 1464 of yacc.c */
-#line 927 "glsl_parser.ypp"
+#line 928 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (7)].identifier), true, (yyvsp[(4) - (7)].expression), (yyvsp[(7) - (7)].expression));
@@ -3829,7 +3835,7 @@ yyreduce:
case 131:
/* Line 1464 of yacc.c */
-#line 936 "glsl_parser.ypp"
+#line 937 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
@@ -3843,7 +3849,7 @@ yyreduce:
case 132:
/* Line 1464 of yacc.c */
-#line 945 "glsl_parser.ypp"
+#line 946 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
@@ -3859,7 +3865,7 @@ yyreduce:
case 133:
/* Line 1464 of yacc.c */
-#line 959 "glsl_parser.ypp"
+#line 960 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
@@ -3871,7 +3877,7 @@ yyreduce:
case 134:
/* Line 1464 of yacc.c */
-#line 966 "glsl_parser.ypp"
+#line 967 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
@@ -3884,7 +3890,7 @@ yyreduce:
case 135:
/* Line 1464 of yacc.c */
-#line 977 "glsl_parser.ypp"
+#line 978 "glsl_parser.ypp"
{
(yyval.type_qualifier) = (yyvsp[(3) - (4)].type_qualifier);
;}
@@ -3893,7 +3899,7 @@ yyreduce:
case 137:
/* Line 1464 of yacc.c */
-#line 985 "glsl_parser.ypp"
+#line 986 "glsl_parser.ypp"
{
if (((yyvsp[(1) - (3)].type_qualifier).flags.i & (yyvsp[(3) - (3)].type_qualifier).flags.i) != 0) {
_mesa_glsl_error(& (yylsp[(3) - (3)]), state,
@@ -3914,7 +3920,7 @@ yyreduce:
case 138:
/* Line 1464 of yacc.c */
-#line 1004 "glsl_parser.ypp"
+#line 1005 "glsl_parser.ypp"
{
bool got_one = false;
@@ -3948,7 +3954,7 @@ yyreduce:
case 139:
/* Line 1464 of yacc.c */
-#line 1033 "glsl_parser.ypp"
+#line 1034 "glsl_parser.ypp"
{
bool got_one = false;
@@ -3991,7 +3997,7 @@ yyreduce:
case 140:
/* Line 1464 of yacc.c */
-#line 1074 "glsl_parser.ypp"
+#line 1075 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.smooth = 1;
@@ -4001,7 +4007,7 @@ yyreduce:
case 141:
/* Line 1464 of yacc.c */
-#line 1079 "glsl_parser.ypp"
+#line 1080 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.flat = 1;
@@ -4011,7 +4017,7 @@ yyreduce:
case 142:
/* Line 1464 of yacc.c */
-#line 1084 "glsl_parser.ypp"
+#line 1085 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.noperspective = 1;
@@ -4021,7 +4027,7 @@ yyreduce:
case 143:
/* Line 1464 of yacc.c */
-#line 1092 "glsl_parser.ypp"
+#line 1093 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.constant = 1;
@@ -4031,7 +4037,7 @@ yyreduce:
case 146:
/* Line 1464 of yacc.c */
-#line 1102 "glsl_parser.ypp"
+#line 1103 "glsl_parser.ypp"
{
(yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier);
(yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i;
@@ -4041,7 +4047,7 @@ yyreduce:
case 148:
/* Line 1464 of yacc.c */
-#line 1108 "glsl_parser.ypp"
+#line 1109 "glsl_parser.ypp"
{
(yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier);
(yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i;
@@ -4051,7 +4057,7 @@ yyreduce:
case 149:
/* Line 1464 of yacc.c */
-#line 1113 "glsl_parser.ypp"
+#line 1114 "glsl_parser.ypp"
{
(yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier);
(yyval.type_qualifier).flags.q.invariant = 1;
@@ -4061,7 +4067,7 @@ yyreduce:
case 150:
/* Line 1464 of yacc.c */
-#line 1118 "glsl_parser.ypp"
+#line 1119 "glsl_parser.ypp"
{
(yyval.type_qualifier) = (yyvsp[(2) - (3)].type_qualifier);
(yyval.type_qualifier).flags.i |= (yyvsp[(3) - (3)].type_qualifier).flags.i;
@@ -4072,7 +4078,7 @@ yyreduce:
case 151:
/* Line 1464 of yacc.c */
-#line 1124 "glsl_parser.ypp"
+#line 1125 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.invariant = 1;
@@ -4082,7 +4088,7 @@ yyreduce:
case 152:
/* Line 1464 of yacc.c */
-#line 1132 "glsl_parser.ypp"
+#line 1133 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.constant = 1;
@@ -4092,7 +4098,7 @@ yyreduce:
case 153:
/* Line 1464 of yacc.c */
-#line 1137 "glsl_parser.ypp"
+#line 1138 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.attribute = 1;
@@ -4102,7 +4108,7 @@ yyreduce:
case 154:
/* Line 1464 of yacc.c */
-#line 1142 "glsl_parser.ypp"
+#line 1143 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.varying = 1;
@@ -4112,7 +4118,7 @@ yyreduce:
case 155:
/* Line 1464 of yacc.c */
-#line 1147 "glsl_parser.ypp"
+#line 1148 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.centroid = 1;
@@ -4123,7 +4129,7 @@ yyreduce:
case 156:
/* Line 1464 of yacc.c */
-#line 1153 "glsl_parser.ypp"
+#line 1154 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.in = 1;
@@ -4133,7 +4139,7 @@ yyreduce:
case 157:
/* Line 1464 of yacc.c */
-#line 1158 "glsl_parser.ypp"
+#line 1159 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.out = 1;
@@ -4143,7 +4149,7 @@ yyreduce:
case 158:
/* Line 1464 of yacc.c */
-#line 1163 "glsl_parser.ypp"
+#line 1164 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.in = 1;
@@ -4153,7 +4159,7 @@ yyreduce:
case 159:
/* Line 1464 of yacc.c */
-#line 1168 "glsl_parser.ypp"
+#line 1169 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.out = 1;
@@ -4163,7 +4169,7 @@ yyreduce:
case 160:
/* Line 1464 of yacc.c */
-#line 1173 "glsl_parser.ypp"
+#line 1174 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.uniform = 1;
@@ -4173,7 +4179,7 @@ yyreduce:
case 162:
/* Line 1464 of yacc.c */
-#line 1182 "glsl_parser.ypp"
+#line 1183 "glsl_parser.ypp"
{
(yyval.type_specifier) = (yyvsp[(2) - (2)].type_specifier);
(yyval.type_specifier)->precision = (yyvsp[(1) - (2)].n);
@@ -4183,7 +4189,7 @@ yyreduce:
case 164:
/* Line 1464 of yacc.c */
-#line 1191 "glsl_parser.ypp"
+#line 1192 "glsl_parser.ypp"
{
(yyval.type_specifier) = (yyvsp[(1) - (3)].type_specifier);
(yyval.type_specifier)->is_array = true;
@@ -4194,7 +4200,7 @@ yyreduce:
case 165:
/* Line 1464 of yacc.c */
-#line 1197 "glsl_parser.ypp"
+#line 1198 "glsl_parser.ypp"
{
(yyval.type_specifier) = (yyvsp[(1) - (4)].type_specifier);
(yyval.type_specifier)->is_array = true;
@@ -4205,7 +4211,7 @@ yyreduce:
case 166:
/* Line 1464 of yacc.c */
-#line 1206 "glsl_parser.ypp"
+#line 1207 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].n));
@@ -4216,7 +4222,7 @@ yyreduce:
case 167:
/* Line 1464 of yacc.c */
-#line 1212 "glsl_parser.ypp"
+#line 1213 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].struct_specifier));
@@ -4227,7 +4233,7 @@ yyreduce:
case 168:
/* Line 1464 of yacc.c */
-#line 1218 "glsl_parser.ypp"
+#line 1219 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier));
@@ -4238,364 +4244,364 @@ yyreduce:
case 169:
/* Line 1464 of yacc.c */
-#line 1226 "glsl_parser.ypp"
+#line 1227 "glsl_parser.ypp"
{ (yyval.n) = ast_void; ;}
break;
case 170:
/* Line 1464 of yacc.c */
-#line 1227 "glsl_parser.ypp"
+#line 1228 "glsl_parser.ypp"
{ (yyval.n) = ast_float; ;}
break;
case 171:
/* Line 1464 of yacc.c */
-#line 1228 "glsl_parser.ypp"
+#line 1229 "glsl_parser.ypp"
{ (yyval.n) = ast_int; ;}
break;
case 172:
/* Line 1464 of yacc.c */
-#line 1229 "glsl_parser.ypp"
+#line 1230 "glsl_parser.ypp"
{ (yyval.n) = ast_uint; ;}
break;
case 173:
/* Line 1464 of yacc.c */
-#line 1230 "glsl_parser.ypp"
+#line 1231 "glsl_parser.ypp"
{ (yyval.n) = ast_bool; ;}
break;
case 174:
/* Line 1464 of yacc.c */
-#line 1231 "glsl_parser.ypp"
+#line 1232 "glsl_parser.ypp"
{ (yyval.n) = ast_vec2; ;}
break;
case 175:
/* Line 1464 of yacc.c */
-#line 1232 "glsl_parser.ypp"
+#line 1233 "glsl_parser.ypp"
{ (yyval.n) = ast_vec3; ;}
break;
case 176:
/* Line 1464 of yacc.c */
-#line 1233 "glsl_parser.ypp"
+#line 1234 "glsl_parser.ypp"
{ (yyval.n) = ast_vec4; ;}
break;
case 177:
/* Line 1464 of yacc.c */
-#line 1234 "glsl_parser.ypp"
+#line 1235 "glsl_parser.ypp"
{ (yyval.n) = ast_bvec2; ;}
break;
case 178:
/* Line 1464 of yacc.c */
-#line 1235 "glsl_parser.ypp"
+#line 1236 "glsl_parser.ypp"
{ (yyval.n) = ast_bvec3; ;}
break;
case 179:
/* Line 1464 of yacc.c */
-#line 1236 "glsl_parser.ypp"
+#line 1237 "glsl_parser.ypp"
{ (yyval.n) = ast_bvec4; ;}
break;
case 180:
/* Line 1464 of yacc.c */
-#line 1237 "glsl_parser.ypp"
+#line 1238 "glsl_parser.ypp"
{ (yyval.n) = ast_ivec2; ;}
break;
case 181:
/* Line 1464 of yacc.c */
-#line 1238 "glsl_parser.ypp"
+#line 1239 "glsl_parser.ypp"
{ (yyval.n) = ast_ivec3; ;}
break;
case 182:
/* Line 1464 of yacc.c */
-#line 1239 "glsl_parser.ypp"
+#line 1240 "glsl_parser.ypp"
{ (yyval.n) = ast_ivec4; ;}
break;
case 183:
/* Line 1464 of yacc.c */
-#line 1240 "glsl_parser.ypp"
+#line 1241 "glsl_parser.ypp"
{ (yyval.n) = ast_uvec2; ;}
break;
case 184:
/* Line 1464 of yacc.c */
-#line 1241 "glsl_parser.ypp"
+#line 1242 "glsl_parser.ypp"
{ (yyval.n) = ast_uvec3; ;}
break;
case 185:
/* Line 1464 of yacc.c */
-#line 1242 "glsl_parser.ypp"
+#line 1243 "glsl_parser.ypp"
{ (yyval.n) = ast_uvec4; ;}
break;
case 186:
/* Line 1464 of yacc.c */
-#line 1243 "glsl_parser.ypp"
+#line 1244 "glsl_parser.ypp"
{ (yyval.n) = ast_mat2; ;}
break;
case 187:
/* Line 1464 of yacc.c */
-#line 1244 "glsl_parser.ypp"
+#line 1245 "glsl_parser.ypp"
{ (yyval.n) = ast_mat2x3; ;}
break;
case 188:
/* Line 1464 of yacc.c */
-#line 1245 "glsl_parser.ypp"
+#line 1246 "glsl_parser.ypp"
{ (yyval.n) = ast_mat2x4; ;}
break;
case 189:
/* Line 1464 of yacc.c */
-#line 1246 "glsl_parser.ypp"
+#line 1247 "glsl_parser.ypp"
{ (yyval.n) = ast_mat3x2; ;}
break;
case 190:
/* Line 1464 of yacc.c */
-#line 1247 "glsl_parser.ypp"
+#line 1248 "glsl_parser.ypp"
{ (yyval.n) = ast_mat3; ;}
break;
case 191:
/* Line 1464 of yacc.c */
-#line 1248 "glsl_parser.ypp"
+#line 1249 "glsl_parser.ypp"
{ (yyval.n) = ast_mat3x4; ;}
break;
case 192:
/* Line 1464 of yacc.c */
-#line 1249 "glsl_parser.ypp"
+#line 1250 "glsl_parser.ypp"
{ (yyval.n) = ast_mat4x2; ;}
break;
case 193:
/* Line 1464 of yacc.c */
-#line 1250 "glsl_parser.ypp"
+#line 1251 "glsl_parser.ypp"
{ (yyval.n) = ast_mat4x3; ;}
break;
case 194:
/* Line 1464 of yacc.c */
-#line 1251 "glsl_parser.ypp"
+#line 1252 "glsl_parser.ypp"
{ (yyval.n) = ast_mat4; ;}
break;
case 195:
/* Line 1464 of yacc.c */
-#line 1252 "glsl_parser.ypp"
+#line 1253 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler1d; ;}
break;
case 196:
/* Line 1464 of yacc.c */
-#line 1253 "glsl_parser.ypp"
+#line 1254 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2d; ;}
break;
case 197:
/* Line 1464 of yacc.c */
-#line 1254 "glsl_parser.ypp"
+#line 1255 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2drect; ;}
break;
case 198:
/* Line 1464 of yacc.c */
-#line 1255 "glsl_parser.ypp"
+#line 1256 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler3d; ;}
break;
case 199:
/* Line 1464 of yacc.c */
-#line 1256 "glsl_parser.ypp"
+#line 1257 "glsl_parser.ypp"
{ (yyval.n) = ast_samplercube; ;}
break;
case 200:
/* Line 1464 of yacc.c */
-#line 1257 "glsl_parser.ypp"
+#line 1258 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler1dshadow; ;}
break;
case 201:
/* Line 1464 of yacc.c */
-#line 1258 "glsl_parser.ypp"
+#line 1259 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2dshadow; ;}
break;
case 202:
/* Line 1464 of yacc.c */
-#line 1259 "glsl_parser.ypp"
+#line 1260 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2drectshadow; ;}
break;
case 203:
/* Line 1464 of yacc.c */
-#line 1260 "glsl_parser.ypp"
+#line 1261 "glsl_parser.ypp"
{ (yyval.n) = ast_samplercubeshadow; ;}
break;
case 204:
/* Line 1464 of yacc.c */
-#line 1261 "glsl_parser.ypp"
+#line 1262 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler1darray; ;}
break;
case 205:
/* Line 1464 of yacc.c */
-#line 1262 "glsl_parser.ypp"
+#line 1263 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2darray; ;}
break;
case 206:
/* Line 1464 of yacc.c */
-#line 1263 "glsl_parser.ypp"
+#line 1264 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler1darrayshadow; ;}
break;
case 207:
/* Line 1464 of yacc.c */
-#line 1264 "glsl_parser.ypp"
+#line 1265 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2darrayshadow; ;}
break;
case 208:
/* Line 1464 of yacc.c */
-#line 1265 "glsl_parser.ypp"
+#line 1266 "glsl_parser.ypp"
{ (yyval.n) = ast_isampler1d; ;}
break;
case 209:
/* Line 1464 of yacc.c */
-#line 1266 "glsl_parser.ypp"
+#line 1267 "glsl_parser.ypp"
{ (yyval.n) = ast_isampler2d; ;}
break;
case 210:
/* Line 1464 of yacc.c */
-#line 1267 "glsl_parser.ypp"
+#line 1268 "glsl_parser.ypp"
{ (yyval.n) = ast_isampler3d; ;}
break;
case 211:
/* Line 1464 of yacc.c */
-#line 1268 "glsl_parser.ypp"
+#line 1269 "glsl_parser.ypp"
{ (yyval.n) = ast_isamplercube; ;}
break;
case 212:
/* Line 1464 of yacc.c */
-#line 1269 "glsl_parser.ypp"
+#line 1270 "glsl_parser.ypp"
{ (yyval.n) = ast_isampler1darray; ;}
break;
case 213:
/* Line 1464 of yacc.c */
-#line 1270 "glsl_parser.ypp"
+#line 1271 "glsl_parser.ypp"
{ (yyval.n) = ast_isampler2darray; ;}
break;
case 214:
/* Line 1464 of yacc.c */
-#line 1271 "glsl_parser.ypp"
+#line 1272 "glsl_parser.ypp"
{ (yyval.n) = ast_usampler1d; ;}
break;
case 215:
/* Line 1464 of yacc.c */
-#line 1272 "glsl_parser.ypp"
+#line 1273 "glsl_parser.ypp"
{ (yyval.n) = ast_usampler2d; ;}
break;
case 216:
/* Line 1464 of yacc.c */
-#line 1273 "glsl_parser.ypp"
+#line 1274 "glsl_parser.ypp"
{ (yyval.n) = ast_usampler3d; ;}
break;
case 217:
/* Line 1464 of yacc.c */
-#line 1274 "glsl_parser.ypp"
+#line 1275 "glsl_parser.ypp"
{ (yyval.n) = ast_usamplercube; ;}
break;
case 218:
/* Line 1464 of yacc.c */
-#line 1275 "glsl_parser.ypp"
+#line 1276 "glsl_parser.ypp"
{ (yyval.n) = ast_usampler1darray; ;}
break;
case 219:
/* Line 1464 of yacc.c */
-#line 1276 "glsl_parser.ypp"
+#line 1277 "glsl_parser.ypp"
{ (yyval.n) = ast_usampler2darray; ;}
break;
case 220:
/* Line 1464 of yacc.c */
-#line 1280 "glsl_parser.ypp"
+#line 1281 "glsl_parser.ypp"
{
if (!state->es_shader && state->language_version < 130)
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4612,7 +4618,7 @@ yyreduce:
case 221:
/* Line 1464 of yacc.c */
-#line 1291 "glsl_parser.ypp"
+#line 1292 "glsl_parser.ypp"
{
if (!state->es_shader && state->language_version < 130)
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4629,7 +4635,7 @@ yyreduce:
case 222:
/* Line 1464 of yacc.c */
-#line 1302 "glsl_parser.ypp"
+#line 1303 "glsl_parser.ypp"
{
if (!state->es_shader && state->language_version < 130)
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4646,7 +4652,7 @@ yyreduce:
case 223:
/* Line 1464 of yacc.c */
-#line 1317 "glsl_parser.ypp"
+#line 1318 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[(2) - (5)].identifier), (yyvsp[(4) - (5)].node));
@@ -4657,7 +4663,7 @@ yyreduce:
case 224:
/* Line 1464 of yacc.c */
-#line 1323 "glsl_parser.ypp"
+#line 1324 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[(3) - (4)].node));
@@ -4668,7 +4674,7 @@ yyreduce:
case 225:
/* Line 1464 of yacc.c */
-#line 1332 "glsl_parser.ypp"
+#line 1333 "glsl_parser.ypp"
{
(yyval.node) = (ast_node *) (yyvsp[(1) - (1)].declarator_list);
(yyvsp[(1) - (1)].declarator_list)->link.self_link();
@@ -4678,7 +4684,7 @@ yyreduce:
case 226:
/* Line 1464 of yacc.c */
-#line 1337 "glsl_parser.ypp"
+#line 1338 "glsl_parser.ypp"
{
(yyval.node) = (ast_node *) (yyvsp[(1) - (2)].node);
(yyval.node)->link.insert_before(& (yyvsp[(2) - (2)].declarator_list)->link);
@@ -4688,7 +4694,7 @@ yyreduce:
case 227:
/* Line 1464 of yacc.c */
-#line 1345 "glsl_parser.ypp"
+#line 1346 "glsl_parser.ypp"
{
void *ctx = state;
ast_fully_specified_type *type = new(ctx) ast_fully_specified_type();
@@ -4705,7 +4711,7 @@ yyreduce:
case 228:
/* Line 1464 of yacc.c */
-#line 1360 "glsl_parser.ypp"
+#line 1361 "glsl_parser.ypp"
{
(yyval.declaration) = (yyvsp[(1) - (1)].declaration);
(yyvsp[(1) - (1)].declaration)->link.self_link();
@@ -4715,7 +4721,7 @@ yyreduce:
case 229:
/* Line 1464 of yacc.c */
-#line 1365 "glsl_parser.ypp"
+#line 1366 "glsl_parser.ypp"
{
(yyval.declaration) = (yyvsp[(1) - (3)].declaration);
(yyval.declaration)->link.insert_before(& (yyvsp[(3) - (3)].declaration)->link);
@@ -4725,7 +4731,7 @@ yyreduce:
case 230:
/* Line 1464 of yacc.c */
-#line 1373 "glsl_parser.ypp"
+#line 1374 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (1)].identifier), false, NULL, NULL);
@@ -4736,7 +4742,7 @@ yyreduce:
case 231:
/* Line 1464 of yacc.c */
-#line 1379 "glsl_parser.ypp"
+#line 1380 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (4)].identifier), true, (yyvsp[(3) - (4)].expression), NULL);
@@ -4747,28 +4753,28 @@ yyreduce:
case 234:
/* Line 1464 of yacc.c */
-#line 1397 "glsl_parser.ypp"
+#line 1398 "glsl_parser.ypp"
{ (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
break;
case 239:
/* Line 1464 of yacc.c */
-#line 1405 "glsl_parser.ypp"
+#line 1406 "glsl_parser.ypp"
{ (yyval.node) = NULL; ;}
break;
case 240:
/* Line 1464 of yacc.c */
-#line 1406 "glsl_parser.ypp"
+#line 1407 "glsl_parser.ypp"
{ (yyval.node) = NULL; ;}
break;
case 243:
/* Line 1464 of yacc.c */
-#line 1413 "glsl_parser.ypp"
+#line 1414 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.compound_statement) = new(ctx) ast_compound_statement(true, NULL);
@@ -4779,7 +4785,7 @@ yyreduce:
case 244:
/* Line 1464 of yacc.c */
-#line 1419 "glsl_parser.ypp"
+#line 1420 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[(2) - (3)].node));
@@ -4790,14 +4796,14 @@ yyreduce:
case 245:
/* Line 1464 of yacc.c */
-#line 1427 "glsl_parser.ypp"
+#line 1428 "glsl_parser.ypp"
{ (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
break;
case 247:
/* Line 1464 of yacc.c */
-#line 1433 "glsl_parser.ypp"
+#line 1434 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.compound_statement) = new(ctx) ast_compound_statement(false, NULL);
@@ -4808,7 +4814,7 @@ yyreduce:
case 248:
/* Line 1464 of yacc.c */
-#line 1439 "glsl_parser.ypp"
+#line 1440 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[(2) - (3)].node));
@@ -4819,7 +4825,7 @@ yyreduce:
case 249:
/* Line 1464 of yacc.c */
-#line 1448 "glsl_parser.ypp"
+#line 1449 "glsl_parser.ypp"
{
if ((yyvsp[(1) - (1)].node) == NULL) {
_mesa_glsl_error(& (yylsp[(1) - (1)]), state, "<nil> statement\n");
@@ -4834,7 +4840,7 @@ yyreduce:
case 250:
/* Line 1464 of yacc.c */
-#line 1458 "glsl_parser.ypp"
+#line 1459 "glsl_parser.ypp"
{
if ((yyvsp[(2) - (2)].node) == NULL) {
_mesa_glsl_error(& (yylsp[(2) - (2)]), state, "<nil> statement\n");
@@ -4848,7 +4854,7 @@ yyreduce:
case 251:
/* Line 1464 of yacc.c */
-#line 1470 "glsl_parser.ypp"
+#line 1471 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_expression_statement(NULL);
@@ -4859,7 +4865,7 @@ yyreduce:
case 252:
/* Line 1464 of yacc.c */
-#line 1476 "glsl_parser.ypp"
+#line 1477 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_expression_statement((yyvsp[(1) - (2)].expression));
@@ -4870,7 +4876,7 @@ yyreduce:
case 253:
/* Line 1464 of yacc.c */
-#line 1485 "glsl_parser.ypp"
+#line 1486 "glsl_parser.ypp"
{
(yyval.node) = new(state) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].selection_rest_statement).then_statement,
(yyvsp[(5) - (5)].selection_rest_statement).else_statement);
@@ -4881,7 +4887,7 @@ yyreduce:
case 254:
/* Line 1464 of yacc.c */
-#line 1494 "glsl_parser.ypp"
+#line 1495 "glsl_parser.ypp"
{
(yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (3)].node);
(yyval.selection_rest_statement).else_statement = (yyvsp[(3) - (3)].node);
@@ -4891,7 +4897,7 @@ yyreduce:
case 255:
/* Line 1464 of yacc.c */
-#line 1499 "glsl_parser.ypp"
+#line 1500 "glsl_parser.ypp"
{
(yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (1)].node);
(yyval.selection_rest_statement).else_statement = NULL;
@@ -4901,7 +4907,7 @@ yyreduce:
case 256:
/* Line 1464 of yacc.c */
-#line 1507 "glsl_parser.ypp"
+#line 1508 "glsl_parser.ypp"
{
(yyval.node) = (ast_node *) (yyvsp[(1) - (1)].expression);
;}
@@ -4910,7 +4916,7 @@ yyreduce:
case 257:
/* Line 1464 of yacc.c */
-#line 1511 "glsl_parser.ypp"
+#line 1512 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
@@ -4926,7 +4932,7 @@ yyreduce:
case 261:
/* Line 1464 of yacc.c */
-#line 1534 "glsl_parser.ypp"
+#line 1535 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while,
@@ -4938,7 +4944,7 @@ yyreduce:
case 262:
/* Line 1464 of yacc.c */
-#line 1541 "glsl_parser.ypp"
+#line 1542 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while,
@@ -4950,7 +4956,7 @@ yyreduce:
case 263:
/* Line 1464 of yacc.c */
-#line 1548 "glsl_parser.ypp"
+#line 1549 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for,
@@ -4962,7 +4968,7 @@ yyreduce:
case 267:
/* Line 1464 of yacc.c */
-#line 1564 "glsl_parser.ypp"
+#line 1565 "glsl_parser.ypp"
{
(yyval.node) = NULL;
;}
@@ -4971,7 +4977,7 @@ yyreduce:
case 268:
/* Line 1464 of yacc.c */
-#line 1571 "glsl_parser.ypp"
+#line 1572 "glsl_parser.ypp"
{
(yyval.for_rest_statement).cond = (yyvsp[(1) - (2)].node);
(yyval.for_rest_statement).rest = NULL;
@@ -4981,7 +4987,7 @@ yyreduce:
case 269:
/* Line 1464 of yacc.c */
-#line 1576 "glsl_parser.ypp"
+#line 1577 "glsl_parser.ypp"
{
(yyval.for_rest_statement).cond = (yyvsp[(1) - (3)].node);
(yyval.for_rest_statement).rest = (yyvsp[(3) - (3)].expression);
@@ -4991,7 +4997,7 @@ yyreduce:
case 270:
/* Line 1464 of yacc.c */
-#line 1585 "glsl_parser.ypp"
+#line 1586 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL);
@@ -5002,7 +5008,7 @@ yyreduce:
case 271:
/* Line 1464 of yacc.c */
-#line 1591 "glsl_parser.ypp"
+#line 1592 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL);
@@ -5013,7 +5019,7 @@ yyreduce:
case 272:
/* Line 1464 of yacc.c */
-#line 1597 "glsl_parser.ypp"
+#line 1598 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL);
@@ -5024,7 +5030,7 @@ yyreduce:
case 273:
/* Line 1464 of yacc.c */
-#line 1603 "glsl_parser.ypp"
+#line 1604 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[(2) - (3)].expression));
@@ -5035,7 +5041,7 @@ yyreduce:
case 274:
/* Line 1464 of yacc.c */
-#line 1609 "glsl_parser.ypp"
+#line 1610 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL);
@@ -5046,28 +5052,28 @@ yyreduce:
case 275:
/* Line 1464 of yacc.c */
-#line 1617 "glsl_parser.ypp"
+#line 1618 "glsl_parser.ypp"
{ (yyval.node) = (yyvsp[(1) - (1)].function_definition); ;}
break;
case 276:
/* Line 1464 of yacc.c */
-#line 1618 "glsl_parser.ypp"
+#line 1619 "glsl_parser.ypp"
{ (yyval.node) = (yyvsp[(1) - (1)].node); ;}
break;
case 277:
/* Line 1464 of yacc.c */
-#line 1619 "glsl_parser.ypp"
+#line 1620 "glsl_parser.ypp"
{ (yyval.node) = NULL; ;}
break;
case 278:
/* Line 1464 of yacc.c */
-#line 1624 "glsl_parser.ypp"
+#line 1625 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.function_definition) = new(ctx) ast_function_definition();
@@ -5080,7 +5086,7 @@ yyreduce:
/* Line 1464 of yacc.c */
-#line 5084 "glsl_parser.cpp"
+#line 5090 "glsl_parser.cpp"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
diff --git a/src/glsl/glsl_parser.h b/src/glsl/glsl_parser.h
index 1101d4977c..83aa56f7cb 100644
--- a/src/glsl/glsl_parser.h
+++ b/src/glsl/glsl_parser.h
@@ -225,7 +225,9 @@
IMAGEBUFFER = 442,
IIMAGEBUFFER = 443,
UIMAGEBUFFER = 444,
- ROW_MAJOR = 445
+ IMAGE1DARRAYSHADOW = 445,
+ IMAGE2DARRAYSHADOW = 446,
+ ROW_MAJOR = 447
};
#endif
@@ -269,7 +271,7 @@ typedef union YYSTYPE
/* Line 1685 of yacc.c */
-#line 273 "glsl_parser.h"
+#line 275 "glsl_parser.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
diff --git a/src/glsl/glsl_parser.ypp b/src/glsl/glsl_parser.ypp
index 3813d7a4e2..6d7d148eb0 100644
--- a/src/glsl/glsl_parser.ypp
+++ b/src/glsl/glsl_parser.ypp
@@ -126,6 +126,7 @@
%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGECUBE IIMAGE1DARRAY IIMAGE2DARRAY
%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGECUBE UIMAGE1DARRAY UIMAGE2DARRAY
%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER
+%token IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW
%token ROW_MAJOR
%type <identifier> variable_identifier
diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp
index b2c378dd85..302cfbc566 100644
--- a/src/glsl/glsl_parser_extras.cpp
+++ b/src/glsl/glsl_parser_extras.cpp
@@ -708,7 +708,7 @@ do_common_optimization(exec_list *ir, bool linked, unsigned max_unroll_iteration
{
GLboolean progress = GL_FALSE;
- progress = do_sub_to_add_neg(ir) || progress;
+ progress = lower_instructions(ir, SUB_TO_ADD_NEG) || progress;
if (linked) {
progress = do_function_inlining(ir) || progress;
diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp
index 82eb470605..8c33cfa20d 100644
--- a/src/glsl/glsl_types.cpp
+++ b/src/glsl/glsl_types.cpp
@@ -46,7 +46,7 @@ glsl_type::init_talloc_type_ctx(void)
}
glsl_type::glsl_type(GLenum gl_type,
- unsigned base_type, unsigned vector_elements,
+ glsl_base_type base_type, unsigned vector_elements,
unsigned matrix_columns, const char *name) :
gl_type(gl_type),
base_type(base_type),
diff --git a/src/glsl/glsl_types.h b/src/glsl/glsl_types.h
index dccab0a60d..d62d493c8e 100644
--- a/src/glsl/glsl_types.h
+++ b/src/glsl/glsl_types.h
@@ -43,16 +43,17 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state);
extern "C" void
_mesa_glsl_release_types(void);
-#define GLSL_TYPE_UINT 0
-#define GLSL_TYPE_INT 1
-#define GLSL_TYPE_FLOAT 2
-#define GLSL_TYPE_BOOL 3
-#define GLSL_TYPE_SAMPLER 4
-#define GLSL_TYPE_STRUCT 5
-#define GLSL_TYPE_ARRAY 6
-#define GLSL_TYPE_FUNCTION 7
-#define GLSL_TYPE_VOID 8
-#define GLSL_TYPE_ERROR 9
+enum glsl_base_type {
+ GLSL_TYPE_UINT = 0,
+ GLSL_TYPE_INT,
+ GLSL_TYPE_FLOAT,
+ GLSL_TYPE_BOOL,
+ GLSL_TYPE_SAMPLER,
+ GLSL_TYPE_STRUCT,
+ GLSL_TYPE_ARRAY,
+ GLSL_TYPE_VOID,
+ GLSL_TYPE_ERROR
+};
enum glsl_sampler_dim {
GLSL_SAMPLER_DIM_1D = 0,
@@ -66,7 +67,7 @@ enum glsl_sampler_dim {
struct glsl_type {
GLenum gl_type;
- unsigned base_type:4;
+ glsl_base_type base_type;
unsigned sampler_dimensionality:3;
unsigned sampler_shadow:1;
@@ -123,11 +124,6 @@ struct glsl_type {
* For \c GLSL_TYPE_ARRAY, this is the length of the array. For
* \c GLSL_TYPE_STRUCT, it is the number of elements in the structure and
* the number of values pointed to by \c fields.structure (below).
- *
- * For \c GLSL_TYPE_FUNCTION, it is the number of parameters to the
- * function. The return value from a function is implicitly the first
- * parameter. The types of the parameters are stored in
- * \c fields.parameters (below).
*/
unsigned length;
@@ -399,7 +395,7 @@ private:
/** Constructor for vector and matrix types */
glsl_type(GLenum gl_type,
- unsigned base_type, unsigned vector_elements,
+ glsl_base_type base_type, unsigned vector_elements,
unsigned matrix_columns, const char *name);
/** Constructor for sampler types */
diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
index 87e78eee05..2abb95394f 100644
--- a/src/glsl/ir.cpp
+++ b/src/glsl/ir.cpp
@@ -31,6 +31,21 @@ ir_rvalue::ir_rvalue()
this->type = glsl_type::error_type;
}
+bool ir_rvalue::is_zero() const
+{
+ return false;
+}
+
+bool ir_rvalue::is_one() const
+{
+ return false;
+}
+
+bool ir_rvalue::is_negative_one() const
+{
+ return false;
+}
+
/**
* Modify the swizzle make to move one component to another
*
@@ -177,91 +192,61 @@ ir_assignment::ir_assignment(ir_rvalue *lhs, ir_rvalue *rhs,
ir_expression::ir_expression(int op, const struct glsl_type *type,
+ ir_rvalue *op0)
+{
+ assert(get_num_operands(ir_expression_operation(op)) == 1);
+ this->ir_type = ir_type_expression;
+ this->type = type;
+ this->operation = ir_expression_operation(op);
+ this->operands[0] = op0;
+ this->operands[1] = NULL;
+ this->operands[2] = NULL;
+ this->operands[3] = NULL;
+}
+
+ir_expression::ir_expression(int op, const struct glsl_type *type,
ir_rvalue *op0, ir_rvalue *op1)
{
+ assert(((op1 == NULL) && (get_num_operands(ir_expression_operation(op)) == 1))
+ || (get_num_operands(ir_expression_operation(op)) == 2));
this->ir_type = ir_type_expression;
this->type = type;
this->operation = ir_expression_operation(op);
this->operands[0] = op0;
this->operands[1] = op1;
+ this->operands[2] = NULL;
+ this->operands[3] = NULL;
+}
+
+ir_expression::ir_expression(int op, const struct glsl_type *type,
+ ir_rvalue *op0, ir_rvalue *op1,
+ ir_rvalue *op2, ir_rvalue *op3)
+{
+ this->ir_type = ir_type_expression;
+ this->type = type;
+ this->operation = ir_expression_operation(op);
+ this->operands[0] = op0;
+ this->operands[1] = op1;
+ this->operands[2] = op2;
+ this->operands[3] = op3;
}
unsigned int
ir_expression::get_num_operands(ir_expression_operation op)
{
-/* Update ir_print_visitor.cpp when updating this list. */
- const int num_operands[] = {
- 1, /* ir_unop_bit_not */
- 1, /* ir_unop_logic_not */
- 1, /* ir_unop_neg */
- 1, /* ir_unop_abs */
- 1, /* ir_unop_sign */
- 1, /* ir_unop_rcp */
- 1, /* ir_unop_rsq */
- 1, /* ir_unop_sqrt */
- 1, /* ir_unop_exp */
- 1, /* ir_unop_log */
- 1, /* ir_unop_exp2 */
- 1, /* ir_unop_log2 */
- 1, /* ir_unop_f2i */
- 1, /* ir_unop_i2f */
- 1, /* ir_unop_f2b */
- 1, /* ir_unop_b2f */
- 1, /* ir_unop_i2b */
- 1, /* ir_unop_b2i */
- 1, /* ir_unop_u2f */
- 1, /* ir_unop_any */
-
- 1, /* ir_unop_trunc */
- 1, /* ir_unop_ceil */
- 1, /* ir_unop_floor */
- 1, /* ir_unop_fract */
- 1, /* ir_unop_round_even */
-
- 1, /* ir_unop_sin */
- 1, /* ir_unop_cos */
-
- 1, /* ir_unop_dFdx */
- 1, /* ir_unop_dFdy */
-
- 1, /* ir_unop_noise */
-
- 2, /* ir_binop_add */
- 2, /* ir_binop_sub */
- 2, /* ir_binop_mul */
- 2, /* ir_binop_div */
- 2, /* ir_binop_mod */
-
- 2, /* ir_binop_less */
- 2, /* ir_binop_greater */
- 2, /* ir_binop_lequal */
- 2, /* ir_binop_gequal */
- 2, /* ir_binop_equal */
- 2, /* ir_binop_nequal */
- 2, /* ir_binop_all_equal */
- 2, /* ir_binop_any_nequal */
-
- 2, /* ir_binop_lshift */
- 2, /* ir_binop_rshift */
- 2, /* ir_binop_bit_and */
- 2, /* ir_binop_bit_xor */
- 2, /* ir_binop_bit_or */
-
- 2, /* ir_binop_logic_and */
- 2, /* ir_binop_logic_xor */
- 2, /* ir_binop_logic_or */
-
- 2, /* ir_binop_dot */
- 2, /* ir_binop_cross */
- 2, /* ir_binop_min */
- 2, /* ir_binop_max */
-
- 2, /* ir_binop_pow */
- };
+ assert(op <= ir_last_opcode);
+
+ if (op <= ir_last_unop)
+ return 1;
- assert(sizeof(num_operands) / sizeof(num_operands[0]) == ir_binop_pow + 1);
+ if (op <= ir_last_binop)
+ return 2;
- return num_operands[op];
+ if (op == ir_quadop_vector)
+ return 4;
+
+ assert(false);
+ return 0;
}
static const char *const operator_strs[] = {
@@ -292,6 +277,8 @@ static const char *const operator_strs[] = {
"round_even",
"sin",
"cos",
+ "sin_reduced",
+ "cos_reduced",
"dFdx",
"dFdy",
"noise",
@@ -317,16 +304,16 @@ static const char *const operator_strs[] = {
"^^",
"||",
"dot",
- "cross",
"min",
"max",
"pow",
+ "vector",
};
const char *ir_expression::operator_string(ir_expression_operation op)
{
assert((unsigned int) op < Elements(operator_strs));
- assert(Elements(operator_strs) == (ir_binop_pow + 1));
+ assert(Elements(operator_strs) == (ir_quadop_vector + 1));
return operator_strs[op];
}
@@ -742,6 +729,115 @@ ir_constant::has_value(const ir_constant *c) const
return true;
}
+bool
+ir_constant::is_zero() const
+{
+ if (!this->type->is_scalar() && !this->type->is_vector())
+ return false;
+
+ for (unsigned c = 0; c < this->type->vector_elements; c++) {
+ switch (this->type->base_type) {
+ case GLSL_TYPE_FLOAT:
+ if (this->value.f[c] != 0.0)
+ return false;
+ break;
+ case GLSL_TYPE_INT:
+ if (this->value.i[c] != 0)
+ return false;
+ break;
+ case GLSL_TYPE_UINT:
+ if (this->value.u[c] != 0)
+ return false;
+ break;
+ case GLSL_TYPE_BOOL:
+ if (this->value.b[c] != false)
+ return false;
+ break;
+ default:
+ /* The only other base types are structures, arrays, and samplers.
+ * Samplers cannot be constants, and the others should have been
+ * filtered out above.
+ */
+ assert(!"Should not get here.");
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool
+ir_constant::is_one() const
+{
+ if (!this->type->is_scalar() && !this->type->is_vector())
+ return false;
+
+ for (unsigned c = 0; c < this->type->vector_elements; c++) {
+ switch (this->type->base_type) {
+ case GLSL_TYPE_FLOAT:
+ if (this->value.f[c] != 1.0)
+ return false;
+ break;
+ case GLSL_TYPE_INT:
+ if (this->value.i[c] != 1)
+ return false;
+ break;
+ case GLSL_TYPE_UINT:
+ if (this->value.u[c] != 1)
+ return false;
+ break;
+ case GLSL_TYPE_BOOL:
+ if (this->value.b[c] != true)
+ return false;
+ break;
+ default:
+ /* The only other base types are structures, arrays, and samplers.
+ * Samplers cannot be constants, and the others should have been
+ * filtered out above.
+ */
+ assert(!"Should not get here.");
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool
+ir_constant::is_negative_one() const
+{
+ if (!this->type->is_scalar() && !this->type->is_vector())
+ return false;
+
+ if (this->type->is_boolean())
+ return false;
+
+ for (unsigned c = 0; c < this->type->vector_elements; c++) {
+ switch (this->type->base_type) {
+ case GLSL_TYPE_FLOAT:
+ if (this->value.f[c] != -1.0)
+ return false;
+ break;
+ case GLSL_TYPE_INT:
+ if (this->value.i[c] != -1)
+ return false;
+ break;
+ case GLSL_TYPE_UINT:
+ if (int(this->value.u[c]) != -1)
+ return false;
+ break;
+ default:
+ /* The only other base types are structures, arrays, samplers, and
+ * booleans. Samplers cannot be constants, and the others should
+ * have been filtered out above.
+ */
+ assert(!"Should not get here.");
+ return false;
+ }
+ }
+
+ return true;
+}
ir_loop::ir_loop()
{
@@ -1239,3 +1335,59 @@ reparent_ir(exec_list *list, void *mem_ctx)
visit_tree((ir_instruction *) node, steal_memory, mem_ctx);
}
}
+
+
+static ir_rvalue *
+try_min_one(ir_rvalue *ir)
+{
+ ir_expression *expr = ir->as_expression();
+
+ if (!expr || expr->operation != ir_binop_min)
+ return NULL;
+
+ if (expr->operands[0]->is_one())
+ return expr->operands[1];
+
+ if (expr->operands[1]->is_one())
+ return expr->operands[0];
+
+ return NULL;
+}
+
+static ir_rvalue *
+try_max_zero(ir_rvalue *ir)
+{
+ ir_expression *expr = ir->as_expression();
+
+ if (!expr || expr->operation != ir_binop_max)
+ return NULL;
+
+ if (expr->operands[0]->is_zero())
+ return expr->operands[1];
+
+ if (expr->operands[1]->is_zero())
+ return expr->operands[0];
+
+ return NULL;
+}
+
+ir_rvalue *
+ir_rvalue::as_rvalue_to_saturate()
+{
+ ir_expression *expr = this->as_expression();
+
+ if (!expr)
+ return NULL;
+
+ ir_rvalue *max_zero = try_max_zero(expr);
+ if (max_zero) {
+ return try_min_one(max_zero);
+ } else {
+ ir_rvalue *min_one = try_min_one(expr);
+ if (min_one) {
+ return try_max_zero(min_one);
+ }
+ }
+
+ return NULL;
+}
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 06198e4f3f..850033b185 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -33,14 +33,11 @@ extern "C" {
#include <talloc.h>
}
+#include "glsl_types.h"
#include "list.h"
#include "ir_visitor.h"
#include "ir_hierarchical_visitor.h"
-#ifndef ARRAY_SIZE
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
-#endif
-
/**
* \defgroup IR Intermediate representation nodes
*
@@ -147,6 +144,8 @@ public:
return this;
}
+ ir_rvalue *as_rvalue_to_saturate();
+
virtual bool is_lvalue()
{
return false;
@@ -175,6 +174,42 @@ public:
return NULL;
}
+ /**
+ * Determine if an r-value has the value zero
+ *
+ * The base implementation of this function always returns \c false. The
+ * \c ir_constant class over-rides this function to return \c true \b only
+ * for vector and scalar types that have all elements set to the value
+ * zero (or \c false for booleans).
+ *
+ * \sa ir_constant::has_value, ir_rvalue::is_one, ir_rvalue::is_negative_one
+ */
+ virtual bool is_zero() const;
+
+ /**
+ * Determine if an r-value has the value one
+ *
+ * The base implementation of this function always returns \c false. The
+ * \c ir_constant class over-rides this function to return \c true \b only
+ * for vector and scalar types that have all elements set to the value
+ * one (or \c true for booleans).
+ *
+ * \sa ir_constant::has_value, ir_rvalue::is_zero, ir_rvalue::is_negative_one
+ */
+ virtual bool is_one() const;
+
+ /**
+ * Determine if an r-value has the value negative one
+ *
+ * The base implementation of this function always returns \c false. The
+ * \c ir_constant class over-rides this function to return \c true \b only
+ * for vector and scalar types that have all elements set to the value
+ * negative one. For boolean times, the result is always \c false.
+ *
+ * \sa ir_constant::has_value, ir_rvalue::is_zero, ir_rvalue::is_one
+ */
+ virtual bool is_negative_one() const;
+
protected:
ir_rvalue();
};
@@ -709,6 +744,8 @@ enum ir_expression_operation {
/*@{*/
ir_unop_sin,
ir_unop_cos,
+ ir_unop_sin_reduced, /**< Reduced range sin. [-pi, pi] */
+ ir_unop_cos_reduced, /**< Reduced range cos. [-pi, pi] */
/*@}*/
/**
@@ -721,6 +758,11 @@ enum ir_expression_operation {
ir_unop_noise,
+ /**
+ * A sentinel marking the last of the unary operations.
+ */
+ ir_last_unop = ir_unop_noise,
+
ir_binop_add,
ir_binop_sub,
ir_binop_mul,
@@ -775,18 +817,43 @@ enum ir_expression_operation {
ir_binop_logic_or,
ir_binop_dot,
- ir_binop_cross,
ir_binop_min,
ir_binop_max,
- ir_binop_pow
+ ir_binop_pow,
+
+ /**
+ * A sentinel marking the last of the binary operations.
+ */
+ ir_last_binop = ir_binop_pow,
+
+ ir_quadop_vector,
+
+ /**
+ * A sentinel marking the last of all operations.
+ */
+ ir_last_opcode = ir_last_binop
};
class ir_expression : public ir_rvalue {
public:
+ /**
+ * Constructor for unary operation expressions
+ */
+ ir_expression(int op, const struct glsl_type *type, ir_rvalue *);
+
+ /**
+ * Constructor for binary operation expressions
+ */
ir_expression(int op, const struct glsl_type *type,
ir_rvalue *, ir_rvalue *);
+ /**
+ * Constructor for quad operator expressions
+ */
+ ir_expression(int op, const struct glsl_type *type,
+ ir_rvalue *, ir_rvalue *, ir_rvalue *, ir_rvalue *);
+
virtual ir_expression *as_expression()
{
return this;
@@ -812,7 +879,8 @@ public:
*/
unsigned int get_num_operands() const
{
- return get_num_operands(operation);
+ return (this->operation == ir_quadop_vector)
+ ? this->type->vector_elements : get_num_operands(operation);
}
/**
@@ -839,7 +907,7 @@ public:
virtual ir_visitor_status accept(ir_hierarchical_visitor *);
ir_expression_operation operation;
- ir_rvalue *operands[2];
+ ir_rvalue *operands[4];
};
@@ -1445,9 +1513,16 @@ public:
/**
* Determine whether a constant has the same value as another constant
+ *
+ * \sa ir_constant::is_zero, ir_constant::is_one,
+ * ir_constant::is_negative_one
*/
bool has_value(const ir_constant *) const;
+ virtual bool is_zero() const;
+ virtual bool is_one() const;
+ virtual bool is_negative_one() const;
+
/**
* Value of the constant.
*
diff --git a/src/glsl/ir_clone.cpp b/src/glsl/ir_clone.cpp
index a3cc8dbc97..325f606615 100644
--- a/src/glsl/ir_clone.cpp
+++ b/src/glsl/ir_clone.cpp
@@ -22,6 +22,7 @@
*/
#include <string.h>
+#include "main/compiler.h"
#include "ir.h"
#include "glsl_types.h"
extern "C" {
@@ -160,14 +161,15 @@ ir_call::clone(void *mem_ctx, struct hash_table *ht) const
ir_expression *
ir_expression::clone(void *mem_ctx, struct hash_table *ht) const
{
- ir_rvalue *op[2] = {NULL, NULL};
+ ir_rvalue *op[Elements(this->operands)] = { NULL, };
unsigned int i;
for (i = 0; i < get_num_operands(); i++) {
op[i] = this->operands[i]->clone(mem_ctx, ht);
}
- return new(mem_ctx) ir_expression(this->operation, this->type, op[0], op[1]);
+ return new(mem_ctx) ir_expression(this->operation, this->type,
+ op[0], op[1], op[2], op[3]);
}
ir_dereference_variable *
diff --git a/src/glsl/ir_constant_expression.cpp b/src/glsl/ir_constant_expression.cpp
index 048c020c83..4fd6d09a3a 100644
--- a/src/glsl/ir_constant_expression.cpp
+++ b/src/glsl/ir_constant_expression.cpp
@@ -54,7 +54,10 @@ dot(ir_constant *op0, ir_constant *op1)
ir_constant *
ir_expression::constant_expression_value()
{
- ir_constant *op[2] = { NULL, NULL };
+ if (this->type->is_error())
+ return NULL;
+
+ ir_constant *op[Elements(this->operands)] = { NULL, };
ir_constant_data data;
memset(&data, 0, sizeof(data));
@@ -124,31 +127,31 @@ ir_expression::constant_expression_value()
case ir_unop_f2i:
assert(op[0]->type->base_type == GLSL_TYPE_FLOAT);
for (unsigned c = 0; c < op[0]->type->components(); c++) {
- data.i[c] = op[0]->value.f[c];
+ data.i[c] = (int) op[0]->value.f[c];
}
break;
case ir_unop_i2f:
assert(op[0]->type->base_type == GLSL_TYPE_INT);
for (unsigned c = 0; c < op[0]->type->components(); c++) {
- data.f[c] = op[0]->value.i[c];
+ data.f[c] = (float) op[0]->value.i[c];
}
break;
case ir_unop_u2f:
assert(op[0]->type->base_type == GLSL_TYPE_UINT);
for (unsigned c = 0; c < op[0]->type->components(); c++) {
- data.f[c] = op[0]->value.u[c];
+ data.f[c] = (float) op[0]->value.u[c];
}
break;
case ir_unop_b2f:
assert(op[0]->type->base_type == GLSL_TYPE_BOOL);
for (unsigned c = 0; c < op[0]->type->components(); c++) {
- data.f[c] = op[0]->value.b[c] ? 1.0 : 0.0;
+ data.f[c] = op[0]->value.b[c] ? 1.0F : 0.0F;
}
break;
case ir_unop_f2b:
assert(op[0]->type->base_type == GLSL_TYPE_FLOAT);
for (unsigned c = 0; c < op[0]->type->components(); c++) {
- data.b[c] = bool(op[0]->value.f[c]);
+ data.b[c] = op[0]->value.f[c] != 0.0F ? true : false;
}
break;
case ir_unop_b2i:
@@ -160,7 +163,7 @@ ir_expression::constant_expression_value()
case ir_unop_i2b:
assert(op[0]->type->is_integer());
for (unsigned c = 0; c < op[0]->type->components(); c++) {
- data.b[c] = bool(op[0]->value.u[c]);
+ data.b[c] = op[0]->value.u[c] ? true : false;
}
break;
@@ -213,6 +216,7 @@ ir_expression::constant_expression_value()
break;
case ir_unop_sin:
+ case ir_unop_sin_reduced:
assert(op[0]->type->base_type == GLSL_TYPE_FLOAT);
for (unsigned c = 0; c < op[0]->type->components(); c++) {
data.f[c] = sinf(op[0]->value.f[c]);
@@ -220,6 +224,7 @@ ir_expression::constant_expression_value()
break;
case ir_unop_cos:
+ case ir_unop_cos_reduced:
assert(op[0]->type->base_type == GLSL_TYPE_FLOAT);
for (unsigned c = 0; c < op[0]->type->components(); c++) {
data.f[c] = cosf(op[0]->value.f[c]);
@@ -230,7 +235,7 @@ ir_expression::constant_expression_value()
for (unsigned c = 0; c < op[0]->type->components(); c++) {
switch (this->type->base_type) {
case GLSL_TYPE_UINT:
- data.u[c] = -op[0]->value.u[c];
+ data.u[c] = -((int) op[0]->value.u[c]);
break;
case GLSL_TYPE_INT:
data.i[c] = -op[0]->value.i[c];
@@ -296,7 +301,7 @@ ir_expression::constant_expression_value()
break;
case GLSL_TYPE_FLOAT:
if (op[0]->value.f[c] != 0.0)
- data.f[c] = 1.0 / op[0]->value.f[c];
+ data.f[c] = 1.0F / op[0]->value.f[c];
break;
default:
assert(0);
@@ -307,7 +312,7 @@ ir_expression::constant_expression_value()
case ir_unop_rsq:
assert(op[0]->type->base_type == GLSL_TYPE_FLOAT);
for (unsigned c = 0; c < op[0]->type->components(); c++) {
- data.f[c] = 1.0 / sqrtf(op[0]->value.f[c]);
+ data.f[c] = 1.0F / sqrtf(op[0]->value.f[c]);
}
break;
@@ -409,17 +414,6 @@ ir_expression::constant_expression_value()
}
break;
- case ir_binop_cross:
- assert(op[0]->type == glsl_type::vec3_type);
- assert(op[1]->type == glsl_type::vec3_type);
- data.f[0] = (op[0]->value.f[1] * op[1]->value.f[2] -
- op[1]->value.f[1] * op[0]->value.f[2]);
- data.f[1] = (op[0]->value.f[2] * op[1]->value.f[0] -
- op[1]->value.f[2] * op[0]->value.f[0]);
- data.f[2] = (op[0]->value.f[0] * op[1]->value.f[1] -
- op[1]->value.f[0] * op[0]->value.f[1]);
- break;
-
case ir_binop_add:
assert(op[0]->type == op[1]->type || op0_scalar || op1_scalar);
for (unsigned c = 0, c0 = 0, c1 = 0;
@@ -578,63 +572,75 @@ ir_expression::constant_expression_value()
break;
case ir_binop_less:
- switch (op[0]->type->base_type) {
- case GLSL_TYPE_UINT:
- data.b[0] = op[0]->value.u[0] < op[1]->value.u[0];
- break;
- case GLSL_TYPE_INT:
- data.b[0] = op[0]->value.i[0] < op[1]->value.i[0];
- break;
- case GLSL_TYPE_FLOAT:
- data.b[0] = op[0]->value.f[0] < op[1]->value.f[0];
- break;
- default:
- assert(0);
+ assert(op[0]->type == op[1]->type);
+ for (unsigned c = 0; c < op[0]->type->components(); c++) {
+ switch (op[0]->type->base_type) {
+ case GLSL_TYPE_UINT:
+ data.b[0] = op[0]->value.u[0] < op[1]->value.u[0];
+ break;
+ case GLSL_TYPE_INT:
+ data.b[0] = op[0]->value.i[0] < op[1]->value.i[0];
+ break;
+ case GLSL_TYPE_FLOAT:
+ data.b[0] = op[0]->value.f[0] < op[1]->value.f[0];
+ break;
+ default:
+ assert(0);
+ }
}
break;
case ir_binop_greater:
- switch (op[0]->type->base_type) {
- case GLSL_TYPE_UINT:
- data.b[0] = op[0]->value.u[0] > op[1]->value.u[0];
- break;
- case GLSL_TYPE_INT:
- data.b[0] = op[0]->value.i[0] > op[1]->value.i[0];
- break;
- case GLSL_TYPE_FLOAT:
- data.b[0] = op[0]->value.f[0] > op[1]->value.f[0];
- break;
- default:
- assert(0);
+ assert(op[0]->type == op[1]->type);
+ for (unsigned c = 0; c < op[0]->type->components(); c++) {
+ switch (op[0]->type->base_type) {
+ case GLSL_TYPE_UINT:
+ data.b[c] = op[0]->value.u[c] > op[1]->value.u[c];
+ break;
+ case GLSL_TYPE_INT:
+ data.b[c] = op[0]->value.i[c] > op[1]->value.i[c];
+ break;
+ case GLSL_TYPE_FLOAT:
+ data.b[c] = op[0]->value.f[c] > op[1]->value.f[c];
+ break;
+ default:
+ assert(0);
+ }
}
break;
case ir_binop_lequal:
- switch (op[0]->type->base_type) {
- case GLSL_TYPE_UINT:
- data.b[0] = op[0]->value.u[0] <= op[1]->value.u[0];
- break;
- case GLSL_TYPE_INT:
- data.b[0] = op[0]->value.i[0] <= op[1]->value.i[0];
- break;
- case GLSL_TYPE_FLOAT:
- data.b[0] = op[0]->value.f[0] <= op[1]->value.f[0];
- break;
- default:
- assert(0);
+ assert(op[0]->type == op[1]->type);
+ for (unsigned c = 0; c < op[0]->type->components(); c++) {
+ switch (op[0]->type->base_type) {
+ case GLSL_TYPE_UINT:
+ data.b[0] = op[0]->value.u[0] <= op[1]->value.u[0];
+ break;
+ case GLSL_TYPE_INT:
+ data.b[0] = op[0]->value.i[0] <= op[1]->value.i[0];
+ break;
+ case GLSL_TYPE_FLOAT:
+ data.b[0] = op[0]->value.f[0] <= op[1]->value.f[0];
+ break;
+ default:
+ assert(0);
+ }
}
break;
case ir_binop_gequal:
- switch (op[0]->type->base_type) {
- case GLSL_TYPE_UINT:
- data.b[0] = op[0]->value.u[0] >= op[1]->value.u[0];
- break;
- case GLSL_TYPE_INT:
- data.b[0] = op[0]->value.i[0] >= op[1]->value.i[0];
- break;
- case GLSL_TYPE_FLOAT:
- data.b[0] = op[0]->value.f[0] >= op[1]->value.f[0];
- break;
- default:
- assert(0);
+ assert(op[0]->type == op[1]->type);
+ for (unsigned c = 0; c < op[0]->type->components(); c++) {
+ switch (op[0]->type->base_type) {
+ case GLSL_TYPE_UINT:
+ data.b[0] = op[0]->value.u[0] >= op[1]->value.u[0];
+ break;
+ case GLSL_TYPE_INT:
+ data.b[0] = op[0]->value.i[0] >= op[1]->value.i[0];
+ break;
+ case GLSL_TYPE_FLOAT:
+ data.b[0] = op[0]->value.f[0] >= op[1]->value.f[0];
+ break;
+ default:
+ assert(0);
+ }
}
break;
case ir_binop_equal:
@@ -782,6 +788,24 @@ ir_expression::constant_expression_value()
}
break;
+ case ir_quadop_vector:
+ for (unsigned c = 0; c < this->type->vector_elements; c++) {
+ switch (this->type->base_type) {
+ case GLSL_TYPE_INT:
+ data.i[c] = op[c]->value.i[0];
+ break;
+ case GLSL_TYPE_UINT:
+ data.u[c] = op[c]->value.u[0];
+ break;
+ case GLSL_TYPE_FLOAT:
+ data.f[c] = op[c]->value.f[0];
+ break;
+ default:
+ assert(0);
+ }
+ }
+ break;
+
default:
/* FINISHME: Should handle all expression types. */
return NULL;
@@ -987,10 +1011,18 @@ ir_call::constant_expression_value()
assert(op[0]->type->is_float());
for (unsigned c = 0; c < op[0]->type->components(); c++)
data.f[c] = acosf(op[0]->value.f[c]);
+ } else if (strcmp(callee, "acosh") == 0) {
+ assert(op[0]->type->is_float());
+ for (unsigned c = 0; c < op[0]->type->components(); c++)
+ data.f[c] = acoshf(op[0]->value.f[c]);
} else if (strcmp(callee, "asin") == 0) {
assert(op[0]->type->is_float());
for (unsigned c = 0; c < op[0]->type->components(); c++)
data.f[c] = asinf(op[0]->value.f[c]);
+ } else if (strcmp(callee, "asinh") == 0) {
+ assert(op[0]->type->is_float());
+ for (unsigned c = 0; c < op[0]->type->components(); c++)
+ data.f[c] = asinhf(op[0]->value.f[c]);
} else if (strcmp(callee, "atan") == 0) {
assert(op[0]->type->is_float());
if (num_parameters == 2) {
@@ -1001,6 +1033,10 @@ ir_call::constant_expression_value()
for (unsigned c = 0; c < op[0]->type->components(); c++)
data.f[c] = atanf(op[0]->value.f[c]);
}
+ } else if (strcmp(callee, "atanh") == 0) {
+ assert(op[0]->type->is_float());
+ for (unsigned c = 0; c < op[0]->type->components(); c++)
+ data.f[c] = atanhf(op[0]->value.f[c]);
} else if (strcmp(callee, "dFdx") == 0 || strcmp(callee, "dFdy") == 0) {
return ir_constant::zero(mem_ctx, this->type);
} else if (strcmp(callee, "ceil") == 0) {
@@ -1037,11 +1073,18 @@ ir_call::constant_expression_value()
for (unsigned c = 0; c < op[0]->type->components(); c++)
data.f[c] = coshf(op[0]->value.f[c]);
} else if (strcmp(callee, "cross") == 0) {
- expr = new(mem_ctx) ir_expression(ir_binop_cross, type, op[0], op[1]);
+ assert(op[0]->type == glsl_type::vec3_type);
+ assert(op[1]->type == glsl_type::vec3_type);
+ data.f[0] = (op[0]->value.f[1] * op[1]->value.f[2] -
+ op[1]->value.f[1] * op[0]->value.f[2]);
+ data.f[1] = (op[0]->value.f[2] * op[1]->value.f[0] -
+ op[1]->value.f[2] * op[0]->value.f[0]);
+ data.f[2] = (op[0]->value.f[0] * op[1]->value.f[1] -
+ op[1]->value.f[0] * op[0]->value.f[1]);
} else if (strcmp(callee, "degrees") == 0) {
assert(op[0]->type->is_float());
for (unsigned c = 0; c < op[0]->type->components(); c++)
- data.f[c] = 180.0/M_PI * op[0]->value.f[c];
+ data.f[c] = 180.0F / M_PI * op[0]->value.f[c];
} else if (strcmp(callee, "distance") == 0) {
assert(op[0]->type->is_float() && op[1]->type->is_float());
float length_squared = 0.0;
@@ -1232,7 +1275,7 @@ ir_call::constant_expression_value()
} else if (strcmp(callee, "radians") == 0) {
assert(op[0]->type->is_float());
for (unsigned c = 0; c < op[0]->type->components(); c++)
- data.f[c] = M_PI/180.0 * op[0]->value.f[c];
+ data.f[c] = M_PI / 180.0F * op[0]->value.f[c];
} else if (strcmp(callee, "reflect") == 0) {
assert(op[0]->type->is_float());
float dot_NI = dot(op[1], op[0]);
@@ -1241,7 +1284,7 @@ ir_call::constant_expression_value()
} else if (strcmp(callee, "refract") == 0) {
const float eta = op[2]->value.f[0];
const float dot_NI = dot(op[1], op[0]);
- const float k = 1.0 - eta * eta * (1.0 - dot_NI * dot_NI);
+ const float k = 1.0F - eta * eta * (1.0F - dot_NI * dot_NI);
if (k < 0.0) {
return ir_constant::zero(mem_ctx, this->type);
} else {
@@ -1281,7 +1324,7 @@ ir_call::constant_expression_value()
/* op[0] (edge) may be either a scalar or a vector */
const unsigned c0_inc = op[0]->type->is_scalar() ? 0 : 1;
for (unsigned c = 0, c0 = 0; c < type->components(); c0 += c0_inc, c++)
- data.f[c] = (op[1]->value.f[c] < op[0]->value.f[c0]) ? 0.0 : 1.0;
+ data.f[c] = (op[1]->value.f[c] < op[0]->value.f[c0]) ? 0.0F : 1.0F;
} else if (strcmp(callee, "tan") == 0) {
assert(op[0]->type->is_float());
for (unsigned c = 0; c < op[0]->type->components(); c++)
diff --git a/src/glsl/ir_div_to_mul_rcp.cpp b/src/glsl/ir_div_to_mul_rcp.cpp
deleted file mode 100644
index 640d5d64f9..0000000000
--- a/src/glsl/ir_div_to_mul_rcp.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright © 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 (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file ir_div_to_mul_rcp.cpp
- *
- * Breaks an ir_unop_div expression down to op0 * (rcp(op1)).
- *
- * Many GPUs don't have a divide instruction (945 and 965 included),
- * but they do have an RCP instruction to compute an approximate
- * reciprocal. By breaking the operation down, constant reciprocals
- * can get constant folded.
- */
-
-#include "ir.h"
-#include "glsl_types.h"
-
-class ir_div_to_mul_rcp_visitor : public ir_hierarchical_visitor {
-public:
- ir_div_to_mul_rcp_visitor()
- {
- this->made_progress = false;
- }
-
- ir_visitor_status visit_leave(ir_expression *);
-
- bool made_progress;
-};
-
-bool
-do_div_to_mul_rcp(exec_list *instructions)
-{
- ir_div_to_mul_rcp_visitor v;
-
- visit_list_elements(&v, instructions);
- return v.made_progress;
-}
-
-ir_visitor_status
-ir_div_to_mul_rcp_visitor::visit_leave(ir_expression *ir)
-{
- if (ir->operation != ir_binop_div)
- return visit_continue;
-
- if (ir->operands[1]->type->base_type != GLSL_TYPE_INT &&
- ir->operands[1]->type->base_type != GLSL_TYPE_UINT) {
- /* New expression for the 1.0 / op1 */
- ir_rvalue *expr;
- expr = new(ir) ir_expression(ir_unop_rcp,
- ir->operands[1]->type,
- ir->operands[1],
- NULL);
-
- /* op0 / op1 -> op0 * (1.0 / op1) */
- ir->operation = ir_binop_mul;
- ir->operands[1] = expr;
- } else {
- /* Be careful with integer division -- we need to do it as a
- * float and re-truncate, since rcp(n > 1) of an integer would
- * just be 0.
- */
- ir_rvalue *op0, *op1;
- const struct glsl_type *vec_type;
-
- vec_type = glsl_type::get_instance(GLSL_TYPE_FLOAT,
- ir->operands[1]->type->vector_elements,
- ir->operands[1]->type->matrix_columns);
-
- if (ir->operands[1]->type->base_type == GLSL_TYPE_INT)
- op1 = new(ir) ir_expression(ir_unop_i2f, vec_type, ir->operands[1], NULL);
- else
- op1 = new(ir) ir_expression(ir_unop_u2f, vec_type, ir->operands[1], NULL);
-
- op1 = new(ir) ir_expression(ir_unop_rcp, op1->type, op1, NULL);
-
- vec_type = glsl_type::get_instance(GLSL_TYPE_FLOAT,
- ir->operands[0]->type->vector_elements,
- ir->operands[0]->type->matrix_columns);
-
- if (ir->operands[0]->type->base_type == GLSL_TYPE_INT)
- op0 = new(ir) ir_expression(ir_unop_i2f, vec_type, ir->operands[0], NULL);
- else
- op0 = new(ir) ir_expression(ir_unop_u2f, vec_type, ir->operands[0], NULL);
-
- op0 = new(ir) ir_expression(ir_binop_mul, vec_type, op0, op1);
-
- ir->operation = ir_unop_f2i;
- ir->operands[0] = op0;
- ir->operands[1] = NULL;
- }
-
- this->made_progress = true;
-
- return visit_continue;
-}
diff --git a/src/glsl/ir_explog_to_explog2.cpp b/src/glsl/ir_explog_to_explog2.cpp
deleted file mode 100644
index 78694a2029..0000000000
--- a/src/glsl/ir_explog_to_explog2.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright © 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 (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file ir_explog_to_explog2.cpp
- *
- * Many GPUs don't have a base e log or exponent instruction, but they
- * do have base 2 versions, so this pass converts exp and log to exp2
- * and log2 operations.
- */
-
-#include "main/core.h" /* for log2f on MSVC */
-#include "ir.h"
-#include "glsl_types.h"
-
-class ir_explog_to_explog2_visitor : public ir_hierarchical_visitor {
-public:
- ir_explog_to_explog2_visitor()
- {
- this->progress = false;
- }
-
- ir_visitor_status visit_leave(ir_expression *);
-
- bool progress;
-};
-
-bool
-do_explog_to_explog2(exec_list *instructions)
-{
- ir_explog_to_explog2_visitor v;
-
- visit_list_elements(&v, instructions);
- return v.progress;
-}
-
-ir_visitor_status
-ir_explog_to_explog2_visitor::visit_leave(ir_expression *ir)
-{
- if (ir->operation == ir_unop_exp) {
- void *mem_ctx = talloc_parent(ir);
- ir_constant *log2_e = new(mem_ctx) ir_constant(log2f(M_E));
-
- ir->operation = ir_unop_exp2;
- ir->operands[0] = new(mem_ctx) ir_expression(ir_binop_mul,
- ir->operands[0]->type,
- ir->operands[0],
- log2_e);
- this->progress = true;
- }
-
- if (ir->operation == ir_unop_log) {
- void *mem_ctx = talloc_parent(ir);
-
- ir->operation = ir_binop_mul;
- ir->operands[0] = new(mem_ctx) ir_expression(ir_unop_log2,
- ir->operands[0]->type,
- ir->operands[0],
- NULL);
- ir->operands[1] = new(mem_ctx) ir_constant(1.0f / log2f(M_E));
- this->progress = true;
- }
-
- return visit_continue;
-}
diff --git a/src/glsl/ir_function.cpp b/src/glsl/ir_function.cpp
index dfdec144b2..8db70119ec 100644
--- a/src/glsl/ir_function.cpp
+++ b/src/glsl/ir_function.cpp
@@ -70,7 +70,6 @@ type_compare(const glsl_type *a, const glsl_type *b)
*/
return (type_compare(a->fields.array, b->fields.array) == 0) ? 0 : -1;
- case GLSL_TYPE_FUNCTION:
case GLSL_TYPE_VOID:
case GLSL_TYPE_ERROR:
default:
diff --git a/src/glsl/ir_mod_to_fract.cpp b/src/glsl/ir_mod_to_fract.cpp
deleted file mode 100644
index c82a1f64fd..0000000000
--- a/src/glsl/ir_mod_to_fract.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright © 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 (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file ir_mod_to_fract.cpp
- *
- * Breaks an ir_unop_mod expression down to (op1 * fract(op0 / op1))
- *
- * Many GPUs don't have a MOD instruction (945 and 965 included), and
- * if we have to break it down like this anyway, it gives an
- * opportunity to do things like constant fold the (1.0 / op1) easily.
- */
-
-#include "ir.h"
-
-class ir_mod_to_fract_visitor : public ir_hierarchical_visitor {
-public:
- ir_mod_to_fract_visitor()
- {
- this->made_progress = false;
- }
-
- ir_visitor_status visit_leave(ir_expression *);
-
- bool made_progress;
-};
-
-bool
-do_mod_to_fract(exec_list *instructions)
-{
- ir_mod_to_fract_visitor v;
-
- visit_list_elements(&v, instructions);
- return v.made_progress;
-}
-
-ir_visitor_status
-ir_mod_to_fract_visitor::visit_leave(ir_expression *ir)
-{
- if (ir->operation != ir_binop_mod)
- return visit_continue;
-
- ir_variable *temp = new(ir) ir_variable(ir->operands[1]->type, "mod_b",
- ir_var_temporary);
- this->base_ir->insert_before(temp);
-
- ir_assignment *assign;
- ir_rvalue *expr;
-
- assign = new(ir) ir_assignment(new(ir) ir_dereference_variable(temp),
- ir->operands[1], NULL);
- this->base_ir->insert_before(assign);
-
- expr = new(ir) ir_expression(ir_binop_div,
- ir->operands[0]->type,
- ir->operands[0],
- new(ir) ir_dereference_variable(temp));
-
- expr = new(ir) ir_expression(ir_unop_fract,
- ir->operands[0]->type,
- expr,
- NULL);
-
- ir->operation = ir_binop_mul;
- ir->operands[0] = new(ir) ir_dereference_variable(temp);
- ir->operands[1] = expr;
- this->made_progress = true;
-
- return visit_continue;
-}
diff --git a/src/glsl/ir_optimization.h b/src/glsl/ir_optimization.h
index ffdc66b9f7..fa497a4555 100644
--- a/src/glsl/ir_optimization.h
+++ b/src/glsl/ir_optimization.h
@@ -28,6 +28,13 @@
* Prototypes for optimization passes to be called by the compiler and drivers.
*/
+/* Operations for lower_instructions() */
+#define SUB_TO_ADD_NEG 0x01
+#define DIV_TO_MUL_RCP 0x02
+#define EXP_TO_EXP2 0x04
+#define LOG_TO_LOG2 0x08
+#define MOD_TO_FRACT 0x10
+
bool do_common_optimization(exec_list *ir, bool linked, unsigned max_unroll_iterations);
bool do_algebraic(exec_list *instructions);
@@ -40,8 +47,6 @@ bool do_dead_code(exec_list *instructions);
bool do_dead_code_local(exec_list *instructions);
bool do_dead_code_unlinked(exec_list *instructions);
bool do_dead_functions(exec_list *instructions);
-bool do_div_to_mul_rcp(exec_list *instructions);
-bool do_explog_to_explog2(exec_list *instructions);
bool do_function_inlining(exec_list *instructions);
bool do_lower_jumps(exec_list *instructions, bool pull_out_jumps = true, bool lower_sub_return = true, bool lower_main_return = false, bool lower_continue = false, bool lower_break = false);
bool do_lower_texture_projection(exec_list *instructions);
@@ -56,7 +61,9 @@ bool do_swizzle_swizzle(exec_list *instructions);
bool do_tree_grafting(exec_list *instructions);
bool do_vec_index_to_cond_assign(exec_list *instructions);
bool do_vec_index_to_swizzle(exec_list *instructions);
+bool lower_instructions(exec_list *instructions, unsigned what_to_lower);
bool lower_noise(exec_list *instructions);
bool lower_variable_index_to_cond_assign(exec_list *instructions,
bool lower_input, bool lower_output, bool lower_temp, bool lower_uniform);
+bool lower_quadop_vector(exec_list *instructions, bool dont_lower_swz);
bool optimize_redundant_jumps(exec_list *instructions);
diff --git a/src/glsl/ir_print_visitor.cpp b/src/glsl/ir_print_visitor.cpp
index 5c19db1326..e5067bfdad 100644
--- a/src/glsl/ir_print_visitor.cpp
+++ b/src/glsl/ir_print_visitor.cpp
@@ -182,11 +182,10 @@ void ir_print_visitor::visit(ir_expression *ir)
printf(" %s ", ir->operator_string());
- if (ir->operands[0])
- ir->operands[0]->accept(this);
+ for (unsigned i = 0; i < ir->get_num_operands(); i++) {
+ ir->operands[i]->accept(this);
+ }
- if (ir->operands[1])
- ir->operands[1]->accept(this);
printf(") ");
}
diff --git a/src/glsl/ir_reader.cpp b/src/glsl/ir_reader.cpp
index a9cbf8ea94..7a22a945ec 100644
--- a/src/glsl/ir_reader.cpp
+++ b/src/glsl/ir_reader.cpp
@@ -64,9 +64,12 @@ static ir_texture *read_texture(_mesa_glsl_parse_state *, s_list *);
static ir_dereference *read_dereference(_mesa_glsl_parse_state *,
s_expression *);
-static ir_dereference *read_var_ref(_mesa_glsl_parse_state *, s_list *);
-static ir_dereference *read_array_ref(_mesa_glsl_parse_state *, s_list *);
-static ir_dereference *read_record_ref(_mesa_glsl_parse_state *, s_list *);
+static ir_dereference_variable *
+read_var_ref(_mesa_glsl_parse_state *, s_list *);
+static ir_dereference_array *
+read_array_ref(_mesa_glsl_parse_state *, s_list *);
+static ir_dereference_record *
+read_record_ref(_mesa_glsl_parse_state *, s_list *);
void
_mesa_glsl_read_ir(_mesa_glsl_parse_state *state, exec_list *instructions,
@@ -260,7 +263,7 @@ read_function_sig(_mesa_glsl_parse_state *st, ir_function *f, s_list *list,
return;
s_list *paramlist = SX_AS_LIST(type_expr->next);
- s_list *body_list = SX_AS_LIST(paramlist->next);
+ s_list *body_list = SX_AS_LIST(type_expr->next->next);
if (paramlist == NULL || body_list == NULL) {
ir_read_error(st, list, "Expected (signature <type> (parameters ...) "
"(<instruction> ...))");
@@ -674,7 +677,7 @@ read_call(_mesa_glsl_parse_state *st, s_list *list)
}
s_symbol *name = SX_AS_SYMBOL(list->subexpressions.head->next);
- s_list *params = SX_AS_LIST(name->next);
+ s_list *params = SX_AS_LIST(list->subexpressions.head->next->next);
if (name == NULL || params == NULL) {
ir_read_error(st, list, "expected (call <name> (<param> ...))");
return NULL;
@@ -796,12 +799,6 @@ read_swizzle(_mesa_glsl_parse_state *st, s_list *list)
}
s_expression *sub = (s_expression*) swiz->next;
- if (sub == NULL) {
- ir_read_error(st, list, "expected rvalue: (swizzle %s <rvalue>)",
- swiz->value());
- return NULL;
- }
-
ir_rvalue *rvalue = read_rvalue(st, sub);
if (rvalue == NULL)
return NULL;
@@ -930,7 +927,7 @@ read_dereference(_mesa_glsl_parse_state *st, s_expression *expr)
return NULL;
}
-static ir_dereference *
+static ir_dereference_variable *
read_var_ref(_mesa_glsl_parse_state *st, s_list *list)
{
void *ctx = st;
@@ -953,7 +950,7 @@ read_var_ref(_mesa_glsl_parse_state *st, s_list *list)
return new(ctx) ir_dereference_variable(var);
}
-static ir_dereference *
+static ir_dereference_array *
read_array_ref(_mesa_glsl_parse_state *st, s_list *list)
{
void *ctx = st;
@@ -974,7 +971,7 @@ read_array_ref(_mesa_glsl_parse_state *st, s_list *list)
return new(ctx) ir_dereference_array(subject, idx);
}
-static ir_dereference *
+static ir_dereference_record *
read_record_ref(_mesa_glsl_parse_state *st, s_list *list)
{
void *ctx = st;
@@ -1053,8 +1050,8 @@ read_texture(_mesa_glsl_parse_state *st, s_list *list)
return NULL;
}
s_int *offset_x = SX_AS_INT(offset_list->subexpressions.head);
- s_int *offset_y = SX_AS_INT(offset_x->next);
- s_int *offset_z = SX_AS_INT(offset_y->next);
+ s_int *offset_y = SX_AS_INT(offset_list->subexpressions.head->next);
+ s_int *offset_z = SX_AS_INT(offset_list->subexpressions.head->next->next);
if (offset_x == NULL || offset_y == NULL || offset_z == NULL) {
ir_read_error(st, offset_list, "expected (<int> <int> <int>)");
return NULL;
diff --git a/src/glsl/ir_sub_to_add_neg.cpp b/src/glsl/ir_sub_to_add_neg.cpp
deleted file mode 100644
index 7ed8c1495e..0000000000
--- a/src/glsl/ir_sub_to_add_neg.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright © 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 (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file ir_sub_to_add_neg.cpp
- *
- * Breaks an ir_binop_sub expression down to add(op0, neg(op1))
- *
- * This simplifies expression reassociation, and for many backends
- * there is no subtract operation separate from adding the negation.
- * For backends with native subtract operations, they will probably
- * want to recognize add(op0, neg(op1)) or the other way around to
- * produce a subtract anyway.
- */
-
-#include "ir.h"
-
-class ir_sub_to_add_neg_visitor : public ir_hierarchical_visitor {
-public:
- ir_sub_to_add_neg_visitor()
- {
- this->progress = false;
- }
-
- ir_visitor_status visit_leave(ir_expression *);
-
- bool progress;
-};
-
-bool
-do_sub_to_add_neg(exec_list *instructions)
-{
- ir_sub_to_add_neg_visitor v;
-
- visit_list_elements(&v, instructions);
- return v.progress;
-}
-
-ir_visitor_status
-ir_sub_to_add_neg_visitor::visit_leave(ir_expression *ir)
-{
- if (ir->operation != ir_binop_sub)
- return visit_continue;
-
- void *mem_ctx = talloc_parent(ir);
-
- ir->operation = ir_binop_add;
- ir->operands[1] = new(mem_ctx) ir_expression(ir_unop_neg,
- ir->operands[1]->type,
- ir->operands[1],
- NULL);
-
- this->progress = true;
-
- return visit_continue;
-}
diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp
index d22789f990..5b055f64d3 100644
--- a/src/glsl/ir_validate.cpp
+++ b/src/glsl/ir_validate.cpp
@@ -273,6 +273,8 @@ ir_validate::visit_leave(ir_expression *ir)
case ir_unop_fract:
case ir_unop_sin:
case ir_unop_cos:
+ case ir_unop_sin_reduced:
+ case ir_unop_cos_reduced:
case ir_unop_dFdx:
case ir_unop_dFdy:
assert(ir->operands[0]->type->base_type == GLSL_TYPE_FLOAT);
@@ -373,11 +375,50 @@ ir_validate::visit_leave(ir_expression *ir)
assert(ir->operands[0]->type == ir->operands[1]->type);
break;
- case ir_binop_cross:
- assert(ir->operands[0]->type == glsl_type::vec3_type);
- assert(ir->operands[1]->type == glsl_type::vec3_type);
- assert(ir->type == glsl_type::vec3_type);
- break;
+ case ir_quadop_vector:
+ /* The vector operator collects some number of scalars and generates a
+ * vector from them.
+ *
+ * - All of the operands must be scalar.
+ * - Number of operands must matche the size of the resulting vector.
+ * - Base type of the operands must match the base type of the result.
+ */
+ assert(ir->type->is_vector());
+ switch (ir->type->vector_elements) {
+ case 2:
+ assert(ir->operands[0]->type->is_scalar());
+ assert(ir->operands[0]->type->base_type == ir->type->base_type);
+ assert(ir->operands[1]->type->is_scalar());
+ assert(ir->operands[1]->type->base_type == ir->type->base_type);
+ assert(ir->operands[2] == NULL);
+ assert(ir->operands[3] == NULL);
+ break;
+ case 3:
+ assert(ir->operands[0]->type->is_scalar());
+ assert(ir->operands[0]->type->base_type == ir->type->base_type);
+ assert(ir->operands[1]->type->is_scalar());
+ assert(ir->operands[1]->type->base_type == ir->type->base_type);
+ assert(ir->operands[2]->type->is_scalar());
+ assert(ir->operands[2]->type->base_type == ir->type->base_type);
+ assert(ir->operands[3] == NULL);
+ break;
+ case 4:
+ assert(ir->operands[0]->type->is_scalar());
+ assert(ir->operands[0]->type->base_type == ir->type->base_type);
+ assert(ir->operands[1]->type->is_scalar());
+ assert(ir->operands[1]->type->base_type == ir->type->base_type);
+ assert(ir->operands[2]->type->is_scalar());
+ assert(ir->operands[2]->type->base_type == ir->type->base_type);
+ assert(ir->operands[3]->type->is_scalar());
+ assert(ir->operands[3]->type->base_type == ir->type->base_type);
+ break;
+ default:
+ /* The is_vector assertion above should prevent execution from ever
+ * getting here.
+ */
+ assert(!"Should not get here.");
+ break;
+ }
}
return visit_continue;
diff --git a/src/glsl/loop_analysis.cpp b/src/glsl/loop_analysis.cpp
index 91e34da0ee..ff7adf00a2 100644
--- a/src/glsl/loop_analysis.cpp
+++ b/src/glsl/loop_analysis.cpp
@@ -44,6 +44,7 @@ loop_state::loop_state()
loop_state::~loop_state()
{
hash_table_dtor(this->ht);
+ talloc_free(this->mem_ctx);
}
diff --git a/src/glsl/loop_controls.cpp b/src/glsl/loop_controls.cpp
index 2ef3d30525..b528810f40 100644
--- a/src/glsl/loop_controls.cpp
+++ b/src/glsl/loop_controls.cpp
@@ -85,6 +85,9 @@ int
calculate_iterations(ir_rvalue *from, ir_rvalue *to, ir_rvalue *increment,
enum ir_expression_operation op)
{
+ if (from == NULL || to == NULL || increment == NULL)
+ return -1;
+
void *mem_ctx = talloc_init("%s", __func__);
ir_expression *const sub =
diff --git a/src/glsl/ir_if_to_cond_assign.cpp b/src/glsl/lower_if_to_cond_assign.cpp
index 0b87413941..cf48cfb8d6 100644
--- a/src/glsl/ir_if_to_cond_assign.cpp
+++ b/src/glsl/lower_if_to_cond_assign.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_if_to_cond_assign.cpp
+ * \file lower_if_to_cond_assign.cpp
*
* This attempts to flatten all if statements to conditional
* assignments for GPUs that don't do control flow.
diff --git a/src/glsl/lower_instructions.cpp b/src/glsl/lower_instructions.cpp
new file mode 100644
index 0000000000..d460ba1a97
--- /dev/null
+++ b/src/glsl/lower_instructions.cpp
@@ -0,0 +1,262 @@
+/*
+ * Copyright © 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 (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/**
+ * \file lower_instructions.cpp
+ *
+ * Many GPUs lack native instructions for certain expression operations, and
+ * must replace them with some other expression tree. This pass lowers some
+ * of the most common cases, allowing the lowering code to be implemented once
+ * rather than in each driver backend.
+ *
+ * Currently supported transformations:
+ * - SUB_TO_ADD_NEG
+ * - DIV_TO_MUL_RCP
+ * - EXP_TO_EXP2
+ * - LOG_TO_LOG2
+ * - MOD_TO_FRACT
+ *
+ * SUB_TO_ADD_NEG:
+ * ---------------
+ * Breaks an ir_binop_sub expression down to add(op0, neg(op1))
+ *
+ * This simplifies expression reassociation, and for many backends
+ * there is no subtract operation separate from adding the negation.
+ * For backends with native subtract operations, they will probably
+ * want to recognize add(op0, neg(op1)) or the other way around to
+ * produce a subtract anyway.
+ *
+ * DIV_TO_MUL_RCP:
+ * ---------------
+ * Breaks an ir_unop_div expression down to op0 * (rcp(op1)).
+ *
+ * Many GPUs don't have a divide instruction (945 and 965 included),
+ * but they do have an RCP instruction to compute an approximate
+ * reciprocal. By breaking the operation down, constant reciprocals
+ * can get constant folded.
+ *
+ * EXP_TO_EXP2 and LOG_TO_LOG2:
+ * ----------------------------
+ * Many GPUs don't have a base e log or exponent instruction, but they
+ * do have base 2 versions, so this pass converts exp and log to exp2
+ * and log2 operations.
+ *
+ * MOD_TO_FRACT:
+ * -------------
+ * Breaks an ir_unop_mod expression down to (op1 * fract(op0 / op1))
+ *
+ * Many GPUs don't have a MOD instruction (945 and 965 included), and
+ * if we have to break it down like this anyway, it gives an
+ * opportunity to do things like constant fold the (1.0 / op1) easily.
+ */
+
+#include "main/core.h" /* for M_E */
+#include "glsl_types.h"
+#include "ir.h"
+#include "ir_optimization.h"
+
+class lower_instructions_visitor : public ir_hierarchical_visitor {
+public:
+ lower_instructions_visitor(unsigned lower)
+ : progress(false), lower(lower) { }
+
+ ir_visitor_status visit_leave(ir_expression *);
+
+ bool progress;
+
+private:
+ unsigned lower; /** Bitfield of which operations to lower */
+
+ void sub_to_add_neg(ir_expression *);
+ void div_to_mul_rcp(ir_expression *);
+ void mod_to_fract(ir_expression *);
+ void exp_to_exp2(ir_expression *);
+ void log_to_log2(ir_expression *);
+};
+
+/**
+ * Determine if a particular type of lowering should occur
+ */
+#define lowering(x) (this->lower & x)
+
+bool
+lower_instructions(exec_list *instructions, unsigned what_to_lower)
+{
+ lower_instructions_visitor v(what_to_lower);
+
+ visit_list_elements(&v, instructions);
+ return v.progress;
+}
+
+void
+lower_instructions_visitor::sub_to_add_neg(ir_expression *ir)
+{
+ ir->operation = ir_binop_add;
+ ir->operands[1] = new(ir) ir_expression(ir_unop_neg, ir->operands[1]->type,
+ ir->operands[1], NULL);
+ this->progress = true;
+}
+
+void
+lower_instructions_visitor::div_to_mul_rcp(ir_expression *ir)
+{
+ if (!ir->operands[1]->type->is_integer()) {
+ /* New expression for the 1.0 / op1 */
+ ir_rvalue *expr;
+ expr = new(ir) ir_expression(ir_unop_rcp,
+ ir->operands[1]->type,
+ ir->operands[1],
+ NULL);
+
+ /* op0 / op1 -> op0 * (1.0 / op1) */
+ ir->operation = ir_binop_mul;
+ ir->operands[1] = expr;
+ } else {
+ /* Be careful with integer division -- we need to do it as a
+ * float and re-truncate, since rcp(n > 1) of an integer would
+ * just be 0.
+ */
+ ir_rvalue *op0, *op1;
+ const struct glsl_type *vec_type;
+
+ vec_type = glsl_type::get_instance(GLSL_TYPE_FLOAT,
+ ir->operands[1]->type->vector_elements,
+ ir->operands[1]->type->matrix_columns);
+
+ if (ir->operands[1]->type->base_type == GLSL_TYPE_INT)
+ op1 = new(ir) ir_expression(ir_unop_i2f, vec_type, ir->operands[1], NULL);
+ else
+ op1 = new(ir) ir_expression(ir_unop_u2f, vec_type, ir->operands[1], NULL);
+
+ op1 = new(ir) ir_expression(ir_unop_rcp, op1->type, op1, NULL);
+
+ vec_type = glsl_type::get_instance(GLSL_TYPE_FLOAT,
+ ir->operands[0]->type->vector_elements,
+ ir->operands[0]->type->matrix_columns);
+
+ if (ir->operands[0]->type->base_type == GLSL_TYPE_INT)
+ op0 = new(ir) ir_expression(ir_unop_i2f, vec_type, ir->operands[0], NULL);
+ else
+ op0 = new(ir) ir_expression(ir_unop_u2f, vec_type, ir->operands[0], NULL);
+
+ op0 = new(ir) ir_expression(ir_binop_mul, vec_type, op0, op1);
+
+ ir->operation = ir_unop_f2i;
+ ir->operands[0] = op0;
+ ir->operands[1] = NULL;
+ }
+
+ this->progress = true;
+}
+
+void
+lower_instructions_visitor::exp_to_exp2(ir_expression *ir)
+{
+ ir_constant *log2_e = new(ir) ir_constant(log2f(M_E));
+
+ ir->operation = ir_unop_exp2;
+ ir->operands[0] = new(ir) ir_expression(ir_binop_mul, ir->operands[0]->type,
+ ir->operands[0], log2_e);
+ this->progress = true;
+}
+
+void
+lower_instructions_visitor::log_to_log2(ir_expression *ir)
+{
+ ir->operation = ir_binop_mul;
+ ir->operands[0] = new(ir) ir_expression(ir_unop_log2, ir->operands[0]->type,
+ ir->operands[0], NULL);
+ ir->operands[1] = new(ir) ir_constant(1.0f / log2f(M_E));
+ this->progress = true;
+}
+
+void
+lower_instructions_visitor::mod_to_fract(ir_expression *ir)
+{
+ ir_variable *temp = new(ir) ir_variable(ir->operands[1]->type, "mod_b",
+ ir_var_temporary);
+ this->base_ir->insert_before(temp);
+
+ ir_assignment *const assign =
+ new(ir) ir_assignment(new(ir) ir_dereference_variable(temp),
+ ir->operands[1], NULL);
+
+ this->base_ir->insert_before(assign);
+
+ ir_expression *const div_expr =
+ new(ir) ir_expression(ir_binop_div, ir->operands[0]->type,
+ ir->operands[0],
+ new(ir) ir_dereference_variable(temp));
+
+ /* Don't generate new IR that would need to be lowered in an additional
+ * pass.
+ */
+ if (lowering(DIV_TO_MUL_RCP))
+ div_to_mul_rcp(div_expr);
+
+ ir_rvalue *expr = new(ir) ir_expression(ir_unop_fract,
+ ir->operands[0]->type,
+ div_expr,
+ NULL);
+
+ ir->operation = ir_binop_mul;
+ ir->operands[0] = new(ir) ir_dereference_variable(temp);
+ ir->operands[1] = expr;
+ this->progress = true;
+}
+
+ir_visitor_status
+lower_instructions_visitor::visit_leave(ir_expression *ir)
+{
+ switch (ir->operation) {
+ case ir_binop_sub:
+ if (lowering(SUB_TO_ADD_NEG))
+ sub_to_add_neg(ir);
+ break;
+
+ case ir_binop_div:
+ if (lowering(DIV_TO_MUL_RCP))
+ div_to_mul_rcp(ir);
+ break;
+
+ case ir_unop_exp:
+ if (lowering(EXP_TO_EXP2))
+ exp_to_exp2(ir);
+ break;
+
+ case ir_unop_log:
+ if (lowering(LOG_TO_LOG2))
+ log_to_log2(ir);
+ break;
+
+ case ir_binop_mod:
+ if (lowering(MOD_TO_FRACT))
+ mod_to_fract(ir);
+ break;
+
+ default:
+ return visit_continue;
+ }
+
+ return visit_continue;
+}
diff --git a/src/glsl/ir_lower_jumps.cpp b/src/glsl/lower_jumps.cpp
index b69cc1ec31..e1e7a5b007 100644
--- a/src/glsl/ir_lower_jumps.cpp
+++ b/src/glsl/lower_jumps.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_lower_jumps.cpp
+ * \file lower_jumps.cpp
*/
#include "glsl_types.h"
diff --git a/src/glsl/ir_mat_op_to_vec.cpp b/src/glsl/lower_mat_op_to_vec.cpp
index 244fe48928..7065fdec35 100644
--- a/src/glsl/ir_mat_op_to_vec.cpp
+++ b/src/glsl/lower_mat_op_to_vec.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_mat_op_to_vec.cpp
+ * \file lower_mat_op_to_vec.cpp
*
* Breaks matrix operation expressions down to a series of vector operations.
*
@@ -366,6 +366,8 @@ ir_mat_op_to_vec_visitor::visit_leave(ir_assignment *orig_assign)
if (!has_matrix_operand(orig_expr, matrix_columns))
return visit_continue;
+ assert(orig_expr->get_num_operands() <= 2);
+
mem_ctx = talloc_parent(orig_assign);
ir_dereference_variable *lhs_deref =
diff --git a/src/glsl/ir_vec_index_to_cond_assign.cpp b/src/glsl/lower_vec_index_to_cond_assign.cpp
index cd8dedf2fe..f8011a16e5 100644
--- a/src/glsl/ir_vec_index_to_cond_assign.cpp
+++ b/src/glsl/lower_vec_index_to_cond_assign.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_vec_index_to_cond_assign.cpp
+ * \file lower_vec_index_to_cond_assign.cpp
*
* Turns indexing into vector types to a series of conditional moves
* of each channel's swizzle into a temporary.
diff --git a/src/glsl/ir_vec_index_to_swizzle.cpp b/src/glsl/lower_vec_index_to_swizzle.cpp
index 969dc8f94a..9ae43c0db1 100644
--- a/src/glsl/ir_vec_index_to_swizzle.cpp
+++ b/src/glsl/lower_vec_index_to_swizzle.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_vec_index_to_swizzle.cpp
+ * \file lower_vec_index_to_swizzle.cpp
*
* Turns constant indexing into vector types to swizzles. This will
* let other swizzle-aware optimization passes catch these constructs,
diff --git a/src/glsl/lower_vector.cpp b/src/glsl/lower_vector.cpp
new file mode 100644
index 0000000000..93c37638bb
--- /dev/null
+++ b/src/glsl/lower_vector.cpp
@@ -0,0 +1,224 @@
+/*
+ * Copyright © 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 (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/**
+ * \file lower_vector.cpp
+ * IR lowering pass to remove some types of ir_quadop_vector
+ *
+ * \author Ian Romanick <ian.d.romanick@intel.com>
+ */
+
+#include "ir.h"
+#include "ir_rvalue_visitor.h"
+
+class lower_vector_visitor : public ir_rvalue_visitor {
+public:
+ lower_vector_visitor() : progress(false)
+ {
+ /* empty */
+ }
+
+ void handle_rvalue(ir_rvalue **rvalue);
+
+ /**
+ * Should SWZ-like expressions be lowered?
+ */
+ bool dont_lower_swz;
+
+ bool progress;
+};
+
+/**
+ * Determine if an IR expression tree looks like an extended swizzle
+ *
+ * Extended swizzles consist of access of a single vector source (with possible
+ * per component negation) and the constants -1, 0, or 1.
+ */
+bool
+is_extended_swizzle(ir_expression *ir)
+{
+ /* Track any variables that are accessed by this expression.
+ */
+ ir_variable *var = NULL;
+
+ assert(ir->operation == ir_quadop_vector);
+
+ for (unsigned i = 0; i < ir->type->vector_elements; i++) {
+ ir_rvalue *op = ir->operands[i];
+
+ while (op != NULL) {
+ switch (op->ir_type) {
+ case ir_type_constant: {
+ const ir_constant *const c = op->as_constant();
+
+ if (!c->is_one() && !c->is_zero() && !c->is_negative_one())
+ return false;
+
+ op = NULL;
+ break;
+ }
+
+ case ir_type_dereference_variable: {
+ ir_dereference_variable *const d = (ir_dereference_variable *) op;
+
+ if ((var != NULL) && (var != d->var))
+ return false;
+
+ var = d->var;
+ op = NULL;
+ break;
+ }
+
+ case ir_type_expression: {
+ ir_expression *const ex = (ir_expression *) op;
+
+ if (ex->operation != ir_unop_neg)
+ return false;
+
+ op = ex->operands[0];
+ break;
+ }
+
+ case ir_type_swizzle:
+ op = ((ir_swizzle *) op)->val;
+ break;
+
+ default:
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+void
+lower_vector_visitor::handle_rvalue(ir_rvalue **rvalue)
+{
+ if (!*rvalue)
+ return;
+
+ ir_expression *expr = (*rvalue)->as_expression();
+ if ((expr == NULL) || (expr->operation != ir_quadop_vector))
+ return;
+
+ if (this->dont_lower_swz && is_extended_swizzle(expr))
+ return;
+
+ /* FINISHME: Is this the right thing to use for the talloc context?
+ */
+ void *const mem_ctx = expr;
+
+ assert(expr->type->vector_elements == expr->get_num_operands());
+
+ /* Generate a temporary with the same type as the ir_quadop_operation.
+ */
+ ir_variable *const temp =
+ new(mem_ctx) ir_variable(expr->type, "vecop_tmp", ir_var_temporary);
+
+ this->base_ir->insert_before(temp);
+
+ /* Counter of the number of components collected so far.
+ */
+ unsigned assigned;
+
+ /* Write-mask in the destination that receives counted by 'assigned'.
+ */
+ unsigned write_mask;
+
+
+ /* Generate upto four assignments to that variable. Try to group component
+ * assignments together:
+ *
+ * - All constant components can be assigned at once.
+ * - All assigments of components from a single variable with the same
+ * unary operator can be assigned at once.
+ */
+ ir_constant_data d = { { 0 } };
+
+ assigned = 0;
+ write_mask = 0;
+ for (unsigned i = 0; i < expr->type->vector_elements; i++) {
+ const ir_constant *const c = expr->operands[i]->as_constant();
+
+ if (c == NULL)
+ continue;
+
+ switch (expr->type->base_type) {
+ case GLSL_TYPE_UINT: d.u[assigned] = c->value.u[0]; break;
+ case GLSL_TYPE_INT: d.i[assigned] = c->value.i[0]; break;
+ case GLSL_TYPE_FLOAT: d.f[assigned] = c->value.f[0]; break;
+ case GLSL_TYPE_BOOL: d.b[assigned] = c->value.b[0]; break;
+ default: assert(!"Should not get here."); break;
+ }
+
+ write_mask |= (1U << i);
+ assigned++;
+ }
+
+ assert((write_mask == 0) == (assigned == 0));
+
+ /* If there were constant values, generate an assignment.
+ */
+ if (assigned > 0) {
+ ir_constant *const c =
+ new(mem_ctx) ir_constant(glsl_type::get_instance(expr->type->base_type,
+ assigned, 0),
+ &d);
+ ir_dereference *const lhs = new(mem_ctx) ir_dereference_variable(temp);
+ ir_assignment *const assign =
+ new(mem_ctx) ir_assignment(lhs, c, NULL, write_mask);
+
+ this->base_ir->insert_before(assign);
+ }
+
+ /* FINISHME: This should try to coalesce assignments.
+ */
+ for (unsigned i = 0; i < expr->type->vector_elements; i++) {
+ if (expr->operands[i]->ir_type == ir_type_constant)
+ continue;
+
+ ir_dereference *const lhs = new(mem_ctx) ir_dereference_variable(temp);
+ ir_assignment *const assign =
+ new(mem_ctx) ir_assignment(lhs, expr->operands[i], NULL, (1U << i));
+
+ this->base_ir->insert_before(assign);
+ assigned++;
+ }
+
+ assert(assigned == expr->type->vector_elements);
+
+ *rvalue = new(mem_ctx) ir_dereference_variable(temp);
+ this->progress = true;
+}
+
+bool
+lower_quadop_vector(exec_list *instructions, bool dont_lower_swz)
+{
+ lower_vector_visitor v;
+
+ v.dont_lower_swz = dont_lower_swz;
+ visit_list_elements(&v, instructions);
+
+ return v.progress;
+}
diff --git a/src/glsl/main.cpp b/src/glsl/main.cpp
index 08a44c96e5..3302851264 100644
--- a/src/glsl/main.cpp
+++ b/src/glsl/main.cpp
@@ -146,15 +146,6 @@ load_text_file(void *ctx, const char *file_name)
return text;
}
-
-void
-usage_fail(const char *name)
-{
- printf("%s <filename.frag|filename.vert>\n", name);
- exit(EXIT_FAILURE);
-}
-
-
int glsl_es = 0;
int dump_ast = 0;
int dump_hir = 0;
@@ -170,6 +161,25 @@ const struct option compiler_opts[] = {
{ NULL, 0, NULL, 0 }
};
+/**
+ * \brief Print proper usage and exit with failure.
+ */
+void
+usage_fail(const char *name)
+{
+
+ const char *header =
+ "usage: %s [options] <file.vert | file.geom | file.frag>\n"
+ "\n"
+ "Possible options are:\n";
+ printf(header, name, name);
+ for (const struct option *o = compiler_opts; o->name != 0; ++o) {
+ printf(" --%s\n", o->name);
+ }
+ exit(EXIT_FAILURE);
+}
+
+
void
compile_shader(struct gl_context *ctx, struct gl_shader *shader)
{
diff --git a/src/glsl/ir_algebraic.cpp b/src/glsl/opt_algebraic.cpp
index 2ed66db476..3c9af85f31 100644
--- a/src/glsl/ir_algebraic.cpp
+++ b/src/glsl/opt_algebraic.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_algebraic.cpp
+ * \file opt_algebraic.cpp
*
* Takes advantage of association, commutivity, and other algebraic
* properties to simplify expressions.
@@ -68,80 +68,16 @@ public:
bool progress;
};
-static bool
+static inline bool
is_vec_zero(ir_constant *ir)
{
- int c;
-
- if (!ir)
- return false;
- if (!ir->type->is_scalar() &&
- !ir->type->is_vector())
- return false;
-
- for (c = 0; c < ir->type->vector_elements; c++) {
- switch (ir->type->base_type) {
- case GLSL_TYPE_FLOAT:
- if (ir->value.f[c] != 0.0)
- return false;
- break;
- case GLSL_TYPE_INT:
- if (ir->value.i[c] != 0)
- return false;
- break;
- case GLSL_TYPE_UINT:
- if (ir->value.u[c] != 0)
- return false;
- break;
- case GLSL_TYPE_BOOL:
- if (ir->value.b[c] != false)
- return false;
- break;
- default:
- assert(!"bad base type");
- return false;
- }
- }
-
- return true;
+ return (ir == NULL) ? false : ir->is_zero();
}
-static bool
+static inline bool
is_vec_one(ir_constant *ir)
{
- int c;
-
- if (!ir)
- return false;
- if (!ir->type->is_scalar() &&
- !ir->type->is_vector())
- return false;
-
- for (c = 0; c < ir->type->vector_elements; c++) {
- switch (ir->type->base_type) {
- case GLSL_TYPE_FLOAT:
- if (ir->value.f[c] != 1.0)
- return false;
- break;
- case GLSL_TYPE_INT:
- if (ir->value.i[c] != 1)
- return false;
- break;
- case GLSL_TYPE_UINT:
- if (ir->value.u[c] != 1)
- return false;
- break;
- case GLSL_TYPE_BOOL:
- if (ir->value.b[c] != true)
- return false;
- break;
- default:
- assert(!"bad base type");
- return false;
- }
- }
-
- return true;
+ return (ir == NULL) ? false : ir->is_one();
}
static void
@@ -245,6 +181,7 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
ir_expression *temp;
unsigned int i;
+ assert(ir->get_num_operands() <= 2);
for (i = 0; i < ir->get_num_operands(); i++) {
if (ir->operands[i]->type->is_matrix())
return ir;
@@ -457,7 +394,7 @@ ir_algebraic_visitor::handle_rvalue(ir_rvalue **rvalue)
return;
ir_expression *expr = (*rvalue)->as_expression();
- if (!expr)
+ if (!expr || expr->operation == ir_quadop_vector)
return;
*rvalue = handle_expression(expr);
diff --git a/src/glsl/ir_constant_folding.cpp b/src/glsl/opt_constant_folding.cpp
index 554c54fae3..d69ca75fe0 100644
--- a/src/glsl/ir_constant_folding.cpp
+++ b/src/glsl/opt_constant_folding.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_constant_folding.cpp
+ * \file opt_constant_folding.cpp
* Replace constant-valued expressions with references to constant values.
*/
diff --git a/src/glsl/ir_constant_propagation.cpp b/src/glsl/opt_constant_propagation.cpp
index 5d875b7be0..6719fc8186 100644
--- a/src/glsl/ir_constant_propagation.cpp
+++ b/src/glsl/opt_constant_propagation.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_constant_propagation.cpp
+ * \file opt_constant_propagation.cpp
*
* Tracks assignments of constants to channels of variables, and
* usage of those constant channels with direct usage of the constants.
diff --git a/src/glsl/ir_constant_variable.cpp b/src/glsl/opt_constant_variable.cpp
index 1fb73e765e..8068d0c143 100644
--- a/src/glsl/ir_constant_variable.cpp
+++ b/src/glsl/opt_constant_variable.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_constant_variable.cpp
+ * \file opt_constant_variable.cpp
*
* Marks variables assigned a single constant value over the course
* of the program as constant.
diff --git a/src/glsl/ir_copy_propagation.cpp b/src/glsl/opt_copy_propagation.cpp
index 0fe8fa6c41..8d07fefbfd 100644
--- a/src/glsl/ir_copy_propagation.cpp
+++ b/src/glsl/opt_copy_propagation.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_copy_propagation.cpp
+ * \file opt_copy_propagation.cpp
*
* Moves usage of recently-copied variables to the previous copy of
* the variable.
diff --git a/src/glsl/ir_dead_code.cpp b/src/glsl/opt_dead_code.cpp
index 5cf5e99add..cb500d2d10 100644
--- a/src/glsl/ir_dead_code.cpp
+++ b/src/glsl/opt_dead_code.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_dead_code.cpp
+ * \file opt_dead_code.cpp
*
* Eliminates dead assignments and variable declarations from the code.
*/
diff --git a/src/glsl/ir_dead_code_local.cpp b/src/glsl/opt_dead_code_local.cpp
index 4bbedf0ff9..5689e7d20d 100644
--- a/src/glsl/ir_dead_code_local.cpp
+++ b/src/glsl/opt_dead_code_local.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_dead_code_local.cpp
+ * \file opt_dead_code_local.cpp
*
* Eliminates local dead assignments from the code.
*
diff --git a/src/glsl/ir_dead_functions.cpp b/src/glsl/opt_dead_functions.cpp
index 26554441d3..cf91cb6d36 100644
--- a/src/glsl/ir_dead_functions.cpp
+++ b/src/glsl/opt_dead_functions.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_dead_functions.cpp
+ * \file opt_dead_functions.cpp
*
* Eliminates unused functions from the linked program.
*/
@@ -125,6 +125,7 @@ do_dead_functions(exec_list *instructions)
if (!entry->used) {
entry->signature->remove();
+ delete entry->signature;
progress = true;
}
delete(entry);
@@ -143,6 +144,7 @@ do_dead_functions(exec_list *instructions)
* symbol table should be OK.
*/
func->remove();
+ delete func;
progress = true;
}
}
diff --git a/src/glsl/ir_function_inlining.cpp b/src/glsl/opt_function_inlining.cpp
index 147c1824c1..169fd82688 100644
--- a/src/glsl/ir_function_inlining.cpp
+++ b/src/glsl/opt_function_inlining.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_function_inlining.cpp
+ * \file opt_function_inlining.cpp
*
* Replaces calls to functions with the body of the function.
*/
diff --git a/src/glsl/ir_if_simplification.cpp b/src/glsl/opt_if_simplification.cpp
index 021615ebd1..618bacfecf 100644
--- a/src/glsl/ir_if_simplification.cpp
+++ b/src/glsl/opt_if_simplification.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_if_simplification.cpp
+ * \file opt_if_simplification.cpp
*
* Moves constant branches of if statements out to the surrounding
* instruction stream.
diff --git a/src/glsl/ir_noop_swizzle.cpp b/src/glsl/opt_noop_swizzle.cpp
index 0403dfa4e9..0a906aaf1d 100644
--- a/src/glsl/ir_noop_swizzle.cpp
+++ b/src/glsl/opt_noop_swizzle.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_noop_swizzle.cpp
+ * \file opt_noop_swizzle.cpp
*
* If a swizzle doesn't change the order or count of components, then
* remove the swizzle so that other optimization passes see the value
diff --git a/src/glsl/ir_structure_splitting.cpp b/src/glsl/opt_structure_splitting.cpp
index ff3ec936eb..d6191002c2 100644
--- a/src/glsl/ir_structure_splitting.cpp
+++ b/src/glsl/opt_structure_splitting.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_structure_splitting.cpp
+ * \file opt_structure_splitting.cpp
*
* If a structure is only ever referenced by its components, then
* split those components out to individual variables so they can be
diff --git a/src/glsl/ir_swizzle_swizzle.cpp b/src/glsl/opt_swizzle_swizzle.cpp
index 0ffb4fa313..bc442fa869 100644
--- a/src/glsl/ir_swizzle_swizzle.cpp
+++ b/src/glsl/opt_swizzle_swizzle.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_swizzle_swizzle.cpp
+ * \file opt_swizzle_swizzle.cpp
*
* Eliminates the second swizzle in a swizzle chain.
*/
diff --git a/src/glsl/ir_tree_grafting.cpp b/src/glsl/opt_tree_grafting.cpp
index 9b569b8284..9917c045b1 100644
--- a/src/glsl/ir_tree_grafting.cpp
+++ b/src/glsl/opt_tree_grafting.cpp
@@ -22,7 +22,7 @@
*/
/**
- * \file ir_tree_grafting.cpp
+ * \file opt_tree_grafting.cpp
*
* Takes assignments to variables that are dereferenced only once and
* pastes the RHS expression into where the variable is dereferenced.
diff --git a/src/glsl/s_expression.cpp b/src/glsl/s_expression.cpp
index 4458c48d6b..4c8829fea9 100644
--- a/src/glsl/s_expression.cpp
+++ b/src/glsl/s_expression.cpp
@@ -133,7 +133,8 @@ void s_list::print()
foreach_iter(exec_list_iterator, it, this->subexpressions) {
s_expression *expr = (s_expression*) it.get();
expr->print();
- printf(" ");
+ if (!expr->next->is_tail_sentinel())
+ printf(" ");
}
printf(")");
}
diff --git a/src/glut/glx/SConscript b/src/glut/glx/SConscript
index 29d2cc0149..9363b5ca5c 100644
--- a/src/glut/glx/SConscript
+++ b/src/glut/glx/SConscript
@@ -78,7 +78,6 @@ if env['platform'] == 'windows':
'glut.def',
]
else:
- env.Tool('x11')
env.PrependUnique(LIBS = [
'GLU',
'GL',
diff --git a/src/glx/indirect.c b/src/glx/indirect.c
index 2b09c1c3b5..49938a167a 100644
--- a/src/glx/indirect.c
+++ b/src/glx/indirect.c
@@ -30,7 +30,6 @@
#include "indirect.h"
#include "glxclient.h"
#include "indirect_size.h"
-#include "glapidispatch.h"
#include "glapi.h"
#include "glthread.h"
#include <GL/glxproto.h>
@@ -5200,7 +5199,7 @@ glDeleteTexturesEXT(GLsizei n, const GLuint * textures)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_DeleteTextures(GET_DISPATCH(), (n, textures));
+ GET_DISPATCH()->DeleteTextures(n, textures);
} else
#endif
{
@@ -5271,7 +5270,7 @@ glGenTexturesEXT(GLsizei n, GLuint * textures)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GenTextures(GET_DISPATCH(), (n, textures));
+ GET_DISPATCH()->GenTextures(n, textures);
} else
#endif
{
@@ -5336,7 +5335,7 @@ glIsTextureEXT(GLuint texture)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- return CALL_IsTexture(GET_DISPATCH(), (texture));
+ return GET_DISPATCH()->IsTexture(texture);
} else
#endif
{
@@ -5652,7 +5651,7 @@ glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid * table)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetColorTable(GET_DISPATCH(), (target, format, type, table));
+ GET_DISPATCH()->GetColorTable(target, format, type, table);
} else
#endif
{
@@ -5728,8 +5727,7 @@ glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetColorTableParameterfv(GET_DISPATCH(),
- (target, pname, params));
+ GET_DISPATCH()->GetColorTableParameterfv(target, pname, params);
} else
#endif
{
@@ -5801,8 +5799,7 @@ glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint * params)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetColorTableParameteriv(GET_DISPATCH(),
- (target, pname, params));
+ GET_DISPATCH()->GetColorTableParameteriv(target, pname, params);
} else
#endif
{
@@ -6127,8 +6124,7 @@ gl_dispatch_stub_356(GLenum target, GLenum format, GLenum type,
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetConvolutionFilter(GET_DISPATCH(),
- (target, format, type, image));
+ GET_DISPATCH()->GetConvolutionFilter(target, format, type, image);
} else
#endif
{
@@ -6205,8 +6201,7 @@ gl_dispatch_stub_357(GLenum target, GLenum pname, GLfloat * params)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetConvolutionParameterfv(GET_DISPATCH(),
- (target, pname, params));
+ GET_DISPATCH()->GetConvolutionParameterfv(target, pname, params);
} else
#endif
{
@@ -6278,8 +6273,7 @@ gl_dispatch_stub_358(GLenum target, GLenum pname, GLint * params)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetConvolutionParameteriv(GET_DISPATCH(),
- (target, pname, params));
+ GET_DISPATCH()->GetConvolutionParameteriv(target, pname, params);
} else
#endif
{
@@ -6358,8 +6352,7 @@ gl_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format,
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetHistogram(GET_DISPATCH(),
- (target, reset, format, type, values));
+ GET_DISPATCH()->GetHistogram(target, reset, format, type, values);
} else
#endif
{
@@ -6435,7 +6428,7 @@ gl_dispatch_stub_362(GLenum target, GLenum pname, GLfloat * params)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetHistogramParameterfv(GET_DISPATCH(), (target, pname, params));
+ GET_DISPATCH()->GetHistogramParameterfv(target, pname, params);
} else
#endif
{
@@ -6506,7 +6499,7 @@ gl_dispatch_stub_363(GLenum target, GLenum pname, GLint * params)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetHistogramParameteriv(GET_DISPATCH(), (target, pname, params));
+ GET_DISPATCH()->GetHistogramParameteriv(target, pname, params);
} else
#endif
{
@@ -6581,7 +6574,7 @@ gl_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format,
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetMinmax(GET_DISPATCH(), (target, reset, format, type, values));
+ GET_DISPATCH()->GetMinmax(target, reset, format, type, values);
} else
#endif
{
@@ -6655,7 +6648,7 @@ gl_dispatch_stub_365(GLenum target, GLenum pname, GLfloat * params)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetMinmaxParameterfv(GET_DISPATCH(), (target, pname, params));
+ GET_DISPATCH()->GetMinmaxParameterfv(target, pname, params);
} else
#endif
{
@@ -6723,7 +6716,7 @@ gl_dispatch_stub_366(GLenum target, GLenum pname, GLint * params)
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetMinmaxParameteriv(GET_DISPATCH(), (target, pname, params));
+ GET_DISPATCH()->GetMinmaxParameteriv(target, pname, params);
} else
#endif
{
@@ -9268,7 +9261,7 @@ __indirect_glLoadProgramNV(GLenum target, GLuint id, GLsizei len,
#define X_GLrop_ProgramParameters4dvNV 4187
void
-__indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint num,
+__indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLsizei num,
const GLdouble * params)
{
struct glx_context *const gc = __glXGetCurrentContext();
@@ -9292,7 +9285,7 @@ __indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint num,
#define X_GLrop_ProgramParameters4fvNV 4186
void
-__indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLuint num,
+__indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLsizei num,
const GLfloat * params)
{
struct glx_context *const gc = __glXGetCurrentContext();
diff --git a/src/glx/indirect.h b/src/glx/indirect.h
index 282de75c40..f3222077bf 100644
--- a/src/glx/indirect.h
+++ b/src/glx/indirect.h
@@ -440,6 +440,7 @@ extern HIDDEN void __indirect_glGetConvolutionParameteriv(GLenum target, GLenum
extern HIDDEN void gl_dispatch_stub_358(GLenum target, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
extern HIDDEN void gl_dispatch_stub_359(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
+#define gl_dispatch_stub_GetSeparableFilterEXT gl_dispatch_stub_359
extern HIDDEN void __indirect_glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column);
extern HIDDEN void __indirect_glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
extern HIDDEN void gl_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
@@ -640,8 +641,8 @@ extern HIDDEN void __indirect_glGetVertexAttribfvNV(GLuint index, GLenum pname,
extern HIDDEN void __indirect_glGetVertexAttribivNV(GLuint index, GLenum pname, GLint * params);
extern HIDDEN GLboolean __indirect_glIsProgramNV(GLuint program);
extern HIDDEN void __indirect_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte * program);
-extern HIDDEN void __indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint num, const GLdouble * params);
-extern HIDDEN void __indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLuint num, const GLfloat * params);
+extern HIDDEN void __indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLsizei num, const GLdouble * params);
+extern HIDDEN void __indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLsizei num, const GLfloat * params);
extern HIDDEN void __indirect_glRequestResidentProgramsNV(GLsizei n, const GLuint * ids);
extern HIDDEN void __indirect_glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform);
extern HIDDEN void __indirect_glVertexAttrib1dNV(GLuint index, GLdouble x);
diff --git a/src/glx/single2.c b/src/glx/single2.c
index 318d18e555..66281fa9c9 100644
--- a/src/glx/single2.c
+++ b/src/glx/single2.c
@@ -36,7 +36,6 @@
#include "indirect.h"
#include "indirect_vertex_array.h"
#include "glapitable.h"
-#include "glapidispatch.h"
#include "glapi.h"
#ifdef USE_XCB
#include <xcb/xcb.h>
@@ -944,8 +943,7 @@ glAreTexturesResidentEXT(GLsizei n, const GLuint * textures,
struct glx_context *const gc = __glXGetCurrentContext();
if (gc->isDirect) {
- return CALL_AreTexturesResident(GET_DISPATCH(),
- (n, textures, residences));
+ return GET_DISPATCH()->AreTexturesResident(n, textures, residences);
}
else {
struct glx_context *const gc = __glXGetCurrentContext();
diff --git a/src/glx/singlepix.c b/src/glx/singlepix.c
index b61f26b2f3..d8a71664d0 100644
--- a/src/glx/singlepix.c
+++ b/src/glx/singlepix.c
@@ -31,10 +31,8 @@
#include "packsingle.h"
#include "indirect.h"
#include "glapitable.h"
-#include "glapidispatch.h"
#include "glapi.h"
#include "glthread.h"
-#include "glapioffsets.h"
#include <GL/glxproto.h>
void
@@ -110,19 +108,17 @@ __indirect_glGetSeparableFilter(GLenum target, GLenum format, GLenum type,
}
-#define CONCAT(a,b) a ## b
-#define NAME(o) CONCAT(gl_dispatch_stub_, o)
-
-void NAME(_gloffset_GetSeparableFilter) (GLenum target, GLenum format,
- GLenum type, GLvoid * row,
- GLvoid * column, GLvoid * span)
+/* it is defined to gl_dispatch_stub_NNN in indirect.h */
+void gl_dispatch_stub_GetSeparableFilterEXT (GLenum target, GLenum format,
+ GLenum type, GLvoid * row,
+ GLvoid * column, GLvoid * span)
{
struct glx_context *const gc = __glXGetCurrentContext();
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->isDirect) {
- CALL_GetSeparableFilter(GET_DISPATCH(),
- (target, format, type, row, column, span));
+ GET_DISPATCH()->GetSeparableFilter(target, format, type,
+ row, column, span);
return;
}
else
diff --git a/src/mapi/glapi/SConscript b/src/mapi/glapi/SConscript
index 40db237fcb..77a5f9bd2e 100644
--- a/src/mapi/glapi/SConscript
+++ b/src/mapi/glapi/SConscript
@@ -6,77 +6,78 @@ Import('*')
if env['platform'] != 'winddk':
- env = env.Clone()
-
- env.Append(CPPDEFINES = [
- 'MAPI_GLAPI_CURRENT',
- ])
+ env = env.Clone()
+
+ env.Append(CPPDEFINES = [
+ 'MAPI_GLAPI_CURRENT',
+ ])
- if env['platform'] == 'windows':
- env.Append(CPPDEFINES = [
- '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers
- 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
- 'WIN32_THREADS', # use Win32 thread API
- ])
+ if env['platform'] == 'windows':
+ env.Append(CPPDEFINES = [
+ '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers
+ 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
+ 'WIN32_THREADS', # use Win32 thread API
+ ])
- env.Append(CPPPATH = [
- '#/src/mapi',
- '#/src/mesa',
- ])
-
- glapi_sources = [
- 'glapi_dispatch.c',
- 'glapi_entrypoint.c',
- 'glapi_getproc.c',
- 'glapi_nop.c',
- 'glthread.c',
- ]
-
- mapi_sources = [
- 'u_current.c',
- 'u_execmem.c',
- 'u_thread.c',
- ]
- for s in mapi_sources:
- o = env.SharedObject(s[:-2], '../mapi/' + s)
- glapi_sources.append(o)
+ env.Append(CPPPATH = [
+ '#/src/mapi',
+ '#/src/mesa',
+ ])
+
+ glapi_sources = [
+ 'glapi_dispatch.c',
+ 'glapi_entrypoint.c',
+ 'glapi_getproc.c',
+ 'glapi_nop.c',
+ 'glthread.c',
+ ]
+
+ mapi_sources = [
+ 'u_current.c',
+ 'u_execmem.c',
+ 'u_thread.c',
+ ]
+ for s in mapi_sources:
+ o = env.SharedObject(s[:-2], '../mapi/' + s)
+ glapi_sources.append(o)
- #
- # 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')
+ #
+ # Assembly sources
+ #
+ if env['gcc'] and env['platform'] != 'windows':
+ if env['machine'] == 'x86':
+ env.Append(CPPDEFINES = [
+ 'USE_X86_ASM',
+ 'USE_MMX_ASM',
+ 'USE_3DNOW_ASM',
+ 'USE_SSE_ASM',
+ ])
+ glapi_sources += [
+ 'glapi_x86.S',
+ ]
+ elif env['machine'] == 'x86_64':
+ env.Append(CPPDEFINES = [
+ 'USE_X86_64_ASM',
+ ])
+ glapi_sources += [
+ 'glapi_x86-64.S'
+ ]
+ elif env['machine'] == 'ppc':
+ env.Append(CPPDEFINES = [
+ 'USE_PPC_ASM',
+ 'USE_VMX_ASM',
+ ])
+ glapi_sources += [
+ ]
+ elif 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
index bda8e9ef72..837579248f 100644
--- a/src/mapi/glapi/gen-es/Makefile
+++ b/src/mapi/glapi/gen-es/Makefile
@@ -3,14 +3,13 @@ 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/glapidispatch.h \
main/remap_helper.h
COMMON = gl_XML.py glX_XML.py license.py typeexpr.py
@@ -47,9 +46,6 @@ 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)
diff --git a/src/mapi/glapi/gen/ARB_draw_instanced.xml b/src/mapi/glapi/gen/ARB_draw_instanced.xml
index 5741a588c9..57bb776ac2 100644
--- a/src/mapi/glapi/gen/ARB_draw_instanced.xml
+++ b/src/mapi/glapi/gen/ARB_draw_instanced.xml
@@ -6,36 +6,16 @@
<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">
+ <function name="DrawArraysInstancedARB" 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="DrawElementsInstancedARB" alias="DrawElementsInstanced">
+ <function name="DrawElementsInstancedARB" offset="assign">
<param name="mode" type="GLenum"/>
<param name="count" type="GLsizei"/>
<param name="type" type="GLenum"/>
@@ -48,14 +28,14 @@
<category name="GL_EXT_draw_instanced" number="327">
- <function name="DrawArraysInstancedEXT" alias="DrawArraysInstanced">
+ <function name="DrawArraysInstancedEXT" alias="DrawArraysInstancedARB">
<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">
+ <function name="DrawElementsInstancedEXT" alias="DrawElementsInstancedARB">
<param name="mode" type="GLenum"/>
<param name="count" type="GLsizei"/>
<param name="type" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/EXT_gpu_shader4.xml b/src/mapi/glapi/gen/EXT_gpu_shader4.xml
new file mode 100644
index 0000000000..7a8944ea3b
--- /dev/null
+++ b/src/mapi/glapi/gen/EXT_gpu_shader4.xml
@@ -0,0 +1,244 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_EXT_gpu_shader4" number="326">
+
+ <enum name="VERTEX_ATTRIB_ARRAY_INTEGER_EXT" value="0x88FD"/>
+ <enum name="SAMPLER_1D_ARRAY_EXT" value="0x8DC0"/>
+ <enum name="SAMPLER_2D_ARRAY_EXT" value="0x8DC1"/>
+ <enum name="SAMPLER_BUFFER_EXT" value="0x8DC2"/>
+ <enum name="SAMPLER_1D_ARRAY_SHADOW_EXT" value="0x8DC3"/>
+ <enum name="SAMPLER_2D_ARRAY_SHADOW_EXT" value="0x8DC4"/>
+ <enum name="SAMPLER_CUBE_SHADOW_EXT" value="0x8DC5"/>
+ <enum name="UNSIGNED_INT_VEC2_EXT" value="0x8DC6"/>
+ <enum name="UNSIGNED_INT_VEC3_EXT" value="0x8DC7"/>
+ <enum name="UNSIGNED_INT_VEC4_EXT" value="0x8DC8"/>
+ <enum name="INT_SAMPLER_1D_EXT" value="0x8DC9"/>
+ <enum name="INT_SAMPLER_2D_EXT" value="0x8DCA"/>
+ <enum name="INT_SAMPLER_3D_EXT" value="0x8DCB"/>
+ <enum name="INT_SAMPLER_CUBE_EXT" value="0x8DCC"/>
+ <enum name="INT_SAMPLER_2D_RECT_EXT" value="0x8DCD"/>
+ <enum name="INT_SAMPLER_1D_ARRAY_EXT" value="0x8DCE"/>
+ <enum name="INT_SAMPLER_2D_ARRAY_EXT" value="0x8DCF"/>
+ <enum name="INT_SAMPLER_BUFFER_EXT" value="0x8DD0"/>
+ <enum name="UNSIGNED_INT_SAMPLER_1D_EXT" value="0x8DD1"/>
+ <enum name="UNSIGNED_INT_SAMPLER_2D_EXT" value="0x8DD2"/>
+ <enum name="UNSIGNED_INT_SAMPLER_3D_EXT" value="0x8DD3"/>
+ <enum name="UNSIGNED_INT_SAMPLER_CUBE_EXT" value="0x8DD4"/>
+ <enum name="UNSIGNED_INT_SAMPLER_2D_RECT_EXT" value="0x8DD5"/>
+ <enum name="UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT" value="0x8DD6"/>
+ <enum name="UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT" value="0x8DD7"/>
+ <enum name="UNSIGNED_INT_SAMPLER_BUFFER_EXT" value="0x8DD8"/>
+ <enum name="MIN_PROGRAM_TEXEL_OFFSET_EXT" value="0x8904">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="MAX_PROGRAM_TEXEL_OFFSET_EXT" value="0x8905">
+ <size name="Get" mode="get"/>
+ </enum>
+
+
+ <function name="VertexAttribI1iEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="x" type="GLint"/>
+ </function>
+
+ <function name="VertexAttribI2iEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="x" type="GLint"/>
+ <param name="y" type="GLint"/>
+ </function>
+
+ <function name="VertexAttribI3iEXT" 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="VertexAttribI4iEXT" 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="VertexAttribI1uiEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="x" type="GLuint"/>
+ </function>
+
+ <function name="VertexAttribI2uiEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="x" type="GLuint"/>
+ <param name="y" type="GLuint"/>
+ </function>
+
+ <function name="VertexAttribI3uiEXT" 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="VertexAttribI4uiEXT" 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="VertexAttribI1ivEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLint *"/>
+ </function>
+
+ <function name="VertexAttribI2ivEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLint *"/>
+ </function>
+
+ <function name="VertexAttribI3ivEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLint *"/>
+ </function>
+
+ <function name="VertexAttribI4ivEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLint *"/>
+ </function>
+
+ <function name="VertexAttribI1uivEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLuint *"/>
+ </function>
+
+ <function name="VertexAttribI2uivEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLuint *"/>
+ </function>
+
+ <function name="VertexAttribI3uivEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLuint *"/>
+ </function>
+
+ <function name="VertexAttribI4uivEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLuint *"/>
+ </function>
+
+ <function name="VertexAttribI4bvEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLbyte *"/>
+ </function>
+
+ <function name="VertexAttribI4svEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLshort *"/>
+ </function>
+
+ <function name="VertexAttribI4ubvEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLubyte *"/>
+ </function>
+
+ <function name="VertexAttribI4usvEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="v" type="const GLushort *"/>
+ </function>
+
+ <function name="VertexAttribIPointerEXT" 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="GetVertexAttribIivEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="pname" type="GLenum"/>
+ <param name="params" type="GLint *"/>
+ </function>
+
+ <function name="GetVertexAttribIuivEXT" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="pname" type="GLenum"/>
+ <param name="params" type="GLuint *"/>
+ </function>
+
+ <function name="Uniform1uiEXT" offset="assign">
+ <param name="location" type="GLint"/>
+ <param name="x" type="GLuint"/>
+ </function>
+
+ <function name="Uniform2uiEXT" offset="assign">
+ <param name="location" type="GLint"/>
+ <param name="x" type="GLuint"/>
+ <param name="y" type="GLuint"/>
+ </function>
+
+ <function name="Uniform3uiEXT" 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="Uniform4uiEXT" 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="Uniform1uivEXT" offset="assign">
+ <param name="location" type="GLint"/>
+ <param name="count" type="GLsizei"/>
+ <param name="value" type="const GLuint *"/>
+ </function>
+
+ <function name="Uniform2uivEXT" offset="assign">
+ <param name="location" type="GLint"/>
+ <param name="count" type="GLsizei"/>
+ <param name="value" type="const GLuint *"/>
+ </function>
+
+ <function name="Uniform3uivEXT" offset="assign">
+ <param name="location" type="GLint"/>
+ <param name="count" type="GLsizei"/>
+ <param name="value" type="const GLuint *"/>
+ </function>
+
+ <function name="Uniform4uivEXT" offset="assign">
+ <param name="location" type="GLint"/>
+ <param name="count" type="GLsizei"/>
+ <param name="value" type="const GLuint *"/>
+ </function>
+
+ <function name="GetUniformuivEXT" offset="assign">
+ <param name="program" type="GLuint"/>
+ <param name="location" type="GLint"/>
+ <param name="params" type="GLuint *"/>
+ </function>
+
+ <function name="BindFragDataLocationEXT" offset="assign">
+ <param name="program" type="GLuint"/>
+ <param name="colorNumber" type="GLuint"/>
+ <param name="name" type="const GLchar *"/>
+ </function>
+
+ <function name="GetFragDataLocationEXT" offset="assign">
+ <return type="GLint"/>
+ <param name="program" type="GLuint"/>
+ <param name="name" type="const GLchar *"/>
+ </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/EXT_separate_shader_objects.xml b/src/mapi/glapi/gen/EXT_separate_shader_objects.xml
new file mode 100644
index 0000000000..6ec56157c0
--- /dev/null
+++ b/src/mapi/glapi/gen/EXT_separate_shader_objects.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+<OpenGLAPI>
+<category name="GL_EXT_separate_shader_objects" number="377">
+ <!-- Alias of CURRENT_PROGRAM -->
+ <enum name="ACTIVE_PROGRAM_EXT" value="0x8B8D"/>
+
+ <function name="UseShaderProgramEXT" offset="assign">
+ <param name="type" type="GLenum"/>
+ <param name="program" type="GLuint"/>
+ </function>
+
+ <function name="ActiveProgramEXT" offset="assign">
+ <param name="program" type="GLuint"/>
+ </function>
+
+ <function name="CreateShaderProgramEXT" offset="assign">
+ <param name="type" type="GLenum"/>
+ <param name="string" type="const GLchar *"/>
+ <return type="GLuint"/>
+ </function>
+</category>
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/EXT_texture_integer.xml b/src/mapi/glapi/gen/EXT_texture_integer.xml
new file mode 100644
index 0000000000..7e5a8cbebe
--- /dev/null
+++ b/src/mapi/glapi/gen/EXT_texture_integer.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_EXT_texture_integer" number="343">
+
+ <enum name="RGBA_INTEGER_MODE_EXT" value="0x8D9E">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="RGBA32UI_EXT" value="0x8D70"/>
+ <enum name="RGB32UI_EXT" value="0x8D71"/>
+ <enum name="ALPHA32UI_EXT" value="0x8D72"/>
+ <enum name="INTENSITY32UI_EXT" value="0x8D73"/>
+ <enum name="LUMINANCE32UI_EXT" value="0x8D74"/>
+ <enum name="LUMINANCE_ALPHA32UI_EXT" value="0x8D75"/>
+ <enum name="RGBA16UI_EXT" value="0x8D76"/>
+ <enum name="RGB16UI_EXT" value="0x8D77"/>
+ <enum name="ALPHA16UI_EXT" value="0x8D78"/>
+ <enum name="INTENSITY16UI_EXT" value="0x8D79"/>
+ <enum name="LUMINANCE16UI_EXT" value="0x8D7A"/>
+ <enum name="LUMINANCE_ALPHA16UI_EXT" value="0x8D7B"/>
+ <enum name="RGBA8UI_EXT" value="0x8D7C"/>
+ <enum name="RGB8UI_EXT" value="0x8D7D"/>
+ <enum name="ALPHA8UI_EXT" value="0x8D7E"/>
+ <enum name="INTENSITY8UI_EXT" value="0x8D7F"/>
+ <enum name="LUMINANCE8UI_EXT" value="0x8D80"/>
+ <enum name="LUMINANCE_ALPHA8UI_EXT" value="0x8D81"/>
+ <enum name="RGBA32I_EXT" value="0x8D82"/>
+ <enum name="RGB32I_EXT" value="0x8D83"/>
+ <enum name="ALPHA32I_EXT" value="0x8D84"/>
+ <enum name="INTENSITY32I_EXT" value="0x8D85"/>
+ <enum name="LUMINANCE32I_EXT" value="0x8D86"/>
+ <enum name="LUMINANCE_ALPHA32I_EXT" value="0x8D87"/>
+ <enum name="RGBA16I_EXT" value="0x8D88"/>
+ <enum name="RGB16I_EXT" value="0x8D89"/>
+ <enum name="ALPHA16I_EXT" value="0x8D8A"/>
+ <enum name="INTENSITY16I_EXT" value="0x8D8B"/>
+ <enum name="LUMINANCE16I_EXT" value="0x8D8C"/>
+ <enum name="LUMINANCE_ALPHA16I_EXT" value="0x8D8D"/>
+ <enum name="RGBA8I_EXT" value="0x8D8E"/>
+ <enum name="RGB8I_EXT" value="0x8D8F"/>
+ <enum name="ALPHA8I_EXT" value="0x8D90"/>
+ <enum name="INTENSITY8I_EXT" value="0x8D91"/>
+ <enum name="LUMINANCE8I_EXT" value="0x8D92"/>
+ <enum name="LUMINANCE_ALPHA8I_EXT" value="0x8D93"/>
+ <enum name="RED_INTEGER_EXT" value="0x8D94"/>
+ <enum name="GREEN_INTEGER_EXT" value="0x8D95"/>
+ <enum name="BLUE_INTEGER_EXT" value="0x8D96"/>
+ <enum name="ALPHA_INTEGER_EXT" value="0x8D97"/>
+ <enum name="RGB_INTEGER_EXT" value="0x8D98"/>
+ <enum name="RGBA_INTEGER_EXT" value="0x8D99"/>
+ <enum name="BGR_INTEGER_EXT" value="0x8D9A"/>
+ <enum name="BGRA_INTEGER_EXT" value="0x8D9B"/>
+ <enum name="LUMINANCE_INTEGER_EXT" value="0x8D9C"/>
+ <enum name="LUMINANCE_ALPHA_INTEGER_EXT" value="0x8D9D"/>
+
+ <function name="ClearColorIiEXT" offset="assign">
+ <param name="r" type="GLint"/>
+ <param name="g" type="GLint"/>
+ <param name="b" type="GLint"/>
+ <param name="a" type="GLint"/>
+ </function>
+
+ <function name="ClearColorIuiEXT" offset="assign">
+ <param name="r" type="GLuint"/>
+ <param name="g" type="GLuint"/>
+ <param name="b" type="GLuint"/>
+ <param name="a" type="GLuint"/>
+ </function>
+
+ <function name="TexParameterIivEXT" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="pname" type="GLenum"/>
+ <param name="params" type="const GLint *"/>
+ </function>
+
+ <function name="TexParameterIuivEXT" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="pname" type="GLenum"/>
+ <param name="params" type="const GLuint *"/>
+ </function>
+
+ <function name="GetTexParameterIivEXT" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="pname" type="GLenum"/>
+ <param name="params" type="GLint *"/>
+ </function>
+
+ <function name="GetTexParameterIuivEXT" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="pname" type="GLenum"/>
+ <param name="params" type="GLuint *"/>
+ </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/EXT_transform_feedback.xml b/src/mapi/glapi/gen/EXT_transform_feedback.xml
index 06deafce4e..051f1e0cc9 100644
--- a/src/mapi/glapi/gen/EXT_transform_feedback.xml
+++ b/src/mapi/glapi/gen/EXT_transform_feedback.xml
@@ -75,51 +75,6 @@
</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"/>
diff --git a/src/mapi/glapi/gen/GL3.xml b/src/mapi/glapi/gen/GL3x.xml
index 0d8d935f0a..8d15c94970 100644
--- a/src/mapi/glapi/gen/GL3.xml
+++ b/src/mapi/glapi/gen/GL3x.xml
@@ -3,7 +3,6 @@
<!-- Note: no GLX protocol info yet. -->
-
<OpenGLAPI>
<category name="3.0">
@@ -111,6 +110,8 @@
<enum name="BUFFER_MAP_LENGTH" value="0x9120"/>
<enum name="BUFFER_MAP_OFFSET" value="0x9121"/>
+ <!-- These functions are unique to GL3 -->
+
<function name="ClearBufferiv" offset="assign">
<param name="buffer" type="GLenum"/>
<param name="drawbuffer" type="GLint"/>
@@ -142,62 +143,71 @@
<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 name="ClampColor" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="clamp" type="GLenum"/>
</function>
- <function name="BindFragDataLocation" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="color" type="GLuint"/>
- <param name="name" type="const GLchar *"/>
- </function>
+ <!-- These functions alias ones form GL_ARB_draw_buffers2 -->
- <function name="ColorMaski" offset="assign">
- <param name="index" type="GLuint"/>
+ <function name="ColorMaski" alias="ColorMaskIndexedEXT">
+ <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="GetBooleani_v" offset="assign">
- <param name="cap" type="GLenum"/>
+ <function name="GetBooleani_v" alias="GetBooleanIndexedvEXT">
+ <param name="value" type="GLenum"/>
<param name="index" type="GLuint"/>
- <param name="value" type="GLboolean *"/>
+ <param name="data" type="GLboolean *"/>
</function>
- <function name="GetIntegeri_v" offset="assign">
- <param name="cap" type="GLenum"/>
+ <function name="GetIntegeri_v" alias="GetIntegerIndexedvEXT">
+ <param name="value" type="GLenum"/>
<param name="index" type="GLuint"/>
- <param name="value" type="GLint *"/>
+ <param name="data" type="GLint *"/>
</function>
- <function name="Enablei" offset="assign">
- <param name="cap" type="GLenum"/>
+ <function name="Enablei" alias="EnableIndexedEXT">
+ <param name="target" type="GLenum"/>
<param name="index" type="GLuint"/>
</function>
- <function name="Disablei" offset="assign">
- <param name="cap" type="GLenum"/>
+ <function name="Disablei" alias="DisableIndexedEXT">
+ <param name="target" type="GLenum"/>
<param name="index" type="GLuint"/>
</function>
- <function name="BeginTransformFeedback" offset="assign">
+ <function name="IsEnabledi" alias="IsEnabledIndexedEXT">
+ <param name="target" type="GLenum"/>
+ <param name="index" type="GLuint"/>
+ <return type="GLboolean"/>
+ </function>
+
+ <!-- These functions alias ones form GL_EXT_transform_feedback -->
+
+ <function name="GetFragDataLocation" alias="GetFragDataLocationEXT">
+ <param name="program" type="GLuint"/>
+ <param name="name" type="const GLchar *"/>
+ <return type="GLint"/>
+ </function>
+
+ <function name="BindFragDataLocation" alias="BindFragDataLocationEXT">
+ <param name="program" type="GLuint"/>
+ <param name="colorNumber" type="GLuint"/>
+ <param name="name" type="const GLchar *"/>
+ </function>
+
+ <function name="BeginTransformFeedback" alias="BeginTransformFeedbackEXT">
<param name="mode" type="GLenum"/>
</function>
- <function name="EndTransformFeedback" offset="assign">
+ <function name="EndTransformFeedback" alias="EndTransformFeedbackEXT">
</function>
- <function name="BindBufferRange" offset="assign">
+ <function name="BindBufferRange" alias="BindBufferRangeEXT">
<param name="target" type="GLenum"/>
<param name="index" type="GLuint"/>
<param name="buffer" type="GLuint"/>
@@ -205,20 +215,20 @@
<param name="size" type="GLsizeiptr"/>
</function>
- <function name="BindBufferBase" offset="assign">
+ <function name="BindBufferBase" alias="BindBufferBaseEXT">
<param name="target" type="GLenum"/>
<param name="index" type="GLuint"/>
<param name="buffer" type="GLuint"/>
</function>
- <function name="TransformFeedbackVaryings" offset="assign">
+ <function name="TransformFeedbackVaryings" alias="TransformFeedbackVaryingsEXT">
<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">
+ <function name="GetTransformFeedbackVarying" alias="GetTransformFeedbackVaryingEXT">
<param name="program" type="GLuint"/>
<param name="index" type="GLuint"/>
<param name="bufSize" type="GLsizei"/>
@@ -228,20 +238,19 @@
<param name="name" type="GLchar *"/>
</function>
- <function name="ClampColor" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="clamp" type="GLenum"/>
- </function>
+ <!-- These functions alias ones from GL_NV_conditional_render -->
- <function name="BeginConditionalRender" offset="assign">
- <param name="id" type="GLuint"/>
+ <function name="BeginConditionalRender" alias="BeginConditionalRenderNV">
+ <param name="query" type="GLuint"/>
<param name="mode" type="GLenum"/>
</function>
- <function name="EndConditionalRender" offset="assign">
+ <function name="EndConditionalRender" alias="EndConditionalRenderNV">
</function>
- <function name="VertexAttribIPointer" offset="assign">
+ <!-- These functions alias ones from GL_EXT_gpu_shader4 -->
+
+ <function name="VertexAttribIPointer" alias="VertexAttribIPointerEXT">
<param name="index" type="GLuint"/>
<param name="size" type="GLint"/>
<param name="type" type="GLenum"/>
@@ -249,37 +258,37 @@
<param name="pointer" type="const GLvoid *"/>
</function>
- <function name="GetVertexAttribIiv" offset="assign">
+ <function name="GetVertexAttribIiv" alias="GetVertexAttribIivEXT">
<param name="index" type="GLuint"/>
<param name="pname" type="GLenum"/>
<param name="params" type="GLint *"/>
</function>
- <function name="GetVertexAttribIuiv" offset="assign">
+ <function name="GetVertexAttribIuiv" alias="GetVertexAttribIuivEXT">
<param name="index" type="GLuint"/>
<param name="pname" type="GLenum"/>
<param name="params" type="GLuint *"/>
</function>
- <function name="VertexAttribI1i" offset="assign">
+ <function name="VertexAttribI1i" alias="VertexAttribI1iEXT">
<param name="index" type="GLuint"/>
<param name="x" type="GLint"/>
</function>
- <function name="VertexAttribI2i" offset="assign">
+ <function name="VertexAttribI2i" alias="VertexAttribI2iEXT">
<param name="index" type="GLuint"/>
<param name="x" type="GLint"/>
<param name="y" type="GLint"/>
</function>
- <function name="VertexAttribI3i" offset="assign">
+ <function name="VertexAttribI3i" alias="VertexAttribI3iEXT">
<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">
+ <function name="VertexAttribI4i" alias="VertexAttribI4iEXT">
<param name="index" type="GLuint"/>
<param name="x" type="GLint"/>
<param name="y" type="GLint"/>
@@ -287,25 +296,25 @@
<param name="w" type="GLint"/>
</function>
- <function name="VertexAttribI1ui" offset="assign">
+ <function name="VertexAttribI1ui" alias="VertexAttribI1uiEXT">
<param name="index" type="GLuint"/>
<param name="x" type="GLuint"/>
</function>
- <function name="VertexAttribI2ui" offset="assign">
+ <function name="VertexAttribI2ui" alias="VertexAttribI2uiEXT">
<param name="index" type="GLuint"/>
<param name="x" type="GLuint"/>
<param name="y" type="GLuint"/>
</function>
- <function name="VertexAttribI3ui" offset="assign">
+ <function name="VertexAttribI3ui" alias="VertexAttribI3uiEXT">
<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">
+ <function name="VertexAttribI4ui" alias="VertexAttribI4uiEXT">
<param name="index" type="GLuint"/>
<param name="x" type="GLuint"/>
<param name="y" type="GLuint"/>
@@ -313,91 +322,91 @@
<param name="w" type="GLuint"/>
</function>
- <function name="VertexAttribI1iv" offset="assign">
+ <function name="VertexAttribI1iv" alias="VertexAttribI1ivEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLint *"/>
</function>
- <function name="VertexAttribI2iv" offset="assign">
+ <function name="VertexAttribI2iv" alias="VertexAttribI2ivEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLint *"/>
</function>
- <function name="VertexAttribI3iv" offset="assign">
+ <function name="VertexAttribI3iv" alias="VertexAttribI3ivEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLint *"/>
</function>
- <function name="VertexAttribI4iv" offset="assign">
+ <function name="VertexAttribI4iv" alias="VertexAttribI4ivEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLint *"/>
</function>
- <function name="VertexAttribI1uiv" offset="assign">
+ <function name="VertexAttribI1uiv" alias="VertexAttribI1uivEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLuint *"/>
</function>
- <function name="VertexAttribI2uiv" offset="assign">
+ <function name="VertexAttribI2uiv" alias="VertexAttribI2uivEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLuint *"/>
</function>
- <function name="VertexAttribI3uiv" offset="assign">
+ <function name="VertexAttribI3uiv" alias="VertexAttribI3uivEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLuint *"/>
</function>
- <function name="VertexAttribI4uiv" offset="assign">
+ <function name="VertexAttribI4uiv" alias="VertexAttribI4uivEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLuint *"/>
</function>
- <function name="VertexAttribI4bv" offset="assign">
+ <function name="VertexAttribI4bv" alias="VertexAttribI4bvEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLbyte *"/>
</function>
- <function name="VertexAttribI4sv" offset="assign">
+ <function name="VertexAttribI4sv" alias="VertexAttribI4svEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLshort *"/>
</function>
- <function name="VertexAttribI4ubv" offset="assign">
+ <function name="VertexAttribI4ubv" alias="VertexAttribI4ubvEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLubyte *"/>
</function>
- <function name="VertexAttribI4usv" offset="assign">
+ <function name="VertexAttribI4usv" alias="VertexAttribI4usvEXT">
<param name="index" type="GLuint"/>
<param name="v" type="const GLushort *"/>
</function>
- <function name="GetUniformuiv" offset="assign">
+ <function name="GetUniformuiv" alias="GetUniformuivEXT">
<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"/>
+ <function name="Uniform1ui" alias="Uniform1uiEXT">
+ <param name="location" type="GLint"/>
<param name="x" type="GLuint"/>
</function>
- <function name="Uniform2ui" offset="assign">
+ <function name="Uniform2ui" alias="Uniform2uiEXT">
<param name="location" type="GLint"/>
<param name="x" type="GLuint"/>
<param name="y" type="GLuint"/>
</function>
- <function name="Uniform3ui" offset="assign">
+ <function name="Uniform3ui" alias="Uniform3uiEXT">
<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">
+ <function name="Uniform4ui" alias="Uniform4uiEXT">
<param name="location" type="GLint"/>
<param name="x" type="GLuint"/>
<param name="y" type="GLuint"/>
@@ -405,52 +414,54 @@
<param name="w" type="GLuint"/>
</function>
- <function name="Uniform1uiv" offset="assign">
+ <function name="Uniform1uiv" alias="Uniform1uivEXT">
<param name="location" type="GLint"/>
<param name="count" type="GLsizei"/>
<param name="value" type="const GLuint *"/>
</function>
- <function name="Uniform2uiv" offset="assign">
+ <function name="Uniform2uiv" alias="Uniform2uivEXT">
<param name="location" type="GLint"/>
<param name="count" type="GLsizei"/>
<param name="value" type="const GLuint *"/>
</function>
- <function name="Uniform3uiv" offset="assign">
+ <function name="Uniform3uiv" alias="Uniform3uivEXT">
<param name="location" type="GLint"/>
<param name="count" type="GLsizei"/>
<param name="value" type="const GLuint *"/>
</function>
- <function name="Uniform4uiv" offset="assign">
+ <function name="Uniform4uiv" alias="Uniform4uivEXT">
<param name="location" type="GLint"/>
<param name="count" type="GLsizei"/>
<param name="value" type="const GLuint *"/>
</function>
- <function name="TexParameterIiv" offset="assign">
+ <!-- These functions alias ones from GL_EXT_texture_integer -->
+
+ <function name="TexParameterIiv" alias="TexParameterIivEXT">
<param name="target" type="GLenum"/>
<param name="pname" type="GLenum"/>
- <param name="value" type="const GLint *"/>
+ <param name="params" type="const GLint *"/>
</function>
- <function name="TexParameterIuiv" offset="assign">
+ <function name="TexParameterIuiv" alias="TexParameterIuivEXT">
<param name="target" type="GLenum"/>
<param name="pname" type="GLenum"/>
- <param name="value" type="const GLuint *"/>
+ <param name="params" type="const GLuint *"/>
</function>
- <function name="GetTexParameterIiv" offset="assign">
+ <function name="GetTexParameterIiv" alias="GetTexParameterIivEXT">
<param name="target" type="GLenum"/>
<param name="pname" type="GLenum"/>
- <param name="value" type="GLint *"/>
+ <param name="params" type="GLint *"/>
</function>
- <function name="GetTexParameterIuiv" offset="assign">
+ <function name="GetTexParameterIuiv" alias="GetTexParameterIuivEXT">
<param name="target" type="GLenum"/>
<param name="pname" type="GLenum"/>
- <param name="value" type="GLuint *"/>
+ <param name="params" type="GLuint *"/>
</function>
</category>
@@ -490,14 +501,14 @@
<enum name="PRIMITIVE_RESTART" value="0x8F9D"/>
<enum name="PRIMITIVE_RESTART_INDEX" value="0x8F9E"/>
- <function name="DrawArraysInstanced" offset="assign">
+ <function name="DrawArraysInstanced" alias="DrawArraysInstancedARB">
<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">
+ <function name="DrawElementsInstanced" alias="DrawElementsInstancedARB">
<param name="mode" type="GLenum"/>
<param name="count" type="GLsizei"/>
<param name="type" type="GLenum"/>
@@ -511,7 +522,7 @@
<param name="buffer" type="GLuint"/>
</function>
- <function name="glPrimitiveRestartIndex" offset="assign">
+ <function name="PrimitiveRestartIndex" alias="PrimitiveRestartIndexNV">
<param name="index" type="GLuint"/>
</function>
@@ -555,12 +566,6 @@
<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"/>
@@ -568,12 +573,15 @@
<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"/>
+</category>
+
+
+<category name="3.3">
+ <!-- There are other new functions and tokens defined by other extensions -->
+
+ <function name="VertexAttribDivisor" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="divisor" type="GLuint"/>
</function>
</category>
diff --git a/src/mapi/glapi/gen/Makefile b/src/mapi/glapi/gen/Makefile
index 657056bece..5a9b6ac4a8 100644
--- a/src/mapi/glapi/gen/Makefile
+++ b/src/mapi/glapi/gen/Makefile
@@ -14,9 +14,7 @@ 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_DIR)/glapitable.h
MESA_GLAPI_ASM_OUTPUTS = \
$(MESA_GLAPI_DIR)/glapi_x86.S \
@@ -27,6 +25,7 @@ MESA_OUTPUTS = \
$(MESA_GLAPI_OUTPUTS) \
$(MESA_GLAPI_ASM_OUTPUTS) \
$(MESA_DIR)/main/enums.c \
+ $(MESA_DIR)/main/glapidispatch.h \
$(MESA_DIR)/main/remap_helper.h \
$(MESA_GLX_DIR)/indirect.c \
$(MESA_GLX_DIR)/indirect.h \
@@ -85,13 +84,18 @@ API_XML = \
APPLE_vertex_array_object.xml \
EXT_draw_buffers2.xml \
EXT_framebuffer_object.xml \
+ EXT_gpu_shader4.xml \
EXT_packed_depth_stencil.xml \
EXT_provoking_vertex.xml \
+ EXT_separate_shader_objects.xml \
EXT_texture_array.xml \
+ EXT_texture_integer.xml \
EXT_transform_feedback.xml \
NV_conditional_render.xml \
NV_primitive_restart.xml \
- OES_EGL_image.xml
+ OES_EGL_image.xml \
+ GL3x.xml
+
COMMON = $(API_XML) gl_XML.py glX_XML.py license.py typeexpr.py
@@ -131,15 +135,9 @@ $(MESA_GLAPI_DIR)/glprocs.h: gl_procs.py $(COMMON)
$(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)
@@ -158,6 +156,9 @@ $(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON) $(ES_API)
-f $(MESA_GLAPI_DIR)/gen-es/es1_API.xml \
-f $(MESA_GLAPI_DIR)/gen-es/es2_API.xml > $@
+$(MESA_DIR)/main/glapidispatch.h: gl_table.py $(COMMON)
+ $(PYTHON2) $(PYTHON_FLAGS) $< -m remap_table > $@
+
$(MESA_DIR)/main/remap_helper.h: remap_helper.py $(COMMON)
$(PYTHON2) $(PYTHON_FLAGS) $< > $@
diff --git a/src/mapi/glapi/gen/glX_proto_send.py b/src/mapi/glapi/gen/glX_proto_send.py
index bd41c9e667..17ebad0176 100644
--- a/src/mapi/glapi/gen/glX_proto_send.py
+++ b/src/mapi/glapi/gen/glX_proto_send.py
@@ -166,7 +166,6 @@ class PrintGlxProtoStubs(glX_proto_common.glx_print_proto):
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>'
@@ -375,7 +374,7 @@ const GLuint __glXDefaultPixelStore[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 1 };
print ''
print '#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)'
print ' if (gc->isDirect) {'
- print ' %sCALL_%s(GET_DISPATCH(), (%s));' % (ret_string, func.name, func.get_called_parameter_string())
+ print ' %sGET_DISPATCH()->%s(%s);' % (ret_string, func.name, func.get_called_parameter_string())
print ' } else'
print '#endif'
print ' {'
@@ -994,6 +993,9 @@ extern HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupVendorRequest(
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)
+ # give it a easy-to-remember name
+ if func.client_handcode:
+ print '#define gl_dispatch_stub_%s gl%s' % (n, asdf)
else:
print 'GLAPI %s GLAPIENTRY gl%s(%s);' % (func.return_type, asdf, params)
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index d1139aa06e..2004647954 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -11383,7 +11383,7 @@
<function name="ProgramParameters4dvNV" offset="assign">
<param name="target" type="GLenum"/>
<param name="index" type="GLuint"/>
- <param name="num" type="GLuint" counter="true"/>
+ <param name="num" type="GLsizei" counter="true"/>
<param name="params" type="const GLdouble *" count="num" count_scale="4"/>
<glx rop="4187"/>
</function>
@@ -11391,7 +11391,7 @@
<function name="ProgramParameters4fvNV" offset="assign">
<param name="target" type="GLenum"/>
<param name="index" type="GLuint"/>
- <param name="num" type="GLuint" counter="true"/>
+ <param name="num" type="GLsizei" counter="true"/>
<param name="params" type="const GLfloat *" count="num" count_scale="4"/>
<glx rop="4186"/>
</function>
@@ -12318,6 +12318,9 @@
</function>
</category>
+<xi:include href="EXT_separate_shader_objects.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
<!-- Unnumbered extensions sorted by name. -->
<category name="GL_ATI_blend_equation_separate">
@@ -12513,4 +12516,10 @@
<xi:include href="OES_EGL_image.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+<xi:include href="EXT_texture_integer.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="EXT_gpu_shader4.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+<xi:include href="GL3x.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
index 33e752df38..400e684da0 100644
--- a/src/mapi/glapi/gen/gl_SPARC_asm.py
+++ b/src/mapi/glapi/gen/gl_SPARC_asm.py
@@ -39,8 +39,6 @@ class PrintGenericStubs(gl_XML.gl_print_base):
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'
@@ -223,7 +221,7 @@ class PrintGenericStubs(gl_XML.gl_print_base):
for f in api.functionIterateByOffset():
name = f.dispatch_name()
- print '\tGL_STUB(gl%s, _gloffset_%s)' % (name, f.name)
+ print '\tGL_STUB(gl%s, %d)' % (name, f.offset)
if not f.is_static_entry_point(f.name):
print '\tHIDDEN(gl%s)' % (name)
diff --git a/src/mapi/glapi/gen/gl_procs.py b/src/mapi/glapi/gen/gl_procs.py
index 5de61fbdfe..a9ba48297a 100644
--- a/src/mapi/glapi/gen/gl_procs.py
+++ b/src/mapi/glapi/gen/gl_procs.py
@@ -96,7 +96,7 @@ typedef struct {
for func in api.functionIterateByOffset():
name = func.dispatch_name()
self.printFunctionString(func.name)
- table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.name))
+ table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.offset))
# The length of the function's name, plus 2 for "gl",
# plus 1 for the NUL.
@@ -112,9 +112,9 @@ typedef struct {
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))
+ table.append((base_offset, "gl" + name, alt_name, alt_name, func.offset))
else:
- table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.name))
+ table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.offset))
base_offset += len(n) + 3
@@ -170,7 +170,7 @@ typedef struct {
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(%5u, %s, %s, %s, %d),' % info
print ' NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)'
print '};'
diff --git a/src/mapi/glapi/gen/gl_table.py b/src/mapi/glapi/gen/gl_table.py
index 3bd7569e92..c7cb5a40a1 100644
--- a/src/mapi/glapi/gen/gl_table.py
+++ b/src/mapi/glapi/gen/gl_table.py
@@ -124,52 +124,54 @@ class PrintRemapTable(gl_XML.gl_print_base):
functions.append( [f, count] )
count += 1
else:
- abi_functions.append( f )
+ abi_functions.append( [f, -1] )
if self.es:
# remember functions with aliases
if len(f.entry_points) > 1:
alias_functions.append(f)
+ print '/* total number of offsets below */'
+ print '#define _gloffset_COUNT %d' % (len(abi_functions + functions))
+ print ''
- 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)
-
+ for f, index in abi_functions:
+ print '#define _gloffset_%s %d' % (f.name, f.offset)
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)
+ for f, index in functions:
+ print '#define _gloffset_%s %d' % (f.name, f.offset)
print ''
- print '#else'
+ print '#else /* !_GLAPI_USE_REMAP_TABLE */'
print ''
+
print '#define driDispatchRemapTable_size %u' % (count)
print 'extern int driDispatchRemapTable[ driDispatchRemapTable_size ];'
print ''
- for [f, index] in functions:
+ 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)
+ for f, index in functions:
+ print '#define _gloffset_%s driDispatchRemapTable[%s_remap_index]' % (f.name, f.name)
- 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 /* _GLAPI_USE_REMAP_TABLE */'
+ print ''
+ for f, index in abi_functions + functions:
+ arg_string = gl_XML.create_parameter_string( f.parameters, 0 )
+ cast = '%s (GLAPIENTRYP)(%s)' % (f.return_type, arg_string)
- print ''
- print '#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */'
+ print '#define CALL_%s(disp, parameters) CALL_by_offset(disp, (%s), _gloffset_%s, parameters)' % (f.name, cast, f.name)
+ print '#define GET_%s(disp) GET_by_offset(disp, _gloffset_%s)' % (f.name, f.name)
+ print '#define SET_%s(disp, fn) SET_by_offset(disp, _gloffset_%s, fn)' % (f.name, f.name)
if alias_functions:
print ''
diff --git a/src/mapi/glapi/gen/gl_x86_asm.py b/src/mapi/glapi/gen/gl_x86_asm.py
index 10dfa1ddb3..3b1d035f04 100644
--- a/src/mapi/glapi/gen/gl_x86_asm.py
+++ b/src/mapi/glapi/gen/gl_x86_asm.py
@@ -54,7 +54,6 @@ class PrintGenericStubs(gl_XML.gl_print_base):
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)'
@@ -215,7 +214,7 @@ class PrintGenericStubs(gl_XML.gl_print_base):
stack = self.get_stack_size(f)
alt = "%s@%u" % (name, stack)
- print '\tGL_STUB(%s, _gloffset_%s, %s)' % (name, f.name, alt)
+ print '\tGL_STUB(%s, %d, %s)' % (name, f.offset, alt)
if not f.is_static_entry_point(f.name):
print '\tHIDDEN(GL_PREFIX(%s, %s))' % (name, alt)
@@ -230,7 +229,7 @@ class PrintGenericStubs(gl_XML.gl_print_base):
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)
+ text = '\tGL_STUB_ALIAS(%s, %d, %s, %s, %s)' % (n, f.offset, alt2, name, alt)
if f.has_different_protocol(n):
print '#ifndef GLX_INDIRECT_RENDERING'
diff --git a/src/mapi/glapi/glapi_dispatch.c b/src/mapi/glapi/glapi_dispatch.c
index 7421a36d35..989f4a3fc3 100644
--- a/src/mapi/glapi/glapi_dispatch.c
+++ b/src/mapi/glapi/glapi_dispatch.c
@@ -39,7 +39,6 @@
#include "glapi/glapi_priv.h"
#include "glapi/glapitable.h"
-#include "glapi/glapidispatch.h"
#if !(defined(USE_X86_ASM) || defined(USE_X86_64_ASM) || defined(USE_SPARC_ASM))
@@ -63,19 +62,19 @@
#define F stdout
#define DISPATCH(FUNC, ARGS, MESSAGE) \
fprintf MESSAGE; \
- CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+ GET_DISPATCH()->FUNC ARGS
#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
fprintf MESSAGE; \
- return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+ return GET_DISPATCH()->FUNC ARGS
#else
#define DISPATCH(FUNC, ARGS, MESSAGE) \
- CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+ GET_DISPATCH()->FUNC ARGS
#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
- return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+ return GET_DISPATCH()->FUNC ARGS
#endif /* logging */
diff --git a/src/mapi/glapi/glapi_getproc.c b/src/mapi/glapi/glapi_getproc.c
index dc4905b64e..47a01176d5 100644
--- a/src/mapi/glapi/glapi_getproc.c
+++ b/src/mapi/glapi/glapi_getproc.c
@@ -32,7 +32,9 @@
#include "glapi/glapi_priv.h"
#include "glapi/glapitable.h"
-#include "glapi/glapioffsets.h"
+
+
+#define FIRST_DYNAMIC_OFFSET (sizeof(struct _glapi_table) / sizeof(void *))
/**********************************************************************
@@ -382,7 +384,7 @@ int
_glapi_add_dispatch( const char * const * function_names,
const char * parameter_signature )
{
- static int next_dynamic_offset = _gloffset_FIRST_DYNAMIC;
+ static int next_dynamic_offset = FIRST_DYNAMIC_OFFSET;
const char * const real_sig = (parameter_signature != NULL)
? parameter_signature : "";
struct _glapi_function * entry[8];
@@ -576,15 +578,6 @@ _glapi_get_proc_name(GLuint offset)
*/
-/*
- * 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).
@@ -592,7 +585,13 @@ _glapi_get_proc_name(GLuint offset)
GLuint
_glapi_get_dispatch_table_size(void)
{
- return DISPATCH_TABLE_SIZE;
+ /*
+ * 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.
+ */
+ return FIRST_DYNAMIC_OFFSET + MAX_EXTENSION_FUNCS;
}
@@ -628,56 +627,48 @@ _glapi_check_table(const struct _glapi_table *table)
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
diff --git a/src/mapi/glapi/glapi_sparc.S b/src/mapi/glapi/glapi_sparc.S
index 8fb631ec14..969769a310 100644
--- a/src/mapi/glapi/glapi_sparc.S
+++ b/src/mapi/glapi/glapi_sparc.S
@@ -26,8 +26,6 @@
* SOFTWARE.
*/
-#include "glapi/glapioffsets.h"
-
#ifdef __arch64__
#define GL_OFF(N) ((N) * 8)
#define GL_LL ldx
@@ -197,868 +195,922 @@ fn: ba __glapi_sparc_nothread_stub; \
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(glFramebufferTextureARB, _gloffset_FramebufferTextureARB)
- GL_STUB(glFramebufferTextureFaceARB, _gloffset_FramebufferTextureFaceARB)
- GL_STUB(glProgramParameteriARB, _gloffset_ProgramParameteriARB)
- 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(glBindTransformFeedback, _gloffset_BindTransformFeedback)
- GL_STUB(glDeleteTransformFeedbacks, _gloffset_DeleteTransformFeedbacks)
- GL_STUB(glDrawTransformFeedback, _gloffset_DrawTransformFeedback)
- GL_STUB(glGenTransformFeedbacks, _gloffset_GenTransformFeedbacks)
- GL_STUB(glIsTransformFeedback, _gloffset_IsTransformFeedback)
- GL_STUB(glPauseTransformFeedback, _gloffset_PauseTransformFeedback)
- GL_STUB(glResumeTransformFeedback, _gloffset_ResumeTransformFeedback)
- GL_STUB(glPolygonOffsetEXT, _gloffset_PolygonOffsetEXT)
- GL_STUB(gl_dispatch_stub_590, _gloffset_GetPixelTexGenParameterfvSGIS)
- HIDDEN(gl_dispatch_stub_590)
- GL_STUB(gl_dispatch_stub_591, _gloffset_GetPixelTexGenParameterivSGIS)
- HIDDEN(gl_dispatch_stub_591)
- GL_STUB(gl_dispatch_stub_592, _gloffset_PixelTexGenParameterfSGIS)
- HIDDEN(gl_dispatch_stub_592)
- GL_STUB(gl_dispatch_stub_593, _gloffset_PixelTexGenParameterfvSGIS)
- HIDDEN(gl_dispatch_stub_593)
- GL_STUB(gl_dispatch_stub_594, _gloffset_PixelTexGenParameteriSGIS)
- HIDDEN(gl_dispatch_stub_594)
- GL_STUB(gl_dispatch_stub_595, _gloffset_PixelTexGenParameterivSGIS)
- HIDDEN(gl_dispatch_stub_595)
- GL_STUB(gl_dispatch_stub_596, _gloffset_SampleMaskSGIS)
- HIDDEN(gl_dispatch_stub_596)
- GL_STUB(gl_dispatch_stub_597, _gloffset_SamplePatternSGIS)
- HIDDEN(gl_dispatch_stub_597)
- 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(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_632, _gloffset_PixelTexGenSGIX)
- HIDDEN(gl_dispatch_stub_632)
- 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_674, _gloffset_MultiModeDrawArraysIBM)
- HIDDEN(gl_dispatch_stub_674)
- GL_STUB(gl_dispatch_stub_675, _gloffset_MultiModeDrawElementsIBM)
- HIDDEN(gl_dispatch_stub_675)
- GL_STUB(gl_dispatch_stub_676, _gloffset_DeleteFencesNV)
- HIDDEN(gl_dispatch_stub_676)
- GL_STUB(gl_dispatch_stub_677, _gloffset_FinishFenceNV)
- HIDDEN(gl_dispatch_stub_677)
- GL_STUB(gl_dispatch_stub_678, _gloffset_GenFencesNV)
- HIDDEN(gl_dispatch_stub_678)
- GL_STUB(gl_dispatch_stub_679, _gloffset_GetFenceivNV)
- HIDDEN(gl_dispatch_stub_679)
- GL_STUB(gl_dispatch_stub_680, _gloffset_IsFenceNV)
- HIDDEN(gl_dispatch_stub_680)
- GL_STUB(gl_dispatch_stub_681, _gloffset_SetFenceNV)
- HIDDEN(gl_dispatch_stub_681)
- GL_STUB(gl_dispatch_stub_682, _gloffset_TestFenceNV)
- HIDDEN(gl_dispatch_stub_682)
- 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_763, _gloffset_ActiveStencilFaceEXT)
- HIDDEN(gl_dispatch_stub_763)
- GL_STUB(gl_dispatch_stub_764, _gloffset_BindVertexArrayAPPLE)
- HIDDEN(gl_dispatch_stub_764)
- GL_STUB(gl_dispatch_stub_765, _gloffset_DeleteVertexArraysAPPLE)
- HIDDEN(gl_dispatch_stub_765)
- GL_STUB(gl_dispatch_stub_766, _gloffset_GenVertexArraysAPPLE)
- HIDDEN(gl_dispatch_stub_766)
- GL_STUB(gl_dispatch_stub_767, _gloffset_IsVertexArrayAPPLE)
- HIDDEN(gl_dispatch_stub_767)
- 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(glPrimitiveRestartIndexNV, _gloffset_PrimitiveRestartIndexNV)
- GL_STUB(glPrimitiveRestartNV, _gloffset_PrimitiveRestartNV)
- GL_STUB(gl_dispatch_stub_776, _gloffset_DepthBoundsEXT)
+ GL_STUB(glNewList, 0)
+ GL_STUB(glEndList, 1)
+ GL_STUB(glCallList, 2)
+ GL_STUB(glCallLists, 3)
+ GL_STUB(glDeleteLists, 4)
+ GL_STUB(glGenLists, 5)
+ GL_STUB(glListBase, 6)
+ GL_STUB(glBegin, 7)
+ GL_STUB(glBitmap, 8)
+ GL_STUB(glColor3b, 9)
+ GL_STUB(glColor3bv, 10)
+ GL_STUB(glColor3d, 11)
+ GL_STUB(glColor3dv, 12)
+ GL_STUB(glColor3f, 13)
+ GL_STUB(glColor3fv, 14)
+ GL_STUB(glColor3i, 15)
+ GL_STUB(glColor3iv, 16)
+ GL_STUB(glColor3s, 17)
+ GL_STUB(glColor3sv, 18)
+ GL_STUB(glColor3ub, 19)
+ GL_STUB(glColor3ubv, 20)
+ GL_STUB(glColor3ui, 21)
+ GL_STUB(glColor3uiv, 22)
+ GL_STUB(glColor3us, 23)
+ GL_STUB(glColor3usv, 24)
+ GL_STUB(glColor4b, 25)
+ GL_STUB(glColor4bv, 26)
+ GL_STUB(glColor4d, 27)
+ GL_STUB(glColor4dv, 28)
+ GL_STUB(glColor4f, 29)
+ GL_STUB(glColor4fv, 30)
+ GL_STUB(glColor4i, 31)
+ GL_STUB(glColor4iv, 32)
+ GL_STUB(glColor4s, 33)
+ GL_STUB(glColor4sv, 34)
+ GL_STUB(glColor4ub, 35)
+ GL_STUB(glColor4ubv, 36)
+ GL_STUB(glColor4ui, 37)
+ GL_STUB(glColor4uiv, 38)
+ GL_STUB(glColor4us, 39)
+ GL_STUB(glColor4usv, 40)
+ GL_STUB(glEdgeFlag, 41)
+ GL_STUB(glEdgeFlagv, 42)
+ GL_STUB(glEnd, 43)
+ GL_STUB(glIndexd, 44)
+ GL_STUB(glIndexdv, 45)
+ GL_STUB(glIndexf, 46)
+ GL_STUB(glIndexfv, 47)
+ GL_STUB(glIndexi, 48)
+ GL_STUB(glIndexiv, 49)
+ GL_STUB(glIndexs, 50)
+ GL_STUB(glIndexsv, 51)
+ GL_STUB(glNormal3b, 52)
+ GL_STUB(glNormal3bv, 53)
+ GL_STUB(glNormal3d, 54)
+ GL_STUB(glNormal3dv, 55)
+ GL_STUB(glNormal3f, 56)
+ GL_STUB(glNormal3fv, 57)
+ GL_STUB(glNormal3i, 58)
+ GL_STUB(glNormal3iv, 59)
+ GL_STUB(glNormal3s, 60)
+ GL_STUB(glNormal3sv, 61)
+ GL_STUB(glRasterPos2d, 62)
+ GL_STUB(glRasterPos2dv, 63)
+ GL_STUB(glRasterPos2f, 64)
+ GL_STUB(glRasterPos2fv, 65)
+ GL_STUB(glRasterPos2i, 66)
+ GL_STUB(glRasterPos2iv, 67)
+ GL_STUB(glRasterPos2s, 68)
+ GL_STUB(glRasterPos2sv, 69)
+ GL_STUB(glRasterPos3d, 70)
+ GL_STUB(glRasterPos3dv, 71)
+ GL_STUB(glRasterPos3f, 72)
+ GL_STUB(glRasterPos3fv, 73)
+ GL_STUB(glRasterPos3i, 74)
+ GL_STUB(glRasterPos3iv, 75)
+ GL_STUB(glRasterPos3s, 76)
+ GL_STUB(glRasterPos3sv, 77)
+ GL_STUB(glRasterPos4d, 78)
+ GL_STUB(glRasterPos4dv, 79)
+ GL_STUB(glRasterPos4f, 80)
+ GL_STUB(glRasterPos4fv, 81)
+ GL_STUB(glRasterPos4i, 82)
+ GL_STUB(glRasterPos4iv, 83)
+ GL_STUB(glRasterPos4s, 84)
+ GL_STUB(glRasterPos4sv, 85)
+ GL_STUB(glRectd, 86)
+ GL_STUB(glRectdv, 87)
+ GL_STUB(glRectf, 88)
+ GL_STUB(glRectfv, 89)
+ GL_STUB(glRecti, 90)
+ GL_STUB(glRectiv, 91)
+ GL_STUB(glRects, 92)
+ GL_STUB(glRectsv, 93)
+ GL_STUB(glTexCoord1d, 94)
+ GL_STUB(glTexCoord1dv, 95)
+ GL_STUB(glTexCoord1f, 96)
+ GL_STUB(glTexCoord1fv, 97)
+ GL_STUB(glTexCoord1i, 98)
+ GL_STUB(glTexCoord1iv, 99)
+ GL_STUB(glTexCoord1s, 100)
+ GL_STUB(glTexCoord1sv, 101)
+ GL_STUB(glTexCoord2d, 102)
+ GL_STUB(glTexCoord2dv, 103)
+ GL_STUB(glTexCoord2f, 104)
+ GL_STUB(glTexCoord2fv, 105)
+ GL_STUB(glTexCoord2i, 106)
+ GL_STUB(glTexCoord2iv, 107)
+ GL_STUB(glTexCoord2s, 108)
+ GL_STUB(glTexCoord2sv, 109)
+ GL_STUB(glTexCoord3d, 110)
+ GL_STUB(glTexCoord3dv, 111)
+ GL_STUB(glTexCoord3f, 112)
+ GL_STUB(glTexCoord3fv, 113)
+ GL_STUB(glTexCoord3i, 114)
+ GL_STUB(glTexCoord3iv, 115)
+ GL_STUB(glTexCoord3s, 116)
+ GL_STUB(glTexCoord3sv, 117)
+ GL_STUB(glTexCoord4d, 118)
+ GL_STUB(glTexCoord4dv, 119)
+ GL_STUB(glTexCoord4f, 120)
+ GL_STUB(glTexCoord4fv, 121)
+ GL_STUB(glTexCoord4i, 122)
+ GL_STUB(glTexCoord4iv, 123)
+ GL_STUB(glTexCoord4s, 124)
+ GL_STUB(glTexCoord4sv, 125)
+ GL_STUB(glVertex2d, 126)
+ GL_STUB(glVertex2dv, 127)
+ GL_STUB(glVertex2f, 128)
+ GL_STUB(glVertex2fv, 129)
+ GL_STUB(glVertex2i, 130)
+ GL_STUB(glVertex2iv, 131)
+ GL_STUB(glVertex2s, 132)
+ GL_STUB(glVertex2sv, 133)
+ GL_STUB(glVertex3d, 134)
+ GL_STUB(glVertex3dv, 135)
+ GL_STUB(glVertex3f, 136)
+ GL_STUB(glVertex3fv, 137)
+ GL_STUB(glVertex3i, 138)
+ GL_STUB(glVertex3iv, 139)
+ GL_STUB(glVertex3s, 140)
+ GL_STUB(glVertex3sv, 141)
+ GL_STUB(glVertex4d, 142)
+ GL_STUB(glVertex4dv, 143)
+ GL_STUB(glVertex4f, 144)
+ GL_STUB(glVertex4fv, 145)
+ GL_STUB(glVertex4i, 146)
+ GL_STUB(glVertex4iv, 147)
+ GL_STUB(glVertex4s, 148)
+ GL_STUB(glVertex4sv, 149)
+ GL_STUB(glClipPlane, 150)
+ GL_STUB(glColorMaterial, 151)
+ GL_STUB(glCullFace, 152)
+ GL_STUB(glFogf, 153)
+ GL_STUB(glFogfv, 154)
+ GL_STUB(glFogi, 155)
+ GL_STUB(glFogiv, 156)
+ GL_STUB(glFrontFace, 157)
+ GL_STUB(glHint, 158)
+ GL_STUB(glLightf, 159)
+ GL_STUB(glLightfv, 160)
+ GL_STUB(glLighti, 161)
+ GL_STUB(glLightiv, 162)
+ GL_STUB(glLightModelf, 163)
+ GL_STUB(glLightModelfv, 164)
+ GL_STUB(glLightModeli, 165)
+ GL_STUB(glLightModeliv, 166)
+ GL_STUB(glLineStipple, 167)
+ GL_STUB(glLineWidth, 168)
+ GL_STUB(glMaterialf, 169)
+ GL_STUB(glMaterialfv, 170)
+ GL_STUB(glMateriali, 171)
+ GL_STUB(glMaterialiv, 172)
+ GL_STUB(glPointSize, 173)
+ GL_STUB(glPolygonMode, 174)
+ GL_STUB(glPolygonStipple, 175)
+ GL_STUB(glScissor, 176)
+ GL_STUB(glShadeModel, 177)
+ GL_STUB(glTexParameterf, 178)
+ GL_STUB(glTexParameterfv, 179)
+ GL_STUB(glTexParameteri, 180)
+ GL_STUB(glTexParameteriv, 181)
+ GL_STUB(glTexImage1D, 182)
+ GL_STUB(glTexImage2D, 183)
+ GL_STUB(glTexEnvf, 184)
+ GL_STUB(glTexEnvfv, 185)
+ GL_STUB(glTexEnvi, 186)
+ GL_STUB(glTexEnviv, 187)
+ GL_STUB(glTexGend, 188)
+ GL_STUB(glTexGendv, 189)
+ GL_STUB(glTexGenf, 190)
+ GL_STUB(glTexGenfv, 191)
+ GL_STUB(glTexGeni, 192)
+ GL_STUB(glTexGeniv, 193)
+ GL_STUB(glFeedbackBuffer, 194)
+ GL_STUB(glSelectBuffer, 195)
+ GL_STUB(glRenderMode, 196)
+ GL_STUB(glInitNames, 197)
+ GL_STUB(glLoadName, 198)
+ GL_STUB(glPassThrough, 199)
+ GL_STUB(glPopName, 200)
+ GL_STUB(glPushName, 201)
+ GL_STUB(glDrawBuffer, 202)
+ GL_STUB(glClear, 203)
+ GL_STUB(glClearAccum, 204)
+ GL_STUB(glClearIndex, 205)
+ GL_STUB(glClearColor, 206)
+ GL_STUB(glClearStencil, 207)
+ GL_STUB(glClearDepth, 208)
+ GL_STUB(glStencilMask, 209)
+ GL_STUB(glColorMask, 210)
+ GL_STUB(glDepthMask, 211)
+ GL_STUB(glIndexMask, 212)
+ GL_STUB(glAccum, 213)
+ GL_STUB(glDisable, 214)
+ GL_STUB(glEnable, 215)
+ GL_STUB(glFinish, 216)
+ GL_STUB(glFlush, 217)
+ GL_STUB(glPopAttrib, 218)
+ GL_STUB(glPushAttrib, 219)
+ GL_STUB(glMap1d, 220)
+ GL_STUB(glMap1f, 221)
+ GL_STUB(glMap2d, 222)
+ GL_STUB(glMap2f, 223)
+ GL_STUB(glMapGrid1d, 224)
+ GL_STUB(glMapGrid1f, 225)
+ GL_STUB(glMapGrid2d, 226)
+ GL_STUB(glMapGrid2f, 227)
+ GL_STUB(glEvalCoord1d, 228)
+ GL_STUB(glEvalCoord1dv, 229)
+ GL_STUB(glEvalCoord1f, 230)
+ GL_STUB(glEvalCoord1fv, 231)
+ GL_STUB(glEvalCoord2d, 232)
+ GL_STUB(glEvalCoord2dv, 233)
+ GL_STUB(glEvalCoord2f, 234)
+ GL_STUB(glEvalCoord2fv, 235)
+ GL_STUB(glEvalMesh1, 236)
+ GL_STUB(glEvalPoint1, 237)
+ GL_STUB(glEvalMesh2, 238)
+ GL_STUB(glEvalPoint2, 239)
+ GL_STUB(glAlphaFunc, 240)
+ GL_STUB(glBlendFunc, 241)
+ GL_STUB(glLogicOp, 242)
+ GL_STUB(glStencilFunc, 243)
+ GL_STUB(glStencilOp, 244)
+ GL_STUB(glDepthFunc, 245)
+ GL_STUB(glPixelZoom, 246)
+ GL_STUB(glPixelTransferf, 247)
+ GL_STUB(glPixelTransferi, 248)
+ GL_STUB(glPixelStoref, 249)
+ GL_STUB(glPixelStorei, 250)
+ GL_STUB(glPixelMapfv, 251)
+ GL_STUB(glPixelMapuiv, 252)
+ GL_STUB(glPixelMapusv, 253)
+ GL_STUB(glReadBuffer, 254)
+ GL_STUB(glCopyPixels, 255)
+ GL_STUB(glReadPixels, 256)
+ GL_STUB(glDrawPixels, 257)
+ GL_STUB(glGetBooleanv, 258)
+ GL_STUB(glGetClipPlane, 259)
+ GL_STUB(glGetDoublev, 260)
+ GL_STUB(glGetError, 261)
+ GL_STUB(glGetFloatv, 262)
+ GL_STUB(glGetIntegerv, 263)
+ GL_STUB(glGetLightfv, 264)
+ GL_STUB(glGetLightiv, 265)
+ GL_STUB(glGetMapdv, 266)
+ GL_STUB(glGetMapfv, 267)
+ GL_STUB(glGetMapiv, 268)
+ GL_STUB(glGetMaterialfv, 269)
+ GL_STUB(glGetMaterialiv, 270)
+ GL_STUB(glGetPixelMapfv, 271)
+ GL_STUB(glGetPixelMapuiv, 272)
+ GL_STUB(glGetPixelMapusv, 273)
+ GL_STUB(glGetPolygonStipple, 274)
+ GL_STUB(glGetString, 275)
+ GL_STUB(glGetTexEnvfv, 276)
+ GL_STUB(glGetTexEnviv, 277)
+ GL_STUB(glGetTexGendv, 278)
+ GL_STUB(glGetTexGenfv, 279)
+ GL_STUB(glGetTexGeniv, 280)
+ GL_STUB(glGetTexImage, 281)
+ GL_STUB(glGetTexParameterfv, 282)
+ GL_STUB(glGetTexParameteriv, 283)
+ GL_STUB(glGetTexLevelParameterfv, 284)
+ GL_STUB(glGetTexLevelParameteriv, 285)
+ GL_STUB(glIsEnabled, 286)
+ GL_STUB(glIsList, 287)
+ GL_STUB(glDepthRange, 288)
+ GL_STUB(glFrustum, 289)
+ GL_STUB(glLoadIdentity, 290)
+ GL_STUB(glLoadMatrixf, 291)
+ GL_STUB(glLoadMatrixd, 292)
+ GL_STUB(glMatrixMode, 293)
+ GL_STUB(glMultMatrixf, 294)
+ GL_STUB(glMultMatrixd, 295)
+ GL_STUB(glOrtho, 296)
+ GL_STUB(glPopMatrix, 297)
+ GL_STUB(glPushMatrix, 298)
+ GL_STUB(glRotated, 299)
+ GL_STUB(glRotatef, 300)
+ GL_STUB(glScaled, 301)
+ GL_STUB(glScalef, 302)
+ GL_STUB(glTranslated, 303)
+ GL_STUB(glTranslatef, 304)
+ GL_STUB(glViewport, 305)
+ GL_STUB(glArrayElement, 306)
+ GL_STUB(glBindTexture, 307)
+ GL_STUB(glColorPointer, 308)
+ GL_STUB(glDisableClientState, 309)
+ GL_STUB(glDrawArrays, 310)
+ GL_STUB(glDrawElements, 311)
+ GL_STUB(glEdgeFlagPointer, 312)
+ GL_STUB(glEnableClientState, 313)
+ GL_STUB(glIndexPointer, 314)
+ GL_STUB(glIndexub, 315)
+ GL_STUB(glIndexubv, 316)
+ GL_STUB(glInterleavedArrays, 317)
+ GL_STUB(glNormalPointer, 318)
+ GL_STUB(glPolygonOffset, 319)
+ GL_STUB(glTexCoordPointer, 320)
+ GL_STUB(glVertexPointer, 321)
+ GL_STUB(glAreTexturesResident, 322)
+ GL_STUB(glCopyTexImage1D, 323)
+ GL_STUB(glCopyTexImage2D, 324)
+ GL_STUB(glCopyTexSubImage1D, 325)
+ GL_STUB(glCopyTexSubImage2D, 326)
+ GL_STUB(glDeleteTextures, 327)
+ GL_STUB(glGenTextures, 328)
+ GL_STUB(glGetPointerv, 329)
+ GL_STUB(glIsTexture, 330)
+ GL_STUB(glPrioritizeTextures, 331)
+ GL_STUB(glTexSubImage1D, 332)
+ GL_STUB(glTexSubImage2D, 333)
+ GL_STUB(glPopClientAttrib, 334)
+ GL_STUB(glPushClientAttrib, 335)
+ GL_STUB(glBlendColor, 336)
+ GL_STUB(glBlendEquation, 337)
+ GL_STUB(glDrawRangeElements, 338)
+ GL_STUB(glColorTable, 339)
+ GL_STUB(glColorTableParameterfv, 340)
+ GL_STUB(glColorTableParameteriv, 341)
+ GL_STUB(glCopyColorTable, 342)
+ GL_STUB(glGetColorTable, 343)
+ GL_STUB(glGetColorTableParameterfv, 344)
+ GL_STUB(glGetColorTableParameteriv, 345)
+ GL_STUB(glColorSubTable, 346)
+ GL_STUB(glCopyColorSubTable, 347)
+ GL_STUB(glConvolutionFilter1D, 348)
+ GL_STUB(glConvolutionFilter2D, 349)
+ GL_STUB(glConvolutionParameterf, 350)
+ GL_STUB(glConvolutionParameterfv, 351)
+ GL_STUB(glConvolutionParameteri, 352)
+ GL_STUB(glConvolutionParameteriv, 353)
+ GL_STUB(glCopyConvolutionFilter1D, 354)
+ GL_STUB(glCopyConvolutionFilter2D, 355)
+ GL_STUB(glGetConvolutionFilter, 356)
+ GL_STUB(glGetConvolutionParameterfv, 357)
+ GL_STUB(glGetConvolutionParameteriv, 358)
+ GL_STUB(glGetSeparableFilter, 359)
+ GL_STUB(glSeparableFilter2D, 360)
+ GL_STUB(glGetHistogram, 361)
+ GL_STUB(glGetHistogramParameterfv, 362)
+ GL_STUB(glGetHistogramParameteriv, 363)
+ GL_STUB(glGetMinmax, 364)
+ GL_STUB(glGetMinmaxParameterfv, 365)
+ GL_STUB(glGetMinmaxParameteriv, 366)
+ GL_STUB(glHistogram, 367)
+ GL_STUB(glMinmax, 368)
+ GL_STUB(glResetHistogram, 369)
+ GL_STUB(glResetMinmax, 370)
+ GL_STUB(glTexImage3D, 371)
+ GL_STUB(glTexSubImage3D, 372)
+ GL_STUB(glCopyTexSubImage3D, 373)
+ GL_STUB(glActiveTextureARB, 374)
+ GL_STUB(glClientActiveTextureARB, 375)
+ GL_STUB(glMultiTexCoord1dARB, 376)
+ GL_STUB(glMultiTexCoord1dvARB, 377)
+ GL_STUB(glMultiTexCoord1fARB, 378)
+ GL_STUB(glMultiTexCoord1fvARB, 379)
+ GL_STUB(glMultiTexCoord1iARB, 380)
+ GL_STUB(glMultiTexCoord1ivARB, 381)
+ GL_STUB(glMultiTexCoord1sARB, 382)
+ GL_STUB(glMultiTexCoord1svARB, 383)
+ GL_STUB(glMultiTexCoord2dARB, 384)
+ GL_STUB(glMultiTexCoord2dvARB, 385)
+ GL_STUB(glMultiTexCoord2fARB, 386)
+ GL_STUB(glMultiTexCoord2fvARB, 387)
+ GL_STUB(glMultiTexCoord2iARB, 388)
+ GL_STUB(glMultiTexCoord2ivARB, 389)
+ GL_STUB(glMultiTexCoord2sARB, 390)
+ GL_STUB(glMultiTexCoord2svARB, 391)
+ GL_STUB(glMultiTexCoord3dARB, 392)
+ GL_STUB(glMultiTexCoord3dvARB, 393)
+ GL_STUB(glMultiTexCoord3fARB, 394)
+ GL_STUB(glMultiTexCoord3fvARB, 395)
+ GL_STUB(glMultiTexCoord3iARB, 396)
+ GL_STUB(glMultiTexCoord3ivARB, 397)
+ GL_STUB(glMultiTexCoord3sARB, 398)
+ GL_STUB(glMultiTexCoord3svARB, 399)
+ GL_STUB(glMultiTexCoord4dARB, 400)
+ GL_STUB(glMultiTexCoord4dvARB, 401)
+ GL_STUB(glMultiTexCoord4fARB, 402)
+ GL_STUB(glMultiTexCoord4fvARB, 403)
+ GL_STUB(glMultiTexCoord4iARB, 404)
+ GL_STUB(glMultiTexCoord4ivARB, 405)
+ GL_STUB(glMultiTexCoord4sARB, 406)
+ GL_STUB(glMultiTexCoord4svARB, 407)
+ GL_STUB(glAttachShader, 408)
+ GL_STUB(glCreateProgram, 409)
+ GL_STUB(glCreateShader, 410)
+ GL_STUB(glDeleteProgram, 411)
+ GL_STUB(glDeleteShader, 412)
+ GL_STUB(glDetachShader, 413)
+ GL_STUB(glGetAttachedShaders, 414)
+ GL_STUB(glGetProgramInfoLog, 415)
+ GL_STUB(glGetProgramiv, 416)
+ GL_STUB(glGetShaderInfoLog, 417)
+ GL_STUB(glGetShaderiv, 418)
+ GL_STUB(glIsProgram, 419)
+ GL_STUB(glIsShader, 420)
+ GL_STUB(glStencilFuncSeparate, 421)
+ GL_STUB(glStencilMaskSeparate, 422)
+ GL_STUB(glStencilOpSeparate, 423)
+ GL_STUB(glUniformMatrix2x3fv, 424)
+ GL_STUB(glUniformMatrix2x4fv, 425)
+ GL_STUB(glUniformMatrix3x2fv, 426)
+ GL_STUB(glUniformMatrix3x4fv, 427)
+ GL_STUB(glUniformMatrix4x2fv, 428)
+ GL_STUB(glUniformMatrix4x3fv, 429)
+ GL_STUB(glClampColor, 430)
+ GL_STUB(glClearBufferfi, 431)
+ GL_STUB(glClearBufferfv, 432)
+ GL_STUB(glClearBufferiv, 433)
+ GL_STUB(glClearBufferuiv, 434)
+ GL_STUB(glGetStringi, 435)
+ GL_STUB(glTexBuffer, 436)
+ GL_STUB(glFramebufferTexture, 437)
+ GL_STUB(glGetBufferParameteri64v, 438)
+ GL_STUB(glGetInteger64i_v, 439)
+ GL_STUB(glVertexAttribDivisor, 440)
+ GL_STUB(glLoadTransposeMatrixdARB, 441)
+ GL_STUB(glLoadTransposeMatrixfARB, 442)
+ GL_STUB(glMultTransposeMatrixdARB, 443)
+ GL_STUB(glMultTransposeMatrixfARB, 444)
+ GL_STUB(glSampleCoverageARB, 445)
+ GL_STUB(glCompressedTexImage1DARB, 446)
+ GL_STUB(glCompressedTexImage2DARB, 447)
+ GL_STUB(glCompressedTexImage3DARB, 448)
+ GL_STUB(glCompressedTexSubImage1DARB, 449)
+ GL_STUB(glCompressedTexSubImage2DARB, 450)
+ GL_STUB(glCompressedTexSubImage3DARB, 451)
+ GL_STUB(glGetCompressedTexImageARB, 452)
+ GL_STUB(glDisableVertexAttribArrayARB, 453)
+ GL_STUB(glEnableVertexAttribArrayARB, 454)
+ GL_STUB(glGetProgramEnvParameterdvARB, 455)
+ GL_STUB(glGetProgramEnvParameterfvARB, 456)
+ GL_STUB(glGetProgramLocalParameterdvARB, 457)
+ GL_STUB(glGetProgramLocalParameterfvARB, 458)
+ GL_STUB(glGetProgramStringARB, 459)
+ GL_STUB(glGetProgramivARB, 460)
+ GL_STUB(glGetVertexAttribdvARB, 461)
+ GL_STUB(glGetVertexAttribfvARB, 462)
+ GL_STUB(glGetVertexAttribivARB, 463)
+ GL_STUB(glProgramEnvParameter4dARB, 464)
+ GL_STUB(glProgramEnvParameter4dvARB, 465)
+ GL_STUB(glProgramEnvParameter4fARB, 466)
+ GL_STUB(glProgramEnvParameter4fvARB, 467)
+ GL_STUB(glProgramLocalParameter4dARB, 468)
+ GL_STUB(glProgramLocalParameter4dvARB, 469)
+ GL_STUB(glProgramLocalParameter4fARB, 470)
+ GL_STUB(glProgramLocalParameter4fvARB, 471)
+ GL_STUB(glProgramStringARB, 472)
+ GL_STUB(glVertexAttrib1dARB, 473)
+ GL_STUB(glVertexAttrib1dvARB, 474)
+ GL_STUB(glVertexAttrib1fARB, 475)
+ GL_STUB(glVertexAttrib1fvARB, 476)
+ GL_STUB(glVertexAttrib1sARB, 477)
+ GL_STUB(glVertexAttrib1svARB, 478)
+ GL_STUB(glVertexAttrib2dARB, 479)
+ GL_STUB(glVertexAttrib2dvARB, 480)
+ GL_STUB(glVertexAttrib2fARB, 481)
+ GL_STUB(glVertexAttrib2fvARB, 482)
+ GL_STUB(glVertexAttrib2sARB, 483)
+ GL_STUB(glVertexAttrib2svARB, 484)
+ GL_STUB(glVertexAttrib3dARB, 485)
+ GL_STUB(glVertexAttrib3dvARB, 486)
+ GL_STUB(glVertexAttrib3fARB, 487)
+ GL_STUB(glVertexAttrib3fvARB, 488)
+ GL_STUB(glVertexAttrib3sARB, 489)
+ GL_STUB(glVertexAttrib3svARB, 490)
+ GL_STUB(glVertexAttrib4NbvARB, 491)
+ GL_STUB(glVertexAttrib4NivARB, 492)
+ GL_STUB(glVertexAttrib4NsvARB, 493)
+ GL_STUB(glVertexAttrib4NubARB, 494)
+ GL_STUB(glVertexAttrib4NubvARB, 495)
+ GL_STUB(glVertexAttrib4NuivARB, 496)
+ GL_STUB(glVertexAttrib4NusvARB, 497)
+ GL_STUB(glVertexAttrib4bvARB, 498)
+ GL_STUB(glVertexAttrib4dARB, 499)
+ GL_STUB(glVertexAttrib4dvARB, 500)
+ GL_STUB(glVertexAttrib4fARB, 501)
+ GL_STUB(glVertexAttrib4fvARB, 502)
+ GL_STUB(glVertexAttrib4ivARB, 503)
+ GL_STUB(glVertexAttrib4sARB, 504)
+ GL_STUB(glVertexAttrib4svARB, 505)
+ GL_STUB(glVertexAttrib4ubvARB, 506)
+ GL_STUB(glVertexAttrib4uivARB, 507)
+ GL_STUB(glVertexAttrib4usvARB, 508)
+ GL_STUB(glVertexAttribPointerARB, 509)
+ GL_STUB(glBindBufferARB, 510)
+ GL_STUB(glBufferDataARB, 511)
+ GL_STUB(glBufferSubDataARB, 512)
+ GL_STUB(glDeleteBuffersARB, 513)
+ GL_STUB(glGenBuffersARB, 514)
+ GL_STUB(glGetBufferParameterivARB, 515)
+ GL_STUB(glGetBufferPointervARB, 516)
+ GL_STUB(glGetBufferSubDataARB, 517)
+ GL_STUB(glIsBufferARB, 518)
+ GL_STUB(glMapBufferARB, 519)
+ GL_STUB(glUnmapBufferARB, 520)
+ GL_STUB(glBeginQueryARB, 521)
+ GL_STUB(glDeleteQueriesARB, 522)
+ GL_STUB(glEndQueryARB, 523)
+ GL_STUB(glGenQueriesARB, 524)
+ GL_STUB(glGetQueryObjectivARB, 525)
+ GL_STUB(glGetQueryObjectuivARB, 526)
+ GL_STUB(glGetQueryivARB, 527)
+ GL_STUB(glIsQueryARB, 528)
+ GL_STUB(glAttachObjectARB, 529)
+ GL_STUB(glCompileShaderARB, 530)
+ GL_STUB(glCreateProgramObjectARB, 531)
+ GL_STUB(glCreateShaderObjectARB, 532)
+ GL_STUB(glDeleteObjectARB, 533)
+ GL_STUB(glDetachObjectARB, 534)
+ GL_STUB(glGetActiveUniformARB, 535)
+ GL_STUB(glGetAttachedObjectsARB, 536)
+ GL_STUB(glGetHandleARB, 537)
+ GL_STUB(glGetInfoLogARB, 538)
+ GL_STUB(glGetObjectParameterfvARB, 539)
+ GL_STUB(glGetObjectParameterivARB, 540)
+ GL_STUB(glGetShaderSourceARB, 541)
+ GL_STUB(glGetUniformLocationARB, 542)
+ GL_STUB(glGetUniformfvARB, 543)
+ GL_STUB(glGetUniformivARB, 544)
+ GL_STUB(glLinkProgramARB, 545)
+ GL_STUB(glShaderSourceARB, 546)
+ GL_STUB(glUniform1fARB, 547)
+ GL_STUB(glUniform1fvARB, 548)
+ GL_STUB(glUniform1iARB, 549)
+ GL_STUB(glUniform1ivARB, 550)
+ GL_STUB(glUniform2fARB, 551)
+ GL_STUB(glUniform2fvARB, 552)
+ GL_STUB(glUniform2iARB, 553)
+ GL_STUB(glUniform2ivARB, 554)
+ GL_STUB(glUniform3fARB, 555)
+ GL_STUB(glUniform3fvARB, 556)
+ GL_STUB(glUniform3iARB, 557)
+ GL_STUB(glUniform3ivARB, 558)
+ GL_STUB(glUniform4fARB, 559)
+ GL_STUB(glUniform4fvARB, 560)
+ GL_STUB(glUniform4iARB, 561)
+ GL_STUB(glUniform4ivARB, 562)
+ GL_STUB(glUniformMatrix2fvARB, 563)
+ GL_STUB(glUniformMatrix3fvARB, 564)
+ GL_STUB(glUniformMatrix4fvARB, 565)
+ GL_STUB(glUseProgramObjectARB, 566)
+ GL_STUB(glValidateProgramARB, 567)
+ GL_STUB(glBindAttribLocationARB, 568)
+ GL_STUB(glGetActiveAttribARB, 569)
+ GL_STUB(glGetAttribLocationARB, 570)
+ GL_STUB(glDrawBuffersARB, 571)
+ GL_STUB(glDrawArraysInstancedARB, 572)
+ GL_STUB(glDrawElementsInstancedARB, 573)
+ GL_STUB(glRenderbufferStorageMultisample, 574)
+ GL_STUB(glFramebufferTextureARB, 575)
+ GL_STUB(glFramebufferTextureFaceARB, 576)
+ GL_STUB(glProgramParameteriARB, 577)
+ GL_STUB(glFlushMappedBufferRange, 578)
+ GL_STUB(glMapBufferRange, 579)
+ GL_STUB(glBindVertexArray, 580)
+ GL_STUB(glGenVertexArrays, 581)
+ GL_STUB(glCopyBufferSubData, 582)
+ GL_STUB(glClientWaitSync, 583)
+ GL_STUB(glDeleteSync, 584)
+ GL_STUB(glFenceSync, 585)
+ GL_STUB(glGetInteger64v, 586)
+ GL_STUB(glGetSynciv, 587)
+ GL_STUB(glIsSync, 588)
+ GL_STUB(glWaitSync, 589)
+ GL_STUB(glDrawElementsBaseVertex, 590)
+ GL_STUB(glDrawRangeElementsBaseVertex, 591)
+ GL_STUB(glMultiDrawElementsBaseVertex, 592)
+ GL_STUB(glBindTransformFeedback, 593)
+ GL_STUB(glDeleteTransformFeedbacks, 594)
+ GL_STUB(glDrawTransformFeedback, 595)
+ GL_STUB(glGenTransformFeedbacks, 596)
+ GL_STUB(glIsTransformFeedback, 597)
+ GL_STUB(glPauseTransformFeedback, 598)
+ GL_STUB(glResumeTransformFeedback, 599)
+ GL_STUB(glPolygonOffsetEXT, 600)
+ GL_STUB(gl_dispatch_stub_601, 601)
+ HIDDEN(gl_dispatch_stub_601)
+ GL_STUB(gl_dispatch_stub_602, 602)
+ HIDDEN(gl_dispatch_stub_602)
+ GL_STUB(gl_dispatch_stub_603, 603)
+ HIDDEN(gl_dispatch_stub_603)
+ GL_STUB(gl_dispatch_stub_604, 604)
+ HIDDEN(gl_dispatch_stub_604)
+ GL_STUB(gl_dispatch_stub_605, 605)
+ HIDDEN(gl_dispatch_stub_605)
+ GL_STUB(gl_dispatch_stub_606, 606)
+ HIDDEN(gl_dispatch_stub_606)
+ GL_STUB(gl_dispatch_stub_607, 607)
+ HIDDEN(gl_dispatch_stub_607)
+ GL_STUB(gl_dispatch_stub_608, 608)
+ HIDDEN(gl_dispatch_stub_608)
+ GL_STUB(glColorPointerEXT, 609)
+ GL_STUB(glEdgeFlagPointerEXT, 610)
+ GL_STUB(glIndexPointerEXT, 611)
+ GL_STUB(glNormalPointerEXT, 612)
+ GL_STUB(glTexCoordPointerEXT, 613)
+ GL_STUB(glVertexPointerEXT, 614)
+ GL_STUB(glPointParameterfEXT, 615)
+ GL_STUB(glPointParameterfvEXT, 616)
+ GL_STUB(glLockArraysEXT, 617)
+ GL_STUB(glUnlockArraysEXT, 618)
+ GL_STUB(glSecondaryColor3bEXT, 619)
+ GL_STUB(glSecondaryColor3bvEXT, 620)
+ GL_STUB(glSecondaryColor3dEXT, 621)
+ GL_STUB(glSecondaryColor3dvEXT, 622)
+ GL_STUB(glSecondaryColor3fEXT, 623)
+ GL_STUB(glSecondaryColor3fvEXT, 624)
+ GL_STUB(glSecondaryColor3iEXT, 625)
+ GL_STUB(glSecondaryColor3ivEXT, 626)
+ GL_STUB(glSecondaryColor3sEXT, 627)
+ GL_STUB(glSecondaryColor3svEXT, 628)
+ GL_STUB(glSecondaryColor3ubEXT, 629)
+ GL_STUB(glSecondaryColor3ubvEXT, 630)
+ GL_STUB(glSecondaryColor3uiEXT, 631)
+ GL_STUB(glSecondaryColor3uivEXT, 632)
+ GL_STUB(glSecondaryColor3usEXT, 633)
+ GL_STUB(glSecondaryColor3usvEXT, 634)
+ GL_STUB(glSecondaryColorPointerEXT, 635)
+ GL_STUB(glMultiDrawArraysEXT, 636)
+ GL_STUB(glMultiDrawElementsEXT, 637)
+ GL_STUB(glFogCoordPointerEXT, 638)
+ GL_STUB(glFogCoorddEXT, 639)
+ GL_STUB(glFogCoorddvEXT, 640)
+ GL_STUB(glFogCoordfEXT, 641)
+ GL_STUB(glFogCoordfvEXT, 642)
+ GL_STUB(gl_dispatch_stub_643, 643)
+ HIDDEN(gl_dispatch_stub_643)
+ GL_STUB(glBlendFuncSeparateEXT, 644)
+ GL_STUB(glFlushVertexArrayRangeNV, 645)
+ GL_STUB(glVertexArrayRangeNV, 646)
+ GL_STUB(glCombinerInputNV, 647)
+ GL_STUB(glCombinerOutputNV, 648)
+ GL_STUB(glCombinerParameterfNV, 649)
+ GL_STUB(glCombinerParameterfvNV, 650)
+ GL_STUB(glCombinerParameteriNV, 651)
+ GL_STUB(glCombinerParameterivNV, 652)
+ GL_STUB(glFinalCombinerInputNV, 653)
+ GL_STUB(glGetCombinerInputParameterfvNV, 654)
+ GL_STUB(glGetCombinerInputParameterivNV, 655)
+ GL_STUB(glGetCombinerOutputParameterfvNV, 656)
+ GL_STUB(glGetCombinerOutputParameterivNV, 657)
+ GL_STUB(glGetFinalCombinerInputParameterfvNV, 658)
+ GL_STUB(glGetFinalCombinerInputParameterivNV, 659)
+ GL_STUB(glResizeBuffersMESA, 660)
+ GL_STUB(glWindowPos2dMESA, 661)
+ GL_STUB(glWindowPos2dvMESA, 662)
+ GL_STUB(glWindowPos2fMESA, 663)
+ GL_STUB(glWindowPos2fvMESA, 664)
+ GL_STUB(glWindowPos2iMESA, 665)
+ GL_STUB(glWindowPos2ivMESA, 666)
+ GL_STUB(glWindowPos2sMESA, 667)
+ GL_STUB(glWindowPos2svMESA, 668)
+ GL_STUB(glWindowPos3dMESA, 669)
+ GL_STUB(glWindowPos3dvMESA, 670)
+ GL_STUB(glWindowPos3fMESA, 671)
+ GL_STUB(glWindowPos3fvMESA, 672)
+ GL_STUB(glWindowPos3iMESA, 673)
+ GL_STUB(glWindowPos3ivMESA, 674)
+ GL_STUB(glWindowPos3sMESA, 675)
+ GL_STUB(glWindowPos3svMESA, 676)
+ GL_STUB(glWindowPos4dMESA, 677)
+ GL_STUB(glWindowPos4dvMESA, 678)
+ GL_STUB(glWindowPos4fMESA, 679)
+ GL_STUB(glWindowPos4fvMESA, 680)
+ GL_STUB(glWindowPos4iMESA, 681)
+ GL_STUB(glWindowPos4ivMESA, 682)
+ GL_STUB(glWindowPos4sMESA, 683)
+ GL_STUB(glWindowPos4svMESA, 684)
+ GL_STUB(gl_dispatch_stub_685, 685)
+ HIDDEN(gl_dispatch_stub_685)
+ GL_STUB(gl_dispatch_stub_686, 686)
+ HIDDEN(gl_dispatch_stub_686)
+ GL_STUB(gl_dispatch_stub_687, 687)
+ HIDDEN(gl_dispatch_stub_687)
+ GL_STUB(gl_dispatch_stub_688, 688)
+ HIDDEN(gl_dispatch_stub_688)
+ GL_STUB(gl_dispatch_stub_689, 689)
+ HIDDEN(gl_dispatch_stub_689)
+ GL_STUB(gl_dispatch_stub_690, 690)
+ HIDDEN(gl_dispatch_stub_690)
+ GL_STUB(gl_dispatch_stub_691, 691)
+ HIDDEN(gl_dispatch_stub_691)
+ GL_STUB(gl_dispatch_stub_692, 692)
+ HIDDEN(gl_dispatch_stub_692)
+ GL_STUB(gl_dispatch_stub_693, 693)
+ HIDDEN(gl_dispatch_stub_693)
+ GL_STUB(glAreProgramsResidentNV, 694)
+ GL_STUB(glBindProgramNV, 695)
+ GL_STUB(glDeleteProgramsNV, 696)
+ GL_STUB(glExecuteProgramNV, 697)
+ GL_STUB(glGenProgramsNV, 698)
+ GL_STUB(glGetProgramParameterdvNV, 699)
+ GL_STUB(glGetProgramParameterfvNV, 700)
+ GL_STUB(glGetProgramStringNV, 701)
+ GL_STUB(glGetProgramivNV, 702)
+ GL_STUB(glGetTrackMatrixivNV, 703)
+ GL_STUB(glGetVertexAttribPointervNV, 704)
+ GL_STUB(glGetVertexAttribdvNV, 705)
+ GL_STUB(glGetVertexAttribfvNV, 706)
+ GL_STUB(glGetVertexAttribivNV, 707)
+ GL_STUB(glIsProgramNV, 708)
+ GL_STUB(glLoadProgramNV, 709)
+ GL_STUB(glProgramParameters4dvNV, 710)
+ GL_STUB(glProgramParameters4fvNV, 711)
+ GL_STUB(glRequestResidentProgramsNV, 712)
+ GL_STUB(glTrackMatrixNV, 713)
+ GL_STUB(glVertexAttrib1dNV, 714)
+ GL_STUB(glVertexAttrib1dvNV, 715)
+ GL_STUB(glVertexAttrib1fNV, 716)
+ GL_STUB(glVertexAttrib1fvNV, 717)
+ GL_STUB(glVertexAttrib1sNV, 718)
+ GL_STUB(glVertexAttrib1svNV, 719)
+ GL_STUB(glVertexAttrib2dNV, 720)
+ GL_STUB(glVertexAttrib2dvNV, 721)
+ GL_STUB(glVertexAttrib2fNV, 722)
+ GL_STUB(glVertexAttrib2fvNV, 723)
+ GL_STUB(glVertexAttrib2sNV, 724)
+ GL_STUB(glVertexAttrib2svNV, 725)
+ GL_STUB(glVertexAttrib3dNV, 726)
+ GL_STUB(glVertexAttrib3dvNV, 727)
+ GL_STUB(glVertexAttrib3fNV, 728)
+ GL_STUB(glVertexAttrib3fvNV, 729)
+ GL_STUB(glVertexAttrib3sNV, 730)
+ GL_STUB(glVertexAttrib3svNV, 731)
+ GL_STUB(glVertexAttrib4dNV, 732)
+ GL_STUB(glVertexAttrib4dvNV, 733)
+ GL_STUB(glVertexAttrib4fNV, 734)
+ GL_STUB(glVertexAttrib4fvNV, 735)
+ GL_STUB(glVertexAttrib4sNV, 736)
+ GL_STUB(glVertexAttrib4svNV, 737)
+ GL_STUB(glVertexAttrib4ubNV, 738)
+ GL_STUB(glVertexAttrib4ubvNV, 739)
+ GL_STUB(glVertexAttribPointerNV, 740)
+ GL_STUB(glVertexAttribs1dvNV, 741)
+ GL_STUB(glVertexAttribs1fvNV, 742)
+ GL_STUB(glVertexAttribs1svNV, 743)
+ GL_STUB(glVertexAttribs2dvNV, 744)
+ GL_STUB(glVertexAttribs2fvNV, 745)
+ GL_STUB(glVertexAttribs2svNV, 746)
+ GL_STUB(glVertexAttribs3dvNV, 747)
+ GL_STUB(glVertexAttribs3fvNV, 748)
+ GL_STUB(glVertexAttribs3svNV, 749)
+ GL_STUB(glVertexAttribs4dvNV, 750)
+ GL_STUB(glVertexAttribs4fvNV, 751)
+ GL_STUB(glVertexAttribs4svNV, 752)
+ GL_STUB(glVertexAttribs4ubvNV, 753)
+ GL_STUB(glGetTexBumpParameterfvATI, 754)
+ GL_STUB(glGetTexBumpParameterivATI, 755)
+ GL_STUB(glTexBumpParameterfvATI, 756)
+ GL_STUB(glTexBumpParameterivATI, 757)
+ GL_STUB(glAlphaFragmentOp1ATI, 758)
+ GL_STUB(glAlphaFragmentOp2ATI, 759)
+ GL_STUB(glAlphaFragmentOp3ATI, 760)
+ GL_STUB(glBeginFragmentShaderATI, 761)
+ GL_STUB(glBindFragmentShaderATI, 762)
+ GL_STUB(glColorFragmentOp1ATI, 763)
+ GL_STUB(glColorFragmentOp2ATI, 764)
+ GL_STUB(glColorFragmentOp3ATI, 765)
+ GL_STUB(glDeleteFragmentShaderATI, 766)
+ GL_STUB(glEndFragmentShaderATI, 767)
+ GL_STUB(glGenFragmentShadersATI, 768)
+ GL_STUB(glPassTexCoordATI, 769)
+ GL_STUB(glSampleMapATI, 770)
+ GL_STUB(glSetFragmentShaderConstantATI, 771)
+ GL_STUB(glPointParameteriNV, 772)
+ GL_STUB(glPointParameterivNV, 773)
+ GL_STUB(gl_dispatch_stub_774, 774)
+ HIDDEN(gl_dispatch_stub_774)
+ GL_STUB(gl_dispatch_stub_775, 775)
+ HIDDEN(gl_dispatch_stub_775)
+ GL_STUB(gl_dispatch_stub_776, 776)
HIDDEN(gl_dispatch_stub_776)
- GL_STUB(gl_dispatch_stub_777, _gloffset_BlendEquationSeparateEXT)
+ GL_STUB(gl_dispatch_stub_777, 777)
HIDDEN(gl_dispatch_stub_777)
- 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_795, _gloffset_BlitFramebufferEXT)
- HIDDEN(gl_dispatch_stub_795)
- GL_STUB(gl_dispatch_stub_796, _gloffset_BufferParameteriAPPLE)
- HIDDEN(gl_dispatch_stub_796)
- GL_STUB(gl_dispatch_stub_797, _gloffset_FlushMappedBufferRangeAPPLE)
- HIDDEN(gl_dispatch_stub_797)
- 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_815, _gloffset_GetTexParameterPointervAPPLE)
- HIDDEN(gl_dispatch_stub_815)
- GL_STUB(gl_dispatch_stub_816, _gloffset_TextureRangeAPPLE)
- HIDDEN(gl_dispatch_stub_816)
- GL_STUB(glGetObjectParameterivAPPLE, _gloffset_GetObjectParameterivAPPLE)
- GL_STUB(glObjectPurgeableAPPLE, _gloffset_ObjectPurgeableAPPLE)
- GL_STUB(glObjectUnpurgeableAPPLE, _gloffset_ObjectUnpurgeableAPPLE)
- GL_STUB(gl_dispatch_stub_820, _gloffset_StencilFuncSeparateATI)
- HIDDEN(gl_dispatch_stub_820)
- GL_STUB(gl_dispatch_stub_821, _gloffset_ProgramEnvParameters4fvEXT)
- HIDDEN(gl_dispatch_stub_821)
- GL_STUB(gl_dispatch_stub_822, _gloffset_ProgramLocalParameters4fvEXT)
- HIDDEN(gl_dispatch_stub_822)
- GL_STUB(gl_dispatch_stub_823, _gloffset_GetQueryObjecti64vEXT)
- HIDDEN(gl_dispatch_stub_823)
- GL_STUB(gl_dispatch_stub_824, _gloffset_GetQueryObjectui64vEXT)
- HIDDEN(gl_dispatch_stub_824)
- GL_STUB(glEGLImageTargetRenderbufferStorageOES, _gloffset_EGLImageTargetRenderbufferStorageOES)
- GL_STUB(glEGLImageTargetTexture2DOES, _gloffset_EGLImageTargetTexture2DOES)
+ GL_STUB(gl_dispatch_stub_778, 778)
+ HIDDEN(gl_dispatch_stub_778)
+ GL_STUB(glGetProgramNamedParameterdvNV, 779)
+ GL_STUB(glGetProgramNamedParameterfvNV, 780)
+ GL_STUB(glProgramNamedParameter4dNV, 781)
+ GL_STUB(glProgramNamedParameter4dvNV, 782)
+ GL_STUB(glProgramNamedParameter4fNV, 783)
+ GL_STUB(glProgramNamedParameter4fvNV, 784)
+ GL_STUB(glPrimitiveRestartIndexNV, 785)
+ GL_STUB(glPrimitiveRestartNV, 786)
+ GL_STUB(gl_dispatch_stub_787, 787)
+ HIDDEN(gl_dispatch_stub_787)
+ GL_STUB(gl_dispatch_stub_788, 788)
+ HIDDEN(gl_dispatch_stub_788)
+ GL_STUB(glBindFramebufferEXT, 789)
+ GL_STUB(glBindRenderbufferEXT, 790)
+ GL_STUB(glCheckFramebufferStatusEXT, 791)
+ GL_STUB(glDeleteFramebuffersEXT, 792)
+ GL_STUB(glDeleteRenderbuffersEXT, 793)
+ GL_STUB(glFramebufferRenderbufferEXT, 794)
+ GL_STUB(glFramebufferTexture1DEXT, 795)
+ GL_STUB(glFramebufferTexture2DEXT, 796)
+ GL_STUB(glFramebufferTexture3DEXT, 797)
+ GL_STUB(glGenFramebuffersEXT, 798)
+ GL_STUB(glGenRenderbuffersEXT, 799)
+ GL_STUB(glGenerateMipmapEXT, 800)
+ GL_STUB(glGetFramebufferAttachmentParameterivEXT, 801)
+ GL_STUB(glGetRenderbufferParameterivEXT, 802)
+ GL_STUB(glIsFramebufferEXT, 803)
+ GL_STUB(glIsRenderbufferEXT, 804)
+ GL_STUB(glRenderbufferStorageEXT, 805)
+ GL_STUB(gl_dispatch_stub_806, 806)
+ HIDDEN(gl_dispatch_stub_806)
+ GL_STUB(gl_dispatch_stub_807, 807)
+ HIDDEN(gl_dispatch_stub_807)
+ GL_STUB(gl_dispatch_stub_808, 808)
+ HIDDEN(gl_dispatch_stub_808)
+ GL_STUB(glBindFragDataLocationEXT, 809)
+ GL_STUB(glGetFragDataLocationEXT, 810)
+ GL_STUB(glGetUniformuivEXT, 811)
+ GL_STUB(glGetVertexAttribIivEXT, 812)
+ GL_STUB(glGetVertexAttribIuivEXT, 813)
+ GL_STUB(glUniform1uiEXT, 814)
+ GL_STUB(glUniform1uivEXT, 815)
+ GL_STUB(glUniform2uiEXT, 816)
+ GL_STUB(glUniform2uivEXT, 817)
+ GL_STUB(glUniform3uiEXT, 818)
+ GL_STUB(glUniform3uivEXT, 819)
+ GL_STUB(glUniform4uiEXT, 820)
+ GL_STUB(glUniform4uivEXT, 821)
+ GL_STUB(glVertexAttribI1iEXT, 822)
+ GL_STUB(glVertexAttribI1ivEXT, 823)
+ GL_STUB(glVertexAttribI1uiEXT, 824)
+ GL_STUB(glVertexAttribI1uivEXT, 825)
+ GL_STUB(glVertexAttribI2iEXT, 826)
+ GL_STUB(glVertexAttribI2ivEXT, 827)
+ GL_STUB(glVertexAttribI2uiEXT, 828)
+ GL_STUB(glVertexAttribI2uivEXT, 829)
+ GL_STUB(glVertexAttribI3iEXT, 830)
+ GL_STUB(glVertexAttribI3ivEXT, 831)
+ GL_STUB(glVertexAttribI3uiEXT, 832)
+ GL_STUB(glVertexAttribI3uivEXT, 833)
+ GL_STUB(glVertexAttribI4bvEXT, 834)
+ GL_STUB(glVertexAttribI4iEXT, 835)
+ GL_STUB(glVertexAttribI4ivEXT, 836)
+ GL_STUB(glVertexAttribI4svEXT, 837)
+ GL_STUB(glVertexAttribI4ubvEXT, 838)
+ GL_STUB(glVertexAttribI4uiEXT, 839)
+ GL_STUB(glVertexAttribI4uivEXT, 840)
+ GL_STUB(glVertexAttribI4usvEXT, 841)
+ GL_STUB(glVertexAttribIPointerEXT, 842)
+ GL_STUB(glFramebufferTextureLayerEXT, 843)
+ GL_STUB(glColorMaskIndexedEXT, 844)
+ GL_STUB(glDisableIndexedEXT, 845)
+ GL_STUB(glEnableIndexedEXT, 846)
+ GL_STUB(glGetBooleanIndexedvEXT, 847)
+ GL_STUB(glGetIntegerIndexedvEXT, 848)
+ GL_STUB(glIsEnabledIndexedEXT, 849)
+ GL_STUB(glClearColorIiEXT, 850)
+ GL_STUB(glClearColorIuiEXT, 851)
+ GL_STUB(glGetTexParameterIivEXT, 852)
+ GL_STUB(glGetTexParameterIuivEXT, 853)
+ GL_STUB(glTexParameterIivEXT, 854)
+ GL_STUB(glTexParameterIuivEXT, 855)
+ GL_STUB(glBeginConditionalRenderNV, 856)
+ GL_STUB(glEndConditionalRenderNV, 857)
+ GL_STUB(glBeginTransformFeedbackEXT, 858)
+ GL_STUB(glBindBufferBaseEXT, 859)
+ GL_STUB(glBindBufferOffsetEXT, 860)
+ GL_STUB(glBindBufferRangeEXT, 861)
+ GL_STUB(glEndTransformFeedbackEXT, 862)
+ GL_STUB(glGetTransformFeedbackVaryingEXT, 863)
+ GL_STUB(glTransformFeedbackVaryingsEXT, 864)
+ GL_STUB(glProvokingVertexEXT, 865)
+ GL_STUB(gl_dispatch_stub_866, 866)
+ HIDDEN(gl_dispatch_stub_866)
+ GL_STUB(gl_dispatch_stub_867, 867)
+ HIDDEN(gl_dispatch_stub_867)
+ GL_STUB(glGetObjectParameterivAPPLE, 868)
+ GL_STUB(glObjectPurgeableAPPLE, 869)
+ GL_STUB(glObjectUnpurgeableAPPLE, 870)
+ GL_STUB(glActiveProgramEXT, 871)
+ GL_STUB(glCreateShaderProgramEXT, 872)
+ GL_STUB(glUseShaderProgramEXT, 873)
+ GL_STUB(gl_dispatch_stub_874, 874)
+ HIDDEN(gl_dispatch_stub_874)
+ GL_STUB(gl_dispatch_stub_875, 875)
+ HIDDEN(gl_dispatch_stub_875)
+ GL_STUB(gl_dispatch_stub_876, 876)
+ HIDDEN(gl_dispatch_stub_876)
+ GL_STUB(gl_dispatch_stub_877, 877)
+ HIDDEN(gl_dispatch_stub_877)
+ GL_STUB(gl_dispatch_stub_878, 878)
+ HIDDEN(gl_dispatch_stub_878)
+ GL_STUB(glEGLImageTargetRenderbufferStorageOES, 879)
+ GL_STUB(glEGLImageTargetTexture2DOES, 880)
GL_STUB_ALIAS(glArrayElementEXT, glArrayElement)
GL_STUB_ALIAS(glBindTextureEXT, glBindTexture)
GL_STUB_ALIAS(glDrawArraysEXT, glDrawArrays)
@@ -1191,10 +1243,6 @@ gl_dispatch_functions_start:
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)
@@ -1306,6 +1354,10 @@ gl_dispatch_functions_start:
GL_STUB_ALIAS(glGetAttribLocation, glGetAttribLocationARB)
GL_STUB_ALIAS(glDrawBuffers, glDrawBuffersARB)
GL_STUB_ALIAS(glDrawBuffersATI, glDrawBuffersARB)
+ GL_STUB_ALIAS(glDrawArraysInstancedEXT, glDrawArraysInstancedARB)
+ GL_STUB_ALIAS(glDrawArraysInstanced, glDrawArraysInstancedARB)
+ GL_STUB_ALIAS(glDrawElementsInstancedEXT, glDrawElementsInstancedARB)
+ GL_STUB_ALIAS(glDrawElementsInstanced, glDrawElementsInstancedARB)
GL_STUB_ALIAS(glRenderbufferStorageMultisampleEXT, glRenderbufferStorageMultisample)
GL_STUB_ALIAS(glPointParameterf, glPointParameterfEXT)
GL_STUB_ALIAS(glPointParameterfARB, glPointParameterfEXT)
@@ -1379,6 +1431,7 @@ gl_dispatch_functions_start:
GL_STUB_ALIAS(glIsProgramARB, glIsProgramNV)
GL_STUB_ALIAS(glPointParameteri, glPointParameteriNV)
GL_STUB_ALIAS(glPointParameteriv, glPointParameterivNV)
+ GL_STUB_ALIAS(glPrimitiveRestartIndex, glPrimitiveRestartIndexNV)
GL_STUB_ALIAS(glBindFramebuffer, glBindFramebufferEXT)
GL_STUB_ALIAS(glBindRenderbuffer, glBindRenderbufferEXT)
GL_STUB_ALIAS(glCheckFramebufferStatus, glCheckFramebufferStatusEXT)
@@ -1396,7 +1449,53 @@ gl_dispatch_functions_start:
GL_STUB_ALIAS(glIsFramebuffer, glIsFramebufferEXT)
GL_STUB_ALIAS(glIsRenderbuffer, glIsRenderbufferEXT)
GL_STUB_ALIAS(glRenderbufferStorage, glRenderbufferStorageEXT)
+ GL_STUB_ALIAS(glBindFragDataLocation, glBindFragDataLocationEXT)
+ GL_STUB_ALIAS(glGetFragDataLocation, glGetFragDataLocationEXT)
+ GL_STUB_ALIAS(glGetUniformuiv, glGetUniformuivEXT)
+ GL_STUB_ALIAS(glGetVertexAttribIiv, glGetVertexAttribIivEXT)
+ GL_STUB_ALIAS(glGetVertexAttribIuiv, glGetVertexAttribIuivEXT)
+ GL_STUB_ALIAS(glUniform1ui, glUniform1uiEXT)
+ GL_STUB_ALIAS(glUniform1uiv, glUniform1uivEXT)
+ GL_STUB_ALIAS(glUniform2ui, glUniform2uiEXT)
+ GL_STUB_ALIAS(glUniform2uiv, glUniform2uivEXT)
+ GL_STUB_ALIAS(glUniform3ui, glUniform3uiEXT)
+ GL_STUB_ALIAS(glUniform3uiv, glUniform3uivEXT)
+ GL_STUB_ALIAS(glUniform4ui, glUniform4uiEXT)
+ GL_STUB_ALIAS(glUniform4uiv, glUniform4uivEXT)
+ GL_STUB_ALIAS(glVertexAttribI1i, glVertexAttribI1iEXT)
+ GL_STUB_ALIAS(glVertexAttribI1iv, glVertexAttribI1ivEXT)
+ GL_STUB_ALIAS(glVertexAttribI1ui, glVertexAttribI1uiEXT)
+ GL_STUB_ALIAS(glVertexAttribI1uiv, glVertexAttribI1uivEXT)
+ GL_STUB_ALIAS(glVertexAttribI2i, glVertexAttribI2iEXT)
+ GL_STUB_ALIAS(glVertexAttribI2iv, glVertexAttribI2ivEXT)
+ GL_STUB_ALIAS(glVertexAttribI2ui, glVertexAttribI2uiEXT)
+ GL_STUB_ALIAS(glVertexAttribI2uiv, glVertexAttribI2uivEXT)
+ GL_STUB_ALIAS(glVertexAttribI3i, glVertexAttribI3iEXT)
+ GL_STUB_ALIAS(glVertexAttribI3iv, glVertexAttribI3ivEXT)
+ GL_STUB_ALIAS(glVertexAttribI3ui, glVertexAttribI3uiEXT)
+ GL_STUB_ALIAS(glVertexAttribI3uiv, glVertexAttribI3uivEXT)
+ GL_STUB_ALIAS(glVertexAttribI4bv, glVertexAttribI4bvEXT)
+ GL_STUB_ALIAS(glVertexAttribI4i, glVertexAttribI4iEXT)
+ GL_STUB_ALIAS(glVertexAttribI4iv, glVertexAttribI4ivEXT)
+ GL_STUB_ALIAS(glVertexAttribI4sv, glVertexAttribI4svEXT)
+ GL_STUB_ALIAS(glVertexAttribI4ubv, glVertexAttribI4ubvEXT)
+ GL_STUB_ALIAS(glVertexAttribI4ui, glVertexAttribI4uiEXT)
+ GL_STUB_ALIAS(glVertexAttribI4uiv, glVertexAttribI4uivEXT)
+ GL_STUB_ALIAS(glVertexAttribI4usv, glVertexAttribI4usvEXT)
+ GL_STUB_ALIAS(glVertexAttribIPointer, glVertexAttribIPointerEXT)
GL_STUB_ALIAS(glFramebufferTextureLayer, glFramebufferTextureLayerEXT)
+ GL_STUB_ALIAS(glColorMaski, glColorMaskIndexedEXT)
+ GL_STUB_ALIAS(glDisablei, glDisableIndexedEXT)
+ GL_STUB_ALIAS(glEnablei, glEnableIndexedEXT)
+ GL_STUB_ALIAS(glGetBooleani_v, glGetBooleanIndexedvEXT)
+ GL_STUB_ALIAS(glGetIntegeri_v, glGetIntegerIndexedvEXT)
+ GL_STUB_ALIAS(glIsEnabledi, glIsEnabledIndexedEXT)
+ GL_STUB_ALIAS(glGetTexParameterIiv, glGetTexParameterIivEXT)
+ GL_STUB_ALIAS(glGetTexParameterIuiv, glGetTexParameterIuivEXT)
+ GL_STUB_ALIAS(glTexParameterIiv, glTexParameterIivEXT)
+ GL_STUB_ALIAS(glTexParameterIuiv, glTexParameterIuivEXT)
+ GL_STUB_ALIAS(glBeginConditionalRender, glBeginConditionalRenderNV)
+ GL_STUB_ALIAS(glEndConditionalRender, glEndConditionalRenderNV)
GL_STUB_ALIAS(glBeginTransformFeedback, glBeginTransformFeedbackEXT)
GL_STUB_ALIAS(glBindBufferBase, glBindBufferBaseEXT)
GL_STUB_ALIAS(glBindBufferRange, glBindBufferRangeEXT)
diff --git a/src/mapi/glapi/glapi_x86-64.S b/src/mapi/glapi/glapi_x86-64.S
index 5598f441ee..ce0cf680b1 100644
--- a/src/mapi/glapi/glapi_x86-64.S
+++ b/src/mapi/glapi/glapi_x86-64.S
@@ -16001,9 +16001,9 @@ GL_PREFIX(UniformMatrix4x3fv):
.size GL_PREFIX(UniformMatrix4x3fv), .-GL_PREFIX(UniformMatrix4x3fv)
.p2align 4,,15
- .globl GL_PREFIX(DrawArraysInstanced)
- .type GL_PREFIX(DrawArraysInstanced), @function
-GL_PREFIX(DrawArraysInstanced):
+ .globl GL_PREFIX(ClampColor)
+ .type GL_PREFIX(ClampColor), @function
+GL_PREFIX(ClampColor):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
movq 3440(%rax), %r11
@@ -16011,13 +16011,9 @@ GL_PREFIX(DrawArraysInstanced):
#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
@@ -16031,64 +16027,401 @@ GL_PREFIX(DrawArraysInstanced):
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)
+ .size GL_PREFIX(ClampColor), .-GL_PREFIX(ClampColor)
.p2align 4,,15
- .globl GL_PREFIX(DrawElementsInstanced)
- .type GL_PREFIX(DrawElementsInstanced), @function
-GL_PREFIX(DrawElementsInstanced):
+ .globl GL_PREFIX(ClearBufferfi)
+ .type GL_PREFIX(ClearBufferfi), @function
+GL_PREFIX(ClearBufferfi):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
movq 3448(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
+ subq $40, %rsp
+ movq %rdi, (%rsp)
+ movq %rsi, 8(%rsp)
+ movq %xmm0, 16(%rsp)
+ movq %rdx, 24(%rsp)
+ call _x86_64_get_dispatch@PLT
+ movq 24(%rsp), %rdx
+ movq 16(%rsp), %xmm0
+ movq 8(%rsp), %rsi
+ movq (%rsp), %rdi
+ addq $40, %rsp
+ movq 3448(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 3448(%rax), %r11
+ jmp *%r11
+1:
+ subq $40, %rsp
+ movq %rdi, (%rsp)
+ movq %rsi, 8(%rsp)
+ movq %xmm0, 16(%rsp)
+ movq %rdx, 24(%rsp)
+ call _glapi_get_dispatch
+ movq 24(%rsp), %rdx
+ movq 16(%rsp), %xmm0
+ movq 8(%rsp), %rsi
+ movq (%rsp), %rdi
+ addq $40, %rsp
+ movq 3448(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(ClearBufferfi), .-GL_PREFIX(ClearBufferfi)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(ClearBufferfv)
+ .type GL_PREFIX(ClearBufferfv), @function
+GL_PREFIX(ClearBufferfv):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 3456(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ 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
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 3456(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(ClearBufferfv), .-GL_PREFIX(ClearBufferfv)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(ClearBufferiv)
+ .type GL_PREFIX(ClearBufferiv), @function
+GL_PREFIX(ClearBufferiv):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 3464(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ 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
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 3464(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(ClearBufferiv), .-GL_PREFIX(ClearBufferiv)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(ClearBufferuiv)
+ .type GL_PREFIX(ClearBufferuiv), @function
+GL_PREFIX(ClearBufferuiv):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 3472(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ 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
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 3472(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(ClearBufferuiv), .-GL_PREFIX(ClearBufferuiv)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(GetStringi)
+ .type GL_PREFIX(GetStringi), @function
+GL_PREFIX(GetStringi):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 3480(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ 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
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 3480(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(GetStringi), .-GL_PREFIX(GetStringi)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(TexBuffer)
+ .type GL_PREFIX(TexBuffer), @function
+GL_PREFIX(TexBuffer):
+#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 %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ 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 %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 3488(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(TexBuffer), .-GL_PREFIX(TexBuffer)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(FramebufferTexture)
+ .type GL_PREFIX(FramebufferTexture), @function
+GL_PREFIX(FramebufferTexture):
+#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 %rbp
call _x86_64_get_dispatch@PLT
- popq %r8
+ popq %rbp
popq %rcx
popq %rdx
popq %rsi
popq %rdi
- movq 3448(%rax), %r11
+ movq 3496(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3448(%rax), %r11
+ movq 3496(%rax), %r11
jmp *%r11
1:
pushq %rdi
pushq %rsi
pushq %rdx
pushq %rcx
- pushq %r8
+ pushq %rbp
call _glapi_get_dispatch
- popq %r8
+ popq %rbp
popq %rcx
popq %rdx
popq %rsi
popq %rdi
- movq 3448(%rax), %r11
+ movq 3496(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(FramebufferTexture), .-GL_PREFIX(FramebufferTexture)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(GetBufferParameteri64v)
+ .type GL_PREFIX(GetBufferParameteri64v), @function
+GL_PREFIX(GetBufferParameteri64v):
+#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
+ call _x86_64_get_dispatch@PLT
+ 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
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 3504(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(GetBufferParameteri64v), .-GL_PREFIX(GetBufferParameteri64v)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(GetInteger64i_v)
+ .type GL_PREFIX(GetInteger64i_v), @function
+GL_PREFIX(GetInteger64i_v):
+#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
+ call _x86_64_get_dispatch@PLT
+ 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
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 3512(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(DrawElementsInstanced), .-GL_PREFIX(DrawElementsInstanced)
+ .size GL_PREFIX(GetInteger64i_v), .-GL_PREFIX(GetInteger64i_v)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribDivisor)
+ .type GL_PREFIX(VertexAttribDivisor), @function
+GL_PREFIX(VertexAttribDivisor):
+#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 %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ 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 %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 3520(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribDivisor), .-GL_PREFIX(VertexAttribDivisor)
.p2align 4,,15
.globl GL_PREFIX(LoadTransposeMatrixdARB)
@@ -16096,25 +16429,25 @@ GL_PREFIX(DrawElementsInstanced):
GL_PREFIX(LoadTransposeMatrixdARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3456(%rax), %r11
+ movq 3528(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 3456(%rax), %r11
+ movq 3528(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3456(%rax), %r11
+ movq 3528(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 3456(%rax), %r11
+ movq 3528(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(LoadTransposeMatrixdARB), .-GL_PREFIX(LoadTransposeMatrixdARB)
@@ -16125,25 +16458,25 @@ GL_PREFIX(LoadTransposeMatrixdARB):
GL_PREFIX(LoadTransposeMatrixfARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3464(%rax), %r11
+ movq 3536(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 3464(%rax), %r11
+ movq 3536(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3464(%rax), %r11
+ movq 3536(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 3464(%rax), %r11
+ movq 3536(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(LoadTransposeMatrixfARB), .-GL_PREFIX(LoadTransposeMatrixfARB)
@@ -16154,25 +16487,25 @@ GL_PREFIX(LoadTransposeMatrixfARB):
GL_PREFIX(MultTransposeMatrixdARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3472(%rax), %r11
+ movq 3544(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 3472(%rax), %r11
+ movq 3544(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3472(%rax), %r11
+ movq 3544(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 3472(%rax), %r11
+ movq 3544(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(MultTransposeMatrixdARB), .-GL_PREFIX(MultTransposeMatrixdARB)
@@ -16183,25 +16516,25 @@ GL_PREFIX(MultTransposeMatrixdARB):
GL_PREFIX(MultTransposeMatrixfARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3480(%rax), %r11
+ movq 3552(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 3480(%rax), %r11
+ movq 3552(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3480(%rax), %r11
+ movq 3552(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 3480(%rax), %r11
+ movq 3552(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(MultTransposeMatrixfARB), .-GL_PREFIX(MultTransposeMatrixfARB)
@@ -16212,7 +16545,7 @@ GL_PREFIX(MultTransposeMatrixfARB):
GL_PREFIX(SampleCoverageARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3488(%rax), %r11
+ movq 3560(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16222,13 +16555,13 @@ GL_PREFIX(SampleCoverageARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3488(%rax), %r11
+ movq 3560(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3488(%rax), %r11
+ movq 3560(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16238,7 +16571,7 @@ GL_PREFIX(SampleCoverageARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3488(%rax), %r11
+ movq 3560(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SampleCoverageARB), .-GL_PREFIX(SampleCoverageARB)
@@ -16249,7 +16582,7 @@ GL_PREFIX(SampleCoverageARB):
GL_PREFIX(CompressedTexImage1DARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3496(%rax), %r11
+ movq 3568(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16267,13 +16600,13 @@ GL_PREFIX(CompressedTexImage1DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3496(%rax), %r11
+ movq 3568(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3496(%rax), %r11
+ movq 3568(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16291,7 +16624,7 @@ GL_PREFIX(CompressedTexImage1DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3496(%rax), %r11
+ movq 3568(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CompressedTexImage1DARB), .-GL_PREFIX(CompressedTexImage1DARB)
@@ -16302,7 +16635,7 @@ GL_PREFIX(CompressedTexImage1DARB):
GL_PREFIX(CompressedTexImage2DARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3504(%rax), %r11
+ movq 3576(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16320,13 +16653,13 @@ GL_PREFIX(CompressedTexImage2DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3504(%rax), %r11
+ movq 3576(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3504(%rax), %r11
+ movq 3576(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16344,7 +16677,7 @@ GL_PREFIX(CompressedTexImage2DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3504(%rax), %r11
+ movq 3576(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CompressedTexImage2DARB), .-GL_PREFIX(CompressedTexImage2DARB)
@@ -16355,7 +16688,7 @@ GL_PREFIX(CompressedTexImage2DARB):
GL_PREFIX(CompressedTexImage3DARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3512(%rax), %r11
+ movq 3584(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16373,13 +16706,13 @@ GL_PREFIX(CompressedTexImage3DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3512(%rax), %r11
+ movq 3584(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3512(%rax), %r11
+ movq 3584(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16397,7 +16730,7 @@ GL_PREFIX(CompressedTexImage3DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3512(%rax), %r11
+ movq 3584(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CompressedTexImage3DARB), .-GL_PREFIX(CompressedTexImage3DARB)
@@ -16408,7 +16741,7 @@ GL_PREFIX(CompressedTexImage3DARB):
GL_PREFIX(CompressedTexSubImage1DARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3520(%rax), %r11
+ movq 3592(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16426,13 +16759,13 @@ GL_PREFIX(CompressedTexSubImage1DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3520(%rax), %r11
+ movq 3592(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3520(%rax), %r11
+ movq 3592(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16450,7 +16783,7 @@ GL_PREFIX(CompressedTexSubImage1DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3520(%rax), %r11
+ movq 3592(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CompressedTexSubImage1DARB), .-GL_PREFIX(CompressedTexSubImage1DARB)
@@ -16461,7 +16794,7 @@ GL_PREFIX(CompressedTexSubImage1DARB):
GL_PREFIX(CompressedTexSubImage2DARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3528(%rax), %r11
+ movq 3600(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16479,13 +16812,13 @@ GL_PREFIX(CompressedTexSubImage2DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3528(%rax), %r11
+ movq 3600(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3528(%rax), %r11
+ movq 3600(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16503,7 +16836,7 @@ GL_PREFIX(CompressedTexSubImage2DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3528(%rax), %r11
+ movq 3600(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CompressedTexSubImage2DARB), .-GL_PREFIX(CompressedTexSubImage2DARB)
@@ -16514,7 +16847,7 @@ GL_PREFIX(CompressedTexSubImage2DARB):
GL_PREFIX(CompressedTexSubImage3DARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3536(%rax), %r11
+ movq 3608(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16532,13 +16865,13 @@ GL_PREFIX(CompressedTexSubImage3DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3536(%rax), %r11
+ movq 3608(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3536(%rax), %r11
+ movq 3608(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16556,7 +16889,7 @@ GL_PREFIX(CompressedTexSubImage3DARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3536(%rax), %r11
+ movq 3608(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CompressedTexSubImage3DARB), .-GL_PREFIX(CompressedTexSubImage3DARB)
@@ -16567,7 +16900,7 @@ GL_PREFIX(CompressedTexSubImage3DARB):
GL_PREFIX(GetCompressedTexImageARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3544(%rax), %r11
+ movq 3616(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16577,13 +16910,13 @@ GL_PREFIX(GetCompressedTexImageARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3544(%rax), %r11
+ movq 3616(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3544(%rax), %r11
+ movq 3616(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16593,7 +16926,7 @@ GL_PREFIX(GetCompressedTexImageARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3544(%rax), %r11
+ movq 3616(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetCompressedTexImageARB), .-GL_PREFIX(GetCompressedTexImageARB)
@@ -16604,25 +16937,25 @@ GL_PREFIX(GetCompressedTexImageARB):
GL_PREFIX(DisableVertexAttribArrayARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3552(%rax), %r11
+ movq 3624(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 3552(%rax), %r11
+ movq 3624(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3552(%rax), %r11
+ movq 3624(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 3552(%rax), %r11
+ movq 3624(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DisableVertexAttribArrayARB), .-GL_PREFIX(DisableVertexAttribArrayARB)
@@ -16633,25 +16966,25 @@ GL_PREFIX(DisableVertexAttribArrayARB):
GL_PREFIX(EnableVertexAttribArrayARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3560(%rax), %r11
+ movq 3632(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 3560(%rax), %r11
+ movq 3632(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3560(%rax), %r11
+ movq 3632(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 3560(%rax), %r11
+ movq 3632(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(EnableVertexAttribArrayARB), .-GL_PREFIX(EnableVertexAttribArrayARB)
@@ -16662,7 +16995,7 @@ GL_PREFIX(EnableVertexAttribArrayARB):
GL_PREFIX(GetProgramEnvParameterdvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3568(%rax), %r11
+ movq 3640(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16672,13 +17005,13 @@ GL_PREFIX(GetProgramEnvParameterdvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3568(%rax), %r11
+ movq 3640(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3568(%rax), %r11
+ movq 3640(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16688,7 +17021,7 @@ GL_PREFIX(GetProgramEnvParameterdvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3568(%rax), %r11
+ movq 3640(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramEnvParameterdvARB), .-GL_PREFIX(GetProgramEnvParameterdvARB)
@@ -16699,7 +17032,7 @@ GL_PREFIX(GetProgramEnvParameterdvARB):
GL_PREFIX(GetProgramEnvParameterfvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3576(%rax), %r11
+ movq 3648(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16709,13 +17042,13 @@ GL_PREFIX(GetProgramEnvParameterfvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3576(%rax), %r11
+ movq 3648(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3576(%rax), %r11
+ movq 3648(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16725,7 +17058,7 @@ GL_PREFIX(GetProgramEnvParameterfvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3576(%rax), %r11
+ movq 3648(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramEnvParameterfvARB), .-GL_PREFIX(GetProgramEnvParameterfvARB)
@@ -16736,7 +17069,7 @@ GL_PREFIX(GetProgramEnvParameterfvARB):
GL_PREFIX(GetProgramLocalParameterdvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3584(%rax), %r11
+ movq 3656(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16746,13 +17079,13 @@ GL_PREFIX(GetProgramLocalParameterdvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3584(%rax), %r11
+ movq 3656(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3584(%rax), %r11
+ movq 3656(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16762,7 +17095,7 @@ GL_PREFIX(GetProgramLocalParameterdvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3584(%rax), %r11
+ movq 3656(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramLocalParameterdvARB), .-GL_PREFIX(GetProgramLocalParameterdvARB)
@@ -16773,7 +17106,7 @@ GL_PREFIX(GetProgramLocalParameterdvARB):
GL_PREFIX(GetProgramLocalParameterfvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3592(%rax), %r11
+ movq 3664(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16783,13 +17116,13 @@ GL_PREFIX(GetProgramLocalParameterfvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3592(%rax), %r11
+ movq 3664(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3592(%rax), %r11
+ movq 3664(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16799,7 +17132,7 @@ GL_PREFIX(GetProgramLocalParameterfvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3592(%rax), %r11
+ movq 3664(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramLocalParameterfvARB), .-GL_PREFIX(GetProgramLocalParameterfvARB)
@@ -16810,7 +17143,7 @@ GL_PREFIX(GetProgramLocalParameterfvARB):
GL_PREFIX(GetProgramStringARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3600(%rax), %r11
+ movq 3672(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16820,13 +17153,13 @@ GL_PREFIX(GetProgramStringARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3600(%rax), %r11
+ movq 3672(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3600(%rax), %r11
+ movq 3672(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16836,7 +17169,7 @@ GL_PREFIX(GetProgramStringARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3600(%rax), %r11
+ movq 3672(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramStringARB), .-GL_PREFIX(GetProgramStringARB)
@@ -16847,7 +17180,7 @@ GL_PREFIX(GetProgramStringARB):
GL_PREFIX(GetProgramivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3608(%rax), %r11
+ movq 3680(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16857,13 +17190,13 @@ GL_PREFIX(GetProgramivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3608(%rax), %r11
+ movq 3680(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3608(%rax), %r11
+ movq 3680(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16873,7 +17206,7 @@ GL_PREFIX(GetProgramivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3608(%rax), %r11
+ movq 3680(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramivARB), .-GL_PREFIX(GetProgramivARB)
@@ -16884,7 +17217,7 @@ GL_PREFIX(GetProgramivARB):
GL_PREFIX(GetVertexAttribdvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3616(%rax), %r11
+ movq 3688(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16894,13 +17227,13 @@ GL_PREFIX(GetVertexAttribdvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3616(%rax), %r11
+ movq 3688(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3616(%rax), %r11
+ movq 3688(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16910,7 +17243,7 @@ GL_PREFIX(GetVertexAttribdvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3616(%rax), %r11
+ movq 3688(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetVertexAttribdvARB), .-GL_PREFIX(GetVertexAttribdvARB)
@@ -16921,7 +17254,7 @@ GL_PREFIX(GetVertexAttribdvARB):
GL_PREFIX(GetVertexAttribfvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3624(%rax), %r11
+ movq 3696(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16931,13 +17264,13 @@ GL_PREFIX(GetVertexAttribfvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3624(%rax), %r11
+ movq 3696(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3624(%rax), %r11
+ movq 3696(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16947,7 +17280,7 @@ GL_PREFIX(GetVertexAttribfvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3624(%rax), %r11
+ movq 3696(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetVertexAttribfvARB), .-GL_PREFIX(GetVertexAttribfvARB)
@@ -16958,7 +17291,7 @@ GL_PREFIX(GetVertexAttribfvARB):
GL_PREFIX(GetVertexAttribivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3632(%rax), %r11
+ movq 3704(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -16968,13 +17301,13 @@ GL_PREFIX(GetVertexAttribivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3632(%rax), %r11
+ movq 3704(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3632(%rax), %r11
+ movq 3704(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -16984,7 +17317,7 @@ GL_PREFIX(GetVertexAttribivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3632(%rax), %r11
+ movq 3704(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetVertexAttribivARB), .-GL_PREFIX(GetVertexAttribivARB)
@@ -16995,7 +17328,7 @@ GL_PREFIX(GetVertexAttribivARB):
GL_PREFIX(ProgramEnvParameter4dARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3640(%rax), %r11
+ movq 3712(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $56, %rsp
@@ -17013,13 +17346,13 @@ GL_PREFIX(ProgramEnvParameter4dARB):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 3640(%rax), %r11
+ movq 3712(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3640(%rax), %r11
+ movq 3712(%rax), %r11
jmp *%r11
1:
subq $56, %rsp
@@ -17037,7 +17370,7 @@ GL_PREFIX(ProgramEnvParameter4dARB):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 3640(%rax), %r11
+ movq 3712(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramEnvParameter4dARB), .-GL_PREFIX(ProgramEnvParameter4dARB)
@@ -17048,7 +17381,7 @@ GL_PREFIX(ProgramEnvParameter4dARB):
GL_PREFIX(ProgramEnvParameter4dvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3648(%rax), %r11
+ movq 3720(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17058,13 +17391,13 @@ GL_PREFIX(ProgramEnvParameter4dvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3648(%rax), %r11
+ movq 3720(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3648(%rax), %r11
+ movq 3720(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17074,7 +17407,7 @@ GL_PREFIX(ProgramEnvParameter4dvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3648(%rax), %r11
+ movq 3720(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramEnvParameter4dvARB), .-GL_PREFIX(ProgramEnvParameter4dvARB)
@@ -17085,7 +17418,7 @@ GL_PREFIX(ProgramEnvParameter4dvARB):
GL_PREFIX(ProgramEnvParameter4fARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3656(%rax), %r11
+ movq 3728(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $56, %rsp
@@ -17103,13 +17436,13 @@ GL_PREFIX(ProgramEnvParameter4fARB):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 3656(%rax), %r11
+ movq 3728(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3656(%rax), %r11
+ movq 3728(%rax), %r11
jmp *%r11
1:
subq $56, %rsp
@@ -17127,7 +17460,7 @@ GL_PREFIX(ProgramEnvParameter4fARB):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 3656(%rax), %r11
+ movq 3728(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramEnvParameter4fARB), .-GL_PREFIX(ProgramEnvParameter4fARB)
@@ -17138,7 +17471,7 @@ GL_PREFIX(ProgramEnvParameter4fARB):
GL_PREFIX(ProgramEnvParameter4fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3664(%rax), %r11
+ movq 3736(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17148,13 +17481,13 @@ GL_PREFIX(ProgramEnvParameter4fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3664(%rax), %r11
+ movq 3736(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3664(%rax), %r11
+ movq 3736(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17164,7 +17497,7 @@ GL_PREFIX(ProgramEnvParameter4fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3664(%rax), %r11
+ movq 3736(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramEnvParameter4fvARB), .-GL_PREFIX(ProgramEnvParameter4fvARB)
@@ -17175,7 +17508,7 @@ GL_PREFIX(ProgramEnvParameter4fvARB):
GL_PREFIX(ProgramLocalParameter4dARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3672(%rax), %r11
+ movq 3744(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $56, %rsp
@@ -17193,13 +17526,13 @@ GL_PREFIX(ProgramLocalParameter4dARB):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 3672(%rax), %r11
+ movq 3744(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3672(%rax), %r11
+ movq 3744(%rax), %r11
jmp *%r11
1:
subq $56, %rsp
@@ -17217,7 +17550,7 @@ GL_PREFIX(ProgramLocalParameter4dARB):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 3672(%rax), %r11
+ movq 3744(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramLocalParameter4dARB), .-GL_PREFIX(ProgramLocalParameter4dARB)
@@ -17228,7 +17561,7 @@ GL_PREFIX(ProgramLocalParameter4dARB):
GL_PREFIX(ProgramLocalParameter4dvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3680(%rax), %r11
+ movq 3752(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17238,13 +17571,13 @@ GL_PREFIX(ProgramLocalParameter4dvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3680(%rax), %r11
+ movq 3752(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3680(%rax), %r11
+ movq 3752(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17254,7 +17587,7 @@ GL_PREFIX(ProgramLocalParameter4dvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3680(%rax), %r11
+ movq 3752(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramLocalParameter4dvARB), .-GL_PREFIX(ProgramLocalParameter4dvARB)
@@ -17265,7 +17598,7 @@ GL_PREFIX(ProgramLocalParameter4dvARB):
GL_PREFIX(ProgramLocalParameter4fARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3688(%rax), %r11
+ movq 3760(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $56, %rsp
@@ -17283,13 +17616,13 @@ GL_PREFIX(ProgramLocalParameter4fARB):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 3688(%rax), %r11
+ movq 3760(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3688(%rax), %r11
+ movq 3760(%rax), %r11
jmp *%r11
1:
subq $56, %rsp
@@ -17307,7 +17640,7 @@ GL_PREFIX(ProgramLocalParameter4fARB):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 3688(%rax), %r11
+ movq 3760(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramLocalParameter4fARB), .-GL_PREFIX(ProgramLocalParameter4fARB)
@@ -17318,7 +17651,7 @@ GL_PREFIX(ProgramLocalParameter4fARB):
GL_PREFIX(ProgramLocalParameter4fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3696(%rax), %r11
+ movq 3768(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17328,13 +17661,13 @@ GL_PREFIX(ProgramLocalParameter4fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3696(%rax), %r11
+ movq 3768(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3696(%rax), %r11
+ movq 3768(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17344,7 +17677,7 @@ GL_PREFIX(ProgramLocalParameter4fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3696(%rax), %r11
+ movq 3768(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramLocalParameter4fvARB), .-GL_PREFIX(ProgramLocalParameter4fvARB)
@@ -17355,7 +17688,7 @@ GL_PREFIX(ProgramLocalParameter4fvARB):
GL_PREFIX(ProgramStringARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3704(%rax), %r11
+ movq 3776(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17369,13 +17702,13 @@ GL_PREFIX(ProgramStringARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3704(%rax), %r11
+ movq 3776(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3704(%rax), %r11
+ movq 3776(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17389,7 +17722,7 @@ GL_PREFIX(ProgramStringARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3704(%rax), %r11
+ movq 3776(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramStringARB), .-GL_PREFIX(ProgramStringARB)
@@ -17400,7 +17733,7 @@ GL_PREFIX(ProgramStringARB):
GL_PREFIX(VertexAttrib1dARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3712(%rax), %r11
+ movq 3784(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -17410,13 +17743,13 @@ GL_PREFIX(VertexAttrib1dARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 3712(%rax), %r11
+ movq 3784(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3712(%rax), %r11
+ movq 3784(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -17426,7 +17759,7 @@ GL_PREFIX(VertexAttrib1dARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 3712(%rax), %r11
+ movq 3784(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1dARB), .-GL_PREFIX(VertexAttrib1dARB)
@@ -17437,7 +17770,7 @@ GL_PREFIX(VertexAttrib1dARB):
GL_PREFIX(VertexAttrib1dvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3720(%rax), %r11
+ movq 3792(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17447,13 +17780,13 @@ GL_PREFIX(VertexAttrib1dvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3720(%rax), %r11
+ movq 3792(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3720(%rax), %r11
+ movq 3792(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17463,7 +17796,7 @@ GL_PREFIX(VertexAttrib1dvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3720(%rax), %r11
+ movq 3792(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1dvARB), .-GL_PREFIX(VertexAttrib1dvARB)
@@ -17474,7 +17807,7 @@ GL_PREFIX(VertexAttrib1dvARB):
GL_PREFIX(VertexAttrib1fARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3728(%rax), %r11
+ movq 3800(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -17484,13 +17817,13 @@ GL_PREFIX(VertexAttrib1fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 3728(%rax), %r11
+ movq 3800(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3728(%rax), %r11
+ movq 3800(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -17500,7 +17833,7 @@ GL_PREFIX(VertexAttrib1fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 3728(%rax), %r11
+ movq 3800(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1fARB), .-GL_PREFIX(VertexAttrib1fARB)
@@ -17511,7 +17844,7 @@ GL_PREFIX(VertexAttrib1fARB):
GL_PREFIX(VertexAttrib1fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3736(%rax), %r11
+ movq 3808(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17521,13 +17854,13 @@ GL_PREFIX(VertexAttrib1fvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3736(%rax), %r11
+ movq 3808(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3736(%rax), %r11
+ movq 3808(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17537,7 +17870,7 @@ GL_PREFIX(VertexAttrib1fvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3736(%rax), %r11
+ movq 3808(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1fvARB), .-GL_PREFIX(VertexAttrib1fvARB)
@@ -17548,7 +17881,7 @@ GL_PREFIX(VertexAttrib1fvARB):
GL_PREFIX(VertexAttrib1sARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3744(%rax), %r11
+ movq 3816(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17558,13 +17891,13 @@ GL_PREFIX(VertexAttrib1sARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3744(%rax), %r11
+ movq 3816(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3744(%rax), %r11
+ movq 3816(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17574,7 +17907,7 @@ GL_PREFIX(VertexAttrib1sARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3744(%rax), %r11
+ movq 3816(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1sARB), .-GL_PREFIX(VertexAttrib1sARB)
@@ -17585,7 +17918,7 @@ GL_PREFIX(VertexAttrib1sARB):
GL_PREFIX(VertexAttrib1svARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3752(%rax), %r11
+ movq 3824(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17595,13 +17928,13 @@ GL_PREFIX(VertexAttrib1svARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3752(%rax), %r11
+ movq 3824(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3752(%rax), %r11
+ movq 3824(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17611,7 +17944,7 @@ GL_PREFIX(VertexAttrib1svARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3752(%rax), %r11
+ movq 3824(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1svARB), .-GL_PREFIX(VertexAttrib1svARB)
@@ -17622,7 +17955,7 @@ GL_PREFIX(VertexAttrib1svARB):
GL_PREFIX(VertexAttrib2dARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3760(%rax), %r11
+ movq 3832(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -17634,13 +17967,13 @@ GL_PREFIX(VertexAttrib2dARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 3760(%rax), %r11
+ movq 3832(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3760(%rax), %r11
+ movq 3832(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -17652,7 +17985,7 @@ GL_PREFIX(VertexAttrib2dARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 3760(%rax), %r11
+ movq 3832(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2dARB), .-GL_PREFIX(VertexAttrib2dARB)
@@ -17663,7 +17996,7 @@ GL_PREFIX(VertexAttrib2dARB):
GL_PREFIX(VertexAttrib2dvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3768(%rax), %r11
+ movq 3840(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17673,13 +18006,13 @@ GL_PREFIX(VertexAttrib2dvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3768(%rax), %r11
+ movq 3840(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3768(%rax), %r11
+ movq 3840(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17689,7 +18022,7 @@ GL_PREFIX(VertexAttrib2dvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3768(%rax), %r11
+ movq 3840(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2dvARB), .-GL_PREFIX(VertexAttrib2dvARB)
@@ -17700,7 +18033,7 @@ GL_PREFIX(VertexAttrib2dvARB):
GL_PREFIX(VertexAttrib2fARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3776(%rax), %r11
+ movq 3848(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -17712,13 +18045,13 @@ GL_PREFIX(VertexAttrib2fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 3776(%rax), %r11
+ movq 3848(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3776(%rax), %r11
+ movq 3848(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -17730,7 +18063,7 @@ GL_PREFIX(VertexAttrib2fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 3776(%rax), %r11
+ movq 3848(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2fARB), .-GL_PREFIX(VertexAttrib2fARB)
@@ -17741,7 +18074,7 @@ GL_PREFIX(VertexAttrib2fARB):
GL_PREFIX(VertexAttrib2fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3784(%rax), %r11
+ movq 3856(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17751,13 +18084,13 @@ GL_PREFIX(VertexAttrib2fvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3784(%rax), %r11
+ movq 3856(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3784(%rax), %r11
+ movq 3856(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17767,7 +18100,7 @@ GL_PREFIX(VertexAttrib2fvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3784(%rax), %r11
+ movq 3856(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2fvARB), .-GL_PREFIX(VertexAttrib2fvARB)
@@ -17778,7 +18111,7 @@ GL_PREFIX(VertexAttrib2fvARB):
GL_PREFIX(VertexAttrib2sARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3792(%rax), %r11
+ movq 3864(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17788,13 +18121,13 @@ GL_PREFIX(VertexAttrib2sARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3792(%rax), %r11
+ movq 3864(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3792(%rax), %r11
+ movq 3864(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17804,7 +18137,7 @@ GL_PREFIX(VertexAttrib2sARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3792(%rax), %r11
+ movq 3864(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2sARB), .-GL_PREFIX(VertexAttrib2sARB)
@@ -17815,7 +18148,7 @@ GL_PREFIX(VertexAttrib2sARB):
GL_PREFIX(VertexAttrib2svARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3800(%rax), %r11
+ movq 3872(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17825,13 +18158,13 @@ GL_PREFIX(VertexAttrib2svARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3800(%rax), %r11
+ movq 3872(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3800(%rax), %r11
+ movq 3872(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17841,7 +18174,7 @@ GL_PREFIX(VertexAttrib2svARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3800(%rax), %r11
+ movq 3872(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2svARB), .-GL_PREFIX(VertexAttrib2svARB)
@@ -17852,7 +18185,7 @@ GL_PREFIX(VertexAttrib2svARB):
GL_PREFIX(VertexAttrib3dARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3808(%rax), %r11
+ movq 3880(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -17866,13 +18199,13 @@ GL_PREFIX(VertexAttrib3dARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 3808(%rax), %r11
+ movq 3880(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3808(%rax), %r11
+ movq 3880(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -17886,7 +18219,7 @@ GL_PREFIX(VertexAttrib3dARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 3808(%rax), %r11
+ movq 3880(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3dARB), .-GL_PREFIX(VertexAttrib3dARB)
@@ -17897,7 +18230,7 @@ GL_PREFIX(VertexAttrib3dARB):
GL_PREFIX(VertexAttrib3dvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3816(%rax), %r11
+ movq 3888(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17907,13 +18240,13 @@ GL_PREFIX(VertexAttrib3dvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3816(%rax), %r11
+ movq 3888(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3816(%rax), %r11
+ movq 3888(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -17923,7 +18256,7 @@ GL_PREFIX(VertexAttrib3dvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3816(%rax), %r11
+ movq 3888(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3dvARB), .-GL_PREFIX(VertexAttrib3dvARB)
@@ -17934,7 +18267,7 @@ GL_PREFIX(VertexAttrib3dvARB):
GL_PREFIX(VertexAttrib3fARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3824(%rax), %r11
+ movq 3896(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -17948,13 +18281,13 @@ GL_PREFIX(VertexAttrib3fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 3824(%rax), %r11
+ movq 3896(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3824(%rax), %r11
+ movq 3896(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -17968,7 +18301,7 @@ GL_PREFIX(VertexAttrib3fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 3824(%rax), %r11
+ movq 3896(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3fARB), .-GL_PREFIX(VertexAttrib3fARB)
@@ -17979,7 +18312,7 @@ GL_PREFIX(VertexAttrib3fARB):
GL_PREFIX(VertexAttrib3fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3832(%rax), %r11
+ movq 3904(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -17989,13 +18322,13 @@ GL_PREFIX(VertexAttrib3fvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3832(%rax), %r11
+ movq 3904(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3832(%rax), %r11
+ movq 3904(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18005,7 +18338,7 @@ GL_PREFIX(VertexAttrib3fvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3832(%rax), %r11
+ movq 3904(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3fvARB), .-GL_PREFIX(VertexAttrib3fvARB)
@@ -18016,7 +18349,7 @@ GL_PREFIX(VertexAttrib3fvARB):
GL_PREFIX(VertexAttrib3sARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3840(%rax), %r11
+ movq 3912(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18030,13 +18363,13 @@ GL_PREFIX(VertexAttrib3sARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3840(%rax), %r11
+ movq 3912(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3840(%rax), %r11
+ movq 3912(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18050,7 +18383,7 @@ GL_PREFIX(VertexAttrib3sARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3840(%rax), %r11
+ movq 3912(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3sARB), .-GL_PREFIX(VertexAttrib3sARB)
@@ -18061,7 +18394,7 @@ GL_PREFIX(VertexAttrib3sARB):
GL_PREFIX(VertexAttrib3svARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3848(%rax), %r11
+ movq 3920(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18071,13 +18404,13 @@ GL_PREFIX(VertexAttrib3svARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3848(%rax), %r11
+ movq 3920(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3848(%rax), %r11
+ movq 3920(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18087,7 +18420,7 @@ GL_PREFIX(VertexAttrib3svARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3848(%rax), %r11
+ movq 3920(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3svARB), .-GL_PREFIX(VertexAttrib3svARB)
@@ -18098,7 +18431,7 @@ GL_PREFIX(VertexAttrib3svARB):
GL_PREFIX(VertexAttrib4NbvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3856(%rax), %r11
+ movq 3928(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18108,13 +18441,13 @@ GL_PREFIX(VertexAttrib4NbvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3856(%rax), %r11
+ movq 3928(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3856(%rax), %r11
+ movq 3928(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18124,7 +18457,7 @@ GL_PREFIX(VertexAttrib4NbvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3856(%rax), %r11
+ movq 3928(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4NbvARB), .-GL_PREFIX(VertexAttrib4NbvARB)
@@ -18135,7 +18468,7 @@ GL_PREFIX(VertexAttrib4NbvARB):
GL_PREFIX(VertexAttrib4NivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3864(%rax), %r11
+ movq 3936(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18145,13 +18478,13 @@ GL_PREFIX(VertexAttrib4NivARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3864(%rax), %r11
+ movq 3936(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3864(%rax), %r11
+ movq 3936(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18161,7 +18494,7 @@ GL_PREFIX(VertexAttrib4NivARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3864(%rax), %r11
+ movq 3936(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4NivARB), .-GL_PREFIX(VertexAttrib4NivARB)
@@ -18172,7 +18505,7 @@ GL_PREFIX(VertexAttrib4NivARB):
GL_PREFIX(VertexAttrib4NsvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3872(%rax), %r11
+ movq 3944(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18182,13 +18515,13 @@ GL_PREFIX(VertexAttrib4NsvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3872(%rax), %r11
+ movq 3944(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3872(%rax), %r11
+ movq 3944(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18198,7 +18531,7 @@ GL_PREFIX(VertexAttrib4NsvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3872(%rax), %r11
+ movq 3944(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4NsvARB), .-GL_PREFIX(VertexAttrib4NsvARB)
@@ -18209,7 +18542,7 @@ GL_PREFIX(VertexAttrib4NsvARB):
GL_PREFIX(VertexAttrib4NubARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3880(%rax), %r11
+ movq 3952(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18223,13 +18556,13 @@ GL_PREFIX(VertexAttrib4NubARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3880(%rax), %r11
+ movq 3952(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3880(%rax), %r11
+ movq 3952(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18243,7 +18576,7 @@ GL_PREFIX(VertexAttrib4NubARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3880(%rax), %r11
+ movq 3952(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4NubARB), .-GL_PREFIX(VertexAttrib4NubARB)
@@ -18254,7 +18587,7 @@ GL_PREFIX(VertexAttrib4NubARB):
GL_PREFIX(VertexAttrib4NubvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3888(%rax), %r11
+ movq 3960(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18264,13 +18597,13 @@ GL_PREFIX(VertexAttrib4NubvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3888(%rax), %r11
+ movq 3960(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3888(%rax), %r11
+ movq 3960(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18280,7 +18613,7 @@ GL_PREFIX(VertexAttrib4NubvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3888(%rax), %r11
+ movq 3960(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4NubvARB), .-GL_PREFIX(VertexAttrib4NubvARB)
@@ -18291,7 +18624,7 @@ GL_PREFIX(VertexAttrib4NubvARB):
GL_PREFIX(VertexAttrib4NuivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3896(%rax), %r11
+ movq 3968(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18301,13 +18634,13 @@ GL_PREFIX(VertexAttrib4NuivARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3896(%rax), %r11
+ movq 3968(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3896(%rax), %r11
+ movq 3968(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18317,7 +18650,7 @@ GL_PREFIX(VertexAttrib4NuivARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3896(%rax), %r11
+ movq 3968(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4NuivARB), .-GL_PREFIX(VertexAttrib4NuivARB)
@@ -18328,7 +18661,7 @@ GL_PREFIX(VertexAttrib4NuivARB):
GL_PREFIX(VertexAttrib4NusvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3904(%rax), %r11
+ movq 3976(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18338,13 +18671,13 @@ GL_PREFIX(VertexAttrib4NusvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3904(%rax), %r11
+ movq 3976(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3904(%rax), %r11
+ movq 3976(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18354,7 +18687,7 @@ GL_PREFIX(VertexAttrib4NusvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3904(%rax), %r11
+ movq 3976(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4NusvARB), .-GL_PREFIX(VertexAttrib4NusvARB)
@@ -18365,7 +18698,7 @@ GL_PREFIX(VertexAttrib4NusvARB):
GL_PREFIX(VertexAttrib4bvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3912(%rax), %r11
+ movq 3984(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18375,13 +18708,13 @@ GL_PREFIX(VertexAttrib4bvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3912(%rax), %r11
+ movq 3984(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3912(%rax), %r11
+ movq 3984(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18391,7 +18724,7 @@ GL_PREFIX(VertexAttrib4bvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3912(%rax), %r11
+ movq 3984(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4bvARB), .-GL_PREFIX(VertexAttrib4bvARB)
@@ -18402,7 +18735,7 @@ GL_PREFIX(VertexAttrib4bvARB):
GL_PREFIX(VertexAttrib4dARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3920(%rax), %r11
+ movq 3992(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -18418,13 +18751,13 @@ GL_PREFIX(VertexAttrib4dARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 3920(%rax), %r11
+ movq 3992(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3920(%rax), %r11
+ movq 3992(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -18440,7 +18773,7 @@ GL_PREFIX(VertexAttrib4dARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 3920(%rax), %r11
+ movq 3992(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4dARB), .-GL_PREFIX(VertexAttrib4dARB)
@@ -18451,7 +18784,7 @@ GL_PREFIX(VertexAttrib4dARB):
GL_PREFIX(VertexAttrib4dvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3928(%rax), %r11
+ movq 4000(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18461,13 +18794,13 @@ GL_PREFIX(VertexAttrib4dvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3928(%rax), %r11
+ movq 4000(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3928(%rax), %r11
+ movq 4000(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18477,7 +18810,7 @@ GL_PREFIX(VertexAttrib4dvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3928(%rax), %r11
+ movq 4000(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4dvARB), .-GL_PREFIX(VertexAttrib4dvARB)
@@ -18488,7 +18821,7 @@ GL_PREFIX(VertexAttrib4dvARB):
GL_PREFIX(VertexAttrib4fARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3936(%rax), %r11
+ movq 4008(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -18504,13 +18837,13 @@ GL_PREFIX(VertexAttrib4fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 3936(%rax), %r11
+ movq 4008(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3936(%rax), %r11
+ movq 4008(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -18526,7 +18859,7 @@ GL_PREFIX(VertexAttrib4fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 3936(%rax), %r11
+ movq 4008(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4fARB), .-GL_PREFIX(VertexAttrib4fARB)
@@ -18537,7 +18870,7 @@ GL_PREFIX(VertexAttrib4fARB):
GL_PREFIX(VertexAttrib4fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3944(%rax), %r11
+ movq 4016(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18547,13 +18880,13 @@ GL_PREFIX(VertexAttrib4fvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3944(%rax), %r11
+ movq 4016(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3944(%rax), %r11
+ movq 4016(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18563,7 +18896,7 @@ GL_PREFIX(VertexAttrib4fvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3944(%rax), %r11
+ movq 4016(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4fvARB), .-GL_PREFIX(VertexAttrib4fvARB)
@@ -18574,7 +18907,7 @@ GL_PREFIX(VertexAttrib4fvARB):
GL_PREFIX(VertexAttrib4ivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3952(%rax), %r11
+ movq 4024(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18584,13 +18917,13 @@ GL_PREFIX(VertexAttrib4ivARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3952(%rax), %r11
+ movq 4024(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3952(%rax), %r11
+ movq 4024(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18600,7 +18933,7 @@ GL_PREFIX(VertexAttrib4ivARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3952(%rax), %r11
+ movq 4024(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4ivARB), .-GL_PREFIX(VertexAttrib4ivARB)
@@ -18611,7 +18944,7 @@ GL_PREFIX(VertexAttrib4ivARB):
GL_PREFIX(VertexAttrib4sARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3960(%rax), %r11
+ movq 4032(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18625,13 +18958,13 @@ GL_PREFIX(VertexAttrib4sARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3960(%rax), %r11
+ movq 4032(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3960(%rax), %r11
+ movq 4032(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18645,7 +18978,7 @@ GL_PREFIX(VertexAttrib4sARB):
popq %rdx
popq %rsi
popq %rdi
- movq 3960(%rax), %r11
+ movq 4032(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4sARB), .-GL_PREFIX(VertexAttrib4sARB)
@@ -18656,7 +18989,7 @@ GL_PREFIX(VertexAttrib4sARB):
GL_PREFIX(VertexAttrib4svARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3968(%rax), %r11
+ movq 4040(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18666,13 +18999,13 @@ GL_PREFIX(VertexAttrib4svARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3968(%rax), %r11
+ movq 4040(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3968(%rax), %r11
+ movq 4040(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18682,7 +19015,7 @@ GL_PREFIX(VertexAttrib4svARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3968(%rax), %r11
+ movq 4040(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4svARB), .-GL_PREFIX(VertexAttrib4svARB)
@@ -18693,7 +19026,7 @@ GL_PREFIX(VertexAttrib4svARB):
GL_PREFIX(VertexAttrib4ubvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3976(%rax), %r11
+ movq 4048(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18703,13 +19036,13 @@ GL_PREFIX(VertexAttrib4ubvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3976(%rax), %r11
+ movq 4048(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3976(%rax), %r11
+ movq 4048(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18719,7 +19052,7 @@ GL_PREFIX(VertexAttrib4ubvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3976(%rax), %r11
+ movq 4048(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4ubvARB), .-GL_PREFIX(VertexAttrib4ubvARB)
@@ -18730,7 +19063,7 @@ GL_PREFIX(VertexAttrib4ubvARB):
GL_PREFIX(VertexAttrib4uivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3984(%rax), %r11
+ movq 4056(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18740,13 +19073,13 @@ GL_PREFIX(VertexAttrib4uivARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3984(%rax), %r11
+ movq 4056(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3984(%rax), %r11
+ movq 4056(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18756,7 +19089,7 @@ GL_PREFIX(VertexAttrib4uivARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3984(%rax), %r11
+ movq 4056(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4uivARB), .-GL_PREFIX(VertexAttrib4uivARB)
@@ -18767,7 +19100,7 @@ GL_PREFIX(VertexAttrib4uivARB):
GL_PREFIX(VertexAttrib4usvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 3992(%rax), %r11
+ movq 4064(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18777,13 +19110,13 @@ GL_PREFIX(VertexAttrib4usvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3992(%rax), %r11
+ movq 4064(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 3992(%rax), %r11
+ movq 4064(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18793,7 +19126,7 @@ GL_PREFIX(VertexAttrib4usvARB):
popq %rbp
popq %rsi
popq %rdi
- movq 3992(%rax), %r11
+ movq 4064(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4usvARB), .-GL_PREFIX(VertexAttrib4usvARB)
@@ -18804,7 +19137,7 @@ GL_PREFIX(VertexAttrib4usvARB):
GL_PREFIX(VertexAttribPointerARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4000(%rax), %r11
+ movq 4072(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18822,13 +19155,13 @@ GL_PREFIX(VertexAttribPointerARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4000(%rax), %r11
+ movq 4072(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4000(%rax), %r11
+ movq 4072(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18846,7 +19179,7 @@ GL_PREFIX(VertexAttribPointerARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4000(%rax), %r11
+ movq 4072(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribPointerARB), .-GL_PREFIX(VertexAttribPointerARB)
@@ -18857,7 +19190,7 @@ GL_PREFIX(VertexAttribPointerARB):
GL_PREFIX(BindBufferARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4008(%rax), %r11
+ movq 4080(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18867,13 +19200,13 @@ GL_PREFIX(BindBufferARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4008(%rax), %r11
+ movq 4080(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4008(%rax), %r11
+ movq 4080(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18883,7 +19216,7 @@ GL_PREFIX(BindBufferARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4008(%rax), %r11
+ movq 4080(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BindBufferARB), .-GL_PREFIX(BindBufferARB)
@@ -18894,7 +19227,7 @@ GL_PREFIX(BindBufferARB):
GL_PREFIX(BufferDataARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4016(%rax), %r11
+ movq 4088(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18908,13 +19241,13 @@ GL_PREFIX(BufferDataARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4016(%rax), %r11
+ movq 4088(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4016(%rax), %r11
+ movq 4088(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18928,7 +19261,7 @@ GL_PREFIX(BufferDataARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4016(%rax), %r11
+ movq 4088(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BufferDataARB), .-GL_PREFIX(BufferDataARB)
@@ -18939,7 +19272,7 @@ GL_PREFIX(BufferDataARB):
GL_PREFIX(BufferSubDataARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4024(%rax), %r11
+ movq 4096(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18953,13 +19286,13 @@ GL_PREFIX(BufferSubDataARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4024(%rax), %r11
+ movq 4096(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4024(%rax), %r11
+ movq 4096(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -18973,7 +19306,7 @@ GL_PREFIX(BufferSubDataARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4024(%rax), %r11
+ movq 4096(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BufferSubDataARB), .-GL_PREFIX(BufferSubDataARB)
@@ -18984,7 +19317,7 @@ GL_PREFIX(BufferSubDataARB):
GL_PREFIX(DeleteBuffersARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4032(%rax), %r11
+ movq 4104(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -18994,13 +19327,13 @@ GL_PREFIX(DeleteBuffersARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4032(%rax), %r11
+ movq 4104(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4032(%rax), %r11
+ movq 4104(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19010,7 +19343,7 @@ GL_PREFIX(DeleteBuffersARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4032(%rax), %r11
+ movq 4104(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DeleteBuffersARB), .-GL_PREFIX(DeleteBuffersARB)
@@ -19021,7 +19354,7 @@ GL_PREFIX(DeleteBuffersARB):
GL_PREFIX(GenBuffersARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4040(%rax), %r11
+ movq 4112(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19031,13 +19364,13 @@ GL_PREFIX(GenBuffersARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4040(%rax), %r11
+ movq 4112(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4040(%rax), %r11
+ movq 4112(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19047,7 +19380,7 @@ GL_PREFIX(GenBuffersARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4040(%rax), %r11
+ movq 4112(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GenBuffersARB), .-GL_PREFIX(GenBuffersARB)
@@ -19058,7 +19391,7 @@ GL_PREFIX(GenBuffersARB):
GL_PREFIX(GetBufferParameterivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4048(%rax), %r11
+ movq 4120(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19068,13 +19401,13 @@ GL_PREFIX(GetBufferParameterivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4048(%rax), %r11
+ movq 4120(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4048(%rax), %r11
+ movq 4120(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19084,7 +19417,7 @@ GL_PREFIX(GetBufferParameterivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4048(%rax), %r11
+ movq 4120(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetBufferParameterivARB), .-GL_PREFIX(GetBufferParameterivARB)
@@ -19095,7 +19428,7 @@ GL_PREFIX(GetBufferParameterivARB):
GL_PREFIX(GetBufferPointervARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4056(%rax), %r11
+ movq 4128(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19105,13 +19438,13 @@ GL_PREFIX(GetBufferPointervARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4056(%rax), %r11
+ movq 4128(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4056(%rax), %r11
+ movq 4128(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19121,7 +19454,7 @@ GL_PREFIX(GetBufferPointervARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4056(%rax), %r11
+ movq 4128(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetBufferPointervARB), .-GL_PREFIX(GetBufferPointervARB)
@@ -19132,7 +19465,7 @@ GL_PREFIX(GetBufferPointervARB):
GL_PREFIX(GetBufferSubDataARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4064(%rax), %r11
+ movq 4136(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19146,13 +19479,13 @@ GL_PREFIX(GetBufferSubDataARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4064(%rax), %r11
+ movq 4136(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4064(%rax), %r11
+ movq 4136(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19166,7 +19499,7 @@ GL_PREFIX(GetBufferSubDataARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4064(%rax), %r11
+ movq 4136(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetBufferSubDataARB), .-GL_PREFIX(GetBufferSubDataARB)
@@ -19177,25 +19510,25 @@ GL_PREFIX(GetBufferSubDataARB):
GL_PREFIX(IsBufferARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4072(%rax), %r11
+ movq 4144(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4072(%rax), %r11
+ movq 4144(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4072(%rax), %r11
+ movq 4144(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4072(%rax), %r11
+ movq 4144(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(IsBufferARB), .-GL_PREFIX(IsBufferARB)
@@ -19206,7 +19539,7 @@ GL_PREFIX(IsBufferARB):
GL_PREFIX(MapBufferARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4080(%rax), %r11
+ movq 4152(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19216,13 +19549,13 @@ GL_PREFIX(MapBufferARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4080(%rax), %r11
+ movq 4152(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4080(%rax), %r11
+ movq 4152(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19232,7 +19565,7 @@ GL_PREFIX(MapBufferARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4080(%rax), %r11
+ movq 4152(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(MapBufferARB), .-GL_PREFIX(MapBufferARB)
@@ -19243,25 +19576,25 @@ GL_PREFIX(MapBufferARB):
GL_PREFIX(UnmapBufferARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4088(%rax), %r11
+ movq 4160(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4088(%rax), %r11
+ movq 4160(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4088(%rax), %r11
+ movq 4160(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4088(%rax), %r11
+ movq 4160(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(UnmapBufferARB), .-GL_PREFIX(UnmapBufferARB)
@@ -19272,7 +19605,7 @@ GL_PREFIX(UnmapBufferARB):
GL_PREFIX(BeginQueryARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4096(%rax), %r11
+ movq 4168(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19282,13 +19615,13 @@ GL_PREFIX(BeginQueryARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4096(%rax), %r11
+ movq 4168(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4096(%rax), %r11
+ movq 4168(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19298,7 +19631,7 @@ GL_PREFIX(BeginQueryARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4096(%rax), %r11
+ movq 4168(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BeginQueryARB), .-GL_PREFIX(BeginQueryARB)
@@ -19309,7 +19642,7 @@ GL_PREFIX(BeginQueryARB):
GL_PREFIX(DeleteQueriesARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4104(%rax), %r11
+ movq 4176(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19319,13 +19652,13 @@ GL_PREFIX(DeleteQueriesARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4104(%rax), %r11
+ movq 4176(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4104(%rax), %r11
+ movq 4176(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19335,7 +19668,7 @@ GL_PREFIX(DeleteQueriesARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4104(%rax), %r11
+ movq 4176(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DeleteQueriesARB), .-GL_PREFIX(DeleteQueriesARB)
@@ -19346,25 +19679,25 @@ GL_PREFIX(DeleteQueriesARB):
GL_PREFIX(EndQueryARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4112(%rax), %r11
+ movq 4184(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4112(%rax), %r11
+ movq 4184(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4112(%rax), %r11
+ movq 4184(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4112(%rax), %r11
+ movq 4184(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(EndQueryARB), .-GL_PREFIX(EndQueryARB)
@@ -19375,7 +19708,7 @@ GL_PREFIX(EndQueryARB):
GL_PREFIX(GenQueriesARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4120(%rax), %r11
+ movq 4192(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19385,13 +19718,13 @@ GL_PREFIX(GenQueriesARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4120(%rax), %r11
+ movq 4192(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4120(%rax), %r11
+ movq 4192(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19401,7 +19734,7 @@ GL_PREFIX(GenQueriesARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4120(%rax), %r11
+ movq 4192(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GenQueriesARB), .-GL_PREFIX(GenQueriesARB)
@@ -19412,7 +19745,7 @@ GL_PREFIX(GenQueriesARB):
GL_PREFIX(GetQueryObjectivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4128(%rax), %r11
+ movq 4200(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19422,13 +19755,13 @@ GL_PREFIX(GetQueryObjectivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4128(%rax), %r11
+ movq 4200(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4128(%rax), %r11
+ movq 4200(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19438,7 +19771,7 @@ GL_PREFIX(GetQueryObjectivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4128(%rax), %r11
+ movq 4200(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetQueryObjectivARB), .-GL_PREFIX(GetQueryObjectivARB)
@@ -19449,7 +19782,7 @@ GL_PREFIX(GetQueryObjectivARB):
GL_PREFIX(GetQueryObjectuivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4136(%rax), %r11
+ movq 4208(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19459,13 +19792,13 @@ GL_PREFIX(GetQueryObjectuivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4136(%rax), %r11
+ movq 4208(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4136(%rax), %r11
+ movq 4208(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19475,7 +19808,7 @@ GL_PREFIX(GetQueryObjectuivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4136(%rax), %r11
+ movq 4208(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetQueryObjectuivARB), .-GL_PREFIX(GetQueryObjectuivARB)
@@ -19486,7 +19819,7 @@ GL_PREFIX(GetQueryObjectuivARB):
GL_PREFIX(GetQueryivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4144(%rax), %r11
+ movq 4216(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19496,13 +19829,13 @@ GL_PREFIX(GetQueryivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4144(%rax), %r11
+ movq 4216(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4144(%rax), %r11
+ movq 4216(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19512,7 +19845,7 @@ GL_PREFIX(GetQueryivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4144(%rax), %r11
+ movq 4216(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetQueryivARB), .-GL_PREFIX(GetQueryivARB)
@@ -19523,25 +19856,25 @@ GL_PREFIX(GetQueryivARB):
GL_PREFIX(IsQueryARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4152(%rax), %r11
+ movq 4224(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4152(%rax), %r11
+ movq 4224(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4152(%rax), %r11
+ movq 4224(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4152(%rax), %r11
+ movq 4224(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(IsQueryARB), .-GL_PREFIX(IsQueryARB)
@@ -19552,7 +19885,7 @@ GL_PREFIX(IsQueryARB):
GL_PREFIX(AttachObjectARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4160(%rax), %r11
+ movq 4232(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19562,13 +19895,13 @@ GL_PREFIX(AttachObjectARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4160(%rax), %r11
+ movq 4232(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4160(%rax), %r11
+ movq 4232(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19578,7 +19911,7 @@ GL_PREFIX(AttachObjectARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4160(%rax), %r11
+ movq 4232(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(AttachObjectARB), .-GL_PREFIX(AttachObjectARB)
@@ -19589,25 +19922,25 @@ GL_PREFIX(AttachObjectARB):
GL_PREFIX(CompileShaderARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4168(%rax), %r11
+ movq 4240(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4168(%rax), %r11
+ movq 4240(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4168(%rax), %r11
+ movq 4240(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4168(%rax), %r11
+ movq 4240(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CompileShaderARB), .-GL_PREFIX(CompileShaderARB)
@@ -19618,25 +19951,25 @@ GL_PREFIX(CompileShaderARB):
GL_PREFIX(CreateProgramObjectARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4176(%rax), %r11
+ movq 4248(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rbp
call _x86_64_get_dispatch@PLT
popq %rbp
- movq 4176(%rax), %r11
+ movq 4248(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4176(%rax), %r11
+ movq 4248(%rax), %r11
jmp *%r11
1:
pushq %rbp
call _glapi_get_dispatch
popq %rbp
- movq 4176(%rax), %r11
+ movq 4248(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CreateProgramObjectARB), .-GL_PREFIX(CreateProgramObjectARB)
@@ -19647,25 +19980,25 @@ GL_PREFIX(CreateProgramObjectARB):
GL_PREFIX(CreateShaderObjectARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4184(%rax), %r11
+ movq 4256(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4184(%rax), %r11
+ movq 4256(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4184(%rax), %r11
+ movq 4256(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4184(%rax), %r11
+ movq 4256(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CreateShaderObjectARB), .-GL_PREFIX(CreateShaderObjectARB)
@@ -19676,25 +20009,25 @@ GL_PREFIX(CreateShaderObjectARB):
GL_PREFIX(DeleteObjectARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4192(%rax), %r11
+ movq 4264(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4192(%rax), %r11
+ movq 4264(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4192(%rax), %r11
+ movq 4264(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4192(%rax), %r11
+ movq 4264(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DeleteObjectARB), .-GL_PREFIX(DeleteObjectARB)
@@ -19705,7 +20038,7 @@ GL_PREFIX(DeleteObjectARB):
GL_PREFIX(DetachObjectARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4200(%rax), %r11
+ movq 4272(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19715,13 +20048,13 @@ GL_PREFIX(DetachObjectARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4200(%rax), %r11
+ movq 4272(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4200(%rax), %r11
+ movq 4272(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19731,7 +20064,7 @@ GL_PREFIX(DetachObjectARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4200(%rax), %r11
+ movq 4272(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DetachObjectARB), .-GL_PREFIX(DetachObjectARB)
@@ -19742,7 +20075,7 @@ GL_PREFIX(DetachObjectARB):
GL_PREFIX(GetActiveUniformARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4208(%rax), %r11
+ movq 4280(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19760,13 +20093,13 @@ GL_PREFIX(GetActiveUniformARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4208(%rax), %r11
+ movq 4280(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4208(%rax), %r11
+ movq 4280(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19784,7 +20117,7 @@ GL_PREFIX(GetActiveUniformARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4208(%rax), %r11
+ movq 4280(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetActiveUniformARB), .-GL_PREFIX(GetActiveUniformARB)
@@ -19795,7 +20128,7 @@ GL_PREFIX(GetActiveUniformARB):
GL_PREFIX(GetAttachedObjectsARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4216(%rax), %r11
+ movq 4288(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19809,13 +20142,13 @@ GL_PREFIX(GetAttachedObjectsARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4216(%rax), %r11
+ movq 4288(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4216(%rax), %r11
+ movq 4288(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19829,7 +20162,7 @@ GL_PREFIX(GetAttachedObjectsARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4216(%rax), %r11
+ movq 4288(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetAttachedObjectsARB), .-GL_PREFIX(GetAttachedObjectsARB)
@@ -19840,25 +20173,25 @@ GL_PREFIX(GetAttachedObjectsARB):
GL_PREFIX(GetHandleARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4224(%rax), %r11
+ movq 4296(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4224(%rax), %r11
+ movq 4296(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4224(%rax), %r11
+ movq 4296(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4224(%rax), %r11
+ movq 4296(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetHandleARB), .-GL_PREFIX(GetHandleARB)
@@ -19869,7 +20202,7 @@ GL_PREFIX(GetHandleARB):
GL_PREFIX(GetInfoLogARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4232(%rax), %r11
+ movq 4304(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19883,13 +20216,13 @@ GL_PREFIX(GetInfoLogARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4232(%rax), %r11
+ movq 4304(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4232(%rax), %r11
+ movq 4304(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19903,7 +20236,7 @@ GL_PREFIX(GetInfoLogARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4232(%rax), %r11
+ movq 4304(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetInfoLogARB), .-GL_PREFIX(GetInfoLogARB)
@@ -19914,7 +20247,7 @@ GL_PREFIX(GetInfoLogARB):
GL_PREFIX(GetObjectParameterfvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4240(%rax), %r11
+ movq 4312(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19924,13 +20257,13 @@ GL_PREFIX(GetObjectParameterfvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4240(%rax), %r11
+ movq 4312(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4240(%rax), %r11
+ movq 4312(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19940,7 +20273,7 @@ GL_PREFIX(GetObjectParameterfvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4240(%rax), %r11
+ movq 4312(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetObjectParameterfvARB), .-GL_PREFIX(GetObjectParameterfvARB)
@@ -19951,7 +20284,7 @@ GL_PREFIX(GetObjectParameterfvARB):
GL_PREFIX(GetObjectParameterivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4248(%rax), %r11
+ movq 4320(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -19961,13 +20294,13 @@ GL_PREFIX(GetObjectParameterivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4248(%rax), %r11
+ movq 4320(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4248(%rax), %r11
+ movq 4320(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -19977,7 +20310,7 @@ GL_PREFIX(GetObjectParameterivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4248(%rax), %r11
+ movq 4320(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetObjectParameterivARB), .-GL_PREFIX(GetObjectParameterivARB)
@@ -19988,7 +20321,7 @@ GL_PREFIX(GetObjectParameterivARB):
GL_PREFIX(GetShaderSourceARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4256(%rax), %r11
+ movq 4328(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20002,13 +20335,13 @@ GL_PREFIX(GetShaderSourceARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4256(%rax), %r11
+ movq 4328(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4256(%rax), %r11
+ movq 4328(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20022,7 +20355,7 @@ GL_PREFIX(GetShaderSourceARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4256(%rax), %r11
+ movq 4328(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetShaderSourceARB), .-GL_PREFIX(GetShaderSourceARB)
@@ -20033,7 +20366,7 @@ GL_PREFIX(GetShaderSourceARB):
GL_PREFIX(GetUniformLocationARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4264(%rax), %r11
+ movq 4336(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20043,13 +20376,13 @@ GL_PREFIX(GetUniformLocationARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4264(%rax), %r11
+ movq 4336(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4264(%rax), %r11
+ movq 4336(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20059,7 +20392,7 @@ GL_PREFIX(GetUniformLocationARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4264(%rax), %r11
+ movq 4336(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetUniformLocationARB), .-GL_PREFIX(GetUniformLocationARB)
@@ -20070,7 +20403,7 @@ GL_PREFIX(GetUniformLocationARB):
GL_PREFIX(GetUniformfvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4272(%rax), %r11
+ movq 4344(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20080,13 +20413,13 @@ GL_PREFIX(GetUniformfvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4272(%rax), %r11
+ movq 4344(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4272(%rax), %r11
+ movq 4344(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20096,7 +20429,7 @@ GL_PREFIX(GetUniformfvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4272(%rax), %r11
+ movq 4344(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetUniformfvARB), .-GL_PREFIX(GetUniformfvARB)
@@ -20107,7 +20440,7 @@ GL_PREFIX(GetUniformfvARB):
GL_PREFIX(GetUniformivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4280(%rax), %r11
+ movq 4352(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20117,13 +20450,13 @@ GL_PREFIX(GetUniformivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4280(%rax), %r11
+ movq 4352(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4280(%rax), %r11
+ movq 4352(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20133,7 +20466,7 @@ GL_PREFIX(GetUniformivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4280(%rax), %r11
+ movq 4352(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetUniformivARB), .-GL_PREFIX(GetUniformivARB)
@@ -20144,25 +20477,25 @@ GL_PREFIX(GetUniformivARB):
GL_PREFIX(LinkProgramARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4288(%rax), %r11
+ movq 4360(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4288(%rax), %r11
+ movq 4360(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4288(%rax), %r11
+ movq 4360(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4288(%rax), %r11
+ movq 4360(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(LinkProgramARB), .-GL_PREFIX(LinkProgramARB)
@@ -20173,7 +20506,7 @@ GL_PREFIX(LinkProgramARB):
GL_PREFIX(ShaderSourceARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4296(%rax), %r11
+ movq 4368(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20187,13 +20520,13 @@ GL_PREFIX(ShaderSourceARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4296(%rax), %r11
+ movq 4368(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4296(%rax), %r11
+ movq 4368(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20207,7 +20540,7 @@ GL_PREFIX(ShaderSourceARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4296(%rax), %r11
+ movq 4368(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ShaderSourceARB), .-GL_PREFIX(ShaderSourceARB)
@@ -20218,7 +20551,7 @@ GL_PREFIX(ShaderSourceARB):
GL_PREFIX(Uniform1fARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4304(%rax), %r11
+ movq 4376(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -20228,13 +20561,13 @@ GL_PREFIX(Uniform1fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 4304(%rax), %r11
+ movq 4376(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4304(%rax), %r11
+ movq 4376(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -20244,7 +20577,7 @@ GL_PREFIX(Uniform1fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 4304(%rax), %r11
+ movq 4376(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform1fARB), .-GL_PREFIX(Uniform1fARB)
@@ -20255,7 +20588,7 @@ GL_PREFIX(Uniform1fARB):
GL_PREFIX(Uniform1fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4312(%rax), %r11
+ movq 4384(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20265,13 +20598,13 @@ GL_PREFIX(Uniform1fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4312(%rax), %r11
+ movq 4384(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4312(%rax), %r11
+ movq 4384(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20281,7 +20614,7 @@ GL_PREFIX(Uniform1fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4312(%rax), %r11
+ movq 4384(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform1fvARB), .-GL_PREFIX(Uniform1fvARB)
@@ -20292,7 +20625,7 @@ GL_PREFIX(Uniform1fvARB):
GL_PREFIX(Uniform1iARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4320(%rax), %r11
+ movq 4392(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20302,13 +20635,13 @@ GL_PREFIX(Uniform1iARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4320(%rax), %r11
+ movq 4392(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4320(%rax), %r11
+ movq 4392(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20318,7 +20651,7 @@ GL_PREFIX(Uniform1iARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4320(%rax), %r11
+ movq 4392(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform1iARB), .-GL_PREFIX(Uniform1iARB)
@@ -20329,7 +20662,7 @@ GL_PREFIX(Uniform1iARB):
GL_PREFIX(Uniform1ivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4328(%rax), %r11
+ movq 4400(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20339,13 +20672,13 @@ GL_PREFIX(Uniform1ivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4328(%rax), %r11
+ movq 4400(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4328(%rax), %r11
+ movq 4400(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20355,7 +20688,7 @@ GL_PREFIX(Uniform1ivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4328(%rax), %r11
+ movq 4400(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform1ivARB), .-GL_PREFIX(Uniform1ivARB)
@@ -20366,7 +20699,7 @@ GL_PREFIX(Uniform1ivARB):
GL_PREFIX(Uniform2fARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4336(%rax), %r11
+ movq 4408(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -20378,13 +20711,13 @@ GL_PREFIX(Uniform2fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 4336(%rax), %r11
+ movq 4408(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4336(%rax), %r11
+ movq 4408(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -20396,7 +20729,7 @@ GL_PREFIX(Uniform2fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 4336(%rax), %r11
+ movq 4408(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform2fARB), .-GL_PREFIX(Uniform2fARB)
@@ -20407,7 +20740,7 @@ GL_PREFIX(Uniform2fARB):
GL_PREFIX(Uniform2fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4344(%rax), %r11
+ movq 4416(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20417,13 +20750,13 @@ GL_PREFIX(Uniform2fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4344(%rax), %r11
+ movq 4416(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4344(%rax), %r11
+ movq 4416(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20433,7 +20766,7 @@ GL_PREFIX(Uniform2fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4344(%rax), %r11
+ movq 4416(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform2fvARB), .-GL_PREFIX(Uniform2fvARB)
@@ -20444,7 +20777,7 @@ GL_PREFIX(Uniform2fvARB):
GL_PREFIX(Uniform2iARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4352(%rax), %r11
+ movq 4424(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20454,13 +20787,13 @@ GL_PREFIX(Uniform2iARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4352(%rax), %r11
+ movq 4424(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4352(%rax), %r11
+ movq 4424(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20470,7 +20803,7 @@ GL_PREFIX(Uniform2iARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4352(%rax), %r11
+ movq 4424(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform2iARB), .-GL_PREFIX(Uniform2iARB)
@@ -20481,7 +20814,7 @@ GL_PREFIX(Uniform2iARB):
GL_PREFIX(Uniform2ivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4360(%rax), %r11
+ movq 4432(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20491,13 +20824,13 @@ GL_PREFIX(Uniform2ivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4360(%rax), %r11
+ movq 4432(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4360(%rax), %r11
+ movq 4432(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20507,7 +20840,7 @@ GL_PREFIX(Uniform2ivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4360(%rax), %r11
+ movq 4432(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform2ivARB), .-GL_PREFIX(Uniform2ivARB)
@@ -20518,7 +20851,7 @@ GL_PREFIX(Uniform2ivARB):
GL_PREFIX(Uniform3fARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4368(%rax), %r11
+ movq 4440(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -20532,13 +20865,13 @@ GL_PREFIX(Uniform3fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 4368(%rax), %r11
+ movq 4440(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4368(%rax), %r11
+ movq 4440(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -20552,7 +20885,7 @@ GL_PREFIX(Uniform3fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 4368(%rax), %r11
+ movq 4440(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform3fARB), .-GL_PREFIX(Uniform3fARB)
@@ -20563,7 +20896,7 @@ GL_PREFIX(Uniform3fARB):
GL_PREFIX(Uniform3fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4376(%rax), %r11
+ movq 4448(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20573,13 +20906,13 @@ GL_PREFIX(Uniform3fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4376(%rax), %r11
+ movq 4448(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4376(%rax), %r11
+ movq 4448(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20589,7 +20922,7 @@ GL_PREFIX(Uniform3fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4376(%rax), %r11
+ movq 4448(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform3fvARB), .-GL_PREFIX(Uniform3fvARB)
@@ -20600,7 +20933,7 @@ GL_PREFIX(Uniform3fvARB):
GL_PREFIX(Uniform3iARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4384(%rax), %r11
+ movq 4456(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20614,13 +20947,13 @@ GL_PREFIX(Uniform3iARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4384(%rax), %r11
+ movq 4456(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4384(%rax), %r11
+ movq 4456(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20634,7 +20967,7 @@ GL_PREFIX(Uniform3iARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4384(%rax), %r11
+ movq 4456(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform3iARB), .-GL_PREFIX(Uniform3iARB)
@@ -20645,7 +20978,7 @@ GL_PREFIX(Uniform3iARB):
GL_PREFIX(Uniform3ivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4392(%rax), %r11
+ movq 4464(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20655,13 +20988,13 @@ GL_PREFIX(Uniform3ivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4392(%rax), %r11
+ movq 4464(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4392(%rax), %r11
+ movq 4464(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20671,7 +21004,7 @@ GL_PREFIX(Uniform3ivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4392(%rax), %r11
+ movq 4464(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform3ivARB), .-GL_PREFIX(Uniform3ivARB)
@@ -20682,7 +21015,7 @@ GL_PREFIX(Uniform3ivARB):
GL_PREFIX(Uniform4fARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4400(%rax), %r11
+ movq 4472(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -20698,13 +21031,13 @@ GL_PREFIX(Uniform4fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 4400(%rax), %r11
+ movq 4472(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4400(%rax), %r11
+ movq 4472(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -20720,7 +21053,7 @@ GL_PREFIX(Uniform4fARB):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 4400(%rax), %r11
+ movq 4472(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform4fARB), .-GL_PREFIX(Uniform4fARB)
@@ -20731,7 +21064,7 @@ GL_PREFIX(Uniform4fARB):
GL_PREFIX(Uniform4fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4408(%rax), %r11
+ movq 4480(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20741,13 +21074,13 @@ GL_PREFIX(Uniform4fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4408(%rax), %r11
+ movq 4480(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4408(%rax), %r11
+ movq 4480(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20757,7 +21090,7 @@ GL_PREFIX(Uniform4fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4408(%rax), %r11
+ movq 4480(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform4fvARB), .-GL_PREFIX(Uniform4fvARB)
@@ -20768,7 +21101,7 @@ GL_PREFIX(Uniform4fvARB):
GL_PREFIX(Uniform4iARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4416(%rax), %r11
+ movq 4488(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20782,13 +21115,13 @@ GL_PREFIX(Uniform4iARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4416(%rax), %r11
+ movq 4488(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4416(%rax), %r11
+ movq 4488(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20802,7 +21135,7 @@ GL_PREFIX(Uniform4iARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4416(%rax), %r11
+ movq 4488(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform4iARB), .-GL_PREFIX(Uniform4iARB)
@@ -20813,7 +21146,7 @@ GL_PREFIX(Uniform4iARB):
GL_PREFIX(Uniform4ivARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4424(%rax), %r11
+ movq 4496(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20823,13 +21156,13 @@ GL_PREFIX(Uniform4ivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4424(%rax), %r11
+ movq 4496(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4424(%rax), %r11
+ movq 4496(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20839,7 +21172,7 @@ GL_PREFIX(Uniform4ivARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4424(%rax), %r11
+ movq 4496(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(Uniform4ivARB), .-GL_PREFIX(Uniform4ivARB)
@@ -20850,7 +21183,7 @@ GL_PREFIX(Uniform4ivARB):
GL_PREFIX(UniformMatrix2fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4432(%rax), %r11
+ movq 4504(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20864,13 +21197,13 @@ GL_PREFIX(UniformMatrix2fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4432(%rax), %r11
+ movq 4504(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4432(%rax), %r11
+ movq 4504(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20884,7 +21217,7 @@ GL_PREFIX(UniformMatrix2fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4432(%rax), %r11
+ movq 4504(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(UniformMatrix2fvARB), .-GL_PREFIX(UniformMatrix2fvARB)
@@ -20895,7 +21228,7 @@ GL_PREFIX(UniformMatrix2fvARB):
GL_PREFIX(UniformMatrix3fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4440(%rax), %r11
+ movq 4512(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20909,13 +21242,13 @@ GL_PREFIX(UniformMatrix3fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4440(%rax), %r11
+ movq 4512(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4440(%rax), %r11
+ movq 4512(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20929,7 +21262,7 @@ GL_PREFIX(UniformMatrix3fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4440(%rax), %r11
+ movq 4512(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(UniformMatrix3fvARB), .-GL_PREFIX(UniformMatrix3fvARB)
@@ -20940,7 +21273,7 @@ GL_PREFIX(UniformMatrix3fvARB):
GL_PREFIX(UniformMatrix4fvARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4448(%rax), %r11
+ movq 4520(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -20954,13 +21287,13 @@ GL_PREFIX(UniformMatrix4fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4448(%rax), %r11
+ movq 4520(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4448(%rax), %r11
+ movq 4520(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -20974,7 +21307,7 @@ GL_PREFIX(UniformMatrix4fvARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4448(%rax), %r11
+ movq 4520(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(UniformMatrix4fvARB), .-GL_PREFIX(UniformMatrix4fvARB)
@@ -20985,25 +21318,25 @@ GL_PREFIX(UniformMatrix4fvARB):
GL_PREFIX(UseProgramObjectARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4456(%rax), %r11
+ movq 4528(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4456(%rax), %r11
+ movq 4528(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4456(%rax), %r11
+ movq 4528(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4456(%rax), %r11
+ movq 4528(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(UseProgramObjectARB), .-GL_PREFIX(UseProgramObjectARB)
@@ -21014,25 +21347,25 @@ GL_PREFIX(UseProgramObjectARB):
GL_PREFIX(ValidateProgramARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4464(%rax), %r11
+ movq 4536(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4464(%rax), %r11
+ movq 4536(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4464(%rax), %r11
+ movq 4536(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4464(%rax), %r11
+ movq 4536(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ValidateProgramARB), .-GL_PREFIX(ValidateProgramARB)
@@ -21043,7 +21376,7 @@ GL_PREFIX(ValidateProgramARB):
GL_PREFIX(BindAttribLocationARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4472(%rax), %r11
+ movq 4544(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21053,13 +21386,13 @@ GL_PREFIX(BindAttribLocationARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4472(%rax), %r11
+ movq 4544(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4472(%rax), %r11
+ movq 4544(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21069,7 +21402,7 @@ GL_PREFIX(BindAttribLocationARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4472(%rax), %r11
+ movq 4544(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BindAttribLocationARB), .-GL_PREFIX(BindAttribLocationARB)
@@ -21080,7 +21413,7 @@ GL_PREFIX(BindAttribLocationARB):
GL_PREFIX(GetActiveAttribARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4480(%rax), %r11
+ movq 4552(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21098,13 +21431,13 @@ GL_PREFIX(GetActiveAttribARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4480(%rax), %r11
+ movq 4552(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4480(%rax), %r11
+ movq 4552(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21122,7 +21455,7 @@ GL_PREFIX(GetActiveAttribARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4480(%rax), %r11
+ movq 4552(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetActiveAttribARB), .-GL_PREFIX(GetActiveAttribARB)
@@ -21133,7 +21466,7 @@ GL_PREFIX(GetActiveAttribARB):
GL_PREFIX(GetAttribLocationARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4488(%rax), %r11
+ movq 4560(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21143,13 +21476,13 @@ GL_PREFIX(GetAttribLocationARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4488(%rax), %r11
+ movq 4560(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4488(%rax), %r11
+ movq 4560(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21159,7 +21492,7 @@ GL_PREFIX(GetAttribLocationARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4488(%rax), %r11
+ movq 4560(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetAttribLocationARB), .-GL_PREFIX(GetAttribLocationARB)
@@ -21170,7 +21503,7 @@ GL_PREFIX(GetAttribLocationARB):
GL_PREFIX(DrawBuffersARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4496(%rax), %r11
+ movq 4568(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21180,13 +21513,13 @@ GL_PREFIX(DrawBuffersARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4496(%rax), %r11
+ movq 4568(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4496(%rax), %r11
+ movq 4568(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21196,18 +21529,108 @@ GL_PREFIX(DrawBuffersARB):
popq %rbp
popq %rsi
popq %rdi
- movq 4496(%rax), %r11
+ movq 4568(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DrawBuffersARB), .-GL_PREFIX(DrawBuffersARB)
.p2align 4,,15
+ .globl GL_PREFIX(DrawArraysInstancedARB)
+ .type GL_PREFIX(DrawArraysInstancedARB), @function
+GL_PREFIX(DrawArraysInstancedARB):
+#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 %rdx
+ pushq %rcx
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rcx
+ popq %rdx
+ 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 %rdx
+ pushq %rcx
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rcx
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 4576(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(DrawArraysInstancedARB), .-GL_PREFIX(DrawArraysInstancedARB)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(DrawElementsInstancedARB)
+ .type GL_PREFIX(DrawElementsInstancedARB), @function
+GL_PREFIX(DrawElementsInstancedARB):
+#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(DrawElementsInstancedARB), .-GL_PREFIX(DrawElementsInstancedARB)
+
+ .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
+ movq 4592(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21221,13 +21644,13 @@ GL_PREFIX(RenderbufferStorageMultisample):
popq %rdx
popq %rsi
popq %rdi
- movq 4504(%rax), %r11
+ movq 4592(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4504(%rax), %r11
+ movq 4592(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21241,7 +21664,7 @@ GL_PREFIX(RenderbufferStorageMultisample):
popq %rdx
popq %rsi
popq %rdi
- movq 4504(%rax), %r11
+ movq 4592(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(RenderbufferStorageMultisample), .-GL_PREFIX(RenderbufferStorageMultisample)
@@ -21252,7 +21675,7 @@ GL_PREFIX(RenderbufferStorageMultisample):
GL_PREFIX(FramebufferTextureARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4512(%rax), %r11
+ movq 4600(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21266,13 +21689,13 @@ GL_PREFIX(FramebufferTextureARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4512(%rax), %r11
+ movq 4600(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4512(%rax), %r11
+ movq 4600(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21286,7 +21709,7 @@ GL_PREFIX(FramebufferTextureARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4512(%rax), %r11
+ movq 4600(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FramebufferTextureARB), .-GL_PREFIX(FramebufferTextureARB)
@@ -21297,7 +21720,7 @@ GL_PREFIX(FramebufferTextureARB):
GL_PREFIX(FramebufferTextureFaceARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4520(%rax), %r11
+ movq 4608(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21311,13 +21734,13 @@ GL_PREFIX(FramebufferTextureFaceARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4520(%rax), %r11
+ movq 4608(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4520(%rax), %r11
+ movq 4608(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21331,7 +21754,7 @@ GL_PREFIX(FramebufferTextureFaceARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4520(%rax), %r11
+ movq 4608(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FramebufferTextureFaceARB), .-GL_PREFIX(FramebufferTextureFaceARB)
@@ -21342,7 +21765,7 @@ GL_PREFIX(FramebufferTextureFaceARB):
GL_PREFIX(ProgramParameteriARB):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4528(%rax), %r11
+ movq 4616(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21352,13 +21775,13 @@ GL_PREFIX(ProgramParameteriARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4528(%rax), %r11
+ movq 4616(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4528(%rax), %r11
+ movq 4616(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21368,7 +21791,7 @@ GL_PREFIX(ProgramParameteriARB):
popq %rdx
popq %rsi
popq %rdi
- movq 4528(%rax), %r11
+ movq 4616(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramParameteriARB), .-GL_PREFIX(ProgramParameteriARB)
@@ -21379,7 +21802,7 @@ GL_PREFIX(ProgramParameteriARB):
GL_PREFIX(FlushMappedBufferRange):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4536(%rax), %r11
+ movq 4624(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21389,13 +21812,13 @@ GL_PREFIX(FlushMappedBufferRange):
popq %rdx
popq %rsi
popq %rdi
- movq 4536(%rax), %r11
+ movq 4624(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4536(%rax), %r11
+ movq 4624(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21405,7 +21828,7 @@ GL_PREFIX(FlushMappedBufferRange):
popq %rdx
popq %rsi
popq %rdi
- movq 4536(%rax), %r11
+ movq 4624(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FlushMappedBufferRange), .-GL_PREFIX(FlushMappedBufferRange)
@@ -21416,7 +21839,7 @@ GL_PREFIX(FlushMappedBufferRange):
GL_PREFIX(MapBufferRange):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4544(%rax), %r11
+ movq 4632(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21430,13 +21853,13 @@ GL_PREFIX(MapBufferRange):
popq %rdx
popq %rsi
popq %rdi
- movq 4544(%rax), %r11
+ movq 4632(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4544(%rax), %r11
+ movq 4632(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21450,7 +21873,7 @@ GL_PREFIX(MapBufferRange):
popq %rdx
popq %rsi
popq %rdi
- movq 4544(%rax), %r11
+ movq 4632(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(MapBufferRange), .-GL_PREFIX(MapBufferRange)
@@ -21461,25 +21884,25 @@ GL_PREFIX(MapBufferRange):
GL_PREFIX(BindVertexArray):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4552(%rax), %r11
+ movq 4640(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4552(%rax), %r11
+ movq 4640(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4552(%rax), %r11
+ movq 4640(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4552(%rax), %r11
+ movq 4640(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BindVertexArray), .-GL_PREFIX(BindVertexArray)
@@ -21490,7 +21913,7 @@ GL_PREFIX(BindVertexArray):
GL_PREFIX(GenVertexArrays):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4560(%rax), %r11
+ movq 4648(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21500,13 +21923,13 @@ GL_PREFIX(GenVertexArrays):
popq %rbp
popq %rsi
popq %rdi
- movq 4560(%rax), %r11
+ movq 4648(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4560(%rax), %r11
+ movq 4648(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21516,7 +21939,7 @@ GL_PREFIX(GenVertexArrays):
popq %rbp
popq %rsi
popq %rdi
- movq 4560(%rax), %r11
+ movq 4648(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GenVertexArrays), .-GL_PREFIX(GenVertexArrays)
@@ -21527,7 +21950,7 @@ GL_PREFIX(GenVertexArrays):
GL_PREFIX(CopyBufferSubData):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4568(%rax), %r11
+ movq 4656(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21541,13 +21964,13 @@ GL_PREFIX(CopyBufferSubData):
popq %rdx
popq %rsi
popq %rdi
- movq 4568(%rax), %r11
+ movq 4656(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4568(%rax), %r11
+ movq 4656(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21561,7 +21984,7 @@ GL_PREFIX(CopyBufferSubData):
popq %rdx
popq %rsi
popq %rdi
- movq 4568(%rax), %r11
+ movq 4656(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CopyBufferSubData), .-GL_PREFIX(CopyBufferSubData)
@@ -21572,7 +21995,7 @@ GL_PREFIX(CopyBufferSubData):
GL_PREFIX(ClientWaitSync):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4576(%rax), %r11
+ movq 4664(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21582,13 +22005,13 @@ GL_PREFIX(ClientWaitSync):
popq %rdx
popq %rsi
popq %rdi
- movq 4576(%rax), %r11
+ movq 4664(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4576(%rax), %r11
+ movq 4664(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21598,7 +22021,7 @@ GL_PREFIX(ClientWaitSync):
popq %rdx
popq %rsi
popq %rdi
- movq 4576(%rax), %r11
+ movq 4664(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ClientWaitSync), .-GL_PREFIX(ClientWaitSync)
@@ -21609,25 +22032,25 @@ GL_PREFIX(ClientWaitSync):
GL_PREFIX(DeleteSync):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4584(%rax), %r11
+ movq 4672(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4584(%rax), %r11
+ movq 4672(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4584(%rax), %r11
+ movq 4672(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4584(%rax), %r11
+ movq 4672(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DeleteSync), .-GL_PREFIX(DeleteSync)
@@ -21638,7 +22061,7 @@ GL_PREFIX(DeleteSync):
GL_PREFIX(FenceSync):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4592(%rax), %r11
+ movq 4680(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21648,13 +22071,13 @@ GL_PREFIX(FenceSync):
popq %rbp
popq %rsi
popq %rdi
- movq 4592(%rax), %r11
+ movq 4680(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4592(%rax), %r11
+ movq 4680(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21664,7 +22087,7 @@ GL_PREFIX(FenceSync):
popq %rbp
popq %rsi
popq %rdi
- movq 4592(%rax), %r11
+ movq 4680(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FenceSync), .-GL_PREFIX(FenceSync)
@@ -21675,7 +22098,7 @@ GL_PREFIX(FenceSync):
GL_PREFIX(GetInteger64v):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4600(%rax), %r11
+ movq 4688(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21685,13 +22108,13 @@ GL_PREFIX(GetInteger64v):
popq %rbp
popq %rsi
popq %rdi
- movq 4600(%rax), %r11
+ movq 4688(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4600(%rax), %r11
+ movq 4688(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21701,7 +22124,7 @@ GL_PREFIX(GetInteger64v):
popq %rbp
popq %rsi
popq %rdi
- movq 4600(%rax), %r11
+ movq 4688(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetInteger64v), .-GL_PREFIX(GetInteger64v)
@@ -21712,7 +22135,7 @@ GL_PREFIX(GetInteger64v):
GL_PREFIX(GetSynciv):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4608(%rax), %r11
+ movq 4696(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21726,13 +22149,13 @@ GL_PREFIX(GetSynciv):
popq %rdx
popq %rsi
popq %rdi
- movq 4608(%rax), %r11
+ movq 4696(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4608(%rax), %r11
+ movq 4696(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21746,7 +22169,7 @@ GL_PREFIX(GetSynciv):
popq %rdx
popq %rsi
popq %rdi
- movq 4608(%rax), %r11
+ movq 4696(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetSynciv), .-GL_PREFIX(GetSynciv)
@@ -21757,25 +22180,25 @@ GL_PREFIX(GetSynciv):
GL_PREFIX(IsSync):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4616(%rax), %r11
+ movq 4704(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4616(%rax), %r11
+ movq 4704(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4616(%rax), %r11
+ movq 4704(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4616(%rax), %r11
+ movq 4704(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(IsSync), .-GL_PREFIX(IsSync)
@@ -21786,7 +22209,7 @@ GL_PREFIX(IsSync):
GL_PREFIX(WaitSync):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4624(%rax), %r11
+ movq 4712(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21796,13 +22219,13 @@ GL_PREFIX(WaitSync):
popq %rdx
popq %rsi
popq %rdi
- movq 4624(%rax), %r11
+ movq 4712(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4624(%rax), %r11
+ movq 4712(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21812,7 +22235,7 @@ GL_PREFIX(WaitSync):
popq %rdx
popq %rsi
popq %rdi
- movq 4624(%rax), %r11
+ movq 4712(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WaitSync), .-GL_PREFIX(WaitSync)
@@ -21823,7 +22246,7 @@ GL_PREFIX(WaitSync):
GL_PREFIX(DrawElementsBaseVertex):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4632(%rax), %r11
+ movq 4720(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21837,13 +22260,13 @@ GL_PREFIX(DrawElementsBaseVertex):
popq %rdx
popq %rsi
popq %rdi
- movq 4632(%rax), %r11
+ movq 4720(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4632(%rax), %r11
+ movq 4720(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21857,7 +22280,7 @@ GL_PREFIX(DrawElementsBaseVertex):
popq %rdx
popq %rsi
popq %rdi
- movq 4632(%rax), %r11
+ movq 4720(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DrawElementsBaseVertex), .-GL_PREFIX(DrawElementsBaseVertex)
@@ -21868,7 +22291,7 @@ GL_PREFIX(DrawElementsBaseVertex):
GL_PREFIX(DrawRangeElementsBaseVertex):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4640(%rax), %r11
+ movq 4728(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21886,13 +22309,13 @@ GL_PREFIX(DrawRangeElementsBaseVertex):
popq %rdx
popq %rsi
popq %rdi
- movq 4640(%rax), %r11
+ movq 4728(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4640(%rax), %r11
+ movq 4728(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21910,7 +22333,7 @@ GL_PREFIX(DrawRangeElementsBaseVertex):
popq %rdx
popq %rsi
popq %rdi
- movq 4640(%rax), %r11
+ movq 4728(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DrawRangeElementsBaseVertex), .-GL_PREFIX(DrawRangeElementsBaseVertex)
@@ -21921,7 +22344,7 @@ GL_PREFIX(DrawRangeElementsBaseVertex):
GL_PREFIX(MultiDrawElementsBaseVertex):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4648(%rax), %r11
+ movq 4736(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21939,13 +22362,13 @@ GL_PREFIX(MultiDrawElementsBaseVertex):
popq %rdx
popq %rsi
popq %rdi
- movq 4648(%rax), %r11
+ movq 4736(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4648(%rax), %r11
+ movq 4736(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -21963,7 +22386,7 @@ GL_PREFIX(MultiDrawElementsBaseVertex):
popq %rdx
popq %rsi
popq %rdi
- movq 4648(%rax), %r11
+ movq 4736(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(MultiDrawElementsBaseVertex), .-GL_PREFIX(MultiDrawElementsBaseVertex)
@@ -21974,7 +22397,7 @@ GL_PREFIX(MultiDrawElementsBaseVertex):
GL_PREFIX(BindTransformFeedback):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4656(%rax), %r11
+ movq 4744(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -21984,13 +22407,13 @@ GL_PREFIX(BindTransformFeedback):
popq %rbp
popq %rsi
popq %rdi
- movq 4656(%rax), %r11
+ movq 4744(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4656(%rax), %r11
+ movq 4744(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22000,7 +22423,7 @@ GL_PREFIX(BindTransformFeedback):
popq %rbp
popq %rsi
popq %rdi
- movq 4656(%rax), %r11
+ movq 4744(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BindTransformFeedback), .-GL_PREFIX(BindTransformFeedback)
@@ -22011,7 +22434,7 @@ GL_PREFIX(BindTransformFeedback):
GL_PREFIX(DeleteTransformFeedbacks):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4664(%rax), %r11
+ movq 4752(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22021,13 +22444,13 @@ GL_PREFIX(DeleteTransformFeedbacks):
popq %rbp
popq %rsi
popq %rdi
- movq 4664(%rax), %r11
+ movq 4752(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4664(%rax), %r11
+ movq 4752(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22037,7 +22460,7 @@ GL_PREFIX(DeleteTransformFeedbacks):
popq %rbp
popq %rsi
popq %rdi
- movq 4664(%rax), %r11
+ movq 4752(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DeleteTransformFeedbacks), .-GL_PREFIX(DeleteTransformFeedbacks)
@@ -22048,7 +22471,7 @@ GL_PREFIX(DeleteTransformFeedbacks):
GL_PREFIX(DrawTransformFeedback):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4672(%rax), %r11
+ movq 4760(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22058,13 +22481,13 @@ GL_PREFIX(DrawTransformFeedback):
popq %rbp
popq %rsi
popq %rdi
- movq 4672(%rax), %r11
+ movq 4760(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4672(%rax), %r11
+ movq 4760(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22074,7 +22497,7 @@ GL_PREFIX(DrawTransformFeedback):
popq %rbp
popq %rsi
popq %rdi
- movq 4672(%rax), %r11
+ movq 4760(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DrawTransformFeedback), .-GL_PREFIX(DrawTransformFeedback)
@@ -22085,7 +22508,7 @@ GL_PREFIX(DrawTransformFeedback):
GL_PREFIX(GenTransformFeedbacks):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4680(%rax), %r11
+ movq 4768(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22095,13 +22518,13 @@ GL_PREFIX(GenTransformFeedbacks):
popq %rbp
popq %rsi
popq %rdi
- movq 4680(%rax), %r11
+ movq 4768(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4680(%rax), %r11
+ movq 4768(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22111,7 +22534,7 @@ GL_PREFIX(GenTransformFeedbacks):
popq %rbp
popq %rsi
popq %rdi
- movq 4680(%rax), %r11
+ movq 4768(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GenTransformFeedbacks), .-GL_PREFIX(GenTransformFeedbacks)
@@ -22122,25 +22545,25 @@ GL_PREFIX(GenTransformFeedbacks):
GL_PREFIX(IsTransformFeedback):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4688(%rax), %r11
+ movq 4776(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4688(%rax), %r11
+ movq 4776(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4688(%rax), %r11
+ movq 4776(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4688(%rax), %r11
+ movq 4776(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(IsTransformFeedback), .-GL_PREFIX(IsTransformFeedback)
@@ -22151,25 +22574,25 @@ GL_PREFIX(IsTransformFeedback):
GL_PREFIX(PauseTransformFeedback):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4696(%rax), %r11
+ movq 4784(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rbp
call _x86_64_get_dispatch@PLT
popq %rbp
- movq 4696(%rax), %r11
+ movq 4784(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4696(%rax), %r11
+ movq 4784(%rax), %r11
jmp *%r11
1:
pushq %rbp
call _glapi_get_dispatch
popq %rbp
- movq 4696(%rax), %r11
+ movq 4784(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(PauseTransformFeedback), .-GL_PREFIX(PauseTransformFeedback)
@@ -22180,25 +22603,25 @@ GL_PREFIX(PauseTransformFeedback):
GL_PREFIX(ResumeTransformFeedback):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4704(%rax), %r11
+ movq 4792(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rbp
call _x86_64_get_dispatch@PLT
popq %rbp
- movq 4704(%rax), %r11
+ movq 4792(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4704(%rax), %r11
+ movq 4792(%rax), %r11
jmp *%r11
1:
pushq %rbp
call _glapi_get_dispatch
popq %rbp
- movq 4704(%rax), %r11
+ movq 4792(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ResumeTransformFeedback), .-GL_PREFIX(ResumeTransformFeedback)
@@ -22209,7 +22632,7 @@ GL_PREFIX(ResumeTransformFeedback):
GL_PREFIX(PolygonOffsetEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4712(%rax), %r11
+ movq 4800(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -22219,13 +22642,13 @@ GL_PREFIX(PolygonOffsetEXT):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 4712(%rax), %r11
+ movq 4800(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4712(%rax), %r11
+ movq 4800(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -22235,19 +22658,19 @@ GL_PREFIX(PolygonOffsetEXT):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 4712(%rax), %r11
+ movq 4800(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(PolygonOffsetEXT), .-GL_PREFIX(PolygonOffsetEXT)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_590)
- .type GL_PREFIX(_dispatch_stub_590), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_590))
-GL_PREFIX(_dispatch_stub_590):
+ .globl GL_PREFIX(_dispatch_stub_601)
+ .type GL_PREFIX(_dispatch_stub_601), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_601))
+GL_PREFIX(_dispatch_stub_601):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4720(%rax), %r11
+ movq 4808(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22257,13 +22680,13 @@ GL_PREFIX(_dispatch_stub_590):
popq %rbp
popq %rsi
popq %rdi
- movq 4720(%rax), %r11
+ movq 4808(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4720(%rax), %r11
+ movq 4808(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22273,19 +22696,19 @@ GL_PREFIX(_dispatch_stub_590):
popq %rbp
popq %rsi
popq %rdi
- movq 4720(%rax), %r11
+ movq 4808(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_590), .-GL_PREFIX(_dispatch_stub_590)
+ .size GL_PREFIX(_dispatch_stub_601), .-GL_PREFIX(_dispatch_stub_601)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_591)
- .type GL_PREFIX(_dispatch_stub_591), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_591))
-GL_PREFIX(_dispatch_stub_591):
+ .globl GL_PREFIX(_dispatch_stub_602)
+ .type GL_PREFIX(_dispatch_stub_602), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_602))
+GL_PREFIX(_dispatch_stub_602):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4728(%rax), %r11
+ movq 4816(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22295,13 +22718,13 @@ GL_PREFIX(_dispatch_stub_591):
popq %rbp
popq %rsi
popq %rdi
- movq 4728(%rax), %r11
+ movq 4816(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4728(%rax), %r11
+ movq 4816(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22311,19 +22734,19 @@ GL_PREFIX(_dispatch_stub_591):
popq %rbp
popq %rsi
popq %rdi
- movq 4728(%rax), %r11
+ movq 4816(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_591), .-GL_PREFIX(_dispatch_stub_591)
+ .size GL_PREFIX(_dispatch_stub_602), .-GL_PREFIX(_dispatch_stub_602)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_592)
- .type GL_PREFIX(_dispatch_stub_592), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_592))
-GL_PREFIX(_dispatch_stub_592):
+ .globl GL_PREFIX(_dispatch_stub_603)
+ .type GL_PREFIX(_dispatch_stub_603), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_603))
+GL_PREFIX(_dispatch_stub_603):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4736(%rax), %r11
+ movq 4824(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -22333,13 +22756,13 @@ GL_PREFIX(_dispatch_stub_592):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 4736(%rax), %r11
+ movq 4824(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4736(%rax), %r11
+ movq 4824(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -22349,19 +22772,19 @@ GL_PREFIX(_dispatch_stub_592):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 4736(%rax), %r11
+ movq 4824(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_592), .-GL_PREFIX(_dispatch_stub_592)
+ .size GL_PREFIX(_dispatch_stub_603), .-GL_PREFIX(_dispatch_stub_603)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_593)
- .type GL_PREFIX(_dispatch_stub_593), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_593))
-GL_PREFIX(_dispatch_stub_593):
+ .globl GL_PREFIX(_dispatch_stub_604)
+ .type GL_PREFIX(_dispatch_stub_604), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_604))
+GL_PREFIX(_dispatch_stub_604):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4744(%rax), %r11
+ movq 4832(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22371,13 +22794,13 @@ GL_PREFIX(_dispatch_stub_593):
popq %rbp
popq %rsi
popq %rdi
- movq 4744(%rax), %r11
+ movq 4832(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4744(%rax), %r11
+ movq 4832(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22387,19 +22810,19 @@ GL_PREFIX(_dispatch_stub_593):
popq %rbp
popq %rsi
popq %rdi
- movq 4744(%rax), %r11
+ movq 4832(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_593), .-GL_PREFIX(_dispatch_stub_593)
+ .size GL_PREFIX(_dispatch_stub_604), .-GL_PREFIX(_dispatch_stub_604)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_594)
- .type GL_PREFIX(_dispatch_stub_594), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_594))
-GL_PREFIX(_dispatch_stub_594):
+ .globl GL_PREFIX(_dispatch_stub_605)
+ .type GL_PREFIX(_dispatch_stub_605), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_605))
+GL_PREFIX(_dispatch_stub_605):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4752(%rax), %r11
+ movq 4840(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22409,13 +22832,13 @@ GL_PREFIX(_dispatch_stub_594):
popq %rbp
popq %rsi
popq %rdi
- movq 4752(%rax), %r11
+ movq 4840(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4752(%rax), %r11
+ movq 4840(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22425,19 +22848,19 @@ GL_PREFIX(_dispatch_stub_594):
popq %rbp
popq %rsi
popq %rdi
- movq 4752(%rax), %r11
+ movq 4840(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_594), .-GL_PREFIX(_dispatch_stub_594)
+ .size GL_PREFIX(_dispatch_stub_605), .-GL_PREFIX(_dispatch_stub_605)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_595)
- .type GL_PREFIX(_dispatch_stub_595), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_595))
-GL_PREFIX(_dispatch_stub_595):
+ .globl GL_PREFIX(_dispatch_stub_606)
+ .type GL_PREFIX(_dispatch_stub_606), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_606))
+GL_PREFIX(_dispatch_stub_606):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4760(%rax), %r11
+ movq 4848(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22447,13 +22870,13 @@ GL_PREFIX(_dispatch_stub_595):
popq %rbp
popq %rsi
popq %rdi
- movq 4760(%rax), %r11
+ movq 4848(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4760(%rax), %r11
+ movq 4848(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22463,19 +22886,19 @@ GL_PREFIX(_dispatch_stub_595):
popq %rbp
popq %rsi
popq %rdi
- movq 4760(%rax), %r11
+ movq 4848(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_595), .-GL_PREFIX(_dispatch_stub_595)
+ .size GL_PREFIX(_dispatch_stub_606), .-GL_PREFIX(_dispatch_stub_606)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_596)
- .type GL_PREFIX(_dispatch_stub_596), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_596))
-GL_PREFIX(_dispatch_stub_596):
+ .globl GL_PREFIX(_dispatch_stub_607)
+ .type GL_PREFIX(_dispatch_stub_607), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_607))
+GL_PREFIX(_dispatch_stub_607):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4768(%rax), %r11
+ movq 4856(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22485,13 +22908,13 @@ GL_PREFIX(_dispatch_stub_596):
popq %rbp
popq %rsi
popq %rdi
- movq 4768(%rax), %r11
+ movq 4856(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4768(%rax), %r11
+ movq 4856(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22501,40 +22924,40 @@ GL_PREFIX(_dispatch_stub_596):
popq %rbp
popq %rsi
popq %rdi
- movq 4768(%rax), %r11
+ movq 4856(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_596), .-GL_PREFIX(_dispatch_stub_596)
+ .size GL_PREFIX(_dispatch_stub_607), .-GL_PREFIX(_dispatch_stub_607)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_597)
- .type GL_PREFIX(_dispatch_stub_597), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_597))
-GL_PREFIX(_dispatch_stub_597):
+ .globl GL_PREFIX(_dispatch_stub_608)
+ .type GL_PREFIX(_dispatch_stub_608), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_608))
+GL_PREFIX(_dispatch_stub_608):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4776(%rax), %r11
+ movq 4864(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4776(%rax), %r11
+ movq 4864(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4776(%rax), %r11
+ movq 4864(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4776(%rax), %r11
+ movq 4864(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_597), .-GL_PREFIX(_dispatch_stub_597)
+ .size GL_PREFIX(_dispatch_stub_608), .-GL_PREFIX(_dispatch_stub_608)
.p2align 4,,15
.globl GL_PREFIX(ColorPointerEXT)
@@ -22542,7 +22965,7 @@ GL_PREFIX(_dispatch_stub_597):
GL_PREFIX(ColorPointerEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4784(%rax), %r11
+ movq 4872(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22556,13 +22979,13 @@ GL_PREFIX(ColorPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4784(%rax), %r11
+ movq 4872(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4784(%rax), %r11
+ movq 4872(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22576,7 +22999,7 @@ GL_PREFIX(ColorPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4784(%rax), %r11
+ movq 4872(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ColorPointerEXT), .-GL_PREFIX(ColorPointerEXT)
@@ -22587,7 +23010,7 @@ GL_PREFIX(ColorPointerEXT):
GL_PREFIX(EdgeFlagPointerEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4792(%rax), %r11
+ movq 4880(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22597,13 +23020,13 @@ GL_PREFIX(EdgeFlagPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4792(%rax), %r11
+ movq 4880(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4792(%rax), %r11
+ movq 4880(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22613,7 +23036,7 @@ GL_PREFIX(EdgeFlagPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4792(%rax), %r11
+ movq 4880(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(EdgeFlagPointerEXT), .-GL_PREFIX(EdgeFlagPointerEXT)
@@ -22624,7 +23047,7 @@ GL_PREFIX(EdgeFlagPointerEXT):
GL_PREFIX(IndexPointerEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4800(%rax), %r11
+ movq 4888(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22638,13 +23061,13 @@ GL_PREFIX(IndexPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4800(%rax), %r11
+ movq 4888(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4800(%rax), %r11
+ movq 4888(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22658,7 +23081,7 @@ GL_PREFIX(IndexPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4800(%rax), %r11
+ movq 4888(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(IndexPointerEXT), .-GL_PREFIX(IndexPointerEXT)
@@ -22669,7 +23092,7 @@ GL_PREFIX(IndexPointerEXT):
GL_PREFIX(NormalPointerEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4808(%rax), %r11
+ movq 4896(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22683,13 +23106,13 @@ GL_PREFIX(NormalPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4808(%rax), %r11
+ movq 4896(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4808(%rax), %r11
+ movq 4896(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22703,7 +23126,7 @@ GL_PREFIX(NormalPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4808(%rax), %r11
+ movq 4896(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(NormalPointerEXT), .-GL_PREFIX(NormalPointerEXT)
@@ -22714,7 +23137,7 @@ GL_PREFIX(NormalPointerEXT):
GL_PREFIX(TexCoordPointerEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4816(%rax), %r11
+ movq 4904(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22728,13 +23151,13 @@ GL_PREFIX(TexCoordPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4816(%rax), %r11
+ movq 4904(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4816(%rax), %r11
+ movq 4904(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22748,7 +23171,7 @@ GL_PREFIX(TexCoordPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4816(%rax), %r11
+ movq 4904(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(TexCoordPointerEXT), .-GL_PREFIX(TexCoordPointerEXT)
@@ -22759,7 +23182,7 @@ GL_PREFIX(TexCoordPointerEXT):
GL_PREFIX(VertexPointerEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4824(%rax), %r11
+ movq 4912(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22773,13 +23196,13 @@ GL_PREFIX(VertexPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4824(%rax), %r11
+ movq 4912(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4824(%rax), %r11
+ movq 4912(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22793,7 +23216,7 @@ GL_PREFIX(VertexPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4824(%rax), %r11
+ movq 4912(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexPointerEXT), .-GL_PREFIX(VertexPointerEXT)
@@ -22804,7 +23227,7 @@ GL_PREFIX(VertexPointerEXT):
GL_PREFIX(PointParameterfEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4832(%rax), %r11
+ movq 4920(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -22814,13 +23237,13 @@ GL_PREFIX(PointParameterfEXT):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 4832(%rax), %r11
+ movq 4920(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4832(%rax), %r11
+ movq 4920(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -22830,7 +23253,7 @@ GL_PREFIX(PointParameterfEXT):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 4832(%rax), %r11
+ movq 4920(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(PointParameterfEXT), .-GL_PREFIX(PointParameterfEXT)
@@ -22841,7 +23264,7 @@ GL_PREFIX(PointParameterfEXT):
GL_PREFIX(PointParameterfvEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4840(%rax), %r11
+ movq 4928(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22851,13 +23274,13 @@ GL_PREFIX(PointParameterfvEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 4840(%rax), %r11
+ movq 4928(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4840(%rax), %r11
+ movq 4928(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22867,7 +23290,7 @@ GL_PREFIX(PointParameterfvEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 4840(%rax), %r11
+ movq 4928(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(PointParameterfvEXT), .-GL_PREFIX(PointParameterfvEXT)
@@ -22878,7 +23301,7 @@ GL_PREFIX(PointParameterfvEXT):
GL_PREFIX(LockArraysEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4848(%rax), %r11
+ movq 4936(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22888,13 +23311,13 @@ GL_PREFIX(LockArraysEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 4848(%rax), %r11
+ movq 4936(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4848(%rax), %r11
+ movq 4936(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22904,7 +23327,7 @@ GL_PREFIX(LockArraysEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 4848(%rax), %r11
+ movq 4936(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(LockArraysEXT), .-GL_PREFIX(LockArraysEXT)
@@ -22915,25 +23338,25 @@ GL_PREFIX(LockArraysEXT):
GL_PREFIX(UnlockArraysEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4856(%rax), %r11
+ movq 4944(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rbp
call _x86_64_get_dispatch@PLT
popq %rbp
- movq 4856(%rax), %r11
+ movq 4944(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4856(%rax), %r11
+ movq 4944(%rax), %r11
jmp *%r11
1:
pushq %rbp
call _glapi_get_dispatch
popq %rbp
- movq 4856(%rax), %r11
+ movq 4944(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(UnlockArraysEXT), .-GL_PREFIX(UnlockArraysEXT)
@@ -22944,7 +23367,7 @@ GL_PREFIX(UnlockArraysEXT):
GL_PREFIX(SecondaryColor3bEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4864(%rax), %r11
+ movq 4952(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -22954,13 +23377,13 @@ GL_PREFIX(SecondaryColor3bEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4864(%rax), %r11
+ movq 4952(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4864(%rax), %r11
+ movq 4952(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -22970,7 +23393,7 @@ GL_PREFIX(SecondaryColor3bEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4864(%rax), %r11
+ movq 4952(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3bEXT), .-GL_PREFIX(SecondaryColor3bEXT)
@@ -22981,25 +23404,25 @@ GL_PREFIX(SecondaryColor3bEXT):
GL_PREFIX(SecondaryColor3bvEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4872(%rax), %r11
+ movq 4960(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4872(%rax), %r11
+ movq 4960(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4872(%rax), %r11
+ movq 4960(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4872(%rax), %r11
+ movq 4960(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3bvEXT), .-GL_PREFIX(SecondaryColor3bvEXT)
@@ -23010,7 +23433,7 @@ GL_PREFIX(SecondaryColor3bvEXT):
GL_PREFIX(SecondaryColor3dEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4880(%rax), %r11
+ movq 4968(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -23022,13 +23445,13 @@ GL_PREFIX(SecondaryColor3dEXT):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 4880(%rax), %r11
+ movq 4968(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4880(%rax), %r11
+ movq 4968(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -23040,7 +23463,7 @@ GL_PREFIX(SecondaryColor3dEXT):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 4880(%rax), %r11
+ movq 4968(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3dEXT), .-GL_PREFIX(SecondaryColor3dEXT)
@@ -23051,25 +23474,25 @@ GL_PREFIX(SecondaryColor3dEXT):
GL_PREFIX(SecondaryColor3dvEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4888(%rax), %r11
+ movq 4976(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4888(%rax), %r11
+ movq 4976(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4888(%rax), %r11
+ movq 4976(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4888(%rax), %r11
+ movq 4976(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3dvEXT), .-GL_PREFIX(SecondaryColor3dvEXT)
@@ -23080,7 +23503,7 @@ GL_PREFIX(SecondaryColor3dvEXT):
GL_PREFIX(SecondaryColor3fEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4896(%rax), %r11
+ movq 4984(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -23092,13 +23515,13 @@ GL_PREFIX(SecondaryColor3fEXT):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 4896(%rax), %r11
+ movq 4984(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4896(%rax), %r11
+ movq 4984(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -23110,7 +23533,7 @@ GL_PREFIX(SecondaryColor3fEXT):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 4896(%rax), %r11
+ movq 4984(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3fEXT), .-GL_PREFIX(SecondaryColor3fEXT)
@@ -23121,25 +23544,25 @@ GL_PREFIX(SecondaryColor3fEXT):
GL_PREFIX(SecondaryColor3fvEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4904(%rax), %r11
+ movq 4992(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4904(%rax), %r11
+ movq 4992(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4904(%rax), %r11
+ movq 4992(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4904(%rax), %r11
+ movq 4992(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3fvEXT), .-GL_PREFIX(SecondaryColor3fvEXT)
@@ -23150,7 +23573,7 @@ GL_PREFIX(SecondaryColor3fvEXT):
GL_PREFIX(SecondaryColor3iEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4912(%rax), %r11
+ movq 5000(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23160,13 +23583,13 @@ GL_PREFIX(SecondaryColor3iEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4912(%rax), %r11
+ movq 5000(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4912(%rax), %r11
+ movq 5000(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23176,7 +23599,7 @@ GL_PREFIX(SecondaryColor3iEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4912(%rax), %r11
+ movq 5000(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3iEXT), .-GL_PREFIX(SecondaryColor3iEXT)
@@ -23187,25 +23610,25 @@ GL_PREFIX(SecondaryColor3iEXT):
GL_PREFIX(SecondaryColor3ivEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4920(%rax), %r11
+ movq 5008(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4920(%rax), %r11
+ movq 5008(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4920(%rax), %r11
+ movq 5008(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4920(%rax), %r11
+ movq 5008(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3ivEXT), .-GL_PREFIX(SecondaryColor3ivEXT)
@@ -23216,7 +23639,7 @@ GL_PREFIX(SecondaryColor3ivEXT):
GL_PREFIX(SecondaryColor3sEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4928(%rax), %r11
+ movq 5016(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23226,13 +23649,13 @@ GL_PREFIX(SecondaryColor3sEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4928(%rax), %r11
+ movq 5016(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4928(%rax), %r11
+ movq 5016(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23242,7 +23665,7 @@ GL_PREFIX(SecondaryColor3sEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4928(%rax), %r11
+ movq 5016(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3sEXT), .-GL_PREFIX(SecondaryColor3sEXT)
@@ -23253,25 +23676,25 @@ GL_PREFIX(SecondaryColor3sEXT):
GL_PREFIX(SecondaryColor3svEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4936(%rax), %r11
+ movq 5024(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4936(%rax), %r11
+ movq 5024(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4936(%rax), %r11
+ movq 5024(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4936(%rax), %r11
+ movq 5024(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3svEXT), .-GL_PREFIX(SecondaryColor3svEXT)
@@ -23282,7 +23705,7 @@ GL_PREFIX(SecondaryColor3svEXT):
GL_PREFIX(SecondaryColor3ubEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4944(%rax), %r11
+ movq 5032(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23292,13 +23715,13 @@ GL_PREFIX(SecondaryColor3ubEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4944(%rax), %r11
+ movq 5032(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4944(%rax), %r11
+ movq 5032(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23308,7 +23731,7 @@ GL_PREFIX(SecondaryColor3ubEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4944(%rax), %r11
+ movq 5032(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3ubEXT), .-GL_PREFIX(SecondaryColor3ubEXT)
@@ -23319,25 +23742,25 @@ GL_PREFIX(SecondaryColor3ubEXT):
GL_PREFIX(SecondaryColor3ubvEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4952(%rax), %r11
+ movq 5040(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4952(%rax), %r11
+ movq 5040(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4952(%rax), %r11
+ movq 5040(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4952(%rax), %r11
+ movq 5040(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3ubvEXT), .-GL_PREFIX(SecondaryColor3ubvEXT)
@@ -23348,7 +23771,7 @@ GL_PREFIX(SecondaryColor3ubvEXT):
GL_PREFIX(SecondaryColor3uiEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4960(%rax), %r11
+ movq 5048(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23358,13 +23781,13 @@ GL_PREFIX(SecondaryColor3uiEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4960(%rax), %r11
+ movq 5048(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4960(%rax), %r11
+ movq 5048(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23374,7 +23797,7 @@ GL_PREFIX(SecondaryColor3uiEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4960(%rax), %r11
+ movq 5048(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3uiEXT), .-GL_PREFIX(SecondaryColor3uiEXT)
@@ -23385,25 +23808,25 @@ GL_PREFIX(SecondaryColor3uiEXT):
GL_PREFIX(SecondaryColor3uivEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4968(%rax), %r11
+ movq 5056(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4968(%rax), %r11
+ movq 5056(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4968(%rax), %r11
+ movq 5056(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4968(%rax), %r11
+ movq 5056(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3uivEXT), .-GL_PREFIX(SecondaryColor3uivEXT)
@@ -23414,7 +23837,7 @@ GL_PREFIX(SecondaryColor3uivEXT):
GL_PREFIX(SecondaryColor3usEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4976(%rax), %r11
+ movq 5064(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23424,13 +23847,13 @@ GL_PREFIX(SecondaryColor3usEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4976(%rax), %r11
+ movq 5064(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4976(%rax), %r11
+ movq 5064(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23440,7 +23863,7 @@ GL_PREFIX(SecondaryColor3usEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4976(%rax), %r11
+ movq 5064(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3usEXT), .-GL_PREFIX(SecondaryColor3usEXT)
@@ -23451,25 +23874,25 @@ GL_PREFIX(SecondaryColor3usEXT):
GL_PREFIX(SecondaryColor3usvEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4984(%rax), %r11
+ movq 5072(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 4984(%rax), %r11
+ movq 5072(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4984(%rax), %r11
+ movq 5072(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 4984(%rax), %r11
+ movq 5072(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColor3usvEXT), .-GL_PREFIX(SecondaryColor3usvEXT)
@@ -23480,7 +23903,7 @@ GL_PREFIX(SecondaryColor3usvEXT):
GL_PREFIX(SecondaryColorPointerEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 4992(%rax), %r11
+ movq 5080(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23494,13 +23917,13 @@ GL_PREFIX(SecondaryColorPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4992(%rax), %r11
+ movq 5080(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 4992(%rax), %r11
+ movq 5080(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23514,7 +23937,7 @@ GL_PREFIX(SecondaryColorPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 4992(%rax), %r11
+ movq 5080(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SecondaryColorPointerEXT), .-GL_PREFIX(SecondaryColorPointerEXT)
@@ -23525,7 +23948,7 @@ GL_PREFIX(SecondaryColorPointerEXT):
GL_PREFIX(MultiDrawArraysEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5000(%rax), %r11
+ movq 5088(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23539,13 +23962,13 @@ GL_PREFIX(MultiDrawArraysEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 5000(%rax), %r11
+ movq 5088(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5000(%rax), %r11
+ movq 5088(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23559,7 +23982,7 @@ GL_PREFIX(MultiDrawArraysEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 5000(%rax), %r11
+ movq 5088(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(MultiDrawArraysEXT), .-GL_PREFIX(MultiDrawArraysEXT)
@@ -23570,7 +23993,7 @@ GL_PREFIX(MultiDrawArraysEXT):
GL_PREFIX(MultiDrawElementsEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5008(%rax), %r11
+ movq 5096(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23584,13 +24007,13 @@ GL_PREFIX(MultiDrawElementsEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 5008(%rax), %r11
+ movq 5096(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5008(%rax), %r11
+ movq 5096(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23604,7 +24027,7 @@ GL_PREFIX(MultiDrawElementsEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 5008(%rax), %r11
+ movq 5096(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(MultiDrawElementsEXT), .-GL_PREFIX(MultiDrawElementsEXT)
@@ -23615,7 +24038,7 @@ GL_PREFIX(MultiDrawElementsEXT):
GL_PREFIX(FogCoordPointerEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5016(%rax), %r11
+ movq 5104(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23625,13 +24048,13 @@ GL_PREFIX(FogCoordPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 5016(%rax), %r11
+ movq 5104(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5016(%rax), %r11
+ movq 5104(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23641,7 +24064,7 @@ GL_PREFIX(FogCoordPointerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 5016(%rax), %r11
+ movq 5104(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FogCoordPointerEXT), .-GL_PREFIX(FogCoordPointerEXT)
@@ -23652,7 +24075,7 @@ GL_PREFIX(FogCoordPointerEXT):
GL_PREFIX(FogCoorddEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5024(%rax), %r11
+ movq 5112(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $8, %rsp
@@ -23660,13 +24083,13 @@ GL_PREFIX(FogCoorddEXT):
call _x86_64_get_dispatch@PLT
movq (%rsp), %xmm0
addq $8, %rsp
- movq 5024(%rax), %r11
+ movq 5112(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5024(%rax), %r11
+ movq 5112(%rax), %r11
jmp *%r11
1:
subq $8, %rsp
@@ -23674,7 +24097,7 @@ GL_PREFIX(FogCoorddEXT):
call _glapi_get_dispatch
movq (%rsp), %xmm0
addq $8, %rsp
- movq 5024(%rax), %r11
+ movq 5112(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FogCoorddEXT), .-GL_PREFIX(FogCoorddEXT)
@@ -23685,25 +24108,25 @@ GL_PREFIX(FogCoorddEXT):
GL_PREFIX(FogCoorddvEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5032(%rax), %r11
+ movq 5120(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5032(%rax), %r11
+ movq 5120(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5032(%rax), %r11
+ movq 5120(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5032(%rax), %r11
+ movq 5120(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FogCoorddvEXT), .-GL_PREFIX(FogCoorddvEXT)
@@ -23714,7 +24137,7 @@ GL_PREFIX(FogCoorddvEXT):
GL_PREFIX(FogCoordfEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5040(%rax), %r11
+ movq 5128(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $8, %rsp
@@ -23722,13 +24145,13 @@ GL_PREFIX(FogCoordfEXT):
call _x86_64_get_dispatch@PLT
movq (%rsp), %xmm0
addq $8, %rsp
- movq 5040(%rax), %r11
+ movq 5128(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5040(%rax), %r11
+ movq 5128(%rax), %r11
jmp *%r11
1:
subq $8, %rsp
@@ -23736,7 +24159,7 @@ GL_PREFIX(FogCoordfEXT):
call _glapi_get_dispatch
movq (%rsp), %xmm0
addq $8, %rsp
- movq 5040(%rax), %r11
+ movq 5128(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FogCoordfEXT), .-GL_PREFIX(FogCoordfEXT)
@@ -23747,58 +24170,58 @@ GL_PREFIX(FogCoordfEXT):
GL_PREFIX(FogCoordfvEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5048(%rax), %r11
+ movq 5136(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5048(%rax), %r11
+ movq 5136(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5048(%rax), %r11
+ movq 5136(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5048(%rax), %r11
+ movq 5136(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FogCoordfvEXT), .-GL_PREFIX(FogCoordfvEXT)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_632)
- .type GL_PREFIX(_dispatch_stub_632), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_632))
-GL_PREFIX(_dispatch_stub_632):
+ .globl GL_PREFIX(_dispatch_stub_643)
+ .type GL_PREFIX(_dispatch_stub_643), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_643))
+GL_PREFIX(_dispatch_stub_643):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5056(%rax), %r11
+ movq 5144(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5056(%rax), %r11
+ movq 5144(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5056(%rax), %r11
+ movq 5144(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5056(%rax), %r11
+ movq 5144(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_632), .-GL_PREFIX(_dispatch_stub_632)
+ .size GL_PREFIX(_dispatch_stub_643), .-GL_PREFIX(_dispatch_stub_643)
.p2align 4,,15
.globl GL_PREFIX(BlendFuncSeparateEXT)
@@ -23806,7 +24229,7 @@ GL_PREFIX(_dispatch_stub_632):
GL_PREFIX(BlendFuncSeparateEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5064(%rax), %r11
+ movq 5152(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23820,13 +24243,13 @@ GL_PREFIX(BlendFuncSeparateEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 5064(%rax), %r11
+ movq 5152(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5064(%rax), %r11
+ movq 5152(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23840,7 +24263,7 @@ GL_PREFIX(BlendFuncSeparateEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 5064(%rax), %r11
+ movq 5152(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BlendFuncSeparateEXT), .-GL_PREFIX(BlendFuncSeparateEXT)
@@ -23851,25 +24274,25 @@ GL_PREFIX(BlendFuncSeparateEXT):
GL_PREFIX(FlushVertexArrayRangeNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5072(%rax), %r11
+ movq 5160(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rbp
call _x86_64_get_dispatch@PLT
popq %rbp
- movq 5072(%rax), %r11
+ movq 5160(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5072(%rax), %r11
+ movq 5160(%rax), %r11
jmp *%r11
1:
pushq %rbp
call _glapi_get_dispatch
popq %rbp
- movq 5072(%rax), %r11
+ movq 5160(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FlushVertexArrayRangeNV), .-GL_PREFIX(FlushVertexArrayRangeNV)
@@ -23880,7 +24303,7 @@ GL_PREFIX(FlushVertexArrayRangeNV):
GL_PREFIX(VertexArrayRangeNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5080(%rax), %r11
+ movq 5168(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23890,13 +24313,13 @@ GL_PREFIX(VertexArrayRangeNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5080(%rax), %r11
+ movq 5168(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5080(%rax), %r11
+ movq 5168(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23906,7 +24329,7 @@ GL_PREFIX(VertexArrayRangeNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5080(%rax), %r11
+ movq 5168(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexArrayRangeNV), .-GL_PREFIX(VertexArrayRangeNV)
@@ -23917,7 +24340,7 @@ GL_PREFIX(VertexArrayRangeNV):
GL_PREFIX(CombinerInputNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5088(%rax), %r11
+ movq 5176(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23935,13 +24358,13 @@ GL_PREFIX(CombinerInputNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5088(%rax), %r11
+ movq 5176(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5088(%rax), %r11
+ movq 5176(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -23959,7 +24382,7 @@ GL_PREFIX(CombinerInputNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5088(%rax), %r11
+ movq 5176(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CombinerInputNV), .-GL_PREFIX(CombinerInputNV)
@@ -23970,7 +24393,7 @@ GL_PREFIX(CombinerInputNV):
GL_PREFIX(CombinerOutputNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5096(%rax), %r11
+ movq 5184(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -23988,13 +24411,13 @@ GL_PREFIX(CombinerOutputNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5096(%rax), %r11
+ movq 5184(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5096(%rax), %r11
+ movq 5184(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24012,7 +24435,7 @@ GL_PREFIX(CombinerOutputNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5096(%rax), %r11
+ movq 5184(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CombinerOutputNV), .-GL_PREFIX(CombinerOutputNV)
@@ -24023,7 +24446,7 @@ GL_PREFIX(CombinerOutputNV):
GL_PREFIX(CombinerParameterfNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5104(%rax), %r11
+ movq 5192(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -24033,13 +24456,13 @@ GL_PREFIX(CombinerParameterfNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 5104(%rax), %r11
+ movq 5192(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5104(%rax), %r11
+ movq 5192(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -24049,7 +24472,7 @@ GL_PREFIX(CombinerParameterfNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 5104(%rax), %r11
+ movq 5192(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CombinerParameterfNV), .-GL_PREFIX(CombinerParameterfNV)
@@ -24060,7 +24483,7 @@ GL_PREFIX(CombinerParameterfNV):
GL_PREFIX(CombinerParameterfvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5112(%rax), %r11
+ movq 5200(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24070,13 +24493,13 @@ GL_PREFIX(CombinerParameterfvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5112(%rax), %r11
+ movq 5200(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5112(%rax), %r11
+ movq 5200(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24086,7 +24509,7 @@ GL_PREFIX(CombinerParameterfvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5112(%rax), %r11
+ movq 5200(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CombinerParameterfvNV), .-GL_PREFIX(CombinerParameterfvNV)
@@ -24097,7 +24520,7 @@ GL_PREFIX(CombinerParameterfvNV):
GL_PREFIX(CombinerParameteriNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5120(%rax), %r11
+ movq 5208(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24107,13 +24530,13 @@ GL_PREFIX(CombinerParameteriNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5120(%rax), %r11
+ movq 5208(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5120(%rax), %r11
+ movq 5208(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24123,7 +24546,7 @@ GL_PREFIX(CombinerParameteriNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5120(%rax), %r11
+ movq 5208(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CombinerParameteriNV), .-GL_PREFIX(CombinerParameteriNV)
@@ -24134,7 +24557,7 @@ GL_PREFIX(CombinerParameteriNV):
GL_PREFIX(CombinerParameterivNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5128(%rax), %r11
+ movq 5216(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24144,13 +24567,13 @@ GL_PREFIX(CombinerParameterivNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5128(%rax), %r11
+ movq 5216(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5128(%rax), %r11
+ movq 5216(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24160,7 +24583,7 @@ GL_PREFIX(CombinerParameterivNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5128(%rax), %r11
+ movq 5216(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CombinerParameterivNV), .-GL_PREFIX(CombinerParameterivNV)
@@ -24171,7 +24594,7 @@ GL_PREFIX(CombinerParameterivNV):
GL_PREFIX(FinalCombinerInputNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5136(%rax), %r11
+ movq 5224(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24185,13 +24608,13 @@ GL_PREFIX(FinalCombinerInputNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5136(%rax), %r11
+ movq 5224(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5136(%rax), %r11
+ movq 5224(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24205,7 +24628,7 @@ GL_PREFIX(FinalCombinerInputNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5136(%rax), %r11
+ movq 5224(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FinalCombinerInputNV), .-GL_PREFIX(FinalCombinerInputNV)
@@ -24216,7 +24639,7 @@ GL_PREFIX(FinalCombinerInputNV):
GL_PREFIX(GetCombinerInputParameterfvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5144(%rax), %r11
+ movq 5232(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24230,13 +24653,13 @@ GL_PREFIX(GetCombinerInputParameterfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5144(%rax), %r11
+ movq 5232(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5144(%rax), %r11
+ movq 5232(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24250,7 +24673,7 @@ GL_PREFIX(GetCombinerInputParameterfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5144(%rax), %r11
+ movq 5232(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetCombinerInputParameterfvNV), .-GL_PREFIX(GetCombinerInputParameterfvNV)
@@ -24261,7 +24684,7 @@ GL_PREFIX(GetCombinerInputParameterfvNV):
GL_PREFIX(GetCombinerInputParameterivNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5152(%rax), %r11
+ movq 5240(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24275,13 +24698,13 @@ GL_PREFIX(GetCombinerInputParameterivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5152(%rax), %r11
+ movq 5240(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5152(%rax), %r11
+ movq 5240(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24295,7 +24718,7 @@ GL_PREFIX(GetCombinerInputParameterivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5152(%rax), %r11
+ movq 5240(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetCombinerInputParameterivNV), .-GL_PREFIX(GetCombinerInputParameterivNV)
@@ -24306,7 +24729,7 @@ GL_PREFIX(GetCombinerInputParameterivNV):
GL_PREFIX(GetCombinerOutputParameterfvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5160(%rax), %r11
+ movq 5248(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24320,13 +24743,13 @@ GL_PREFIX(GetCombinerOutputParameterfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5160(%rax), %r11
+ movq 5248(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5160(%rax), %r11
+ movq 5248(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24340,7 +24763,7 @@ GL_PREFIX(GetCombinerOutputParameterfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5160(%rax), %r11
+ movq 5248(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetCombinerOutputParameterfvNV), .-GL_PREFIX(GetCombinerOutputParameterfvNV)
@@ -24351,7 +24774,7 @@ GL_PREFIX(GetCombinerOutputParameterfvNV):
GL_PREFIX(GetCombinerOutputParameterivNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5168(%rax), %r11
+ movq 5256(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24365,13 +24788,13 @@ GL_PREFIX(GetCombinerOutputParameterivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5168(%rax), %r11
+ movq 5256(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5168(%rax), %r11
+ movq 5256(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24385,7 +24808,7 @@ GL_PREFIX(GetCombinerOutputParameterivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5168(%rax), %r11
+ movq 5256(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetCombinerOutputParameterivNV), .-GL_PREFIX(GetCombinerOutputParameterivNV)
@@ -24396,7 +24819,7 @@ GL_PREFIX(GetCombinerOutputParameterivNV):
GL_PREFIX(GetFinalCombinerInputParameterfvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5176(%rax), %r11
+ movq 5264(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24406,13 +24829,13 @@ GL_PREFIX(GetFinalCombinerInputParameterfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5176(%rax), %r11
+ movq 5264(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5176(%rax), %r11
+ movq 5264(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24422,7 +24845,7 @@ GL_PREFIX(GetFinalCombinerInputParameterfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5176(%rax), %r11
+ movq 5264(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetFinalCombinerInputParameterfvNV), .-GL_PREFIX(GetFinalCombinerInputParameterfvNV)
@@ -24433,7 +24856,7 @@ GL_PREFIX(GetFinalCombinerInputParameterfvNV):
GL_PREFIX(GetFinalCombinerInputParameterivNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5184(%rax), %r11
+ movq 5272(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24443,13 +24866,13 @@ GL_PREFIX(GetFinalCombinerInputParameterivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5184(%rax), %r11
+ movq 5272(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5184(%rax), %r11
+ movq 5272(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24459,7 +24882,7 @@ GL_PREFIX(GetFinalCombinerInputParameterivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5184(%rax), %r11
+ movq 5272(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetFinalCombinerInputParameterivNV), .-GL_PREFIX(GetFinalCombinerInputParameterivNV)
@@ -24470,25 +24893,25 @@ GL_PREFIX(GetFinalCombinerInputParameterivNV):
GL_PREFIX(ResizeBuffersMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5192(%rax), %r11
+ movq 5280(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rbp
call _x86_64_get_dispatch@PLT
popq %rbp
- movq 5192(%rax), %r11
+ movq 5280(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5192(%rax), %r11
+ movq 5280(%rax), %r11
jmp *%r11
1:
pushq %rbp
call _glapi_get_dispatch
popq %rbp
- movq 5192(%rax), %r11
+ movq 5280(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ResizeBuffersMESA), .-GL_PREFIX(ResizeBuffersMESA)
@@ -24499,7 +24922,7 @@ GL_PREFIX(ResizeBuffersMESA):
GL_PREFIX(WindowPos2dMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5200(%rax), %r11
+ movq 5288(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -24509,13 +24932,13 @@ GL_PREFIX(WindowPos2dMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 5200(%rax), %r11
+ movq 5288(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5200(%rax), %r11
+ movq 5288(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -24525,7 +24948,7 @@ GL_PREFIX(WindowPos2dMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 5200(%rax), %r11
+ movq 5288(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos2dMESA), .-GL_PREFIX(WindowPos2dMESA)
@@ -24536,25 +24959,25 @@ GL_PREFIX(WindowPos2dMESA):
GL_PREFIX(WindowPos2dvMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5208(%rax), %r11
+ movq 5296(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5208(%rax), %r11
+ movq 5296(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5208(%rax), %r11
+ movq 5296(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5208(%rax), %r11
+ movq 5296(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos2dvMESA), .-GL_PREFIX(WindowPos2dvMESA)
@@ -24565,7 +24988,7 @@ GL_PREFIX(WindowPos2dvMESA):
GL_PREFIX(WindowPos2fMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5216(%rax), %r11
+ movq 5304(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -24575,13 +24998,13 @@ GL_PREFIX(WindowPos2fMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 5216(%rax), %r11
+ movq 5304(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5216(%rax), %r11
+ movq 5304(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -24591,7 +25014,7 @@ GL_PREFIX(WindowPos2fMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 5216(%rax), %r11
+ movq 5304(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos2fMESA), .-GL_PREFIX(WindowPos2fMESA)
@@ -24602,25 +25025,25 @@ GL_PREFIX(WindowPos2fMESA):
GL_PREFIX(WindowPos2fvMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5224(%rax), %r11
+ movq 5312(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5224(%rax), %r11
+ movq 5312(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5224(%rax), %r11
+ movq 5312(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5224(%rax), %r11
+ movq 5312(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos2fvMESA), .-GL_PREFIX(WindowPos2fvMESA)
@@ -24631,7 +25054,7 @@ GL_PREFIX(WindowPos2fvMESA):
GL_PREFIX(WindowPos2iMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5232(%rax), %r11
+ movq 5320(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24641,13 +25064,13 @@ GL_PREFIX(WindowPos2iMESA):
popq %rbp
popq %rsi
popq %rdi
- movq 5232(%rax), %r11
+ movq 5320(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5232(%rax), %r11
+ movq 5320(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24657,7 +25080,7 @@ GL_PREFIX(WindowPos2iMESA):
popq %rbp
popq %rsi
popq %rdi
- movq 5232(%rax), %r11
+ movq 5320(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos2iMESA), .-GL_PREFIX(WindowPos2iMESA)
@@ -24668,25 +25091,25 @@ GL_PREFIX(WindowPos2iMESA):
GL_PREFIX(WindowPos2ivMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5240(%rax), %r11
+ movq 5328(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5240(%rax), %r11
+ movq 5328(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5240(%rax), %r11
+ movq 5328(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5240(%rax), %r11
+ movq 5328(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos2ivMESA), .-GL_PREFIX(WindowPos2ivMESA)
@@ -24697,7 +25120,7 @@ GL_PREFIX(WindowPos2ivMESA):
GL_PREFIX(WindowPos2sMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5248(%rax), %r11
+ movq 5336(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24707,13 +25130,13 @@ GL_PREFIX(WindowPos2sMESA):
popq %rbp
popq %rsi
popq %rdi
- movq 5248(%rax), %r11
+ movq 5336(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5248(%rax), %r11
+ movq 5336(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24723,7 +25146,7 @@ GL_PREFIX(WindowPos2sMESA):
popq %rbp
popq %rsi
popq %rdi
- movq 5248(%rax), %r11
+ movq 5336(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos2sMESA), .-GL_PREFIX(WindowPos2sMESA)
@@ -24734,25 +25157,25 @@ GL_PREFIX(WindowPos2sMESA):
GL_PREFIX(WindowPos2svMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5256(%rax), %r11
+ movq 5344(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5256(%rax), %r11
+ movq 5344(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5256(%rax), %r11
+ movq 5344(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5256(%rax), %r11
+ movq 5344(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos2svMESA), .-GL_PREFIX(WindowPos2svMESA)
@@ -24763,7 +25186,7 @@ GL_PREFIX(WindowPos2svMESA):
GL_PREFIX(WindowPos3dMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5264(%rax), %r11
+ movq 5352(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -24775,13 +25198,13 @@ GL_PREFIX(WindowPos3dMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 5264(%rax), %r11
+ movq 5352(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5264(%rax), %r11
+ movq 5352(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -24793,7 +25216,7 @@ GL_PREFIX(WindowPos3dMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 5264(%rax), %r11
+ movq 5352(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos3dMESA), .-GL_PREFIX(WindowPos3dMESA)
@@ -24804,25 +25227,25 @@ GL_PREFIX(WindowPos3dMESA):
GL_PREFIX(WindowPos3dvMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5272(%rax), %r11
+ movq 5360(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5272(%rax), %r11
+ movq 5360(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5272(%rax), %r11
+ movq 5360(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5272(%rax), %r11
+ movq 5360(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos3dvMESA), .-GL_PREFIX(WindowPos3dvMESA)
@@ -24833,7 +25256,7 @@ GL_PREFIX(WindowPos3dvMESA):
GL_PREFIX(WindowPos3fMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5280(%rax), %r11
+ movq 5368(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -24845,13 +25268,13 @@ GL_PREFIX(WindowPos3fMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 5280(%rax), %r11
+ movq 5368(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5280(%rax), %r11
+ movq 5368(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -24863,7 +25286,7 @@ GL_PREFIX(WindowPos3fMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $24, %rsp
- movq 5280(%rax), %r11
+ movq 5368(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos3fMESA), .-GL_PREFIX(WindowPos3fMESA)
@@ -24874,25 +25297,25 @@ GL_PREFIX(WindowPos3fMESA):
GL_PREFIX(WindowPos3fvMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5288(%rax), %r11
+ movq 5376(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5288(%rax), %r11
+ movq 5376(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5288(%rax), %r11
+ movq 5376(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5288(%rax), %r11
+ movq 5376(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos3fvMESA), .-GL_PREFIX(WindowPos3fvMESA)
@@ -24903,7 +25326,7 @@ GL_PREFIX(WindowPos3fvMESA):
GL_PREFIX(WindowPos3iMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5296(%rax), %r11
+ movq 5384(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24913,13 +25336,13 @@ GL_PREFIX(WindowPos3iMESA):
popq %rdx
popq %rsi
popq %rdi
- movq 5296(%rax), %r11
+ movq 5384(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5296(%rax), %r11
+ movq 5384(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24929,7 +25352,7 @@ GL_PREFIX(WindowPos3iMESA):
popq %rdx
popq %rsi
popq %rdi
- movq 5296(%rax), %r11
+ movq 5384(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos3iMESA), .-GL_PREFIX(WindowPos3iMESA)
@@ -24940,25 +25363,25 @@ GL_PREFIX(WindowPos3iMESA):
GL_PREFIX(WindowPos3ivMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5304(%rax), %r11
+ movq 5392(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5304(%rax), %r11
+ movq 5392(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5304(%rax), %r11
+ movq 5392(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5304(%rax), %r11
+ movq 5392(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos3ivMESA), .-GL_PREFIX(WindowPos3ivMESA)
@@ -24969,7 +25392,7 @@ GL_PREFIX(WindowPos3ivMESA):
GL_PREFIX(WindowPos3sMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5312(%rax), %r11
+ movq 5400(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -24979,13 +25402,13 @@ GL_PREFIX(WindowPos3sMESA):
popq %rdx
popq %rsi
popq %rdi
- movq 5312(%rax), %r11
+ movq 5400(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5312(%rax), %r11
+ movq 5400(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -24995,7 +25418,7 @@ GL_PREFIX(WindowPos3sMESA):
popq %rdx
popq %rsi
popq %rdi
- movq 5312(%rax), %r11
+ movq 5400(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos3sMESA), .-GL_PREFIX(WindowPos3sMESA)
@@ -25006,25 +25429,25 @@ GL_PREFIX(WindowPos3sMESA):
GL_PREFIX(WindowPos3svMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5320(%rax), %r11
+ movq 5408(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5320(%rax), %r11
+ movq 5408(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5320(%rax), %r11
+ movq 5408(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5320(%rax), %r11
+ movq 5408(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos3svMESA), .-GL_PREFIX(WindowPos3svMESA)
@@ -25035,7 +25458,7 @@ GL_PREFIX(WindowPos3svMESA):
GL_PREFIX(WindowPos4dMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5328(%rax), %r11
+ movq 5416(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -25049,13 +25472,13 @@ GL_PREFIX(WindowPos4dMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $40, %rsp
- movq 5328(%rax), %r11
+ movq 5416(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5328(%rax), %r11
+ movq 5416(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -25069,7 +25492,7 @@ GL_PREFIX(WindowPos4dMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $40, %rsp
- movq 5328(%rax), %r11
+ movq 5416(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos4dMESA), .-GL_PREFIX(WindowPos4dMESA)
@@ -25080,25 +25503,25 @@ GL_PREFIX(WindowPos4dMESA):
GL_PREFIX(WindowPos4dvMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5336(%rax), %r11
+ movq 5424(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5336(%rax), %r11
+ movq 5424(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5336(%rax), %r11
+ movq 5424(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5336(%rax), %r11
+ movq 5424(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos4dvMESA), .-GL_PREFIX(WindowPos4dvMESA)
@@ -25109,7 +25532,7 @@ GL_PREFIX(WindowPos4dvMESA):
GL_PREFIX(WindowPos4fMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5344(%rax), %r11
+ movq 5432(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -25123,13 +25546,13 @@ GL_PREFIX(WindowPos4fMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $40, %rsp
- movq 5344(%rax), %r11
+ movq 5432(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5344(%rax), %r11
+ movq 5432(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -25143,7 +25566,7 @@ GL_PREFIX(WindowPos4fMESA):
movq 8(%rsp), %xmm1
movq (%rsp), %xmm0
addq $40, %rsp
- movq 5344(%rax), %r11
+ movq 5432(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos4fMESA), .-GL_PREFIX(WindowPos4fMESA)
@@ -25154,25 +25577,25 @@ GL_PREFIX(WindowPos4fMESA):
GL_PREFIX(WindowPos4fvMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5352(%rax), %r11
+ movq 5440(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5352(%rax), %r11
+ movq 5440(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5352(%rax), %r11
+ movq 5440(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5352(%rax), %r11
+ movq 5440(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos4fvMESA), .-GL_PREFIX(WindowPos4fvMESA)
@@ -25183,7 +25606,7 @@ GL_PREFIX(WindowPos4fvMESA):
GL_PREFIX(WindowPos4iMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5360(%rax), %r11
+ movq 5448(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25197,13 +25620,13 @@ GL_PREFIX(WindowPos4iMESA):
popq %rdx
popq %rsi
popq %rdi
- movq 5360(%rax), %r11
+ movq 5448(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5360(%rax), %r11
+ movq 5448(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25217,7 +25640,7 @@ GL_PREFIX(WindowPos4iMESA):
popq %rdx
popq %rsi
popq %rdi
- movq 5360(%rax), %r11
+ movq 5448(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos4iMESA), .-GL_PREFIX(WindowPos4iMESA)
@@ -25228,25 +25651,25 @@ GL_PREFIX(WindowPos4iMESA):
GL_PREFIX(WindowPos4ivMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5368(%rax), %r11
+ movq 5456(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5368(%rax), %r11
+ movq 5456(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5368(%rax), %r11
+ movq 5456(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5368(%rax), %r11
+ movq 5456(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos4ivMESA), .-GL_PREFIX(WindowPos4ivMESA)
@@ -25257,7 +25680,7 @@ GL_PREFIX(WindowPos4ivMESA):
GL_PREFIX(WindowPos4sMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5376(%rax), %r11
+ movq 5464(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25271,13 +25694,13 @@ GL_PREFIX(WindowPos4sMESA):
popq %rdx
popq %rsi
popq %rdi
- movq 5376(%rax), %r11
+ movq 5464(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5376(%rax), %r11
+ movq 5464(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25291,7 +25714,7 @@ GL_PREFIX(WindowPos4sMESA):
popq %rdx
popq %rsi
popq %rdi
- movq 5376(%rax), %r11
+ movq 5464(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos4sMESA), .-GL_PREFIX(WindowPos4sMESA)
@@ -25302,37 +25725,37 @@ GL_PREFIX(WindowPos4sMESA):
GL_PREFIX(WindowPos4svMESA):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5384(%rax), %r11
+ movq 5472(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5384(%rax), %r11
+ movq 5472(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5384(%rax), %r11
+ movq 5472(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5384(%rax), %r11
+ movq 5472(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(WindowPos4svMESA), .-GL_PREFIX(WindowPos4svMESA)
.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):
+ .globl GL_PREFIX(_dispatch_stub_685)
+ .type GL_PREFIX(_dispatch_stub_685), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_685))
+GL_PREFIX(_dispatch_stub_685):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5392(%rax), %r11
+ movq 5480(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25346,13 +25769,13 @@ GL_PREFIX(_dispatch_stub_674):
popq %rdx
popq %rsi
popq %rdi
- movq 5392(%rax), %r11
+ movq 5480(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5392(%rax), %r11
+ movq 5480(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25366,19 +25789,19 @@ GL_PREFIX(_dispatch_stub_674):
popq %rdx
popq %rsi
popq %rdi
- movq 5392(%rax), %r11
+ movq 5480(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_674), .-GL_PREFIX(_dispatch_stub_674)
+ .size GL_PREFIX(_dispatch_stub_685), .-GL_PREFIX(_dispatch_stub_685)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_675)
- .type GL_PREFIX(_dispatch_stub_675), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_675))
-GL_PREFIX(_dispatch_stub_675):
+ .globl GL_PREFIX(_dispatch_stub_686)
+ .type GL_PREFIX(_dispatch_stub_686), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_686))
+GL_PREFIX(_dispatch_stub_686):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5400(%rax), %r11
+ movq 5488(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25396,13 +25819,13 @@ GL_PREFIX(_dispatch_stub_675):
popq %rdx
popq %rsi
popq %rdi
- movq 5400(%rax), %r11
+ movq 5488(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5400(%rax), %r11
+ movq 5488(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25420,19 +25843,19 @@ GL_PREFIX(_dispatch_stub_675):
popq %rdx
popq %rsi
popq %rdi
- movq 5400(%rax), %r11
+ movq 5488(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_675), .-GL_PREFIX(_dispatch_stub_675)
+ .size GL_PREFIX(_dispatch_stub_686), .-GL_PREFIX(_dispatch_stub_686)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_676)
- .type GL_PREFIX(_dispatch_stub_676), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_676))
-GL_PREFIX(_dispatch_stub_676):
+ .globl GL_PREFIX(_dispatch_stub_687)
+ .type GL_PREFIX(_dispatch_stub_687), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_687))
+GL_PREFIX(_dispatch_stub_687):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5408(%rax), %r11
+ movq 5496(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25442,13 +25865,13 @@ GL_PREFIX(_dispatch_stub_676):
popq %rbp
popq %rsi
popq %rdi
- movq 5408(%rax), %r11
+ movq 5496(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5408(%rax), %r11
+ movq 5496(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25458,49 +25881,49 @@ GL_PREFIX(_dispatch_stub_676):
popq %rbp
popq %rsi
popq %rdi
- movq 5408(%rax), %r11
+ movq 5496(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_676), .-GL_PREFIX(_dispatch_stub_676)
+ .size GL_PREFIX(_dispatch_stub_687), .-GL_PREFIX(_dispatch_stub_687)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_677)
- .type GL_PREFIX(_dispatch_stub_677), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_677))
-GL_PREFIX(_dispatch_stub_677):
+ .globl GL_PREFIX(_dispatch_stub_688)
+ .type GL_PREFIX(_dispatch_stub_688), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_688))
+GL_PREFIX(_dispatch_stub_688):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5416(%rax), %r11
+ movq 5504(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5416(%rax), %r11
+ movq 5504(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5416(%rax), %r11
+ movq 5504(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5416(%rax), %r11
+ movq 5504(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_677), .-GL_PREFIX(_dispatch_stub_677)
+ .size GL_PREFIX(_dispatch_stub_688), .-GL_PREFIX(_dispatch_stub_688)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_678)
- .type GL_PREFIX(_dispatch_stub_678), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_678))
-GL_PREFIX(_dispatch_stub_678):
+ .globl GL_PREFIX(_dispatch_stub_689)
+ .type GL_PREFIX(_dispatch_stub_689), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_689))
+GL_PREFIX(_dispatch_stub_689):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5424(%rax), %r11
+ movq 5512(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25510,13 +25933,13 @@ GL_PREFIX(_dispatch_stub_678):
popq %rbp
popq %rsi
popq %rdi
- movq 5424(%rax), %r11
+ movq 5512(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5424(%rax), %r11
+ movq 5512(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25526,19 +25949,19 @@ GL_PREFIX(_dispatch_stub_678):
popq %rbp
popq %rsi
popq %rdi
- movq 5424(%rax), %r11
+ movq 5512(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_678), .-GL_PREFIX(_dispatch_stub_678)
+ .size GL_PREFIX(_dispatch_stub_689), .-GL_PREFIX(_dispatch_stub_689)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_679)
- .type GL_PREFIX(_dispatch_stub_679), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_679))
-GL_PREFIX(_dispatch_stub_679):
+ .globl GL_PREFIX(_dispatch_stub_690)
+ .type GL_PREFIX(_dispatch_stub_690), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_690))
+GL_PREFIX(_dispatch_stub_690):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5432(%rax), %r11
+ movq 5520(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25548,13 +25971,13 @@ GL_PREFIX(_dispatch_stub_679):
popq %rdx
popq %rsi
popq %rdi
- movq 5432(%rax), %r11
+ movq 5520(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5432(%rax), %r11
+ movq 5520(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25564,49 +25987,49 @@ GL_PREFIX(_dispatch_stub_679):
popq %rdx
popq %rsi
popq %rdi
- movq 5432(%rax), %r11
+ movq 5520(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_679), .-GL_PREFIX(_dispatch_stub_679)
+ .size GL_PREFIX(_dispatch_stub_690), .-GL_PREFIX(_dispatch_stub_690)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_680)
- .type GL_PREFIX(_dispatch_stub_680), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_680))
-GL_PREFIX(_dispatch_stub_680):
+ .globl GL_PREFIX(_dispatch_stub_691)
+ .type GL_PREFIX(_dispatch_stub_691), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_691))
+GL_PREFIX(_dispatch_stub_691):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5440(%rax), %r11
+ movq 5528(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5440(%rax), %r11
+ movq 5528(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5440(%rax), %r11
+ movq 5528(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5440(%rax), %r11
+ movq 5528(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_680), .-GL_PREFIX(_dispatch_stub_680)
+ .size GL_PREFIX(_dispatch_stub_691), .-GL_PREFIX(_dispatch_stub_691)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_681)
- .type GL_PREFIX(_dispatch_stub_681), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_681))
-GL_PREFIX(_dispatch_stub_681):
+ .globl GL_PREFIX(_dispatch_stub_692)
+ .type GL_PREFIX(_dispatch_stub_692), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_692))
+GL_PREFIX(_dispatch_stub_692):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5448(%rax), %r11
+ movq 5536(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25616,13 +26039,13 @@ GL_PREFIX(_dispatch_stub_681):
popq %rbp
popq %rsi
popq %rdi
- movq 5448(%rax), %r11
+ movq 5536(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5448(%rax), %r11
+ movq 5536(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25632,40 +26055,40 @@ GL_PREFIX(_dispatch_stub_681):
popq %rbp
popq %rsi
popq %rdi
- movq 5448(%rax), %r11
+ movq 5536(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_681), .-GL_PREFIX(_dispatch_stub_681)
+ .size GL_PREFIX(_dispatch_stub_692), .-GL_PREFIX(_dispatch_stub_692)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_682)
- .type GL_PREFIX(_dispatch_stub_682), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_682))
-GL_PREFIX(_dispatch_stub_682):
+ .globl GL_PREFIX(_dispatch_stub_693)
+ .type GL_PREFIX(_dispatch_stub_693), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_693))
+GL_PREFIX(_dispatch_stub_693):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5456(%rax), %r11
+ movq 5544(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5456(%rax), %r11
+ movq 5544(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5456(%rax), %r11
+ movq 5544(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5456(%rax), %r11
+ movq 5544(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_682), .-GL_PREFIX(_dispatch_stub_682)
+ .size GL_PREFIX(_dispatch_stub_693), .-GL_PREFIX(_dispatch_stub_693)
.p2align 4,,15
.globl GL_PREFIX(AreProgramsResidentNV)
@@ -25673,7 +26096,7 @@ GL_PREFIX(_dispatch_stub_682):
GL_PREFIX(AreProgramsResidentNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5464(%rax), %r11
+ movq 5552(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25683,13 +26106,13 @@ GL_PREFIX(AreProgramsResidentNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5464(%rax), %r11
+ movq 5552(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5464(%rax), %r11
+ movq 5552(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25699,7 +26122,7 @@ GL_PREFIX(AreProgramsResidentNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5464(%rax), %r11
+ movq 5552(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(AreProgramsResidentNV), .-GL_PREFIX(AreProgramsResidentNV)
@@ -25710,7 +26133,7 @@ GL_PREFIX(AreProgramsResidentNV):
GL_PREFIX(BindProgramNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5472(%rax), %r11
+ movq 5560(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25720,13 +26143,13 @@ GL_PREFIX(BindProgramNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5472(%rax), %r11
+ movq 5560(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5472(%rax), %r11
+ movq 5560(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25736,7 +26159,7 @@ GL_PREFIX(BindProgramNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5472(%rax), %r11
+ movq 5560(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BindProgramNV), .-GL_PREFIX(BindProgramNV)
@@ -25747,7 +26170,7 @@ GL_PREFIX(BindProgramNV):
GL_PREFIX(DeleteProgramsNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5480(%rax), %r11
+ movq 5568(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25757,13 +26180,13 @@ GL_PREFIX(DeleteProgramsNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5480(%rax), %r11
+ movq 5568(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5480(%rax), %r11
+ movq 5568(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25773,7 +26196,7 @@ GL_PREFIX(DeleteProgramsNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5480(%rax), %r11
+ movq 5568(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DeleteProgramsNV), .-GL_PREFIX(DeleteProgramsNV)
@@ -25784,7 +26207,7 @@ GL_PREFIX(DeleteProgramsNV):
GL_PREFIX(ExecuteProgramNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5488(%rax), %r11
+ movq 5576(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25794,13 +26217,13 @@ GL_PREFIX(ExecuteProgramNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5488(%rax), %r11
+ movq 5576(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5488(%rax), %r11
+ movq 5576(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25810,7 +26233,7 @@ GL_PREFIX(ExecuteProgramNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5488(%rax), %r11
+ movq 5576(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ExecuteProgramNV), .-GL_PREFIX(ExecuteProgramNV)
@@ -25821,7 +26244,7 @@ GL_PREFIX(ExecuteProgramNV):
GL_PREFIX(GenProgramsNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5496(%rax), %r11
+ movq 5584(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25831,13 +26254,13 @@ GL_PREFIX(GenProgramsNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5496(%rax), %r11
+ movq 5584(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5496(%rax), %r11
+ movq 5584(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25847,7 +26270,7 @@ GL_PREFIX(GenProgramsNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5496(%rax), %r11
+ movq 5584(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GenProgramsNV), .-GL_PREFIX(GenProgramsNV)
@@ -25858,7 +26281,7 @@ GL_PREFIX(GenProgramsNV):
GL_PREFIX(GetProgramParameterdvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5504(%rax), %r11
+ movq 5592(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25872,13 +26295,13 @@ GL_PREFIX(GetProgramParameterdvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5504(%rax), %r11
+ movq 5592(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5504(%rax), %r11
+ movq 5592(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25892,7 +26315,7 @@ GL_PREFIX(GetProgramParameterdvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5504(%rax), %r11
+ movq 5592(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramParameterdvNV), .-GL_PREFIX(GetProgramParameterdvNV)
@@ -25903,7 +26326,7 @@ GL_PREFIX(GetProgramParameterdvNV):
GL_PREFIX(GetProgramParameterfvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5512(%rax), %r11
+ movq 5600(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25917,13 +26340,13 @@ GL_PREFIX(GetProgramParameterfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5512(%rax), %r11
+ movq 5600(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5512(%rax), %r11
+ movq 5600(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25937,7 +26360,7 @@ GL_PREFIX(GetProgramParameterfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5512(%rax), %r11
+ movq 5600(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramParameterfvNV), .-GL_PREFIX(GetProgramParameterfvNV)
@@ -25948,7 +26371,7 @@ GL_PREFIX(GetProgramParameterfvNV):
GL_PREFIX(GetProgramStringNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5520(%rax), %r11
+ movq 5608(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25958,13 +26381,13 @@ GL_PREFIX(GetProgramStringNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5520(%rax), %r11
+ movq 5608(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5520(%rax), %r11
+ movq 5608(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -25974,7 +26397,7 @@ GL_PREFIX(GetProgramStringNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5520(%rax), %r11
+ movq 5608(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramStringNV), .-GL_PREFIX(GetProgramStringNV)
@@ -25985,7 +26408,7 @@ GL_PREFIX(GetProgramStringNV):
GL_PREFIX(GetProgramivNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5528(%rax), %r11
+ movq 5616(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -25995,13 +26418,13 @@ GL_PREFIX(GetProgramivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5528(%rax), %r11
+ movq 5616(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5528(%rax), %r11
+ movq 5616(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26011,7 +26434,7 @@ GL_PREFIX(GetProgramivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5528(%rax), %r11
+ movq 5616(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramivNV), .-GL_PREFIX(GetProgramivNV)
@@ -26022,7 +26445,7 @@ GL_PREFIX(GetProgramivNV):
GL_PREFIX(GetTrackMatrixivNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5536(%rax), %r11
+ movq 5624(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26036,13 +26459,13 @@ GL_PREFIX(GetTrackMatrixivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5536(%rax), %r11
+ movq 5624(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5536(%rax), %r11
+ movq 5624(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26056,7 +26479,7 @@ GL_PREFIX(GetTrackMatrixivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5536(%rax), %r11
+ movq 5624(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetTrackMatrixivNV), .-GL_PREFIX(GetTrackMatrixivNV)
@@ -26067,7 +26490,7 @@ GL_PREFIX(GetTrackMatrixivNV):
GL_PREFIX(GetVertexAttribPointervNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5544(%rax), %r11
+ movq 5632(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26077,13 +26500,13 @@ GL_PREFIX(GetVertexAttribPointervNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5544(%rax), %r11
+ movq 5632(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5544(%rax), %r11
+ movq 5632(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26093,7 +26516,7 @@ GL_PREFIX(GetVertexAttribPointervNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5544(%rax), %r11
+ movq 5632(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetVertexAttribPointervNV), .-GL_PREFIX(GetVertexAttribPointervNV)
@@ -26104,7 +26527,7 @@ GL_PREFIX(GetVertexAttribPointervNV):
GL_PREFIX(GetVertexAttribdvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5552(%rax), %r11
+ movq 5640(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26114,13 +26537,13 @@ GL_PREFIX(GetVertexAttribdvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5552(%rax), %r11
+ movq 5640(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5552(%rax), %r11
+ movq 5640(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26130,7 +26553,7 @@ GL_PREFIX(GetVertexAttribdvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5552(%rax), %r11
+ movq 5640(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetVertexAttribdvNV), .-GL_PREFIX(GetVertexAttribdvNV)
@@ -26141,7 +26564,7 @@ GL_PREFIX(GetVertexAttribdvNV):
GL_PREFIX(GetVertexAttribfvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5560(%rax), %r11
+ movq 5648(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26151,13 +26574,13 @@ GL_PREFIX(GetVertexAttribfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5560(%rax), %r11
+ movq 5648(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5560(%rax), %r11
+ movq 5648(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26167,7 +26590,7 @@ GL_PREFIX(GetVertexAttribfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5560(%rax), %r11
+ movq 5648(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetVertexAttribfvNV), .-GL_PREFIX(GetVertexAttribfvNV)
@@ -26178,7 +26601,7 @@ GL_PREFIX(GetVertexAttribfvNV):
GL_PREFIX(GetVertexAttribivNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5568(%rax), %r11
+ movq 5656(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26188,13 +26611,13 @@ GL_PREFIX(GetVertexAttribivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5568(%rax), %r11
+ movq 5656(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5568(%rax), %r11
+ movq 5656(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26204,7 +26627,7 @@ GL_PREFIX(GetVertexAttribivNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5568(%rax), %r11
+ movq 5656(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetVertexAttribivNV), .-GL_PREFIX(GetVertexAttribivNV)
@@ -26215,25 +26638,25 @@ GL_PREFIX(GetVertexAttribivNV):
GL_PREFIX(IsProgramNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5576(%rax), %r11
+ movq 5664(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 5576(%rax), %r11
+ movq 5664(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5576(%rax), %r11
+ movq 5664(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 5576(%rax), %r11
+ movq 5664(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(IsProgramNV), .-GL_PREFIX(IsProgramNV)
@@ -26244,7 +26667,7 @@ GL_PREFIX(IsProgramNV):
GL_PREFIX(LoadProgramNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5584(%rax), %r11
+ movq 5672(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26258,13 +26681,13 @@ GL_PREFIX(LoadProgramNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5584(%rax), %r11
+ movq 5672(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5584(%rax), %r11
+ movq 5672(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26278,7 +26701,7 @@ GL_PREFIX(LoadProgramNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5584(%rax), %r11
+ movq 5672(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(LoadProgramNV), .-GL_PREFIX(LoadProgramNV)
@@ -26289,7 +26712,7 @@ GL_PREFIX(LoadProgramNV):
GL_PREFIX(ProgramParameters4dvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5592(%rax), %r11
+ movq 5680(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26303,13 +26726,13 @@ GL_PREFIX(ProgramParameters4dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5592(%rax), %r11
+ movq 5680(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5592(%rax), %r11
+ movq 5680(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26323,7 +26746,7 @@ GL_PREFIX(ProgramParameters4dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5592(%rax), %r11
+ movq 5680(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramParameters4dvNV), .-GL_PREFIX(ProgramParameters4dvNV)
@@ -26334,7 +26757,7 @@ GL_PREFIX(ProgramParameters4dvNV):
GL_PREFIX(ProgramParameters4fvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5600(%rax), %r11
+ movq 5688(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26348,13 +26771,13 @@ GL_PREFIX(ProgramParameters4fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5600(%rax), %r11
+ movq 5688(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5600(%rax), %r11
+ movq 5688(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26368,7 +26791,7 @@ GL_PREFIX(ProgramParameters4fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5600(%rax), %r11
+ movq 5688(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramParameters4fvNV), .-GL_PREFIX(ProgramParameters4fvNV)
@@ -26379,7 +26802,7 @@ GL_PREFIX(ProgramParameters4fvNV):
GL_PREFIX(RequestResidentProgramsNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5608(%rax), %r11
+ movq 5696(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26389,13 +26812,13 @@ GL_PREFIX(RequestResidentProgramsNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5608(%rax), %r11
+ movq 5696(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5608(%rax), %r11
+ movq 5696(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26405,7 +26828,7 @@ GL_PREFIX(RequestResidentProgramsNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5608(%rax), %r11
+ movq 5696(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(RequestResidentProgramsNV), .-GL_PREFIX(RequestResidentProgramsNV)
@@ -26416,7 +26839,7 @@ GL_PREFIX(RequestResidentProgramsNV):
GL_PREFIX(TrackMatrixNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5616(%rax), %r11
+ movq 5704(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26430,13 +26853,13 @@ GL_PREFIX(TrackMatrixNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5616(%rax), %r11
+ movq 5704(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5616(%rax), %r11
+ movq 5704(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26450,7 +26873,7 @@ GL_PREFIX(TrackMatrixNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5616(%rax), %r11
+ movq 5704(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(TrackMatrixNV), .-GL_PREFIX(TrackMatrixNV)
@@ -26461,7 +26884,7 @@ GL_PREFIX(TrackMatrixNV):
GL_PREFIX(VertexAttrib1dNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5624(%rax), %r11
+ movq 5712(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -26471,13 +26894,13 @@ GL_PREFIX(VertexAttrib1dNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 5624(%rax), %r11
+ movq 5712(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5624(%rax), %r11
+ movq 5712(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -26487,7 +26910,7 @@ GL_PREFIX(VertexAttrib1dNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 5624(%rax), %r11
+ movq 5712(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1dNV), .-GL_PREFIX(VertexAttrib1dNV)
@@ -26498,7 +26921,7 @@ GL_PREFIX(VertexAttrib1dNV):
GL_PREFIX(VertexAttrib1dvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5632(%rax), %r11
+ movq 5720(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26508,13 +26931,13 @@ GL_PREFIX(VertexAttrib1dvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5632(%rax), %r11
+ movq 5720(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5632(%rax), %r11
+ movq 5720(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26524,7 +26947,7 @@ GL_PREFIX(VertexAttrib1dvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5632(%rax), %r11
+ movq 5720(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1dvNV), .-GL_PREFIX(VertexAttrib1dvNV)
@@ -26535,7 +26958,7 @@ GL_PREFIX(VertexAttrib1dvNV):
GL_PREFIX(VertexAttrib1fNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5640(%rax), %r11
+ movq 5728(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -26545,13 +26968,13 @@ GL_PREFIX(VertexAttrib1fNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 5640(%rax), %r11
+ movq 5728(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5640(%rax), %r11
+ movq 5728(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -26561,7 +26984,7 @@ GL_PREFIX(VertexAttrib1fNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 5640(%rax), %r11
+ movq 5728(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1fNV), .-GL_PREFIX(VertexAttrib1fNV)
@@ -26572,7 +26995,7 @@ GL_PREFIX(VertexAttrib1fNV):
GL_PREFIX(VertexAttrib1fvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5648(%rax), %r11
+ movq 5736(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26582,13 +27005,13 @@ GL_PREFIX(VertexAttrib1fvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5648(%rax), %r11
+ movq 5736(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5648(%rax), %r11
+ movq 5736(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26598,7 +27021,7 @@ GL_PREFIX(VertexAttrib1fvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5648(%rax), %r11
+ movq 5736(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1fvNV), .-GL_PREFIX(VertexAttrib1fvNV)
@@ -26609,7 +27032,7 @@ GL_PREFIX(VertexAttrib1fvNV):
GL_PREFIX(VertexAttrib1sNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5656(%rax), %r11
+ movq 5744(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26619,13 +27042,13 @@ GL_PREFIX(VertexAttrib1sNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5656(%rax), %r11
+ movq 5744(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5656(%rax), %r11
+ movq 5744(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26635,7 +27058,7 @@ GL_PREFIX(VertexAttrib1sNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5656(%rax), %r11
+ movq 5744(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1sNV), .-GL_PREFIX(VertexAttrib1sNV)
@@ -26646,7 +27069,7 @@ GL_PREFIX(VertexAttrib1sNV):
GL_PREFIX(VertexAttrib1svNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5664(%rax), %r11
+ movq 5752(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26656,13 +27079,13 @@ GL_PREFIX(VertexAttrib1svNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5664(%rax), %r11
+ movq 5752(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5664(%rax), %r11
+ movq 5752(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26672,7 +27095,7 @@ GL_PREFIX(VertexAttrib1svNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5664(%rax), %r11
+ movq 5752(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib1svNV), .-GL_PREFIX(VertexAttrib1svNV)
@@ -26683,7 +27106,7 @@ GL_PREFIX(VertexAttrib1svNV):
GL_PREFIX(VertexAttrib2dNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5672(%rax), %r11
+ movq 5760(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -26695,13 +27118,13 @@ GL_PREFIX(VertexAttrib2dNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 5672(%rax), %r11
+ movq 5760(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5672(%rax), %r11
+ movq 5760(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -26713,7 +27136,7 @@ GL_PREFIX(VertexAttrib2dNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 5672(%rax), %r11
+ movq 5760(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2dNV), .-GL_PREFIX(VertexAttrib2dNV)
@@ -26724,7 +27147,7 @@ GL_PREFIX(VertexAttrib2dNV):
GL_PREFIX(VertexAttrib2dvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5680(%rax), %r11
+ movq 5768(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26734,13 +27157,13 @@ GL_PREFIX(VertexAttrib2dvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5680(%rax), %r11
+ movq 5768(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5680(%rax), %r11
+ movq 5768(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26750,7 +27173,7 @@ GL_PREFIX(VertexAttrib2dvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5680(%rax), %r11
+ movq 5768(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2dvNV), .-GL_PREFIX(VertexAttrib2dvNV)
@@ -26761,7 +27184,7 @@ GL_PREFIX(VertexAttrib2dvNV):
GL_PREFIX(VertexAttrib2fNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5688(%rax), %r11
+ movq 5776(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $24, %rsp
@@ -26773,13 +27196,13 @@ GL_PREFIX(VertexAttrib2fNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 5688(%rax), %r11
+ movq 5776(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5688(%rax), %r11
+ movq 5776(%rax), %r11
jmp *%r11
1:
subq $24, %rsp
@@ -26791,7 +27214,7 @@ GL_PREFIX(VertexAttrib2fNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $24, %rsp
- movq 5688(%rax), %r11
+ movq 5776(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2fNV), .-GL_PREFIX(VertexAttrib2fNV)
@@ -26802,7 +27225,7 @@ GL_PREFIX(VertexAttrib2fNV):
GL_PREFIX(VertexAttrib2fvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5696(%rax), %r11
+ movq 5784(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26812,13 +27235,13 @@ GL_PREFIX(VertexAttrib2fvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5696(%rax), %r11
+ movq 5784(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5696(%rax), %r11
+ movq 5784(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26828,7 +27251,7 @@ GL_PREFIX(VertexAttrib2fvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5696(%rax), %r11
+ movq 5784(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2fvNV), .-GL_PREFIX(VertexAttrib2fvNV)
@@ -26839,7 +27262,7 @@ GL_PREFIX(VertexAttrib2fvNV):
GL_PREFIX(VertexAttrib2sNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5704(%rax), %r11
+ movq 5792(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26849,13 +27272,13 @@ GL_PREFIX(VertexAttrib2sNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5704(%rax), %r11
+ movq 5792(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5704(%rax), %r11
+ movq 5792(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26865,7 +27288,7 @@ GL_PREFIX(VertexAttrib2sNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5704(%rax), %r11
+ movq 5792(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2sNV), .-GL_PREFIX(VertexAttrib2sNV)
@@ -26876,7 +27299,7 @@ GL_PREFIX(VertexAttrib2sNV):
GL_PREFIX(VertexAttrib2svNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5712(%rax), %r11
+ movq 5800(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26886,13 +27309,13 @@ GL_PREFIX(VertexAttrib2svNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5712(%rax), %r11
+ movq 5800(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5712(%rax), %r11
+ movq 5800(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26902,7 +27325,7 @@ GL_PREFIX(VertexAttrib2svNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5712(%rax), %r11
+ movq 5800(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib2svNV), .-GL_PREFIX(VertexAttrib2svNV)
@@ -26913,7 +27336,7 @@ GL_PREFIX(VertexAttrib2svNV):
GL_PREFIX(VertexAttrib3dNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5720(%rax), %r11
+ movq 5808(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -26927,13 +27350,13 @@ GL_PREFIX(VertexAttrib3dNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 5720(%rax), %r11
+ movq 5808(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5720(%rax), %r11
+ movq 5808(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -26947,7 +27370,7 @@ GL_PREFIX(VertexAttrib3dNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 5720(%rax), %r11
+ movq 5808(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3dNV), .-GL_PREFIX(VertexAttrib3dNV)
@@ -26958,7 +27381,7 @@ GL_PREFIX(VertexAttrib3dNV):
GL_PREFIX(VertexAttrib3dvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5728(%rax), %r11
+ movq 5816(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -26968,13 +27391,13 @@ GL_PREFIX(VertexAttrib3dvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5728(%rax), %r11
+ movq 5816(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5728(%rax), %r11
+ movq 5816(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -26984,7 +27407,7 @@ GL_PREFIX(VertexAttrib3dvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5728(%rax), %r11
+ movq 5816(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3dvNV), .-GL_PREFIX(VertexAttrib3dvNV)
@@ -26995,7 +27418,7 @@ GL_PREFIX(VertexAttrib3dvNV):
GL_PREFIX(VertexAttrib3fNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5736(%rax), %r11
+ movq 5824(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -27009,13 +27432,13 @@ GL_PREFIX(VertexAttrib3fNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 5736(%rax), %r11
+ movq 5824(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5736(%rax), %r11
+ movq 5824(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -27029,7 +27452,7 @@ GL_PREFIX(VertexAttrib3fNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 5736(%rax), %r11
+ movq 5824(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3fNV), .-GL_PREFIX(VertexAttrib3fNV)
@@ -27040,7 +27463,7 @@ GL_PREFIX(VertexAttrib3fNV):
GL_PREFIX(VertexAttrib3fvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5744(%rax), %r11
+ movq 5832(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27050,13 +27473,13 @@ GL_PREFIX(VertexAttrib3fvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5744(%rax), %r11
+ movq 5832(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5744(%rax), %r11
+ movq 5832(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27066,7 +27489,7 @@ GL_PREFIX(VertexAttrib3fvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5744(%rax), %r11
+ movq 5832(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3fvNV), .-GL_PREFIX(VertexAttrib3fvNV)
@@ -27077,7 +27500,7 @@ GL_PREFIX(VertexAttrib3fvNV):
GL_PREFIX(VertexAttrib3sNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5752(%rax), %r11
+ movq 5840(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27091,13 +27514,13 @@ GL_PREFIX(VertexAttrib3sNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5752(%rax), %r11
+ movq 5840(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5752(%rax), %r11
+ movq 5840(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27111,7 +27534,7 @@ GL_PREFIX(VertexAttrib3sNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5752(%rax), %r11
+ movq 5840(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3sNV), .-GL_PREFIX(VertexAttrib3sNV)
@@ -27122,7 +27545,7 @@ GL_PREFIX(VertexAttrib3sNV):
GL_PREFIX(VertexAttrib3svNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5760(%rax), %r11
+ movq 5848(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27132,13 +27555,13 @@ GL_PREFIX(VertexAttrib3svNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5760(%rax), %r11
+ movq 5848(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5760(%rax), %r11
+ movq 5848(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27148,7 +27571,7 @@ GL_PREFIX(VertexAttrib3svNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5760(%rax), %r11
+ movq 5848(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib3svNV), .-GL_PREFIX(VertexAttrib3svNV)
@@ -27159,7 +27582,7 @@ GL_PREFIX(VertexAttrib3svNV):
GL_PREFIX(VertexAttrib4dNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5768(%rax), %r11
+ movq 5856(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -27175,13 +27598,13 @@ GL_PREFIX(VertexAttrib4dNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 5768(%rax), %r11
+ movq 5856(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5768(%rax), %r11
+ movq 5856(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -27197,7 +27620,7 @@ GL_PREFIX(VertexAttrib4dNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 5768(%rax), %r11
+ movq 5856(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4dNV), .-GL_PREFIX(VertexAttrib4dNV)
@@ -27208,7 +27631,7 @@ GL_PREFIX(VertexAttrib4dNV):
GL_PREFIX(VertexAttrib4dvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5776(%rax), %r11
+ movq 5864(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27218,13 +27641,13 @@ GL_PREFIX(VertexAttrib4dvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5776(%rax), %r11
+ movq 5864(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5776(%rax), %r11
+ movq 5864(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27234,7 +27657,7 @@ GL_PREFIX(VertexAttrib4dvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5776(%rax), %r11
+ movq 5864(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4dvNV), .-GL_PREFIX(VertexAttrib4dvNV)
@@ -27245,7 +27668,7 @@ GL_PREFIX(VertexAttrib4dvNV):
GL_PREFIX(VertexAttrib4fNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5784(%rax), %r11
+ movq 5872(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $40, %rsp
@@ -27261,13 +27684,13 @@ GL_PREFIX(VertexAttrib4fNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 5784(%rax), %r11
+ movq 5872(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5784(%rax), %r11
+ movq 5872(%rax), %r11
jmp *%r11
1:
subq $40, %rsp
@@ -27283,7 +27706,7 @@ GL_PREFIX(VertexAttrib4fNV):
movq 8(%rsp), %xmm0
movq (%rsp), %rdi
addq $40, %rsp
- movq 5784(%rax), %r11
+ movq 5872(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4fNV), .-GL_PREFIX(VertexAttrib4fNV)
@@ -27294,7 +27717,7 @@ GL_PREFIX(VertexAttrib4fNV):
GL_PREFIX(VertexAttrib4fvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5792(%rax), %r11
+ movq 5880(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27304,13 +27727,13 @@ GL_PREFIX(VertexAttrib4fvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5792(%rax), %r11
+ movq 5880(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5792(%rax), %r11
+ movq 5880(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27320,7 +27743,7 @@ GL_PREFIX(VertexAttrib4fvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5792(%rax), %r11
+ movq 5880(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4fvNV), .-GL_PREFIX(VertexAttrib4fvNV)
@@ -27331,7 +27754,7 @@ GL_PREFIX(VertexAttrib4fvNV):
GL_PREFIX(VertexAttrib4sNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5800(%rax), %r11
+ movq 5888(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27345,13 +27768,13 @@ GL_PREFIX(VertexAttrib4sNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5800(%rax), %r11
+ movq 5888(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5800(%rax), %r11
+ movq 5888(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27365,7 +27788,7 @@ GL_PREFIX(VertexAttrib4sNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5800(%rax), %r11
+ movq 5888(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4sNV), .-GL_PREFIX(VertexAttrib4sNV)
@@ -27376,7 +27799,7 @@ GL_PREFIX(VertexAttrib4sNV):
GL_PREFIX(VertexAttrib4svNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5808(%rax), %r11
+ movq 5896(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27386,13 +27809,13 @@ GL_PREFIX(VertexAttrib4svNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5808(%rax), %r11
+ movq 5896(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5808(%rax), %r11
+ movq 5896(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27402,7 +27825,7 @@ GL_PREFIX(VertexAttrib4svNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5808(%rax), %r11
+ movq 5896(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4svNV), .-GL_PREFIX(VertexAttrib4svNV)
@@ -27413,7 +27836,7 @@ GL_PREFIX(VertexAttrib4svNV):
GL_PREFIX(VertexAttrib4ubNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5816(%rax), %r11
+ movq 5904(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27427,13 +27850,13 @@ GL_PREFIX(VertexAttrib4ubNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5816(%rax), %r11
+ movq 5904(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5816(%rax), %r11
+ movq 5904(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27447,7 +27870,7 @@ GL_PREFIX(VertexAttrib4ubNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5816(%rax), %r11
+ movq 5904(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4ubNV), .-GL_PREFIX(VertexAttrib4ubNV)
@@ -27458,7 +27881,7 @@ GL_PREFIX(VertexAttrib4ubNV):
GL_PREFIX(VertexAttrib4ubvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5824(%rax), %r11
+ movq 5912(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27468,13 +27891,13 @@ GL_PREFIX(VertexAttrib4ubvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5824(%rax), %r11
+ movq 5912(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5824(%rax), %r11
+ movq 5912(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27484,7 +27907,7 @@ GL_PREFIX(VertexAttrib4ubvNV):
popq %rbp
popq %rsi
popq %rdi
- movq 5824(%rax), %r11
+ movq 5912(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttrib4ubvNV), .-GL_PREFIX(VertexAttrib4ubvNV)
@@ -27495,7 +27918,7 @@ GL_PREFIX(VertexAttrib4ubvNV):
GL_PREFIX(VertexAttribPointerNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5832(%rax), %r11
+ movq 5920(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27509,13 +27932,13 @@ GL_PREFIX(VertexAttribPointerNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5832(%rax), %r11
+ movq 5920(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5832(%rax), %r11
+ movq 5920(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27529,7 +27952,7 @@ GL_PREFIX(VertexAttribPointerNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5832(%rax), %r11
+ movq 5920(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribPointerNV), .-GL_PREFIX(VertexAttribPointerNV)
@@ -27540,7 +27963,7 @@ GL_PREFIX(VertexAttribPointerNV):
GL_PREFIX(VertexAttribs1dvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5840(%rax), %r11
+ movq 5928(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27550,13 +27973,13 @@ GL_PREFIX(VertexAttribs1dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5840(%rax), %r11
+ movq 5928(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5840(%rax), %r11
+ movq 5928(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27566,7 +27989,7 @@ GL_PREFIX(VertexAttribs1dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5840(%rax), %r11
+ movq 5928(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs1dvNV), .-GL_PREFIX(VertexAttribs1dvNV)
@@ -27577,7 +28000,7 @@ GL_PREFIX(VertexAttribs1dvNV):
GL_PREFIX(VertexAttribs1fvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5848(%rax), %r11
+ movq 5936(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27587,13 +28010,13 @@ GL_PREFIX(VertexAttribs1fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5848(%rax), %r11
+ movq 5936(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5848(%rax), %r11
+ movq 5936(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27603,7 +28026,7 @@ GL_PREFIX(VertexAttribs1fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5848(%rax), %r11
+ movq 5936(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs1fvNV), .-GL_PREFIX(VertexAttribs1fvNV)
@@ -27614,7 +28037,7 @@ GL_PREFIX(VertexAttribs1fvNV):
GL_PREFIX(VertexAttribs1svNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5856(%rax), %r11
+ movq 5944(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27624,13 +28047,13 @@ GL_PREFIX(VertexAttribs1svNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5856(%rax), %r11
+ movq 5944(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5856(%rax), %r11
+ movq 5944(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27640,7 +28063,7 @@ GL_PREFIX(VertexAttribs1svNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5856(%rax), %r11
+ movq 5944(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs1svNV), .-GL_PREFIX(VertexAttribs1svNV)
@@ -27651,7 +28074,7 @@ GL_PREFIX(VertexAttribs1svNV):
GL_PREFIX(VertexAttribs2dvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5864(%rax), %r11
+ movq 5952(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27661,13 +28084,13 @@ GL_PREFIX(VertexAttribs2dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5864(%rax), %r11
+ movq 5952(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5864(%rax), %r11
+ movq 5952(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27677,7 +28100,7 @@ GL_PREFIX(VertexAttribs2dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5864(%rax), %r11
+ movq 5952(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs2dvNV), .-GL_PREFIX(VertexAttribs2dvNV)
@@ -27688,7 +28111,7 @@ GL_PREFIX(VertexAttribs2dvNV):
GL_PREFIX(VertexAttribs2fvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5872(%rax), %r11
+ movq 5960(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27698,13 +28121,13 @@ GL_PREFIX(VertexAttribs2fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5872(%rax), %r11
+ movq 5960(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5872(%rax), %r11
+ movq 5960(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27714,7 +28137,7 @@ GL_PREFIX(VertexAttribs2fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5872(%rax), %r11
+ movq 5960(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs2fvNV), .-GL_PREFIX(VertexAttribs2fvNV)
@@ -27725,7 +28148,7 @@ GL_PREFIX(VertexAttribs2fvNV):
GL_PREFIX(VertexAttribs2svNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5880(%rax), %r11
+ movq 5968(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27735,13 +28158,13 @@ GL_PREFIX(VertexAttribs2svNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5880(%rax), %r11
+ movq 5968(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5880(%rax), %r11
+ movq 5968(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27751,7 +28174,7 @@ GL_PREFIX(VertexAttribs2svNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5880(%rax), %r11
+ movq 5968(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs2svNV), .-GL_PREFIX(VertexAttribs2svNV)
@@ -27762,7 +28185,7 @@ GL_PREFIX(VertexAttribs2svNV):
GL_PREFIX(VertexAttribs3dvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5888(%rax), %r11
+ movq 5976(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27772,13 +28195,13 @@ GL_PREFIX(VertexAttribs3dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5888(%rax), %r11
+ movq 5976(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5888(%rax), %r11
+ movq 5976(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27788,7 +28211,7 @@ GL_PREFIX(VertexAttribs3dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5888(%rax), %r11
+ movq 5976(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs3dvNV), .-GL_PREFIX(VertexAttribs3dvNV)
@@ -27799,7 +28222,7 @@ GL_PREFIX(VertexAttribs3dvNV):
GL_PREFIX(VertexAttribs3fvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5896(%rax), %r11
+ movq 5984(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27809,13 +28232,13 @@ GL_PREFIX(VertexAttribs3fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5896(%rax), %r11
+ movq 5984(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5896(%rax), %r11
+ movq 5984(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27825,7 +28248,7 @@ GL_PREFIX(VertexAttribs3fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5896(%rax), %r11
+ movq 5984(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs3fvNV), .-GL_PREFIX(VertexAttribs3fvNV)
@@ -27836,7 +28259,7 @@ GL_PREFIX(VertexAttribs3fvNV):
GL_PREFIX(VertexAttribs3svNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5904(%rax), %r11
+ movq 5992(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27846,13 +28269,13 @@ GL_PREFIX(VertexAttribs3svNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5904(%rax), %r11
+ movq 5992(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5904(%rax), %r11
+ movq 5992(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27862,7 +28285,7 @@ GL_PREFIX(VertexAttribs3svNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5904(%rax), %r11
+ movq 5992(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs3svNV), .-GL_PREFIX(VertexAttribs3svNV)
@@ -27873,7 +28296,7 @@ GL_PREFIX(VertexAttribs3svNV):
GL_PREFIX(VertexAttribs4dvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5912(%rax), %r11
+ movq 6000(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27883,13 +28306,13 @@ GL_PREFIX(VertexAttribs4dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5912(%rax), %r11
+ movq 6000(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5912(%rax), %r11
+ movq 6000(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27899,7 +28322,7 @@ GL_PREFIX(VertexAttribs4dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5912(%rax), %r11
+ movq 6000(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs4dvNV), .-GL_PREFIX(VertexAttribs4dvNV)
@@ -27910,7 +28333,7 @@ GL_PREFIX(VertexAttribs4dvNV):
GL_PREFIX(VertexAttribs4fvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5920(%rax), %r11
+ movq 6008(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27920,13 +28343,13 @@ GL_PREFIX(VertexAttribs4fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5920(%rax), %r11
+ movq 6008(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5920(%rax), %r11
+ movq 6008(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27936,7 +28359,7 @@ GL_PREFIX(VertexAttribs4fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5920(%rax), %r11
+ movq 6008(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs4fvNV), .-GL_PREFIX(VertexAttribs4fvNV)
@@ -27947,7 +28370,7 @@ GL_PREFIX(VertexAttribs4fvNV):
GL_PREFIX(VertexAttribs4svNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5928(%rax), %r11
+ movq 6016(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27957,13 +28380,13 @@ GL_PREFIX(VertexAttribs4svNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5928(%rax), %r11
+ movq 6016(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5928(%rax), %r11
+ movq 6016(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -27973,7 +28396,7 @@ GL_PREFIX(VertexAttribs4svNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5928(%rax), %r11
+ movq 6016(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs4svNV), .-GL_PREFIX(VertexAttribs4svNV)
@@ -27984,7 +28407,7 @@ GL_PREFIX(VertexAttribs4svNV):
GL_PREFIX(VertexAttribs4ubvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5936(%rax), %r11
+ movq 6024(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -27994,13 +28417,13 @@ GL_PREFIX(VertexAttribs4ubvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5936(%rax), %r11
+ movq 6024(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5936(%rax), %r11
+ movq 6024(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28010,7 +28433,7 @@ GL_PREFIX(VertexAttribs4ubvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 5936(%rax), %r11
+ movq 6024(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(VertexAttribs4ubvNV), .-GL_PREFIX(VertexAttribs4ubvNV)
@@ -28021,7 +28444,7 @@ GL_PREFIX(VertexAttribs4ubvNV):
GL_PREFIX(GetTexBumpParameterfvATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5944(%rax), %r11
+ movq 6032(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28031,13 +28454,13 @@ GL_PREFIX(GetTexBumpParameterfvATI):
popq %rbp
popq %rsi
popq %rdi
- movq 5944(%rax), %r11
+ movq 6032(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5944(%rax), %r11
+ movq 6032(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28047,7 +28470,7 @@ GL_PREFIX(GetTexBumpParameterfvATI):
popq %rbp
popq %rsi
popq %rdi
- movq 5944(%rax), %r11
+ movq 6032(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetTexBumpParameterfvATI), .-GL_PREFIX(GetTexBumpParameterfvATI)
@@ -28058,7 +28481,7 @@ GL_PREFIX(GetTexBumpParameterfvATI):
GL_PREFIX(GetTexBumpParameterivATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5952(%rax), %r11
+ movq 6040(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28068,13 +28491,13 @@ GL_PREFIX(GetTexBumpParameterivATI):
popq %rbp
popq %rsi
popq %rdi
- movq 5952(%rax), %r11
+ movq 6040(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5952(%rax), %r11
+ movq 6040(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28084,7 +28507,7 @@ GL_PREFIX(GetTexBumpParameterivATI):
popq %rbp
popq %rsi
popq %rdi
- movq 5952(%rax), %r11
+ movq 6040(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetTexBumpParameterivATI), .-GL_PREFIX(GetTexBumpParameterivATI)
@@ -28095,7 +28518,7 @@ GL_PREFIX(GetTexBumpParameterivATI):
GL_PREFIX(TexBumpParameterfvATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5960(%rax), %r11
+ movq 6048(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28105,13 +28528,13 @@ GL_PREFIX(TexBumpParameterfvATI):
popq %rbp
popq %rsi
popq %rdi
- movq 5960(%rax), %r11
+ movq 6048(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5960(%rax), %r11
+ movq 6048(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28121,7 +28544,7 @@ GL_PREFIX(TexBumpParameterfvATI):
popq %rbp
popq %rsi
popq %rdi
- movq 5960(%rax), %r11
+ movq 6048(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(TexBumpParameterfvATI), .-GL_PREFIX(TexBumpParameterfvATI)
@@ -28132,7 +28555,7 @@ GL_PREFIX(TexBumpParameterfvATI):
GL_PREFIX(TexBumpParameterivATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5968(%rax), %r11
+ movq 6056(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28142,13 +28565,13 @@ GL_PREFIX(TexBumpParameterivATI):
popq %rbp
popq %rsi
popq %rdi
- movq 5968(%rax), %r11
+ movq 6056(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5968(%rax), %r11
+ movq 6056(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28158,7 +28581,7 @@ GL_PREFIX(TexBumpParameterivATI):
popq %rbp
popq %rsi
popq %rdi
- movq 5968(%rax), %r11
+ movq 6056(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(TexBumpParameterivATI), .-GL_PREFIX(TexBumpParameterivATI)
@@ -28169,7 +28592,7 @@ GL_PREFIX(TexBumpParameterivATI):
GL_PREFIX(AlphaFragmentOp1ATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5976(%rax), %r11
+ movq 6064(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28187,13 +28610,13 @@ GL_PREFIX(AlphaFragmentOp1ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 5976(%rax), %r11
+ movq 6064(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5976(%rax), %r11
+ movq 6064(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28211,7 +28634,7 @@ GL_PREFIX(AlphaFragmentOp1ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 5976(%rax), %r11
+ movq 6064(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(AlphaFragmentOp1ATI), .-GL_PREFIX(AlphaFragmentOp1ATI)
@@ -28222,7 +28645,7 @@ GL_PREFIX(AlphaFragmentOp1ATI):
GL_PREFIX(AlphaFragmentOp2ATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5984(%rax), %r11
+ movq 6072(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28240,13 +28663,13 @@ GL_PREFIX(AlphaFragmentOp2ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 5984(%rax), %r11
+ movq 6072(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5984(%rax), %r11
+ movq 6072(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28264,7 +28687,7 @@ GL_PREFIX(AlphaFragmentOp2ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 5984(%rax), %r11
+ movq 6072(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(AlphaFragmentOp2ATI), .-GL_PREFIX(AlphaFragmentOp2ATI)
@@ -28275,7 +28698,7 @@ GL_PREFIX(AlphaFragmentOp2ATI):
GL_PREFIX(AlphaFragmentOp3ATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 5992(%rax), %r11
+ movq 6080(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28293,13 +28716,13 @@ GL_PREFIX(AlphaFragmentOp3ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 5992(%rax), %r11
+ movq 6080(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 5992(%rax), %r11
+ movq 6080(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28317,7 +28740,7 @@ GL_PREFIX(AlphaFragmentOp3ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 5992(%rax), %r11
+ movq 6080(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(AlphaFragmentOp3ATI), .-GL_PREFIX(AlphaFragmentOp3ATI)
@@ -28328,25 +28751,25 @@ GL_PREFIX(AlphaFragmentOp3ATI):
GL_PREFIX(BeginFragmentShaderATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6000(%rax), %r11
+ movq 6088(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rbp
call _x86_64_get_dispatch@PLT
popq %rbp
- movq 6000(%rax), %r11
+ movq 6088(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6000(%rax), %r11
+ movq 6088(%rax), %r11
jmp *%r11
1:
pushq %rbp
call _glapi_get_dispatch
popq %rbp
- movq 6000(%rax), %r11
+ movq 6088(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BeginFragmentShaderATI), .-GL_PREFIX(BeginFragmentShaderATI)
@@ -28357,25 +28780,25 @@ GL_PREFIX(BeginFragmentShaderATI):
GL_PREFIX(BindFragmentShaderATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6008(%rax), %r11
+ movq 6096(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6008(%rax), %r11
+ movq 6096(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6008(%rax), %r11
+ movq 6096(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6008(%rax), %r11
+ movq 6096(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BindFragmentShaderATI), .-GL_PREFIX(BindFragmentShaderATI)
@@ -28386,7 +28809,7 @@ GL_PREFIX(BindFragmentShaderATI):
GL_PREFIX(ColorFragmentOp1ATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6016(%rax), %r11
+ movq 6104(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28404,13 +28827,13 @@ GL_PREFIX(ColorFragmentOp1ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 6016(%rax), %r11
+ movq 6104(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6016(%rax), %r11
+ movq 6104(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28428,7 +28851,7 @@ GL_PREFIX(ColorFragmentOp1ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 6016(%rax), %r11
+ movq 6104(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ColorFragmentOp1ATI), .-GL_PREFIX(ColorFragmentOp1ATI)
@@ -28439,7 +28862,7 @@ GL_PREFIX(ColorFragmentOp1ATI):
GL_PREFIX(ColorFragmentOp2ATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6024(%rax), %r11
+ movq 6112(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28457,13 +28880,13 @@ GL_PREFIX(ColorFragmentOp2ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 6024(%rax), %r11
+ movq 6112(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6024(%rax), %r11
+ movq 6112(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28481,7 +28904,7 @@ GL_PREFIX(ColorFragmentOp2ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 6024(%rax), %r11
+ movq 6112(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ColorFragmentOp2ATI), .-GL_PREFIX(ColorFragmentOp2ATI)
@@ -28492,7 +28915,7 @@ GL_PREFIX(ColorFragmentOp2ATI):
GL_PREFIX(ColorFragmentOp3ATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6032(%rax), %r11
+ movq 6120(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28510,13 +28933,13 @@ GL_PREFIX(ColorFragmentOp3ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 6032(%rax), %r11
+ movq 6120(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6032(%rax), %r11
+ movq 6120(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28534,7 +28957,7 @@ GL_PREFIX(ColorFragmentOp3ATI):
popq %rdx
popq %rsi
popq %rdi
- movq 6032(%rax), %r11
+ movq 6120(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ColorFragmentOp3ATI), .-GL_PREFIX(ColorFragmentOp3ATI)
@@ -28545,25 +28968,25 @@ GL_PREFIX(ColorFragmentOp3ATI):
GL_PREFIX(DeleteFragmentShaderATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6040(%rax), %r11
+ movq 6128(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6040(%rax), %r11
+ movq 6128(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6040(%rax), %r11
+ movq 6128(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6040(%rax), %r11
+ movq 6128(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DeleteFragmentShaderATI), .-GL_PREFIX(DeleteFragmentShaderATI)
@@ -28574,25 +28997,25 @@ GL_PREFIX(DeleteFragmentShaderATI):
GL_PREFIX(EndFragmentShaderATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6048(%rax), %r11
+ movq 6136(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rbp
call _x86_64_get_dispatch@PLT
popq %rbp
- movq 6048(%rax), %r11
+ movq 6136(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6048(%rax), %r11
+ movq 6136(%rax), %r11
jmp *%r11
1:
pushq %rbp
call _glapi_get_dispatch
popq %rbp
- movq 6048(%rax), %r11
+ movq 6136(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(EndFragmentShaderATI), .-GL_PREFIX(EndFragmentShaderATI)
@@ -28603,25 +29026,25 @@ GL_PREFIX(EndFragmentShaderATI):
GL_PREFIX(GenFragmentShadersATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6056(%rax), %r11
+ movq 6144(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6056(%rax), %r11
+ movq 6144(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6056(%rax), %r11
+ movq 6144(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6056(%rax), %r11
+ movq 6144(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GenFragmentShadersATI), .-GL_PREFIX(GenFragmentShadersATI)
@@ -28632,7 +29055,7 @@ GL_PREFIX(GenFragmentShadersATI):
GL_PREFIX(PassTexCoordATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6064(%rax), %r11
+ movq 6152(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28642,13 +29065,13 @@ GL_PREFIX(PassTexCoordATI):
popq %rdx
popq %rsi
popq %rdi
- movq 6064(%rax), %r11
+ movq 6152(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6064(%rax), %r11
+ movq 6152(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28658,7 +29081,7 @@ GL_PREFIX(PassTexCoordATI):
popq %rdx
popq %rsi
popq %rdi
- movq 6064(%rax), %r11
+ movq 6152(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(PassTexCoordATI), .-GL_PREFIX(PassTexCoordATI)
@@ -28669,7 +29092,7 @@ GL_PREFIX(PassTexCoordATI):
GL_PREFIX(SampleMapATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6072(%rax), %r11
+ movq 6160(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28679,13 +29102,13 @@ GL_PREFIX(SampleMapATI):
popq %rdx
popq %rsi
popq %rdi
- movq 6072(%rax), %r11
+ movq 6160(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6072(%rax), %r11
+ movq 6160(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28695,7 +29118,7 @@ GL_PREFIX(SampleMapATI):
popq %rdx
popq %rsi
popq %rdi
- movq 6072(%rax), %r11
+ movq 6160(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SampleMapATI), .-GL_PREFIX(SampleMapATI)
@@ -28706,7 +29129,7 @@ GL_PREFIX(SampleMapATI):
GL_PREFIX(SetFragmentShaderConstantATI):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6080(%rax), %r11
+ movq 6168(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28716,13 +29139,13 @@ GL_PREFIX(SetFragmentShaderConstantATI):
popq %rbp
popq %rsi
popq %rdi
- movq 6080(%rax), %r11
+ movq 6168(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6080(%rax), %r11
+ movq 6168(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28732,7 +29155,7 @@ GL_PREFIX(SetFragmentShaderConstantATI):
popq %rbp
popq %rsi
popq %rdi
- movq 6080(%rax), %r11
+ movq 6168(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(SetFragmentShaderConstantATI), .-GL_PREFIX(SetFragmentShaderConstantATI)
@@ -28743,7 +29166,7 @@ GL_PREFIX(SetFragmentShaderConstantATI):
GL_PREFIX(PointParameteriNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6088(%rax), %r11
+ movq 6176(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28753,13 +29176,13 @@ GL_PREFIX(PointParameteriNV):
popq %rbp
popq %rsi
popq %rdi
- movq 6088(%rax), %r11
+ movq 6176(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6088(%rax), %r11
+ movq 6176(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28769,7 +29192,7 @@ GL_PREFIX(PointParameteriNV):
popq %rbp
popq %rsi
popq %rdi
- movq 6088(%rax), %r11
+ movq 6176(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(PointParameteriNV), .-GL_PREFIX(PointParameteriNV)
@@ -28780,7 +29203,7 @@ GL_PREFIX(PointParameteriNV):
GL_PREFIX(PointParameterivNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6096(%rax), %r11
+ movq 6184(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28790,13 +29213,13 @@ GL_PREFIX(PointParameterivNV):
popq %rbp
popq %rsi
popq %rdi
- movq 6096(%rax), %r11
+ movq 6184(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6096(%rax), %r11
+ movq 6184(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28806,79 +29229,79 @@ GL_PREFIX(PointParameterivNV):
popq %rbp
popq %rsi
popq %rdi
- movq 6096(%rax), %r11
+ movq 6184(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(PointParameterivNV), .-GL_PREFIX(PointParameterivNV)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_763)
- .type GL_PREFIX(_dispatch_stub_763), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_763))
-GL_PREFIX(_dispatch_stub_763):
+ .globl GL_PREFIX(_dispatch_stub_774)
+ .type GL_PREFIX(_dispatch_stub_774), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_774))
+GL_PREFIX(_dispatch_stub_774):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6104(%rax), %r11
+ movq 6192(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6104(%rax), %r11
+ movq 6192(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6104(%rax), %r11
+ movq 6192(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6104(%rax), %r11
+ movq 6192(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_763), .-GL_PREFIX(_dispatch_stub_763)
+ .size GL_PREFIX(_dispatch_stub_774), .-GL_PREFIX(_dispatch_stub_774)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_764)
- .type GL_PREFIX(_dispatch_stub_764), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_764))
-GL_PREFIX(_dispatch_stub_764):
+ .globl GL_PREFIX(_dispatch_stub_775)
+ .type GL_PREFIX(_dispatch_stub_775), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_775))
+GL_PREFIX(_dispatch_stub_775):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6112(%rax), %r11
+ movq 6200(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6112(%rax), %r11
+ movq 6200(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6112(%rax), %r11
+ movq 6200(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6112(%rax), %r11
+ movq 6200(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_764), .-GL_PREFIX(_dispatch_stub_764)
+ .size GL_PREFIX(_dispatch_stub_775), .-GL_PREFIX(_dispatch_stub_775)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_765)
- .type GL_PREFIX(_dispatch_stub_765), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_765))
-GL_PREFIX(_dispatch_stub_765):
+ .globl GL_PREFIX(_dispatch_stub_776)
+ .type GL_PREFIX(_dispatch_stub_776), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_776))
+GL_PREFIX(_dispatch_stub_776):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6120(%rax), %r11
+ movq 6208(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28888,13 +29311,13 @@ GL_PREFIX(_dispatch_stub_765):
popq %rbp
popq %rsi
popq %rdi
- movq 6120(%rax), %r11
+ movq 6208(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6120(%rax), %r11
+ movq 6208(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28904,19 +29327,19 @@ GL_PREFIX(_dispatch_stub_765):
popq %rbp
popq %rsi
popq %rdi
- movq 6120(%rax), %r11
+ movq 6208(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_765), .-GL_PREFIX(_dispatch_stub_765)
+ .size GL_PREFIX(_dispatch_stub_776), .-GL_PREFIX(_dispatch_stub_776)
.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):
+ .globl GL_PREFIX(_dispatch_stub_777)
+ .type GL_PREFIX(_dispatch_stub_777), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_777))
+GL_PREFIX(_dispatch_stub_777):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6128(%rax), %r11
+ movq 6216(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28926,13 +29349,13 @@ GL_PREFIX(_dispatch_stub_766):
popq %rbp
popq %rsi
popq %rdi
- movq 6128(%rax), %r11
+ movq 6216(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6128(%rax), %r11
+ movq 6216(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -28942,40 +29365,40 @@ GL_PREFIX(_dispatch_stub_766):
popq %rbp
popq %rsi
popq %rdi
- movq 6128(%rax), %r11
+ movq 6216(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_766), .-GL_PREFIX(_dispatch_stub_766)
+ .size GL_PREFIX(_dispatch_stub_777), .-GL_PREFIX(_dispatch_stub_777)
.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):
+ .globl GL_PREFIX(_dispatch_stub_778)
+ .type GL_PREFIX(_dispatch_stub_778), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_778))
+GL_PREFIX(_dispatch_stub_778):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6136(%rax), %r11
+ movq 6224(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6136(%rax), %r11
+ movq 6224(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6136(%rax), %r11
+ movq 6224(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6136(%rax), %r11
+ movq 6224(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_767), .-GL_PREFIX(_dispatch_stub_767)
+ .size GL_PREFIX(_dispatch_stub_778), .-GL_PREFIX(_dispatch_stub_778)
.p2align 4,,15
.globl GL_PREFIX(GetProgramNamedParameterdvNV)
@@ -28983,7 +29406,7 @@ GL_PREFIX(_dispatch_stub_767):
GL_PREFIX(GetProgramNamedParameterdvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6144(%rax), %r11
+ movq 6232(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -28997,13 +29420,13 @@ GL_PREFIX(GetProgramNamedParameterdvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 6144(%rax), %r11
+ movq 6232(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6144(%rax), %r11
+ movq 6232(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29017,7 +29440,7 @@ GL_PREFIX(GetProgramNamedParameterdvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 6144(%rax), %r11
+ movq 6232(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramNamedParameterdvNV), .-GL_PREFIX(GetProgramNamedParameterdvNV)
@@ -29028,7 +29451,7 @@ GL_PREFIX(GetProgramNamedParameterdvNV):
GL_PREFIX(GetProgramNamedParameterfvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6152(%rax), %r11
+ movq 6240(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29042,13 +29465,13 @@ GL_PREFIX(GetProgramNamedParameterfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 6152(%rax), %r11
+ movq 6240(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6152(%rax), %r11
+ movq 6240(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29062,7 +29485,7 @@ GL_PREFIX(GetProgramNamedParameterfvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 6152(%rax), %r11
+ movq 6240(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetProgramNamedParameterfvNV), .-GL_PREFIX(GetProgramNamedParameterfvNV)
@@ -29073,7 +29496,7 @@ GL_PREFIX(GetProgramNamedParameterfvNV):
GL_PREFIX(ProgramNamedParameter4dNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6160(%rax), %r11
+ movq 6248(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $56, %rsp
@@ -29093,13 +29516,13 @@ GL_PREFIX(ProgramNamedParameter4dNV):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 6160(%rax), %r11
+ movq 6248(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6160(%rax), %r11
+ movq 6248(%rax), %r11
jmp *%r11
1:
subq $56, %rsp
@@ -29119,7 +29542,7 @@ GL_PREFIX(ProgramNamedParameter4dNV):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 6160(%rax), %r11
+ movq 6248(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramNamedParameter4dNV), .-GL_PREFIX(ProgramNamedParameter4dNV)
@@ -29130,7 +29553,7 @@ GL_PREFIX(ProgramNamedParameter4dNV):
GL_PREFIX(ProgramNamedParameter4dvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6168(%rax), %r11
+ movq 6256(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29144,13 +29567,13 @@ GL_PREFIX(ProgramNamedParameter4dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 6168(%rax), %r11
+ movq 6256(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6168(%rax), %r11
+ movq 6256(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29164,7 +29587,7 @@ GL_PREFIX(ProgramNamedParameter4dvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 6168(%rax), %r11
+ movq 6256(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramNamedParameter4dvNV), .-GL_PREFIX(ProgramNamedParameter4dvNV)
@@ -29175,7 +29598,7 @@ GL_PREFIX(ProgramNamedParameter4dvNV):
GL_PREFIX(ProgramNamedParameter4fNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6176(%rax), %r11
+ movq 6264(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
subq $56, %rsp
@@ -29195,13 +29618,13 @@ GL_PREFIX(ProgramNamedParameter4fNV):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 6176(%rax), %r11
+ movq 6264(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6176(%rax), %r11
+ movq 6264(%rax), %r11
jmp *%r11
1:
subq $56, %rsp
@@ -29221,7 +29644,7 @@ GL_PREFIX(ProgramNamedParameter4fNV):
movq 8(%rsp), %rsi
movq (%rsp), %rdi
addq $56, %rsp
- movq 6176(%rax), %r11
+ movq 6264(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramNamedParameter4fNV), .-GL_PREFIX(ProgramNamedParameter4fNV)
@@ -29232,7 +29655,7 @@ GL_PREFIX(ProgramNamedParameter4fNV):
GL_PREFIX(ProgramNamedParameter4fvNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6184(%rax), %r11
+ movq 6272(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29246,13 +29669,13 @@ GL_PREFIX(ProgramNamedParameter4fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 6184(%rax), %r11
+ movq 6272(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6184(%rax), %r11
+ movq 6272(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29266,7 +29689,7 @@ GL_PREFIX(ProgramNamedParameter4fvNV):
popq %rdx
popq %rsi
popq %rdi
- movq 6184(%rax), %r11
+ movq 6272(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProgramNamedParameter4fvNV), .-GL_PREFIX(ProgramNamedParameter4fvNV)
@@ -29277,25 +29700,25 @@ GL_PREFIX(ProgramNamedParameter4fvNV):
GL_PREFIX(PrimitiveRestartIndexNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6192(%rax), %r11
+ movq 6280(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6192(%rax), %r11
+ movq 6280(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6192(%rax), %r11
+ movq 6280(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6192(%rax), %r11
+ movq 6280(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(PrimitiveRestartIndexNV), .-GL_PREFIX(PrimitiveRestartIndexNV)
@@ -29306,37 +29729,37 @@ GL_PREFIX(PrimitiveRestartIndexNV):
GL_PREFIX(PrimitiveRestartNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6200(%rax), %r11
+ movq 6288(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rbp
call _x86_64_get_dispatch@PLT
popq %rbp
- movq 6200(%rax), %r11
+ movq 6288(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6200(%rax), %r11
+ movq 6288(%rax), %r11
jmp *%r11
1:
pushq %rbp
call _glapi_get_dispatch
popq %rbp
- movq 6200(%rax), %r11
+ movq 6288(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(PrimitiveRestartNV), .-GL_PREFIX(PrimitiveRestartNV)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_776)
- .type GL_PREFIX(_dispatch_stub_776), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_776))
-GL_PREFIX(_dispatch_stub_776):
+ .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 6208(%rax), %r11
+ movq 6296(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29346,13 +29769,13 @@ GL_PREFIX(_dispatch_stub_776):
popq %rbp
popq %rsi
popq %rdi
- movq 6208(%rax), %r11
+ movq 6296(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6208(%rax), %r11
+ movq 6296(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29362,19 +29785,19 @@ GL_PREFIX(_dispatch_stub_776):
popq %rbp
popq %rsi
popq %rdi
- movq 6208(%rax), %r11
+ movq 6296(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_776), .-GL_PREFIX(_dispatch_stub_776)
+ .size GL_PREFIX(_dispatch_stub_787), .-GL_PREFIX(_dispatch_stub_787)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_777)
- .type GL_PREFIX(_dispatch_stub_777), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_777))
-GL_PREFIX(_dispatch_stub_777):
+ .globl GL_PREFIX(_dispatch_stub_788)
+ .type GL_PREFIX(_dispatch_stub_788), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_788))
+GL_PREFIX(_dispatch_stub_788):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6216(%rax), %r11
+ movq 6304(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29384,13 +29807,13 @@ GL_PREFIX(_dispatch_stub_777):
popq %rbp
popq %rsi
popq %rdi
- movq 6216(%rax), %r11
+ movq 6304(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6216(%rax), %r11
+ movq 6304(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29400,10 +29823,10 @@ GL_PREFIX(_dispatch_stub_777):
popq %rbp
popq %rsi
popq %rdi
- movq 6216(%rax), %r11
+ movq 6304(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_777), .-GL_PREFIX(_dispatch_stub_777)
+ .size GL_PREFIX(_dispatch_stub_788), .-GL_PREFIX(_dispatch_stub_788)
.p2align 4,,15
.globl GL_PREFIX(BindFramebufferEXT)
@@ -29411,7 +29834,7 @@ GL_PREFIX(_dispatch_stub_777):
GL_PREFIX(BindFramebufferEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6224(%rax), %r11
+ movq 6312(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29421,13 +29844,13 @@ GL_PREFIX(BindFramebufferEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6224(%rax), %r11
+ movq 6312(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6224(%rax), %r11
+ movq 6312(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29437,7 +29860,7 @@ GL_PREFIX(BindFramebufferEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6224(%rax), %r11
+ movq 6312(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BindFramebufferEXT), .-GL_PREFIX(BindFramebufferEXT)
@@ -29448,7 +29871,7 @@ GL_PREFIX(BindFramebufferEXT):
GL_PREFIX(BindRenderbufferEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6232(%rax), %r11
+ movq 6320(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29458,13 +29881,13 @@ GL_PREFIX(BindRenderbufferEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6232(%rax), %r11
+ movq 6320(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6232(%rax), %r11
+ movq 6320(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29474,7 +29897,7 @@ GL_PREFIX(BindRenderbufferEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6232(%rax), %r11
+ movq 6320(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BindRenderbufferEXT), .-GL_PREFIX(BindRenderbufferEXT)
@@ -29485,25 +29908,25 @@ GL_PREFIX(BindRenderbufferEXT):
GL_PREFIX(CheckFramebufferStatusEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6240(%rax), %r11
+ movq 6328(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6240(%rax), %r11
+ movq 6328(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6240(%rax), %r11
+ movq 6328(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6240(%rax), %r11
+ movq 6328(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(CheckFramebufferStatusEXT), .-GL_PREFIX(CheckFramebufferStatusEXT)
@@ -29514,7 +29937,7 @@ GL_PREFIX(CheckFramebufferStatusEXT):
GL_PREFIX(DeleteFramebuffersEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6248(%rax), %r11
+ movq 6336(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29524,13 +29947,13 @@ GL_PREFIX(DeleteFramebuffersEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6248(%rax), %r11
+ movq 6336(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6248(%rax), %r11
+ movq 6336(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29540,7 +29963,7 @@ GL_PREFIX(DeleteFramebuffersEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6248(%rax), %r11
+ movq 6336(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DeleteFramebuffersEXT), .-GL_PREFIX(DeleteFramebuffersEXT)
@@ -29551,7 +29974,7 @@ GL_PREFIX(DeleteFramebuffersEXT):
GL_PREFIX(DeleteRenderbuffersEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6256(%rax), %r11
+ movq 6344(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29561,13 +29984,13 @@ GL_PREFIX(DeleteRenderbuffersEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6256(%rax), %r11
+ movq 6344(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6256(%rax), %r11
+ movq 6344(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29577,7 +30000,7 @@ GL_PREFIX(DeleteRenderbuffersEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6256(%rax), %r11
+ movq 6344(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DeleteRenderbuffersEXT), .-GL_PREFIX(DeleteRenderbuffersEXT)
@@ -29588,7 +30011,7 @@ GL_PREFIX(DeleteRenderbuffersEXT):
GL_PREFIX(FramebufferRenderbufferEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6264(%rax), %r11
+ movq 6352(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29602,13 +30025,13 @@ GL_PREFIX(FramebufferRenderbufferEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6264(%rax), %r11
+ movq 6352(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6264(%rax), %r11
+ movq 6352(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29622,7 +30045,7 @@ GL_PREFIX(FramebufferRenderbufferEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6264(%rax), %r11
+ movq 6352(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FramebufferRenderbufferEXT), .-GL_PREFIX(FramebufferRenderbufferEXT)
@@ -29633,7 +30056,7 @@ GL_PREFIX(FramebufferRenderbufferEXT):
GL_PREFIX(FramebufferTexture1DEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6272(%rax), %r11
+ movq 6360(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29647,13 +30070,13 @@ GL_PREFIX(FramebufferTexture1DEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6272(%rax), %r11
+ movq 6360(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6272(%rax), %r11
+ movq 6360(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29667,7 +30090,7 @@ GL_PREFIX(FramebufferTexture1DEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6272(%rax), %r11
+ movq 6360(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FramebufferTexture1DEXT), .-GL_PREFIX(FramebufferTexture1DEXT)
@@ -29678,7 +30101,7 @@ GL_PREFIX(FramebufferTexture1DEXT):
GL_PREFIX(FramebufferTexture2DEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6280(%rax), %r11
+ movq 6368(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29692,13 +30115,13 @@ GL_PREFIX(FramebufferTexture2DEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6280(%rax), %r11
+ movq 6368(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6280(%rax), %r11
+ movq 6368(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29712,7 +30135,7 @@ GL_PREFIX(FramebufferTexture2DEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6280(%rax), %r11
+ movq 6368(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FramebufferTexture2DEXT), .-GL_PREFIX(FramebufferTexture2DEXT)
@@ -29723,7 +30146,7 @@ GL_PREFIX(FramebufferTexture2DEXT):
GL_PREFIX(FramebufferTexture3DEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6288(%rax), %r11
+ movq 6376(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29741,13 +30164,13 @@ GL_PREFIX(FramebufferTexture3DEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6288(%rax), %r11
+ movq 6376(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6288(%rax), %r11
+ movq 6376(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29765,7 +30188,7 @@ GL_PREFIX(FramebufferTexture3DEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6288(%rax), %r11
+ movq 6376(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FramebufferTexture3DEXT), .-GL_PREFIX(FramebufferTexture3DEXT)
@@ -29776,7 +30199,7 @@ GL_PREFIX(FramebufferTexture3DEXT):
GL_PREFIX(GenFramebuffersEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6296(%rax), %r11
+ movq 6384(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29786,13 +30209,13 @@ GL_PREFIX(GenFramebuffersEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6296(%rax), %r11
+ movq 6384(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6296(%rax), %r11
+ movq 6384(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29802,7 +30225,7 @@ GL_PREFIX(GenFramebuffersEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6296(%rax), %r11
+ movq 6384(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GenFramebuffersEXT), .-GL_PREFIX(GenFramebuffersEXT)
@@ -29813,7 +30236,7 @@ GL_PREFIX(GenFramebuffersEXT):
GL_PREFIX(GenRenderbuffersEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6304(%rax), %r11
+ movq 6392(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29823,13 +30246,13 @@ GL_PREFIX(GenRenderbuffersEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6304(%rax), %r11
+ movq 6392(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6304(%rax), %r11
+ movq 6392(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29839,7 +30262,7 @@ GL_PREFIX(GenRenderbuffersEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6304(%rax), %r11
+ movq 6392(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GenRenderbuffersEXT), .-GL_PREFIX(GenRenderbuffersEXT)
@@ -29850,25 +30273,25 @@ GL_PREFIX(GenRenderbuffersEXT):
GL_PREFIX(GenerateMipmapEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6312(%rax), %r11
+ movq 6400(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6312(%rax), %r11
+ movq 6400(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6312(%rax), %r11
+ movq 6400(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6312(%rax), %r11
+ movq 6400(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GenerateMipmapEXT), .-GL_PREFIX(GenerateMipmapEXT)
@@ -29879,7 +30302,7 @@ GL_PREFIX(GenerateMipmapEXT):
GL_PREFIX(GetFramebufferAttachmentParameterivEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6320(%rax), %r11
+ movq 6408(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29893,13 +30316,13 @@ GL_PREFIX(GetFramebufferAttachmentParameterivEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6320(%rax), %r11
+ movq 6408(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6320(%rax), %r11
+ movq 6408(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29913,7 +30336,7 @@ GL_PREFIX(GetFramebufferAttachmentParameterivEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6320(%rax), %r11
+ movq 6408(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetFramebufferAttachmentParameterivEXT), .-GL_PREFIX(GetFramebufferAttachmentParameterivEXT)
@@ -29924,7 +30347,7 @@ GL_PREFIX(GetFramebufferAttachmentParameterivEXT):
GL_PREFIX(GetRenderbufferParameterivEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6328(%rax), %r11
+ movq 6416(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -29934,13 +30357,13 @@ GL_PREFIX(GetRenderbufferParameterivEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6328(%rax), %r11
+ movq 6416(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6328(%rax), %r11
+ movq 6416(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -29950,7 +30373,7 @@ GL_PREFIX(GetRenderbufferParameterivEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6328(%rax), %r11
+ movq 6416(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetRenderbufferParameterivEXT), .-GL_PREFIX(GetRenderbufferParameterivEXT)
@@ -29961,25 +30384,25 @@ GL_PREFIX(GetRenderbufferParameterivEXT):
GL_PREFIX(IsFramebufferEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6336(%rax), %r11
+ movq 6424(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6336(%rax), %r11
+ movq 6424(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6336(%rax), %r11
+ movq 6424(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6336(%rax), %r11
+ movq 6424(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(IsFramebufferEXT), .-GL_PREFIX(IsFramebufferEXT)
@@ -29990,25 +30413,25 @@ GL_PREFIX(IsFramebufferEXT):
GL_PREFIX(IsRenderbufferEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6344(%rax), %r11
+ movq 6432(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6344(%rax), %r11
+ movq 6432(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6344(%rax), %r11
+ movq 6432(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6344(%rax), %r11
+ movq 6432(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(IsRenderbufferEXT), .-GL_PREFIX(IsRenderbufferEXT)
@@ -30019,7 +30442,7 @@ GL_PREFIX(IsRenderbufferEXT):
GL_PREFIX(RenderbufferStorageEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6352(%rax), %r11
+ movq 6440(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30033,13 +30456,13 @@ GL_PREFIX(RenderbufferStorageEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6352(%rax), %r11
+ movq 6440(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6352(%rax), %r11
+ movq 6440(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30053,19 +30476,19 @@ GL_PREFIX(RenderbufferStorageEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6352(%rax), %r11
+ movq 6440(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(RenderbufferStorageEXT), .-GL_PREFIX(RenderbufferStorageEXT)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_795)
- .type GL_PREFIX(_dispatch_stub_795), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_795))
-GL_PREFIX(_dispatch_stub_795):
+ .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 6360(%rax), %r11
+ movq 6448(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30083,13 +30506,13 @@ GL_PREFIX(_dispatch_stub_795):
popq %rdx
popq %rsi
popq %rdi
- movq 6360(%rax), %r11
+ movq 6448(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6360(%rax), %r11
+ movq 6448(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30107,19 +30530,19 @@ GL_PREFIX(_dispatch_stub_795):
popq %rdx
popq %rsi
popq %rdi
- movq 6360(%rax), %r11
+ movq 6448(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_795), .-GL_PREFIX(_dispatch_stub_795)
+ .size GL_PREFIX(_dispatch_stub_806), .-GL_PREFIX(_dispatch_stub_806)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_796)
- .type GL_PREFIX(_dispatch_stub_796), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_796))
-GL_PREFIX(_dispatch_stub_796):
+ .globl GL_PREFIX(_dispatch_stub_807)
+ .type GL_PREFIX(_dispatch_stub_807), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_807))
+GL_PREFIX(_dispatch_stub_807):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6368(%rax), %r11
+ movq 6456(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30129,13 +30552,13 @@ GL_PREFIX(_dispatch_stub_796):
popq %rdx
popq %rsi
popq %rdi
- movq 6368(%rax), %r11
+ movq 6456(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6368(%rax), %r11
+ movq 6456(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30145,19 +30568,19 @@ GL_PREFIX(_dispatch_stub_796):
popq %rdx
popq %rsi
popq %rdi
- movq 6368(%rax), %r11
+ movq 6456(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_796), .-GL_PREFIX(_dispatch_stub_796)
+ .size GL_PREFIX(_dispatch_stub_807), .-GL_PREFIX(_dispatch_stub_807)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_797)
- .type GL_PREFIX(_dispatch_stub_797), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_797))
-GL_PREFIX(_dispatch_stub_797):
+ .globl GL_PREFIX(_dispatch_stub_808)
+ .type GL_PREFIX(_dispatch_stub_808), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_808))
+GL_PREFIX(_dispatch_stub_808):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6376(%rax), %r11
+ movq 6464(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30167,13 +30590,13 @@ GL_PREFIX(_dispatch_stub_797):
popq %rdx
popq %rsi
popq %rdi
- movq 6376(%rax), %r11
+ movq 6464(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6376(%rax), %r11
+ movq 6464(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30183,10 +30606,1324 @@ GL_PREFIX(_dispatch_stub_797):
popq %rdx
popq %rsi
popq %rdi
- movq 6376(%rax), %r11
+ movq 6464(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(_dispatch_stub_808), .-GL_PREFIX(_dispatch_stub_808)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(BindFragDataLocationEXT)
+ .type GL_PREFIX(BindFragDataLocationEXT), @function
+GL_PREFIX(BindFragDataLocationEXT):
+#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(BindFragDataLocationEXT), .-GL_PREFIX(BindFragDataLocationEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(GetFragDataLocationEXT)
+ .type GL_PREFIX(GetFragDataLocationEXT), @function
+GL_PREFIX(GetFragDataLocationEXT):
+#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 %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ 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 %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6480(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(GetFragDataLocationEXT), .-GL_PREFIX(GetFragDataLocationEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(GetUniformuivEXT)
+ .type GL_PREFIX(GetUniformuivEXT), @function
+GL_PREFIX(GetUniformuivEXT):
+#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
+ call _x86_64_get_dispatch@PLT
+ 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
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6488(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(GetUniformuivEXT), .-GL_PREFIX(GetUniformuivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(GetVertexAttribIivEXT)
+ .type GL_PREFIX(GetVertexAttribIivEXT), @function
+GL_PREFIX(GetVertexAttribIivEXT):
+#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
+ call _x86_64_get_dispatch@PLT
+ 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
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6496(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(GetVertexAttribIivEXT), .-GL_PREFIX(GetVertexAttribIivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(GetVertexAttribIuivEXT)
+ .type GL_PREFIX(GetVertexAttribIuivEXT), @function
+GL_PREFIX(GetVertexAttribIuivEXT):
+#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(GetVertexAttribIuivEXT), .-GL_PREFIX(GetVertexAttribIuivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(Uniform1uiEXT)
+ .type GL_PREFIX(Uniform1uiEXT), @function
+GL_PREFIX(Uniform1uiEXT):
+#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 %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ 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 %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6512(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(Uniform1uiEXT), .-GL_PREFIX(Uniform1uiEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(Uniform1uivEXT)
+ .type GL_PREFIX(Uniform1uivEXT), @function
+GL_PREFIX(Uniform1uivEXT):
+#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 %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ 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 %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6520(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(Uniform1uivEXT), .-GL_PREFIX(Uniform1uivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(Uniform2uiEXT)
+ .type GL_PREFIX(Uniform2uiEXT), @function
+GL_PREFIX(Uniform2uiEXT):
+#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 %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ 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 %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6528(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(Uniform2uiEXT), .-GL_PREFIX(Uniform2uiEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(Uniform2uivEXT)
+ .type GL_PREFIX(Uniform2uivEXT), @function
+GL_PREFIX(Uniform2uivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6536(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6536(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6536(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6536(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(Uniform2uivEXT), .-GL_PREFIX(Uniform2uivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(Uniform3uiEXT)
+ .type GL_PREFIX(Uniform3uiEXT), @function
+GL_PREFIX(Uniform3uiEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6544(%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 6544(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6544(%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 6544(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(Uniform3uiEXT), .-GL_PREFIX(Uniform3uiEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(Uniform3uivEXT)
+ .type GL_PREFIX(Uniform3uivEXT), @function
+GL_PREFIX(Uniform3uivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6552(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6552(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6552(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6552(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(Uniform3uivEXT), .-GL_PREFIX(Uniform3uivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(Uniform4uiEXT)
+ .type GL_PREFIX(Uniform4uiEXT), @function
+GL_PREFIX(Uniform4uiEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6560(%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 6560(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6560(%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 6560(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(Uniform4uiEXT), .-GL_PREFIX(Uniform4uiEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(Uniform4uivEXT)
+ .type GL_PREFIX(Uniform4uivEXT), @function
+GL_PREFIX(Uniform4uivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6568(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6568(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6568(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6568(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(Uniform4uivEXT), .-GL_PREFIX(Uniform4uivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI1iEXT)
+ .type GL_PREFIX(VertexAttribI1iEXT), @function
+GL_PREFIX(VertexAttribI1iEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6576(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6576(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6576(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6576(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI1iEXT), .-GL_PREFIX(VertexAttribI1iEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI1ivEXT)
+ .type GL_PREFIX(VertexAttribI1ivEXT), @function
+GL_PREFIX(VertexAttribI1ivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6584(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6584(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6584(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6584(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI1ivEXT), .-GL_PREFIX(VertexAttribI1ivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI1uiEXT)
+ .type GL_PREFIX(VertexAttribI1uiEXT), @function
+GL_PREFIX(VertexAttribI1uiEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6592(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6592(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6592(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6592(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI1uiEXT), .-GL_PREFIX(VertexAttribI1uiEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI1uivEXT)
+ .type GL_PREFIX(VertexAttribI1uivEXT), @function
+GL_PREFIX(VertexAttribI1uivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6600(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6600(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6600(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6600(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_797), .-GL_PREFIX(_dispatch_stub_797)
+ .size GL_PREFIX(VertexAttribI1uivEXT), .-GL_PREFIX(VertexAttribI1uivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI2iEXT)
+ .type GL_PREFIX(VertexAttribI2iEXT), @function
+GL_PREFIX(VertexAttribI2iEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6608(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6608(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6608(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6608(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI2iEXT), .-GL_PREFIX(VertexAttribI2iEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI2ivEXT)
+ .type GL_PREFIX(VertexAttribI2ivEXT), @function
+GL_PREFIX(VertexAttribI2ivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6616(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6616(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6616(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6616(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI2ivEXT), .-GL_PREFIX(VertexAttribI2ivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI2uiEXT)
+ .type GL_PREFIX(VertexAttribI2uiEXT), @function
+GL_PREFIX(VertexAttribI2uiEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6624(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6624(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6624(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6624(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI2uiEXT), .-GL_PREFIX(VertexAttribI2uiEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI2uivEXT)
+ .type GL_PREFIX(VertexAttribI2uivEXT), @function
+GL_PREFIX(VertexAttribI2uivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6632(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6632(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6632(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6632(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI2uivEXT), .-GL_PREFIX(VertexAttribI2uivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI3iEXT)
+ .type GL_PREFIX(VertexAttribI3iEXT), @function
+GL_PREFIX(VertexAttribI3iEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6640(%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 6640(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6640(%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 6640(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI3iEXT), .-GL_PREFIX(VertexAttribI3iEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI3ivEXT)
+ .type GL_PREFIX(VertexAttribI3ivEXT), @function
+GL_PREFIX(VertexAttribI3ivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6648(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6648(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6648(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6648(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI3ivEXT), .-GL_PREFIX(VertexAttribI3ivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI3uiEXT)
+ .type GL_PREFIX(VertexAttribI3uiEXT), @function
+GL_PREFIX(VertexAttribI3uiEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6656(%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 6656(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6656(%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 6656(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI3uiEXT), .-GL_PREFIX(VertexAttribI3uiEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI3uivEXT)
+ .type GL_PREFIX(VertexAttribI3uivEXT), @function
+GL_PREFIX(VertexAttribI3uivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6664(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6664(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6664(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6664(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI3uivEXT), .-GL_PREFIX(VertexAttribI3uivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI4bvEXT)
+ .type GL_PREFIX(VertexAttribI4bvEXT), @function
+GL_PREFIX(VertexAttribI4bvEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6672(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6672(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6672(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6672(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI4bvEXT), .-GL_PREFIX(VertexAttribI4bvEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI4iEXT)
+ .type GL_PREFIX(VertexAttribI4iEXT), @function
+GL_PREFIX(VertexAttribI4iEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6680(%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 6680(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6680(%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 6680(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI4iEXT), .-GL_PREFIX(VertexAttribI4iEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI4ivEXT)
+ .type GL_PREFIX(VertexAttribI4ivEXT), @function
+GL_PREFIX(VertexAttribI4ivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6688(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6688(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6688(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6688(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI4ivEXT), .-GL_PREFIX(VertexAttribI4ivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI4svEXT)
+ .type GL_PREFIX(VertexAttribI4svEXT), @function
+GL_PREFIX(VertexAttribI4svEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6696(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6696(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6696(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6696(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI4svEXT), .-GL_PREFIX(VertexAttribI4svEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI4ubvEXT)
+ .type GL_PREFIX(VertexAttribI4ubvEXT), @function
+GL_PREFIX(VertexAttribI4ubvEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6704(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6704(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6704(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6704(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI4ubvEXT), .-GL_PREFIX(VertexAttribI4ubvEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI4uiEXT)
+ .type GL_PREFIX(VertexAttribI4uiEXT), @function
+GL_PREFIX(VertexAttribI4uiEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6712(%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 6712(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6712(%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 6712(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI4uiEXT), .-GL_PREFIX(VertexAttribI4uiEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI4uivEXT)
+ .type GL_PREFIX(VertexAttribI4uivEXT), @function
+GL_PREFIX(VertexAttribI4uivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6720(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6720(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6720(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6720(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI4uivEXT), .-GL_PREFIX(VertexAttribI4uivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribI4usvEXT)
+ .type GL_PREFIX(VertexAttribI4usvEXT), @function
+GL_PREFIX(VertexAttribI4usvEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6728(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6728(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6728(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6728(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribI4usvEXT), .-GL_PREFIX(VertexAttribI4usvEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(VertexAttribIPointerEXT)
+ .type GL_PREFIX(VertexAttribIPointerEXT), @function
+GL_PREFIX(VertexAttribIPointerEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6736(%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 6736(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6736(%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 6736(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(VertexAttribIPointerEXT), .-GL_PREFIX(VertexAttribIPointerEXT)
.p2align 4,,15
.globl GL_PREFIX(FramebufferTextureLayerEXT)
@@ -30194,7 +31931,7 @@ GL_PREFIX(_dispatch_stub_797):
GL_PREFIX(FramebufferTextureLayerEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6384(%rax), %r11
+ movq 6744(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30208,13 +31945,13 @@ GL_PREFIX(FramebufferTextureLayerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6384(%rax), %r11
+ movq 6744(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6384(%rax), %r11
+ movq 6744(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30228,7 +31965,7 @@ GL_PREFIX(FramebufferTextureLayerEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6384(%rax), %r11
+ movq 6744(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(FramebufferTextureLayerEXT), .-GL_PREFIX(FramebufferTextureLayerEXT)
@@ -30239,7 +31976,7 @@ GL_PREFIX(FramebufferTextureLayerEXT):
GL_PREFIX(ColorMaskIndexedEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6392(%rax), %r11
+ movq 6752(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30253,13 +31990,13 @@ GL_PREFIX(ColorMaskIndexedEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6392(%rax), %r11
+ movq 6752(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6392(%rax), %r11
+ movq 6752(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30273,7 +32010,7 @@ GL_PREFIX(ColorMaskIndexedEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6392(%rax), %r11
+ movq 6752(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ColorMaskIndexedEXT), .-GL_PREFIX(ColorMaskIndexedEXT)
@@ -30284,7 +32021,7 @@ GL_PREFIX(ColorMaskIndexedEXT):
GL_PREFIX(DisableIndexedEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6400(%rax), %r11
+ movq 6760(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30294,13 +32031,13 @@ GL_PREFIX(DisableIndexedEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6400(%rax), %r11
+ movq 6760(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6400(%rax), %r11
+ movq 6760(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30310,7 +32047,7 @@ GL_PREFIX(DisableIndexedEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6400(%rax), %r11
+ movq 6760(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(DisableIndexedEXT), .-GL_PREFIX(DisableIndexedEXT)
@@ -30321,7 +32058,7 @@ GL_PREFIX(DisableIndexedEXT):
GL_PREFIX(EnableIndexedEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6408(%rax), %r11
+ movq 6768(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30331,13 +32068,13 @@ GL_PREFIX(EnableIndexedEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6408(%rax), %r11
+ movq 6768(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6408(%rax), %r11
+ movq 6768(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30347,7 +32084,7 @@ GL_PREFIX(EnableIndexedEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6408(%rax), %r11
+ movq 6768(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(EnableIndexedEXT), .-GL_PREFIX(EnableIndexedEXT)
@@ -30358,7 +32095,7 @@ GL_PREFIX(EnableIndexedEXT):
GL_PREFIX(GetBooleanIndexedvEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6416(%rax), %r11
+ movq 6776(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30368,13 +32105,13 @@ GL_PREFIX(GetBooleanIndexedvEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6416(%rax), %r11
+ movq 6776(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6416(%rax), %r11
+ movq 6776(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30384,7 +32121,7 @@ GL_PREFIX(GetBooleanIndexedvEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6416(%rax), %r11
+ movq 6776(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetBooleanIndexedvEXT), .-GL_PREFIX(GetBooleanIndexedvEXT)
@@ -30395,7 +32132,7 @@ GL_PREFIX(GetBooleanIndexedvEXT):
GL_PREFIX(GetIntegerIndexedvEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6424(%rax), %r11
+ movq 6784(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30405,13 +32142,13 @@ GL_PREFIX(GetIntegerIndexedvEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6424(%rax), %r11
+ movq 6784(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6424(%rax), %r11
+ movq 6784(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30421,7 +32158,7 @@ GL_PREFIX(GetIntegerIndexedvEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6424(%rax), %r11
+ movq 6784(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetIntegerIndexedvEXT), .-GL_PREFIX(GetIntegerIndexedvEXT)
@@ -30432,7 +32169,7 @@ GL_PREFIX(GetIntegerIndexedvEXT):
GL_PREFIX(IsEnabledIndexedEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6432(%rax), %r11
+ movq 6792(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30442,13 +32179,13 @@ GL_PREFIX(IsEnabledIndexedEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6432(%rax), %r11
+ movq 6792(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6432(%rax), %r11
+ movq 6792(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30458,18 +32195,256 @@ GL_PREFIX(IsEnabledIndexedEXT):
popq %rbp
popq %rsi
popq %rdi
- movq 6432(%rax), %r11
+ movq 6792(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(IsEnabledIndexedEXT), .-GL_PREFIX(IsEnabledIndexedEXT)
.p2align 4,,15
+ .globl GL_PREFIX(ClearColorIiEXT)
+ .type GL_PREFIX(ClearColorIiEXT), @function
+GL_PREFIX(ClearColorIiEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6800(%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 6800(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6800(%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 6800(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(ClearColorIiEXT), .-GL_PREFIX(ClearColorIiEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(ClearColorIuiEXT)
+ .type GL_PREFIX(ClearColorIuiEXT), @function
+GL_PREFIX(ClearColorIuiEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6808(%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 6808(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6808(%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 6808(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(ClearColorIuiEXT), .-GL_PREFIX(ClearColorIuiEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(GetTexParameterIivEXT)
+ .type GL_PREFIX(GetTexParameterIivEXT), @function
+GL_PREFIX(GetTexParameterIivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6816(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6816(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6816(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6816(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(GetTexParameterIivEXT), .-GL_PREFIX(GetTexParameterIivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(GetTexParameterIuivEXT)
+ .type GL_PREFIX(GetTexParameterIuivEXT), @function
+GL_PREFIX(GetTexParameterIuivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6824(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6824(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6824(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6824(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(GetTexParameterIuivEXT), .-GL_PREFIX(GetTexParameterIuivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(TexParameterIivEXT)
+ .type GL_PREFIX(TexParameterIivEXT), @function
+GL_PREFIX(TexParameterIivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6832(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6832(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6832(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6832(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(TexParameterIivEXT), .-GL_PREFIX(TexParameterIivEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(TexParameterIuivEXT)
+ .type GL_PREFIX(TexParameterIuivEXT), @function
+GL_PREFIX(TexParameterIuivEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6840(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _x86_64_get_dispatch@PLT
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6840(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6840(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rdx
+ call _glapi_get_dispatch
+ popq %rdx
+ popq %rsi
+ popq %rdi
+ movq 6840(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(TexParameterIuivEXT), .-GL_PREFIX(TexParameterIuivEXT)
+
+ .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 6440(%rax), %r11
+ movq 6848(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30479,13 +32454,13 @@ GL_PREFIX(BeginConditionalRenderNV):
popq %rbp
popq %rsi
popq %rdi
- movq 6440(%rax), %r11
+ movq 6848(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6440(%rax), %r11
+ movq 6848(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30495,7 +32470,7 @@ GL_PREFIX(BeginConditionalRenderNV):
popq %rbp
popq %rsi
popq %rdi
- movq 6440(%rax), %r11
+ movq 6848(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BeginConditionalRenderNV), .-GL_PREFIX(BeginConditionalRenderNV)
@@ -30506,25 +32481,25 @@ GL_PREFIX(BeginConditionalRenderNV):
GL_PREFIX(EndConditionalRenderNV):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6448(%rax), %r11
+ movq 6856(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rbp
call _x86_64_get_dispatch@PLT
popq %rbp
- movq 6448(%rax), %r11
+ movq 6856(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6448(%rax), %r11
+ movq 6856(%rax), %r11
jmp *%r11
1:
pushq %rbp
call _glapi_get_dispatch
popq %rbp
- movq 6448(%rax), %r11
+ movq 6856(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(EndConditionalRenderNV), .-GL_PREFIX(EndConditionalRenderNV)
@@ -30535,25 +32510,25 @@ GL_PREFIX(EndConditionalRenderNV):
GL_PREFIX(BeginTransformFeedbackEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6456(%rax), %r11
+ movq 6864(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6456(%rax), %r11
+ movq 6864(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6456(%rax), %r11
+ movq 6864(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6456(%rax), %r11
+ movq 6864(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BeginTransformFeedbackEXT), .-GL_PREFIX(BeginTransformFeedbackEXT)
@@ -30564,7 +32539,7 @@ GL_PREFIX(BeginTransformFeedbackEXT):
GL_PREFIX(BindBufferBaseEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6464(%rax), %r11
+ movq 6872(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30574,13 +32549,13 @@ GL_PREFIX(BindBufferBaseEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6464(%rax), %r11
+ movq 6872(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6464(%rax), %r11
+ movq 6872(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30590,7 +32565,7 @@ GL_PREFIX(BindBufferBaseEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6464(%rax), %r11
+ movq 6872(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BindBufferBaseEXT), .-GL_PREFIX(BindBufferBaseEXT)
@@ -30601,7 +32576,7 @@ GL_PREFIX(BindBufferBaseEXT):
GL_PREFIX(BindBufferOffsetEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6472(%rax), %r11
+ movq 6880(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30615,13 +32590,13 @@ GL_PREFIX(BindBufferOffsetEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6472(%rax), %r11
+ movq 6880(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6472(%rax), %r11
+ movq 6880(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30635,7 +32610,7 @@ GL_PREFIX(BindBufferOffsetEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6472(%rax), %r11
+ movq 6880(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BindBufferOffsetEXT), .-GL_PREFIX(BindBufferOffsetEXT)
@@ -30646,7 +32621,7 @@ GL_PREFIX(BindBufferOffsetEXT):
GL_PREFIX(BindBufferRangeEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6480(%rax), %r11
+ movq 6888(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30660,13 +32635,13 @@ GL_PREFIX(BindBufferRangeEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6480(%rax), %r11
+ movq 6888(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6480(%rax), %r11
+ movq 6888(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30680,7 +32655,7 @@ GL_PREFIX(BindBufferRangeEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6480(%rax), %r11
+ movq 6888(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(BindBufferRangeEXT), .-GL_PREFIX(BindBufferRangeEXT)
@@ -30691,25 +32666,25 @@ GL_PREFIX(BindBufferRangeEXT):
GL_PREFIX(EndTransformFeedbackEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6488(%rax), %r11
+ movq 6896(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rbp
call _x86_64_get_dispatch@PLT
popq %rbp
- movq 6488(%rax), %r11
+ movq 6896(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6488(%rax), %r11
+ movq 6896(%rax), %r11
jmp *%r11
1:
pushq %rbp
call _glapi_get_dispatch
popq %rbp
- movq 6488(%rax), %r11
+ movq 6896(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(EndTransformFeedbackEXT), .-GL_PREFIX(EndTransformFeedbackEXT)
@@ -30720,7 +32695,7 @@ GL_PREFIX(EndTransformFeedbackEXT):
GL_PREFIX(GetTransformFeedbackVaryingEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6496(%rax), %r11
+ movq 6904(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30738,13 +32713,13 @@ GL_PREFIX(GetTransformFeedbackVaryingEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6496(%rax), %r11
+ movq 6904(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6496(%rax), %r11
+ movq 6904(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30762,7 +32737,7 @@ GL_PREFIX(GetTransformFeedbackVaryingEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6496(%rax), %r11
+ movq 6904(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetTransformFeedbackVaryingEXT), .-GL_PREFIX(GetTransformFeedbackVaryingEXT)
@@ -30773,7 +32748,7 @@ GL_PREFIX(GetTransformFeedbackVaryingEXT):
GL_PREFIX(TransformFeedbackVaryingsEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6504(%rax), %r11
+ movq 6912(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30787,13 +32762,13 @@ GL_PREFIX(TransformFeedbackVaryingsEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6504(%rax), %r11
+ movq 6912(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6504(%rax), %r11
+ movq 6912(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30807,7 +32782,7 @@ GL_PREFIX(TransformFeedbackVaryingsEXT):
popq %rdx
popq %rsi
popq %rdi
- movq 6504(%rax), %r11
+ movq 6912(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(TransformFeedbackVaryingsEXT), .-GL_PREFIX(TransformFeedbackVaryingsEXT)
@@ -30818,37 +32793,37 @@ GL_PREFIX(TransformFeedbackVaryingsEXT):
GL_PREFIX(ProvokingVertexEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6512(%rax), %r11
+ movq 6920(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
call _x86_64_get_dispatch@PLT
popq %rdi
- movq 6512(%rax), %r11
+ movq 6920(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6512(%rax), %r11
+ movq 6920(%rax), %r11
jmp *%r11
1:
pushq %rdi
call _glapi_get_dispatch
popq %rdi
- movq 6512(%rax), %r11
+ movq 6920(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ProvokingVertexEXT), .-GL_PREFIX(ProvokingVertexEXT)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_815)
- .type GL_PREFIX(_dispatch_stub_815), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_815))
-GL_PREFIX(_dispatch_stub_815):
+ .globl GL_PREFIX(_dispatch_stub_866)
+ .type GL_PREFIX(_dispatch_stub_866), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_866))
+GL_PREFIX(_dispatch_stub_866):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6520(%rax), %r11
+ movq 6928(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30858,13 +32833,13 @@ GL_PREFIX(_dispatch_stub_815):
popq %rdx
popq %rsi
popq %rdi
- movq 6520(%rax), %r11
+ movq 6928(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6520(%rax), %r11
+ movq 6928(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30874,19 +32849,19 @@ GL_PREFIX(_dispatch_stub_815):
popq %rdx
popq %rsi
popq %rdi
- movq 6520(%rax), %r11
+ movq 6928(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_815), .-GL_PREFIX(_dispatch_stub_815)
+ .size GL_PREFIX(_dispatch_stub_866), .-GL_PREFIX(_dispatch_stub_866)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_816)
- .type GL_PREFIX(_dispatch_stub_816), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_816))
-GL_PREFIX(_dispatch_stub_816):
+ .globl GL_PREFIX(_dispatch_stub_867)
+ .type GL_PREFIX(_dispatch_stub_867), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_867))
+GL_PREFIX(_dispatch_stub_867):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6528(%rax), %r11
+ movq 6936(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30896,13 +32871,13 @@ GL_PREFIX(_dispatch_stub_816):
popq %rdx
popq %rsi
popq %rdi
- movq 6528(%rax), %r11
+ movq 6936(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6528(%rax), %r11
+ movq 6936(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30912,10 +32887,10 @@ GL_PREFIX(_dispatch_stub_816):
popq %rdx
popq %rsi
popq %rdi
- movq 6528(%rax), %r11
+ movq 6936(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_816), .-GL_PREFIX(_dispatch_stub_816)
+ .size GL_PREFIX(_dispatch_stub_867), .-GL_PREFIX(_dispatch_stub_867)
.p2align 4,,15
.globl GL_PREFIX(GetObjectParameterivAPPLE)
@@ -30923,7 +32898,7 @@ GL_PREFIX(_dispatch_stub_816):
GL_PREFIX(GetObjectParameterivAPPLE):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6536(%rax), %r11
+ movq 6944(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30937,13 +32912,13 @@ GL_PREFIX(GetObjectParameterivAPPLE):
popq %rdx
popq %rsi
popq %rdi
- movq 6536(%rax), %r11
+ movq 6944(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6536(%rax), %r11
+ movq 6944(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30957,7 +32932,7 @@ GL_PREFIX(GetObjectParameterivAPPLE):
popq %rdx
popq %rsi
popq %rdi
- movq 6536(%rax), %r11
+ movq 6944(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(GetObjectParameterivAPPLE), .-GL_PREFIX(GetObjectParameterivAPPLE)
@@ -30968,7 +32943,7 @@ GL_PREFIX(GetObjectParameterivAPPLE):
GL_PREFIX(ObjectPurgeableAPPLE):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6544(%rax), %r11
+ movq 6952(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -30978,13 +32953,13 @@ GL_PREFIX(ObjectPurgeableAPPLE):
popq %rdx
popq %rsi
popq %rdi
- movq 6544(%rax), %r11
+ movq 6952(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6544(%rax), %r11
+ movq 6952(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -30994,7 +32969,7 @@ GL_PREFIX(ObjectPurgeableAPPLE):
popq %rdx
popq %rsi
popq %rdi
- movq 6544(%rax), %r11
+ movq 6952(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ObjectPurgeableAPPLE), .-GL_PREFIX(ObjectPurgeableAPPLE)
@@ -31005,7 +32980,7 @@ GL_PREFIX(ObjectPurgeableAPPLE):
GL_PREFIX(ObjectUnpurgeableAPPLE):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6552(%rax), %r11
+ movq 6960(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -31015,13 +32990,13 @@ GL_PREFIX(ObjectUnpurgeableAPPLE):
popq %rdx
popq %rsi
popq %rdi
- movq 6552(%rax), %r11
+ movq 6960(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6552(%rax), %r11
+ movq 6960(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -31031,19 +33006,122 @@ GL_PREFIX(ObjectUnpurgeableAPPLE):
popq %rdx
popq %rsi
popq %rdi
- movq 6552(%rax), %r11
+ movq 6960(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(ObjectUnpurgeableAPPLE), .-GL_PREFIX(ObjectUnpurgeableAPPLE)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_820)
- .type GL_PREFIX(_dispatch_stub_820), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_820))
-GL_PREFIX(_dispatch_stub_820):
+ .globl GL_PREFIX(ActiveProgramEXT)
+ .type GL_PREFIX(ActiveProgramEXT), @function
+GL_PREFIX(ActiveProgramEXT):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6560(%rax), %r11
+ movq 6968(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ call _x86_64_get_dispatch@PLT
+ popq %rdi
+ movq 6968(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6968(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ call _glapi_get_dispatch
+ popq %rdi
+ movq 6968(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(ActiveProgramEXT), .-GL_PREFIX(ActiveProgramEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(CreateShaderProgramEXT)
+ .type GL_PREFIX(CreateShaderProgramEXT), @function
+GL_PREFIX(CreateShaderProgramEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6976(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6976(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6976(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6976(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(CreateShaderProgramEXT), .-GL_PREFIX(CreateShaderProgramEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(UseShaderProgramEXT)
+ .type GL_PREFIX(UseShaderProgramEXT), @function
+GL_PREFIX(UseShaderProgramEXT):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6984(%rax), %r11
+ jmp *%r11
+#elif defined(PTHREADS)
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _x86_64_get_dispatch@PLT
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6984(%rax), %r11
+ jmp *%r11
+#else
+ movq _glapi_Dispatch(%rip), %rax
+ testq %rax, %rax
+ je 1f
+ movq 6984(%rax), %r11
+ jmp *%r11
+1:
+ pushq %rdi
+ pushq %rsi
+ pushq %rbp
+ call _glapi_get_dispatch
+ popq %rbp
+ popq %rsi
+ popq %rdi
+ movq 6984(%rax), %r11
+ jmp *%r11
+#endif /* defined(GLX_USE_TLS) */
+ .size GL_PREFIX(UseShaderProgramEXT), .-GL_PREFIX(UseShaderProgramEXT)
+
+ .p2align 4,,15
+ .globl GL_PREFIX(_dispatch_stub_874)
+ .type GL_PREFIX(_dispatch_stub_874), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_874))
+GL_PREFIX(_dispatch_stub_874):
+#if defined(GLX_USE_TLS)
+ call _x86_64_get_dispatch@PLT
+ movq 6992(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -31057,13 +33135,13 @@ GL_PREFIX(_dispatch_stub_820):
popq %rdx
popq %rsi
popq %rdi
- movq 6560(%rax), %r11
+ movq 6992(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6560(%rax), %r11
+ movq 6992(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -31077,19 +33155,19 @@ GL_PREFIX(_dispatch_stub_820):
popq %rdx
popq %rsi
popq %rdi
- movq 6560(%rax), %r11
+ movq 6992(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_820), .-GL_PREFIX(_dispatch_stub_820)
+ .size GL_PREFIX(_dispatch_stub_874), .-GL_PREFIX(_dispatch_stub_874)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_821)
- .type GL_PREFIX(_dispatch_stub_821), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_821))
-GL_PREFIX(_dispatch_stub_821):
+ .globl GL_PREFIX(_dispatch_stub_875)
+ .type GL_PREFIX(_dispatch_stub_875), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_875))
+GL_PREFIX(_dispatch_stub_875):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6568(%rax), %r11
+ movq 7000(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -31103,13 +33181,13 @@ GL_PREFIX(_dispatch_stub_821):
popq %rdx
popq %rsi
popq %rdi
- movq 6568(%rax), %r11
+ movq 7000(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6568(%rax), %r11
+ movq 7000(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -31123,19 +33201,19 @@ GL_PREFIX(_dispatch_stub_821):
popq %rdx
popq %rsi
popq %rdi
- movq 6568(%rax), %r11
+ movq 7000(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_821), .-GL_PREFIX(_dispatch_stub_821)
+ .size GL_PREFIX(_dispatch_stub_875), .-GL_PREFIX(_dispatch_stub_875)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_822)
- .type GL_PREFIX(_dispatch_stub_822), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_822))
-GL_PREFIX(_dispatch_stub_822):
+ .globl GL_PREFIX(_dispatch_stub_876)
+ .type GL_PREFIX(_dispatch_stub_876), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_876))
+GL_PREFIX(_dispatch_stub_876):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6576(%rax), %r11
+ movq 7008(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -31149,13 +33227,13 @@ GL_PREFIX(_dispatch_stub_822):
popq %rdx
popq %rsi
popq %rdi
- movq 6576(%rax), %r11
+ movq 7008(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6576(%rax), %r11
+ movq 7008(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -31169,19 +33247,19 @@ GL_PREFIX(_dispatch_stub_822):
popq %rdx
popq %rsi
popq %rdi
- movq 6576(%rax), %r11
+ movq 7008(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_822), .-GL_PREFIX(_dispatch_stub_822)
+ .size GL_PREFIX(_dispatch_stub_876), .-GL_PREFIX(_dispatch_stub_876)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_823)
- .type GL_PREFIX(_dispatch_stub_823), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_823))
-GL_PREFIX(_dispatch_stub_823):
+ .globl GL_PREFIX(_dispatch_stub_877)
+ .type GL_PREFIX(_dispatch_stub_877), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_877))
+GL_PREFIX(_dispatch_stub_877):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6584(%rax), %r11
+ movq 7016(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -31191,13 +33269,13 @@ GL_PREFIX(_dispatch_stub_823):
popq %rdx
popq %rsi
popq %rdi
- movq 6584(%rax), %r11
+ movq 7016(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6584(%rax), %r11
+ movq 7016(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -31207,19 +33285,19 @@ GL_PREFIX(_dispatch_stub_823):
popq %rdx
popq %rsi
popq %rdi
- movq 6584(%rax), %r11
+ movq 7016(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_823), .-GL_PREFIX(_dispatch_stub_823)
+ .size GL_PREFIX(_dispatch_stub_877), .-GL_PREFIX(_dispatch_stub_877)
.p2align 4,,15
- .globl GL_PREFIX(_dispatch_stub_824)
- .type GL_PREFIX(_dispatch_stub_824), @function
- HIDDEN(GL_PREFIX(_dispatch_stub_824))
-GL_PREFIX(_dispatch_stub_824):
+ .globl GL_PREFIX(_dispatch_stub_878)
+ .type GL_PREFIX(_dispatch_stub_878), @function
+ HIDDEN(GL_PREFIX(_dispatch_stub_878))
+GL_PREFIX(_dispatch_stub_878):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6592(%rax), %r11
+ movq 7024(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -31229,13 +33307,13 @@ GL_PREFIX(_dispatch_stub_824):
popq %rdx
popq %rsi
popq %rdi
- movq 6592(%rax), %r11
+ movq 7024(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6592(%rax), %r11
+ movq 7024(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -31245,10 +33323,10 @@ GL_PREFIX(_dispatch_stub_824):
popq %rdx
popq %rsi
popq %rdi
- movq 6592(%rax), %r11
+ movq 7024(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
- .size GL_PREFIX(_dispatch_stub_824), .-GL_PREFIX(_dispatch_stub_824)
+ .size GL_PREFIX(_dispatch_stub_878), .-GL_PREFIX(_dispatch_stub_878)
.p2align 4,,15
.globl GL_PREFIX(EGLImageTargetRenderbufferStorageOES)
@@ -31256,7 +33334,7 @@ GL_PREFIX(_dispatch_stub_824):
GL_PREFIX(EGLImageTargetRenderbufferStorageOES):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6600(%rax), %r11
+ movq 7032(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -31266,13 +33344,13 @@ GL_PREFIX(EGLImageTargetRenderbufferStorageOES):
popq %rbp
popq %rsi
popq %rdi
- movq 6600(%rax), %r11
+ movq 7032(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6600(%rax), %r11
+ movq 7032(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -31282,7 +33360,7 @@ GL_PREFIX(EGLImageTargetRenderbufferStorageOES):
popq %rbp
popq %rsi
popq %rdi
- movq 6600(%rax), %r11
+ movq 7032(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(EGLImageTargetRenderbufferStorageOES), .-GL_PREFIX(EGLImageTargetRenderbufferStorageOES)
@@ -31293,7 +33371,7 @@ GL_PREFIX(EGLImageTargetRenderbufferStorageOES):
GL_PREFIX(EGLImageTargetTexture2DOES):
#if defined(GLX_USE_TLS)
call _x86_64_get_dispatch@PLT
- movq 6608(%rax), %r11
+ movq 7040(%rax), %r11
jmp *%r11
#elif defined(PTHREADS)
pushq %rdi
@@ -31303,13 +33381,13 @@ GL_PREFIX(EGLImageTargetTexture2DOES):
popq %rbp
popq %rsi
popq %rdi
- movq 6608(%rax), %r11
+ movq 7040(%rax), %r11
jmp *%r11
#else
movq _glapi_Dispatch(%rip), %rax
testq %rax, %rax
je 1f
- movq 6608(%rax), %r11
+ movq 7040(%rax), %r11
jmp *%r11
1:
pushq %rdi
@@ -31319,7 +33397,7 @@ GL_PREFIX(EGLImageTargetTexture2DOES):
popq %rbp
popq %rsi
popq %rdi
- movq 6608(%rax), %r11
+ movq 7040(%rax), %r11
jmp *%r11
#endif /* defined(GLX_USE_TLS) */
.size GL_PREFIX(EGLImageTargetTexture2DOES), .-GL_PREFIX(EGLImageTargetTexture2DOES)
@@ -31397,10 +33475,6 @@ GL_PREFIX(EGLImageTargetTexture2DOES):
.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)
@@ -31512,6 +33586,10 @@ GL_PREFIX(EGLImageTargetTexture2DOES):
.globl GL_PREFIX(GetAttribLocation) ; .set GL_PREFIX(GetAttribLocation), GL_PREFIX(GetAttribLocationARB)
.globl GL_PREFIX(DrawBuffers) ; .set GL_PREFIX(DrawBuffers), GL_PREFIX(DrawBuffersARB)
.globl GL_PREFIX(DrawBuffersATI) ; .set GL_PREFIX(DrawBuffersATI), GL_PREFIX(DrawBuffersARB)
+ .globl GL_PREFIX(DrawArraysInstancedEXT) ; .set GL_PREFIX(DrawArraysInstancedEXT), GL_PREFIX(DrawArraysInstancedARB)
+ .globl GL_PREFIX(DrawArraysInstanced) ; .set GL_PREFIX(DrawArraysInstanced), GL_PREFIX(DrawArraysInstancedARB)
+ .globl GL_PREFIX(DrawElementsInstancedEXT) ; .set GL_PREFIX(DrawElementsInstancedEXT), GL_PREFIX(DrawElementsInstancedARB)
+ .globl GL_PREFIX(DrawElementsInstanced) ; .set GL_PREFIX(DrawElementsInstanced), GL_PREFIX(DrawElementsInstancedARB)
.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)
@@ -31582,9 +33660,10 @@ GL_PREFIX(EGLImageTargetTexture2DOES):
.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_765)
- .globl GL_PREFIX(IsVertexArray) ; .set GL_PREFIX(IsVertexArray), GL_PREFIX(_dispatch_stub_767)
- .globl GL_PREFIX(BlendEquationSeparate) ; .set GL_PREFIX(BlendEquationSeparate), GL_PREFIX(_dispatch_stub_777)
+ .globl GL_PREFIX(DeleteVertexArrays) ; .set GL_PREFIX(DeleteVertexArrays), GL_PREFIX(_dispatch_stub_776)
+ .globl GL_PREFIX(IsVertexArray) ; .set GL_PREFIX(IsVertexArray), GL_PREFIX(_dispatch_stub_778)
+ .globl GL_PREFIX(PrimitiveRestartIndex) ; .set GL_PREFIX(PrimitiveRestartIndex), GL_PREFIX(PrimitiveRestartIndexNV)
+ .globl GL_PREFIX(BlendEquationSeparate) ; .set GL_PREFIX(BlendEquationSeparate), GL_PREFIX(_dispatch_stub_788)
.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)
@@ -31602,8 +33681,54 @@ GL_PREFIX(EGLImageTargetTexture2DOES):
.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_795)
+ .globl GL_PREFIX(BlitFramebuffer) ; .set GL_PREFIX(BlitFramebuffer), GL_PREFIX(_dispatch_stub_806)
+ .globl GL_PREFIX(BindFragDataLocation) ; .set GL_PREFIX(BindFragDataLocation), GL_PREFIX(BindFragDataLocationEXT)
+ .globl GL_PREFIX(GetFragDataLocation) ; .set GL_PREFIX(GetFragDataLocation), GL_PREFIX(GetFragDataLocationEXT)
+ .globl GL_PREFIX(GetUniformuiv) ; .set GL_PREFIX(GetUniformuiv), GL_PREFIX(GetUniformuivEXT)
+ .globl GL_PREFIX(GetVertexAttribIiv) ; .set GL_PREFIX(GetVertexAttribIiv), GL_PREFIX(GetVertexAttribIivEXT)
+ .globl GL_PREFIX(GetVertexAttribIuiv) ; .set GL_PREFIX(GetVertexAttribIuiv), GL_PREFIX(GetVertexAttribIuivEXT)
+ .globl GL_PREFIX(Uniform1ui) ; .set GL_PREFIX(Uniform1ui), GL_PREFIX(Uniform1uiEXT)
+ .globl GL_PREFIX(Uniform1uiv) ; .set GL_PREFIX(Uniform1uiv), GL_PREFIX(Uniform1uivEXT)
+ .globl GL_PREFIX(Uniform2ui) ; .set GL_PREFIX(Uniform2ui), GL_PREFIX(Uniform2uiEXT)
+ .globl GL_PREFIX(Uniform2uiv) ; .set GL_PREFIX(Uniform2uiv), GL_PREFIX(Uniform2uivEXT)
+ .globl GL_PREFIX(Uniform3ui) ; .set GL_PREFIX(Uniform3ui), GL_PREFIX(Uniform3uiEXT)
+ .globl GL_PREFIX(Uniform3uiv) ; .set GL_PREFIX(Uniform3uiv), GL_PREFIX(Uniform3uivEXT)
+ .globl GL_PREFIX(Uniform4ui) ; .set GL_PREFIX(Uniform4ui), GL_PREFIX(Uniform4uiEXT)
+ .globl GL_PREFIX(Uniform4uiv) ; .set GL_PREFIX(Uniform4uiv), GL_PREFIX(Uniform4uivEXT)
+ .globl GL_PREFIX(VertexAttribI1i) ; .set GL_PREFIX(VertexAttribI1i), GL_PREFIX(VertexAttribI1iEXT)
+ .globl GL_PREFIX(VertexAttribI1iv) ; .set GL_PREFIX(VertexAttribI1iv), GL_PREFIX(VertexAttribI1ivEXT)
+ .globl GL_PREFIX(VertexAttribI1ui) ; .set GL_PREFIX(VertexAttribI1ui), GL_PREFIX(VertexAttribI1uiEXT)
+ .globl GL_PREFIX(VertexAttribI1uiv) ; .set GL_PREFIX(VertexAttribI1uiv), GL_PREFIX(VertexAttribI1uivEXT)
+ .globl GL_PREFIX(VertexAttribI2i) ; .set GL_PREFIX(VertexAttribI2i), GL_PREFIX(VertexAttribI2iEXT)
+ .globl GL_PREFIX(VertexAttribI2iv) ; .set GL_PREFIX(VertexAttribI2iv), GL_PREFIX(VertexAttribI2ivEXT)
+ .globl GL_PREFIX(VertexAttribI2ui) ; .set GL_PREFIX(VertexAttribI2ui), GL_PREFIX(VertexAttribI2uiEXT)
+ .globl GL_PREFIX(VertexAttribI2uiv) ; .set GL_PREFIX(VertexAttribI2uiv), GL_PREFIX(VertexAttribI2uivEXT)
+ .globl GL_PREFIX(VertexAttribI3i) ; .set GL_PREFIX(VertexAttribI3i), GL_PREFIX(VertexAttribI3iEXT)
+ .globl GL_PREFIX(VertexAttribI3iv) ; .set GL_PREFIX(VertexAttribI3iv), GL_PREFIX(VertexAttribI3ivEXT)
+ .globl GL_PREFIX(VertexAttribI3ui) ; .set GL_PREFIX(VertexAttribI3ui), GL_PREFIX(VertexAttribI3uiEXT)
+ .globl GL_PREFIX(VertexAttribI3uiv) ; .set GL_PREFIX(VertexAttribI3uiv), GL_PREFIX(VertexAttribI3uivEXT)
+ .globl GL_PREFIX(VertexAttribI4bv) ; .set GL_PREFIX(VertexAttribI4bv), GL_PREFIX(VertexAttribI4bvEXT)
+ .globl GL_PREFIX(VertexAttribI4i) ; .set GL_PREFIX(VertexAttribI4i), GL_PREFIX(VertexAttribI4iEXT)
+ .globl GL_PREFIX(VertexAttribI4iv) ; .set GL_PREFIX(VertexAttribI4iv), GL_PREFIX(VertexAttribI4ivEXT)
+ .globl GL_PREFIX(VertexAttribI4sv) ; .set GL_PREFIX(VertexAttribI4sv), GL_PREFIX(VertexAttribI4svEXT)
+ .globl GL_PREFIX(VertexAttribI4ubv) ; .set GL_PREFIX(VertexAttribI4ubv), GL_PREFIX(VertexAttribI4ubvEXT)
+ .globl GL_PREFIX(VertexAttribI4ui) ; .set GL_PREFIX(VertexAttribI4ui), GL_PREFIX(VertexAttribI4uiEXT)
+ .globl GL_PREFIX(VertexAttribI4uiv) ; .set GL_PREFIX(VertexAttribI4uiv), GL_PREFIX(VertexAttribI4uivEXT)
+ .globl GL_PREFIX(VertexAttribI4usv) ; .set GL_PREFIX(VertexAttribI4usv), GL_PREFIX(VertexAttribI4usvEXT)
+ .globl GL_PREFIX(VertexAttribIPointer) ; .set GL_PREFIX(VertexAttribIPointer), GL_PREFIX(VertexAttribIPointerEXT)
.globl GL_PREFIX(FramebufferTextureLayer) ; .set GL_PREFIX(FramebufferTextureLayer), GL_PREFIX(FramebufferTextureLayerEXT)
+ .globl GL_PREFIX(ColorMaski) ; .set GL_PREFIX(ColorMaski), GL_PREFIX(ColorMaskIndexedEXT)
+ .globl GL_PREFIX(Disablei) ; .set GL_PREFIX(Disablei), GL_PREFIX(DisableIndexedEXT)
+ .globl GL_PREFIX(Enablei) ; .set GL_PREFIX(Enablei), GL_PREFIX(EnableIndexedEXT)
+ .globl GL_PREFIX(GetBooleani_v) ; .set GL_PREFIX(GetBooleani_v), GL_PREFIX(GetBooleanIndexedvEXT)
+ .globl GL_PREFIX(GetIntegeri_v) ; .set GL_PREFIX(GetIntegeri_v), GL_PREFIX(GetIntegerIndexedvEXT)
+ .globl GL_PREFIX(IsEnabledi) ; .set GL_PREFIX(IsEnabledi), GL_PREFIX(IsEnabledIndexedEXT)
+ .globl GL_PREFIX(GetTexParameterIiv) ; .set GL_PREFIX(GetTexParameterIiv), GL_PREFIX(GetTexParameterIivEXT)
+ .globl GL_PREFIX(GetTexParameterIuiv) ; .set GL_PREFIX(GetTexParameterIuiv), GL_PREFIX(GetTexParameterIuivEXT)
+ .globl GL_PREFIX(TexParameterIiv) ; .set GL_PREFIX(TexParameterIiv), GL_PREFIX(TexParameterIivEXT)
+ .globl GL_PREFIX(TexParameterIuiv) ; .set GL_PREFIX(TexParameterIuiv), GL_PREFIX(TexParameterIuivEXT)
+ .globl GL_PREFIX(BeginConditionalRender) ; .set GL_PREFIX(BeginConditionalRender), GL_PREFIX(BeginConditionalRenderNV)
+ .globl GL_PREFIX(EndConditionalRender) ; .set GL_PREFIX(EndConditionalRender), GL_PREFIX(EndConditionalRenderNV)
.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)
diff --git a/src/mapi/glapi/glapi_x86.S b/src/mapi/glapi/glapi_x86.S
index 0a9efded9e..72729f2f09 100644
--- a/src/mapi/glapi/glapi_x86.S
+++ b/src/mapi/glapi/glapi_x86.S
@@ -27,7 +27,6 @@
*/
#include "x86/assyntax.h"
-#include "glapi/glapioffsets.h"
#if defined(STDCALL_API)
# if defined(USE_MGL_NAMESPACE)
@@ -151,1155 +150,1256 @@ EXTERN GLNAME(_glapi_get_dispatch)
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(FramebufferTextureARB, _gloffset_FramebufferTextureARB, FramebufferTextureARB@16)
- GL_STUB(FramebufferTextureFaceARB, _gloffset_FramebufferTextureFaceARB, FramebufferTextureFaceARB@20)
- GL_STUB(ProgramParameteriARB, _gloffset_ProgramParameteriARB, ProgramParameteriARB@12)
- 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(BindTransformFeedback, _gloffset_BindTransformFeedback, BindTransformFeedback@8)
- GL_STUB(DeleteTransformFeedbacks, _gloffset_DeleteTransformFeedbacks, DeleteTransformFeedbacks@8)
- GL_STUB(DrawTransformFeedback, _gloffset_DrawTransformFeedback, DrawTransformFeedback@8)
- GL_STUB(GenTransformFeedbacks, _gloffset_GenTransformFeedbacks, GenTransformFeedbacks@8)
- GL_STUB(IsTransformFeedback, _gloffset_IsTransformFeedback, IsTransformFeedback@4)
- GL_STUB(PauseTransformFeedback, _gloffset_PauseTransformFeedback, PauseTransformFeedback@0)
- GL_STUB(ResumeTransformFeedback, _gloffset_ResumeTransformFeedback, ResumeTransformFeedback@0)
- GL_STUB(PolygonOffsetEXT, _gloffset_PolygonOffsetEXT, PolygonOffsetEXT@8)
- GL_STUB(_dispatch_stub_590, _gloffset_GetPixelTexGenParameterfvSGIS, _dispatch_stub_590@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_590, _dispatch_stub_590@8))
- GL_STUB(_dispatch_stub_591, _gloffset_GetPixelTexGenParameterivSGIS, _dispatch_stub_591@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_591, _dispatch_stub_591@8))
- GL_STUB(_dispatch_stub_592, _gloffset_PixelTexGenParameterfSGIS, _dispatch_stub_592@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_592, _dispatch_stub_592@8))
- GL_STUB(_dispatch_stub_593, _gloffset_PixelTexGenParameterfvSGIS, _dispatch_stub_593@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_593, _dispatch_stub_593@8))
- GL_STUB(_dispatch_stub_594, _gloffset_PixelTexGenParameteriSGIS, _dispatch_stub_594@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_594, _dispatch_stub_594@8))
- GL_STUB(_dispatch_stub_595, _gloffset_PixelTexGenParameterivSGIS, _dispatch_stub_595@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_595, _dispatch_stub_595@8))
- GL_STUB(_dispatch_stub_596, _gloffset_SampleMaskSGIS, _dispatch_stub_596@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_596, _dispatch_stub_596@8))
- GL_STUB(_dispatch_stub_597, _gloffset_SamplePatternSGIS, _dispatch_stub_597@4)
- HIDDEN(GL_PREFIX(_dispatch_stub_597, _dispatch_stub_597@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(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_632, _gloffset_PixelTexGenSGIX, _dispatch_stub_632@4)
- HIDDEN(GL_PREFIX(_dispatch_stub_632, _dispatch_stub_632@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_674, _gloffset_MultiModeDrawArraysIBM, _dispatch_stub_674@20)
- HIDDEN(GL_PREFIX(_dispatch_stub_674, _dispatch_stub_674@20))
- GL_STUB(_dispatch_stub_675, _gloffset_MultiModeDrawElementsIBM, _dispatch_stub_675@24)
- HIDDEN(GL_PREFIX(_dispatch_stub_675, _dispatch_stub_675@24))
- GL_STUB(_dispatch_stub_676, _gloffset_DeleteFencesNV, _dispatch_stub_676@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_676, _dispatch_stub_676@8))
- GL_STUB(_dispatch_stub_677, _gloffset_FinishFenceNV, _dispatch_stub_677@4)
- HIDDEN(GL_PREFIX(_dispatch_stub_677, _dispatch_stub_677@4))
- GL_STUB(_dispatch_stub_678, _gloffset_GenFencesNV, _dispatch_stub_678@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_678, _dispatch_stub_678@8))
- GL_STUB(_dispatch_stub_679, _gloffset_GetFenceivNV, _dispatch_stub_679@12)
- HIDDEN(GL_PREFIX(_dispatch_stub_679, _dispatch_stub_679@12))
- GL_STUB(_dispatch_stub_680, _gloffset_IsFenceNV, _dispatch_stub_680@4)
- HIDDEN(GL_PREFIX(_dispatch_stub_680, _dispatch_stub_680@4))
- GL_STUB(_dispatch_stub_681, _gloffset_SetFenceNV, _dispatch_stub_681@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_681, _dispatch_stub_681@8))
- GL_STUB(_dispatch_stub_682, _gloffset_TestFenceNV, _dispatch_stub_682@4)
- HIDDEN(GL_PREFIX(_dispatch_stub_682, _dispatch_stub_682@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_763, _gloffset_ActiveStencilFaceEXT, _dispatch_stub_763@4)
- HIDDEN(GL_PREFIX(_dispatch_stub_763, _dispatch_stub_763@4))
- GL_STUB(_dispatch_stub_764, _gloffset_BindVertexArrayAPPLE, _dispatch_stub_764@4)
- HIDDEN(GL_PREFIX(_dispatch_stub_764, _dispatch_stub_764@4))
- GL_STUB(_dispatch_stub_765, _gloffset_DeleteVertexArraysAPPLE, _dispatch_stub_765@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_765, _dispatch_stub_765@8))
- GL_STUB(_dispatch_stub_766, _gloffset_GenVertexArraysAPPLE, _dispatch_stub_766@8)
- HIDDEN(GL_PREFIX(_dispatch_stub_766, _dispatch_stub_766@8))
- GL_STUB(_dispatch_stub_767, _gloffset_IsVertexArrayAPPLE, _dispatch_stub_767@4)
- HIDDEN(GL_PREFIX(_dispatch_stub_767, _dispatch_stub_767@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(PrimitiveRestartIndexNV, _gloffset_PrimitiveRestartIndexNV, PrimitiveRestartIndexNV@4)
- GL_STUB(PrimitiveRestartNV, _gloffset_PrimitiveRestartNV, PrimitiveRestartNV@0)
- GL_STUB(_dispatch_stub_776, _gloffset_DepthBoundsEXT, _dispatch_stub_776@16)
- HIDDEN(GL_PREFIX(_dispatch_stub_776, _dispatch_stub_776@16))
- GL_STUB(_dispatch_stub_777, _gloffset_BlendEquationSeparateEXT, _dispatch_stub_777@8)
+ GL_STUB(NewList, 0, NewList@8)
+ GL_STUB(EndList, 1, EndList@0)
+ GL_STUB(CallList, 2, CallList@4)
+ GL_STUB(CallLists, 3, CallLists@12)
+ GL_STUB(DeleteLists, 4, DeleteLists@8)
+ GL_STUB(GenLists, 5, GenLists@4)
+ GL_STUB(ListBase, 6, ListBase@4)
+ GL_STUB(Begin, 7, Begin@4)
+ GL_STUB(Bitmap, 8, Bitmap@28)
+ GL_STUB(Color3b, 9, Color3b@12)
+ GL_STUB(Color3bv, 10, Color3bv@4)
+ GL_STUB(Color3d, 11, Color3d@24)
+ GL_STUB(Color3dv, 12, Color3dv@4)
+ GL_STUB(Color3f, 13, Color3f@12)
+ GL_STUB(Color3fv, 14, Color3fv@4)
+ GL_STUB(Color3i, 15, Color3i@12)
+ GL_STUB(Color3iv, 16, Color3iv@4)
+ GL_STUB(Color3s, 17, Color3s@12)
+ GL_STUB(Color3sv, 18, Color3sv@4)
+ GL_STUB(Color3ub, 19, Color3ub@12)
+ GL_STUB(Color3ubv, 20, Color3ubv@4)
+ GL_STUB(Color3ui, 21, Color3ui@12)
+ GL_STUB(Color3uiv, 22, Color3uiv@4)
+ GL_STUB(Color3us, 23, Color3us@12)
+ GL_STUB(Color3usv, 24, Color3usv@4)
+ GL_STUB(Color4b, 25, Color4b@16)
+ GL_STUB(Color4bv, 26, Color4bv@4)
+ GL_STUB(Color4d, 27, Color4d@32)
+ GL_STUB(Color4dv, 28, Color4dv@4)
+ GL_STUB(Color4f, 29, Color4f@16)
+ GL_STUB(Color4fv, 30, Color4fv@4)
+ GL_STUB(Color4i, 31, Color4i@16)
+ GL_STUB(Color4iv, 32, Color4iv@4)
+ GL_STUB(Color4s, 33, Color4s@16)
+ GL_STUB(Color4sv, 34, Color4sv@4)
+ GL_STUB(Color4ub, 35, Color4ub@16)
+ GL_STUB(Color4ubv, 36, Color4ubv@4)
+ GL_STUB(Color4ui, 37, Color4ui@16)
+ GL_STUB(Color4uiv, 38, Color4uiv@4)
+ GL_STUB(Color4us, 39, Color4us@16)
+ GL_STUB(Color4usv, 40, Color4usv@4)
+ GL_STUB(EdgeFlag, 41, EdgeFlag@4)
+ GL_STUB(EdgeFlagv, 42, EdgeFlagv@4)
+ GL_STUB(End, 43, End@0)
+ GL_STUB(Indexd, 44, Indexd@8)
+ GL_STUB(Indexdv, 45, Indexdv@4)
+ GL_STUB(Indexf, 46, Indexf@4)
+ GL_STUB(Indexfv, 47, Indexfv@4)
+ GL_STUB(Indexi, 48, Indexi@4)
+ GL_STUB(Indexiv, 49, Indexiv@4)
+ GL_STUB(Indexs, 50, Indexs@4)
+ GL_STUB(Indexsv, 51, Indexsv@4)
+ GL_STUB(Normal3b, 52, Normal3b@12)
+ GL_STUB(Normal3bv, 53, Normal3bv@4)
+ GL_STUB(Normal3d, 54, Normal3d@24)
+ GL_STUB(Normal3dv, 55, Normal3dv@4)
+ GL_STUB(Normal3f, 56, Normal3f@12)
+ GL_STUB(Normal3fv, 57, Normal3fv@4)
+ GL_STUB(Normal3i, 58, Normal3i@12)
+ GL_STUB(Normal3iv, 59, Normal3iv@4)
+ GL_STUB(Normal3s, 60, Normal3s@12)
+ GL_STUB(Normal3sv, 61, Normal3sv@4)
+ GL_STUB(RasterPos2d, 62, RasterPos2d@16)
+ GL_STUB(RasterPos2dv, 63, RasterPos2dv@4)
+ GL_STUB(RasterPos2f, 64, RasterPos2f@8)
+ GL_STUB(RasterPos2fv, 65, RasterPos2fv@4)
+ GL_STUB(RasterPos2i, 66, RasterPos2i@8)
+ GL_STUB(RasterPos2iv, 67, RasterPos2iv@4)
+ GL_STUB(RasterPos2s, 68, RasterPos2s@8)
+ GL_STUB(RasterPos2sv, 69, RasterPos2sv@4)
+ GL_STUB(RasterPos3d, 70, RasterPos3d@24)
+ GL_STUB(RasterPos3dv, 71, RasterPos3dv@4)
+ GL_STUB(RasterPos3f, 72, RasterPos3f@12)
+ GL_STUB(RasterPos3fv, 73, RasterPos3fv@4)
+ GL_STUB(RasterPos3i, 74, RasterPos3i@12)
+ GL_STUB(RasterPos3iv, 75, RasterPos3iv@4)
+ GL_STUB(RasterPos3s, 76, RasterPos3s@12)
+ GL_STUB(RasterPos3sv, 77, RasterPos3sv@4)
+ GL_STUB(RasterPos4d, 78, RasterPos4d@32)
+ GL_STUB(RasterPos4dv, 79, RasterPos4dv@4)
+ GL_STUB(RasterPos4f, 80, RasterPos4f@16)
+ GL_STUB(RasterPos4fv, 81, RasterPos4fv@4)
+ GL_STUB(RasterPos4i, 82, RasterPos4i@16)
+ GL_STUB(RasterPos4iv, 83, RasterPos4iv@4)
+ GL_STUB(RasterPos4s, 84, RasterPos4s@16)
+ GL_STUB(RasterPos4sv, 85, RasterPos4sv@4)
+ GL_STUB(Rectd, 86, Rectd@32)
+ GL_STUB(Rectdv, 87, Rectdv@8)
+ GL_STUB(Rectf, 88, Rectf@16)
+ GL_STUB(Rectfv, 89, Rectfv@8)
+ GL_STUB(Recti, 90, Recti@16)
+ GL_STUB(Rectiv, 91, Rectiv@8)
+ GL_STUB(Rects, 92, Rects@16)
+ GL_STUB(Rectsv, 93, Rectsv@8)
+ GL_STUB(TexCoord1d, 94, TexCoord1d@8)
+ GL_STUB(TexCoord1dv, 95, TexCoord1dv@4)
+ GL_STUB(TexCoord1f, 96, TexCoord1f@4)
+ GL_STUB(TexCoord1fv, 97, TexCoord1fv@4)
+ GL_STUB(TexCoord1i, 98, TexCoord1i@4)
+ GL_STUB(TexCoord1iv, 99, TexCoord1iv@4)
+ GL_STUB(TexCoord1s, 100, TexCoord1s@4)
+ GL_STUB(TexCoord1sv, 101, TexCoord1sv@4)
+ GL_STUB(TexCoord2d, 102, TexCoord2d@16)
+ GL_STUB(TexCoord2dv, 103, TexCoord2dv@4)
+ GL_STUB(TexCoord2f, 104, TexCoord2f@8)
+ GL_STUB(TexCoord2fv, 105, TexCoord2fv@4)
+ GL_STUB(TexCoord2i, 106, TexCoord2i@8)
+ GL_STUB(TexCoord2iv, 107, TexCoord2iv@4)
+ GL_STUB(TexCoord2s, 108, TexCoord2s@8)
+ GL_STUB(TexCoord2sv, 109, TexCoord2sv@4)
+ GL_STUB(TexCoord3d, 110, TexCoord3d@24)
+ GL_STUB(TexCoord3dv, 111, TexCoord3dv@4)
+ GL_STUB(TexCoord3f, 112, TexCoord3f@12)
+ GL_STUB(TexCoord3fv, 113, TexCoord3fv@4)
+ GL_STUB(TexCoord3i, 114, TexCoord3i@12)
+ GL_STUB(TexCoord3iv, 115, TexCoord3iv@4)
+ GL_STUB(TexCoord3s, 116, TexCoord3s@12)
+ GL_STUB(TexCoord3sv, 117, TexCoord3sv@4)
+ GL_STUB(TexCoord4d, 118, TexCoord4d@32)
+ GL_STUB(TexCoord4dv, 119, TexCoord4dv@4)
+ GL_STUB(TexCoord4f, 120, TexCoord4f@16)
+ GL_STUB(TexCoord4fv, 121, TexCoord4fv@4)
+ GL_STUB(TexCoord4i, 122, TexCoord4i@16)
+ GL_STUB(TexCoord4iv, 123, TexCoord4iv@4)
+ GL_STUB(TexCoord4s, 124, TexCoord4s@16)
+ GL_STUB(TexCoord4sv, 125, TexCoord4sv@4)
+ GL_STUB(Vertex2d, 126, Vertex2d@16)
+ GL_STUB(Vertex2dv, 127, Vertex2dv@4)
+ GL_STUB(Vertex2f, 128, Vertex2f@8)
+ GL_STUB(Vertex2fv, 129, Vertex2fv@4)
+ GL_STUB(Vertex2i, 130, Vertex2i@8)
+ GL_STUB(Vertex2iv, 131, Vertex2iv@4)
+ GL_STUB(Vertex2s, 132, Vertex2s@8)
+ GL_STUB(Vertex2sv, 133, Vertex2sv@4)
+ GL_STUB(Vertex3d, 134, Vertex3d@24)
+ GL_STUB(Vertex3dv, 135, Vertex3dv@4)
+ GL_STUB(Vertex3f, 136, Vertex3f@12)
+ GL_STUB(Vertex3fv, 137, Vertex3fv@4)
+ GL_STUB(Vertex3i, 138, Vertex3i@12)
+ GL_STUB(Vertex3iv, 139, Vertex3iv@4)
+ GL_STUB(Vertex3s, 140, Vertex3s@12)
+ GL_STUB(Vertex3sv, 141, Vertex3sv@4)
+ GL_STUB(Vertex4d, 142, Vertex4d@32)
+ GL_STUB(Vertex4dv, 143, Vertex4dv@4)
+ GL_STUB(Vertex4f, 144, Vertex4f@16)
+ GL_STUB(Vertex4fv, 145, Vertex4fv@4)
+ GL_STUB(Vertex4i, 146, Vertex4i@16)
+ GL_STUB(Vertex4iv, 147, Vertex4iv@4)
+ GL_STUB(Vertex4s, 148, Vertex4s@16)
+ GL_STUB(Vertex4sv, 149, Vertex4sv@4)
+ GL_STUB(ClipPlane, 150, ClipPlane@8)
+ GL_STUB(ColorMaterial, 151, ColorMaterial@8)
+ GL_STUB(CullFace, 152, CullFace@4)
+ GL_STUB(Fogf, 153, Fogf@8)
+ GL_STUB(Fogfv, 154, Fogfv@8)
+ GL_STUB(Fogi, 155, Fogi@8)
+ GL_STUB(Fogiv, 156, Fogiv@8)
+ GL_STUB(FrontFace, 157, FrontFace@4)
+ GL_STUB(Hint, 158, Hint@8)
+ GL_STUB(Lightf, 159, Lightf@12)
+ GL_STUB(Lightfv, 160, Lightfv@12)
+ GL_STUB(Lighti, 161, Lighti@12)
+ GL_STUB(Lightiv, 162, Lightiv@12)
+ GL_STUB(LightModelf, 163, LightModelf@8)
+ GL_STUB(LightModelfv, 164, LightModelfv@8)
+ GL_STUB(LightModeli, 165, LightModeli@8)
+ GL_STUB(LightModeliv, 166, LightModeliv@8)
+ GL_STUB(LineStipple, 167, LineStipple@8)
+ GL_STUB(LineWidth, 168, LineWidth@4)
+ GL_STUB(Materialf, 169, Materialf@12)
+ GL_STUB(Materialfv, 170, Materialfv@12)
+ GL_STUB(Materiali, 171, Materiali@12)
+ GL_STUB(Materialiv, 172, Materialiv@12)
+ GL_STUB(PointSize, 173, PointSize@4)
+ GL_STUB(PolygonMode, 174, PolygonMode@8)
+ GL_STUB(PolygonStipple, 175, PolygonStipple@4)
+ GL_STUB(Scissor, 176, Scissor@16)
+ GL_STUB(ShadeModel, 177, ShadeModel@4)
+ GL_STUB(TexParameterf, 178, TexParameterf@12)
+ GL_STUB(TexParameterfv, 179, TexParameterfv@12)
+ GL_STUB(TexParameteri, 180, TexParameteri@12)
+ GL_STUB(TexParameteriv, 181, TexParameteriv@12)
+ GL_STUB(TexImage1D, 182, TexImage1D@32)
+ GL_STUB(TexImage2D, 183, TexImage2D@36)
+ GL_STUB(TexEnvf, 184, TexEnvf@12)
+ GL_STUB(TexEnvfv, 185, TexEnvfv@12)
+ GL_STUB(TexEnvi, 186, TexEnvi@12)
+ GL_STUB(TexEnviv, 187, TexEnviv@12)
+ GL_STUB(TexGend, 188, TexGend@16)
+ GL_STUB(TexGendv, 189, TexGendv@12)
+ GL_STUB(TexGenf, 190, TexGenf@12)
+ GL_STUB(TexGenfv, 191, TexGenfv@12)
+ GL_STUB(TexGeni, 192, TexGeni@12)
+ GL_STUB(TexGeniv, 193, TexGeniv@12)
+ GL_STUB(FeedbackBuffer, 194, FeedbackBuffer@12)
+ GL_STUB(SelectBuffer, 195, SelectBuffer@8)
+ GL_STUB(RenderMode, 196, RenderMode@4)
+ GL_STUB(InitNames, 197, InitNames@0)
+ GL_STUB(LoadName, 198, LoadName@4)
+ GL_STUB(PassThrough, 199, PassThrough@4)
+ GL_STUB(PopName, 200, PopName@0)
+ GL_STUB(PushName, 201, PushName@4)
+ GL_STUB(DrawBuffer, 202, DrawBuffer@4)
+ GL_STUB(Clear, 203, Clear@4)
+ GL_STUB(ClearAccum, 204, ClearAccum@16)
+ GL_STUB(ClearIndex, 205, ClearIndex@4)
+ GL_STUB(ClearColor, 206, ClearColor@16)
+ GL_STUB(ClearStencil, 207, ClearStencil@4)
+ GL_STUB(ClearDepth, 208, ClearDepth@8)
+ GL_STUB(StencilMask, 209, StencilMask@4)
+ GL_STUB(ColorMask, 210, ColorMask@16)
+ GL_STUB(DepthMask, 211, DepthMask@4)
+ GL_STUB(IndexMask, 212, IndexMask@4)
+ GL_STUB(Accum, 213, Accum@8)
+ GL_STUB(Disable, 214, Disable@4)
+ GL_STUB(Enable, 215, Enable@4)
+ GL_STUB(Finish, 216, Finish@0)
+ GL_STUB(Flush, 217, Flush@0)
+ GL_STUB(PopAttrib, 218, PopAttrib@0)
+ GL_STUB(PushAttrib, 219, PushAttrib@4)
+ GL_STUB(Map1d, 220, Map1d@32)
+ GL_STUB(Map1f, 221, Map1f@24)
+ GL_STUB(Map2d, 222, Map2d@56)
+ GL_STUB(Map2f, 223, Map2f@40)
+ GL_STUB(MapGrid1d, 224, MapGrid1d@20)
+ GL_STUB(MapGrid1f, 225, MapGrid1f@12)
+ GL_STUB(MapGrid2d, 226, MapGrid2d@40)
+ GL_STUB(MapGrid2f, 227, MapGrid2f@24)
+ GL_STUB(EvalCoord1d, 228, EvalCoord1d@8)
+ GL_STUB(EvalCoord1dv, 229, EvalCoord1dv@4)
+ GL_STUB(EvalCoord1f, 230, EvalCoord1f@4)
+ GL_STUB(EvalCoord1fv, 231, EvalCoord1fv@4)
+ GL_STUB(EvalCoord2d, 232, EvalCoord2d@16)
+ GL_STUB(EvalCoord2dv, 233, EvalCoord2dv@4)
+ GL_STUB(EvalCoord2f, 234, EvalCoord2f@8)
+ GL_STUB(EvalCoord2fv, 235, EvalCoord2fv@4)
+ GL_STUB(EvalMesh1, 236, EvalMesh1@12)
+ GL_STUB(EvalPoint1, 237, EvalPoint1@4)
+ GL_STUB(EvalMesh2, 238, EvalMesh2@20)
+ GL_STUB(EvalPoint2, 239, EvalPoint2@8)
+ GL_STUB(AlphaFunc, 240, AlphaFunc@8)
+ GL_STUB(BlendFunc, 241, BlendFunc@8)
+ GL_STUB(LogicOp, 242, LogicOp@4)
+ GL_STUB(StencilFunc, 243, StencilFunc@12)
+ GL_STUB(StencilOp, 244, StencilOp@12)
+ GL_STUB(DepthFunc, 245, DepthFunc@4)
+ GL_STUB(PixelZoom, 246, PixelZoom@8)
+ GL_STUB(PixelTransferf, 247, PixelTransferf@8)
+ GL_STUB(PixelTransferi, 248, PixelTransferi@8)
+ GL_STUB(PixelStoref, 249, PixelStoref@8)
+ GL_STUB(PixelStorei, 250, PixelStorei@8)
+ GL_STUB(PixelMapfv, 251, PixelMapfv@12)
+ GL_STUB(PixelMapuiv, 252, PixelMapuiv@12)
+ GL_STUB(PixelMapusv, 253, PixelMapusv@12)
+ GL_STUB(ReadBuffer, 254, ReadBuffer@4)
+ GL_STUB(CopyPixels, 255, CopyPixels@20)
+ GL_STUB(ReadPixels, 256, ReadPixels@28)
+ GL_STUB(DrawPixels, 257, DrawPixels@20)
+ GL_STUB(GetBooleanv, 258, GetBooleanv@8)
+ GL_STUB(GetClipPlane, 259, GetClipPlane@8)
+ GL_STUB(GetDoublev, 260, GetDoublev@8)
+ GL_STUB(GetError, 261, GetError@0)
+ GL_STUB(GetFloatv, 262, GetFloatv@8)
+ GL_STUB(GetIntegerv, 263, GetIntegerv@8)
+ GL_STUB(GetLightfv, 264, GetLightfv@12)
+ GL_STUB(GetLightiv, 265, GetLightiv@12)
+ GL_STUB(GetMapdv, 266, GetMapdv@12)
+ GL_STUB(GetMapfv, 267, GetMapfv@12)
+ GL_STUB(GetMapiv, 268, GetMapiv@12)
+ GL_STUB(GetMaterialfv, 269, GetMaterialfv@12)
+ GL_STUB(GetMaterialiv, 270, GetMaterialiv@12)
+ GL_STUB(GetPixelMapfv, 271, GetPixelMapfv@8)
+ GL_STUB(GetPixelMapuiv, 272, GetPixelMapuiv@8)
+ GL_STUB(GetPixelMapusv, 273, GetPixelMapusv@8)
+ GL_STUB(GetPolygonStipple, 274, GetPolygonStipple@4)
+ GL_STUB(GetString, 275, GetString@4)
+ GL_STUB(GetTexEnvfv, 276, GetTexEnvfv@12)
+ GL_STUB(GetTexEnviv, 277, GetTexEnviv@12)
+ GL_STUB(GetTexGendv, 278, GetTexGendv@12)
+ GL_STUB(GetTexGenfv, 279, GetTexGenfv@12)
+ GL_STUB(GetTexGeniv, 280, GetTexGeniv@12)
+ GL_STUB(GetTexImage, 281, GetTexImage@20)
+ GL_STUB(GetTexParameterfv, 282, GetTexParameterfv@12)
+ GL_STUB(GetTexParameteriv, 283, GetTexParameteriv@12)
+ GL_STUB(GetTexLevelParameterfv, 284, GetTexLevelParameterfv@16)
+ GL_STUB(GetTexLevelParameteriv, 285, GetTexLevelParameteriv@16)
+ GL_STUB(IsEnabled, 286, IsEnabled@4)
+ GL_STUB(IsList, 287, IsList@4)
+ GL_STUB(DepthRange, 288, DepthRange@16)
+ GL_STUB(Frustum, 289, Frustum@48)
+ GL_STUB(LoadIdentity, 290, LoadIdentity@0)
+ GL_STUB(LoadMatrixf, 291, LoadMatrixf@4)
+ GL_STUB(LoadMatrixd, 292, LoadMatrixd@4)
+ GL_STUB(MatrixMode, 293, MatrixMode@4)
+ GL_STUB(MultMatrixf, 294, MultMatrixf@4)
+ GL_STUB(MultMatrixd, 295, MultMatrixd@4)
+ GL_STUB(Ortho, 296, Ortho@48)
+ GL_STUB(PopMatrix, 297, PopMatrix@0)
+ GL_STUB(PushMatrix, 298, PushMatrix@0)
+ GL_STUB(Rotated, 299, Rotated@32)
+ GL_STUB(Rotatef, 300, Rotatef@16)
+ GL_STUB(Scaled, 301, Scaled@24)
+ GL_STUB(Scalef, 302, Scalef@12)
+ GL_STUB(Translated, 303, Translated@24)
+ GL_STUB(Translatef, 304, Translatef@12)
+ GL_STUB(Viewport, 305, Viewport@16)
+ GL_STUB(ArrayElement, 306, ArrayElement@4)
+ GL_STUB(BindTexture, 307, BindTexture@8)
+ GL_STUB(ColorPointer, 308, ColorPointer@16)
+ GL_STUB(DisableClientState, 309, DisableClientState@4)
+ GL_STUB(DrawArrays, 310, DrawArrays@12)
+ GL_STUB(DrawElements, 311, DrawElements@16)
+ GL_STUB(EdgeFlagPointer, 312, EdgeFlagPointer@8)
+ GL_STUB(EnableClientState, 313, EnableClientState@4)
+ GL_STUB(IndexPointer, 314, IndexPointer@12)
+ GL_STUB(Indexub, 315, Indexub@4)
+ GL_STUB(Indexubv, 316, Indexubv@4)
+ GL_STUB(InterleavedArrays, 317, InterleavedArrays@12)
+ GL_STUB(NormalPointer, 318, NormalPointer@12)
+ GL_STUB(PolygonOffset, 319, PolygonOffset@8)
+ GL_STUB(TexCoordPointer, 320, TexCoordPointer@16)
+ GL_STUB(VertexPointer, 321, VertexPointer@16)
+ GL_STUB(AreTexturesResident, 322, AreTexturesResident@12)
+ GL_STUB(CopyTexImage1D, 323, CopyTexImage1D@28)
+ GL_STUB(CopyTexImage2D, 324, CopyTexImage2D@32)
+ GL_STUB(CopyTexSubImage1D, 325, CopyTexSubImage1D@24)
+ GL_STUB(CopyTexSubImage2D, 326, CopyTexSubImage2D@32)
+ GL_STUB(DeleteTextures, 327, DeleteTextures@8)
+ GL_STUB(GenTextures, 328, GenTextures@8)
+ GL_STUB(GetPointerv, 329, GetPointerv@8)
+ GL_STUB(IsTexture, 330, IsTexture@4)
+ GL_STUB(PrioritizeTextures, 331, PrioritizeTextures@12)
+ GL_STUB(TexSubImage1D, 332, TexSubImage1D@28)
+ GL_STUB(TexSubImage2D, 333, TexSubImage2D@36)
+ GL_STUB(PopClientAttrib, 334, PopClientAttrib@0)
+ GL_STUB(PushClientAttrib, 335, PushClientAttrib@4)
+ GL_STUB(BlendColor, 336, BlendColor@16)
+ GL_STUB(BlendEquation, 337, BlendEquation@4)
+ GL_STUB(DrawRangeElements, 338, DrawRangeElements@24)
+ GL_STUB(ColorTable, 339, ColorTable@24)
+ GL_STUB(ColorTableParameterfv, 340, ColorTableParameterfv@12)
+ GL_STUB(ColorTableParameteriv, 341, ColorTableParameteriv@12)
+ GL_STUB(CopyColorTable, 342, CopyColorTable@20)
+ GL_STUB(GetColorTable, 343, GetColorTable@16)
+ GL_STUB(GetColorTableParameterfv, 344, GetColorTableParameterfv@12)
+ GL_STUB(GetColorTableParameteriv, 345, GetColorTableParameteriv@12)
+ GL_STUB(ColorSubTable, 346, ColorSubTable@24)
+ GL_STUB(CopyColorSubTable, 347, CopyColorSubTable@20)
+ GL_STUB(ConvolutionFilter1D, 348, ConvolutionFilter1D@24)
+ GL_STUB(ConvolutionFilter2D, 349, ConvolutionFilter2D@28)
+ GL_STUB(ConvolutionParameterf, 350, ConvolutionParameterf@12)
+ GL_STUB(ConvolutionParameterfv, 351, ConvolutionParameterfv@12)
+ GL_STUB(ConvolutionParameteri, 352, ConvolutionParameteri@12)
+ GL_STUB(ConvolutionParameteriv, 353, ConvolutionParameteriv@12)
+ GL_STUB(CopyConvolutionFilter1D, 354, CopyConvolutionFilter1D@20)
+ GL_STUB(CopyConvolutionFilter2D, 355, CopyConvolutionFilter2D@24)
+ GL_STUB(GetConvolutionFilter, 356, GetConvolutionFilter@16)
+ GL_STUB(GetConvolutionParameterfv, 357, GetConvolutionParameterfv@12)
+ GL_STUB(GetConvolutionParameteriv, 358, GetConvolutionParameteriv@12)
+ GL_STUB(GetSeparableFilter, 359, GetSeparableFilter@24)
+ GL_STUB(SeparableFilter2D, 360, SeparableFilter2D@32)
+ GL_STUB(GetHistogram, 361, GetHistogram@20)
+ GL_STUB(GetHistogramParameterfv, 362, GetHistogramParameterfv@12)
+ GL_STUB(GetHistogramParameteriv, 363, GetHistogramParameteriv@12)
+ GL_STUB(GetMinmax, 364, GetMinmax@20)
+ GL_STUB(GetMinmaxParameterfv, 365, GetMinmaxParameterfv@12)
+ GL_STUB(GetMinmaxParameteriv, 366, GetMinmaxParameteriv@12)
+ GL_STUB(Histogram, 367, Histogram@16)
+ GL_STUB(Minmax, 368, Minmax@12)
+ GL_STUB(ResetHistogram, 369, ResetHistogram@4)
+ GL_STUB(ResetMinmax, 370, ResetMinmax@4)
+ GL_STUB(TexImage3D, 371, TexImage3D@40)
+ GL_STUB(TexSubImage3D, 372, TexSubImage3D@44)
+ GL_STUB(CopyTexSubImage3D, 373, CopyTexSubImage3D@36)
+ GL_STUB(ActiveTextureARB, 374, ActiveTextureARB@4)
+ GL_STUB(ClientActiveTextureARB, 375, ClientActiveTextureARB@4)
+ GL_STUB(MultiTexCoord1dARB, 376, MultiTexCoord1dARB@12)
+ GL_STUB(MultiTexCoord1dvARB, 377, MultiTexCoord1dvARB@8)
+ GL_STUB(MultiTexCoord1fARB, 378, MultiTexCoord1fARB@8)
+ GL_STUB(MultiTexCoord1fvARB, 379, MultiTexCoord1fvARB@8)
+ GL_STUB(MultiTexCoord1iARB, 380, MultiTexCoord1iARB@8)
+ GL_STUB(MultiTexCoord1ivARB, 381, MultiTexCoord1ivARB@8)
+ GL_STUB(MultiTexCoord1sARB, 382, MultiTexCoord1sARB@8)
+ GL_STUB(MultiTexCoord1svARB, 383, MultiTexCoord1svARB@8)
+ GL_STUB(MultiTexCoord2dARB, 384, MultiTexCoord2dARB@20)
+ GL_STUB(MultiTexCoord2dvARB, 385, MultiTexCoord2dvARB@8)
+ GL_STUB(MultiTexCoord2fARB, 386, MultiTexCoord2fARB@12)
+ GL_STUB(MultiTexCoord2fvARB, 387, MultiTexCoord2fvARB@8)
+ GL_STUB(MultiTexCoord2iARB, 388, MultiTexCoord2iARB@12)
+ GL_STUB(MultiTexCoord2ivARB, 389, MultiTexCoord2ivARB@8)
+ GL_STUB(MultiTexCoord2sARB, 390, MultiTexCoord2sARB@12)
+ GL_STUB(MultiTexCoord2svARB, 391, MultiTexCoord2svARB@8)
+ GL_STUB(MultiTexCoord3dARB, 392, MultiTexCoord3dARB@28)
+ GL_STUB(MultiTexCoord3dvARB, 393, MultiTexCoord3dvARB@8)
+ GL_STUB(MultiTexCoord3fARB, 394, MultiTexCoord3fARB@16)
+ GL_STUB(MultiTexCoord3fvARB, 395, MultiTexCoord3fvARB@8)
+ GL_STUB(MultiTexCoord3iARB, 396, MultiTexCoord3iARB@16)
+ GL_STUB(MultiTexCoord3ivARB, 397, MultiTexCoord3ivARB@8)
+ GL_STUB(MultiTexCoord3sARB, 398, MultiTexCoord3sARB@16)
+ GL_STUB(MultiTexCoord3svARB, 399, MultiTexCoord3svARB@8)
+ GL_STUB(MultiTexCoord4dARB, 400, MultiTexCoord4dARB@36)
+ GL_STUB(MultiTexCoord4dvARB, 401, MultiTexCoord4dvARB@8)
+ GL_STUB(MultiTexCoord4fARB, 402, MultiTexCoord4fARB@20)
+ GL_STUB(MultiTexCoord4fvARB, 403, MultiTexCoord4fvARB@8)
+ GL_STUB(MultiTexCoord4iARB, 404, MultiTexCoord4iARB@20)
+ GL_STUB(MultiTexCoord4ivARB, 405, MultiTexCoord4ivARB@8)
+ GL_STUB(MultiTexCoord4sARB, 406, MultiTexCoord4sARB@20)
+ GL_STUB(MultiTexCoord4svARB, 407, MultiTexCoord4svARB@8)
+ GL_STUB(AttachShader, 408, AttachShader@8)
+ GL_STUB(CreateProgram, 409, CreateProgram@0)
+ GL_STUB(CreateShader, 410, CreateShader@4)
+ GL_STUB(DeleteProgram, 411, DeleteProgram@4)
+ GL_STUB(DeleteShader, 412, DeleteShader@4)
+ GL_STUB(DetachShader, 413, DetachShader@8)
+ GL_STUB(GetAttachedShaders, 414, GetAttachedShaders@16)
+ GL_STUB(GetProgramInfoLog, 415, GetProgramInfoLog@16)
+ GL_STUB(GetProgramiv, 416, GetProgramiv@12)
+ GL_STUB(GetShaderInfoLog, 417, GetShaderInfoLog@16)
+ GL_STUB(GetShaderiv, 418, GetShaderiv@12)
+ GL_STUB(IsProgram, 419, IsProgram@4)
+ GL_STUB(IsShader, 420, IsShader@4)
+ GL_STUB(StencilFuncSeparate, 421, StencilFuncSeparate@16)
+ GL_STUB(StencilMaskSeparate, 422, StencilMaskSeparate@8)
+ GL_STUB(StencilOpSeparate, 423, StencilOpSeparate@16)
+ GL_STUB(UniformMatrix2x3fv, 424, UniformMatrix2x3fv@16)
+ GL_STUB(UniformMatrix2x4fv, 425, UniformMatrix2x4fv@16)
+ GL_STUB(UniformMatrix3x2fv, 426, UniformMatrix3x2fv@16)
+ GL_STUB(UniformMatrix3x4fv, 427, UniformMatrix3x4fv@16)
+ GL_STUB(UniformMatrix4x2fv, 428, UniformMatrix4x2fv@16)
+ GL_STUB(UniformMatrix4x3fv, 429, UniformMatrix4x3fv@16)
+ GL_STUB(ClampColor, 430, ClampColor@8)
+ GL_STUB(ClearBufferfi, 431, ClearBufferfi@16)
+ GL_STUB(ClearBufferfv, 432, ClearBufferfv@12)
+ GL_STUB(ClearBufferiv, 433, ClearBufferiv@12)
+ GL_STUB(ClearBufferuiv, 434, ClearBufferuiv@12)
+ GL_STUB(GetStringi, 435, GetStringi@8)
+ GL_STUB(TexBuffer, 436, TexBuffer@12)
+ GL_STUB(FramebufferTexture, 437, FramebufferTexture@16)
+ GL_STUB(GetBufferParameteri64v, 438, GetBufferParameteri64v@12)
+ GL_STUB(GetInteger64i_v, 439, GetInteger64i_v@12)
+ GL_STUB(VertexAttribDivisor, 440, VertexAttribDivisor@8)
+ GL_STUB(LoadTransposeMatrixdARB, 441, LoadTransposeMatrixdARB@4)
+ GL_STUB(LoadTransposeMatrixfARB, 442, LoadTransposeMatrixfARB@4)
+ GL_STUB(MultTransposeMatrixdARB, 443, MultTransposeMatrixdARB@4)
+ GL_STUB(MultTransposeMatrixfARB, 444, MultTransposeMatrixfARB@4)
+ GL_STUB(SampleCoverageARB, 445, SampleCoverageARB@8)
+ GL_STUB(CompressedTexImage1DARB, 446, CompressedTexImage1DARB@28)
+ GL_STUB(CompressedTexImage2DARB, 447, CompressedTexImage2DARB@32)
+ GL_STUB(CompressedTexImage3DARB, 448, CompressedTexImage3DARB@36)
+ GL_STUB(CompressedTexSubImage1DARB, 449, CompressedTexSubImage1DARB@28)
+ GL_STUB(CompressedTexSubImage2DARB, 450, CompressedTexSubImage2DARB@36)
+ GL_STUB(CompressedTexSubImage3DARB, 451, CompressedTexSubImage3DARB@44)
+ GL_STUB(GetCompressedTexImageARB, 452, GetCompressedTexImageARB@12)
+ GL_STUB(DisableVertexAttribArrayARB, 453, DisableVertexAttribArrayARB@4)
+ GL_STUB(EnableVertexAttribArrayARB, 454, EnableVertexAttribArrayARB@4)
+ GL_STUB(GetProgramEnvParameterdvARB, 455, GetProgramEnvParameterdvARB@12)
+ GL_STUB(GetProgramEnvParameterfvARB, 456, GetProgramEnvParameterfvARB@12)
+ GL_STUB(GetProgramLocalParameterdvARB, 457, GetProgramLocalParameterdvARB@12)
+ GL_STUB(GetProgramLocalParameterfvARB, 458, GetProgramLocalParameterfvARB@12)
+ GL_STUB(GetProgramStringARB, 459, GetProgramStringARB@12)
+ GL_STUB(GetProgramivARB, 460, GetProgramivARB@12)
+ GL_STUB(GetVertexAttribdvARB, 461, GetVertexAttribdvARB@12)
+ GL_STUB(GetVertexAttribfvARB, 462, GetVertexAttribfvARB@12)
+ GL_STUB(GetVertexAttribivARB, 463, GetVertexAttribivARB@12)
+ GL_STUB(ProgramEnvParameter4dARB, 464, ProgramEnvParameter4dARB@40)
+ GL_STUB(ProgramEnvParameter4dvARB, 465, ProgramEnvParameter4dvARB@12)
+ GL_STUB(ProgramEnvParameter4fARB, 466, ProgramEnvParameter4fARB@24)
+ GL_STUB(ProgramEnvParameter4fvARB, 467, ProgramEnvParameter4fvARB@12)
+ GL_STUB(ProgramLocalParameter4dARB, 468, ProgramLocalParameter4dARB@40)
+ GL_STUB(ProgramLocalParameter4dvARB, 469, ProgramLocalParameter4dvARB@12)
+ GL_STUB(ProgramLocalParameter4fARB, 470, ProgramLocalParameter4fARB@24)
+ GL_STUB(ProgramLocalParameter4fvARB, 471, ProgramLocalParameter4fvARB@12)
+ GL_STUB(ProgramStringARB, 472, ProgramStringARB@16)
+ GL_STUB(VertexAttrib1dARB, 473, VertexAttrib1dARB@12)
+ GL_STUB(VertexAttrib1dvARB, 474, VertexAttrib1dvARB@8)
+ GL_STUB(VertexAttrib1fARB, 475, VertexAttrib1fARB@8)
+ GL_STUB(VertexAttrib1fvARB, 476, VertexAttrib1fvARB@8)
+ GL_STUB(VertexAttrib1sARB, 477, VertexAttrib1sARB@8)
+ GL_STUB(VertexAttrib1svARB, 478, VertexAttrib1svARB@8)
+ GL_STUB(VertexAttrib2dARB, 479, VertexAttrib2dARB@20)
+ GL_STUB(VertexAttrib2dvARB, 480, VertexAttrib2dvARB@8)
+ GL_STUB(VertexAttrib2fARB, 481, VertexAttrib2fARB@12)
+ GL_STUB(VertexAttrib2fvARB, 482, VertexAttrib2fvARB@8)
+ GL_STUB(VertexAttrib2sARB, 483, VertexAttrib2sARB@12)
+ GL_STUB(VertexAttrib2svARB, 484, VertexAttrib2svARB@8)
+ GL_STUB(VertexAttrib3dARB, 485, VertexAttrib3dARB@28)
+ GL_STUB(VertexAttrib3dvARB, 486, VertexAttrib3dvARB@8)
+ GL_STUB(VertexAttrib3fARB, 487, VertexAttrib3fARB@16)
+ GL_STUB(VertexAttrib3fvARB, 488, VertexAttrib3fvARB@8)
+ GL_STUB(VertexAttrib3sARB, 489, VertexAttrib3sARB@16)
+ GL_STUB(VertexAttrib3svARB, 490, VertexAttrib3svARB@8)
+ GL_STUB(VertexAttrib4NbvARB, 491, VertexAttrib4NbvARB@8)
+ GL_STUB(VertexAttrib4NivARB, 492, VertexAttrib4NivARB@8)
+ GL_STUB(VertexAttrib4NsvARB, 493, VertexAttrib4NsvARB@8)
+ GL_STUB(VertexAttrib4NubARB, 494, VertexAttrib4NubARB@20)
+ GL_STUB(VertexAttrib4NubvARB, 495, VertexAttrib4NubvARB@8)
+ GL_STUB(VertexAttrib4NuivARB, 496, VertexAttrib4NuivARB@8)
+ GL_STUB(VertexAttrib4NusvARB, 497, VertexAttrib4NusvARB@8)
+ GL_STUB(VertexAttrib4bvARB, 498, VertexAttrib4bvARB@8)
+ GL_STUB(VertexAttrib4dARB, 499, VertexAttrib4dARB@36)
+ GL_STUB(VertexAttrib4dvARB, 500, VertexAttrib4dvARB@8)
+ GL_STUB(VertexAttrib4fARB, 501, VertexAttrib4fARB@20)
+ GL_STUB(VertexAttrib4fvARB, 502, VertexAttrib4fvARB@8)
+ GL_STUB(VertexAttrib4ivARB, 503, VertexAttrib4ivARB@8)
+ GL_STUB(VertexAttrib4sARB, 504, VertexAttrib4sARB@20)
+ GL_STUB(VertexAttrib4svARB, 505, VertexAttrib4svARB@8)
+ GL_STUB(VertexAttrib4ubvARB, 506, VertexAttrib4ubvARB@8)
+ GL_STUB(VertexAttrib4uivARB, 507, VertexAttrib4uivARB@8)
+ GL_STUB(VertexAttrib4usvARB, 508, VertexAttrib4usvARB@8)
+ GL_STUB(VertexAttribPointerARB, 509, VertexAttribPointerARB@24)
+ GL_STUB(BindBufferARB, 510, BindBufferARB@8)
+ GL_STUB(BufferDataARB, 511, BufferDataARB@16)
+ GL_STUB(BufferSubDataARB, 512, BufferSubDataARB@16)
+ GL_STUB(DeleteBuffersARB, 513, DeleteBuffersARB@8)
+ GL_STUB(GenBuffersARB, 514, GenBuffersARB@8)
+ GL_STUB(GetBufferParameterivARB, 515, GetBufferParameterivARB@12)
+ GL_STUB(GetBufferPointervARB, 516, GetBufferPointervARB@12)
+ GL_STUB(GetBufferSubDataARB, 517, GetBufferSubDataARB@16)
+ GL_STUB(IsBufferARB, 518, IsBufferARB@4)
+ GL_STUB(MapBufferARB, 519, MapBufferARB@8)
+ GL_STUB(UnmapBufferARB, 520, UnmapBufferARB@4)
+ GL_STUB(BeginQueryARB, 521, BeginQueryARB@8)
+ GL_STUB(DeleteQueriesARB, 522, DeleteQueriesARB@8)
+ GL_STUB(EndQueryARB, 523, EndQueryARB@4)
+ GL_STUB(GenQueriesARB, 524, GenQueriesARB@8)
+ GL_STUB(GetQueryObjectivARB, 525, GetQueryObjectivARB@12)
+ GL_STUB(GetQueryObjectuivARB, 526, GetQueryObjectuivARB@12)
+ GL_STUB(GetQueryivARB, 527, GetQueryivARB@12)
+ GL_STUB(IsQueryARB, 528, IsQueryARB@4)
+ GL_STUB(AttachObjectARB, 529, AttachObjectARB@8)
+ GL_STUB(CompileShaderARB, 530, CompileShaderARB@4)
+ GL_STUB(CreateProgramObjectARB, 531, CreateProgramObjectARB@0)
+ GL_STUB(CreateShaderObjectARB, 532, CreateShaderObjectARB@4)
+ GL_STUB(DeleteObjectARB, 533, DeleteObjectARB@4)
+ GL_STUB(DetachObjectARB, 534, DetachObjectARB@8)
+ GL_STUB(GetActiveUniformARB, 535, GetActiveUniformARB@28)
+ GL_STUB(GetAttachedObjectsARB, 536, GetAttachedObjectsARB@16)
+ GL_STUB(GetHandleARB, 537, GetHandleARB@4)
+ GL_STUB(GetInfoLogARB, 538, GetInfoLogARB@16)
+ GL_STUB(GetObjectParameterfvARB, 539, GetObjectParameterfvARB@12)
+ GL_STUB(GetObjectParameterivARB, 540, GetObjectParameterivARB@12)
+ GL_STUB(GetShaderSourceARB, 541, GetShaderSourceARB@16)
+ GL_STUB(GetUniformLocationARB, 542, GetUniformLocationARB@8)
+ GL_STUB(GetUniformfvARB, 543, GetUniformfvARB@12)
+ GL_STUB(GetUniformivARB, 544, GetUniformivARB@12)
+ GL_STUB(LinkProgramARB, 545, LinkProgramARB@4)
+ GL_STUB(ShaderSourceARB, 546, ShaderSourceARB@16)
+ GL_STUB(Uniform1fARB, 547, Uniform1fARB@8)
+ GL_STUB(Uniform1fvARB, 548, Uniform1fvARB@12)
+ GL_STUB(Uniform1iARB, 549, Uniform1iARB@8)
+ GL_STUB(Uniform1ivARB, 550, Uniform1ivARB@12)
+ GL_STUB(Uniform2fARB, 551, Uniform2fARB@12)
+ GL_STUB(Uniform2fvARB, 552, Uniform2fvARB@12)
+ GL_STUB(Uniform2iARB, 553, Uniform2iARB@12)
+ GL_STUB(Uniform2ivARB, 554, Uniform2ivARB@12)
+ GL_STUB(Uniform3fARB, 555, Uniform3fARB@16)
+ GL_STUB(Uniform3fvARB, 556, Uniform3fvARB@12)
+ GL_STUB(Uniform3iARB, 557, Uniform3iARB@16)
+ GL_STUB(Uniform3ivARB, 558, Uniform3ivARB@12)
+ GL_STUB(Uniform4fARB, 559, Uniform4fARB@20)
+ GL_STUB(Uniform4fvARB, 560, Uniform4fvARB@12)
+ GL_STUB(Uniform4iARB, 561, Uniform4iARB@20)
+ GL_STUB(Uniform4ivARB, 562, Uniform4ivARB@12)
+ GL_STUB(UniformMatrix2fvARB, 563, UniformMatrix2fvARB@16)
+ GL_STUB(UniformMatrix3fvARB, 564, UniformMatrix3fvARB@16)
+ GL_STUB(UniformMatrix4fvARB, 565, UniformMatrix4fvARB@16)
+ GL_STUB(UseProgramObjectARB, 566, UseProgramObjectARB@4)
+ GL_STUB(ValidateProgramARB, 567, ValidateProgramARB@4)
+ GL_STUB(BindAttribLocationARB, 568, BindAttribLocationARB@12)
+ GL_STUB(GetActiveAttribARB, 569, GetActiveAttribARB@28)
+ GL_STUB(GetAttribLocationARB, 570, GetAttribLocationARB@8)
+ GL_STUB(DrawBuffersARB, 571, DrawBuffersARB@8)
+ GL_STUB(DrawArraysInstancedARB, 572, DrawArraysInstancedARB@16)
+ GL_STUB(DrawElementsInstancedARB, 573, DrawElementsInstancedARB@20)
+ GL_STUB(RenderbufferStorageMultisample, 574, RenderbufferStorageMultisample@20)
+ GL_STUB(FramebufferTextureARB, 575, FramebufferTextureARB@16)
+ GL_STUB(FramebufferTextureFaceARB, 576, FramebufferTextureFaceARB@20)
+ GL_STUB(ProgramParameteriARB, 577, ProgramParameteriARB@12)
+ GL_STUB(FlushMappedBufferRange, 578, FlushMappedBufferRange@12)
+ GL_STUB(MapBufferRange, 579, MapBufferRange@16)
+ GL_STUB(BindVertexArray, 580, BindVertexArray@4)
+ GL_STUB(GenVertexArrays, 581, GenVertexArrays@8)
+ GL_STUB(CopyBufferSubData, 582, CopyBufferSubData@20)
+ GL_STUB(ClientWaitSync, 583, ClientWaitSync@12)
+ GL_STUB(DeleteSync, 584, DeleteSync@4)
+ GL_STUB(FenceSync, 585, FenceSync@8)
+ GL_STUB(GetInteger64v, 586, GetInteger64v@8)
+ GL_STUB(GetSynciv, 587, GetSynciv@20)
+ GL_STUB(IsSync, 588, IsSync@4)
+ GL_STUB(WaitSync, 589, WaitSync@12)
+ GL_STUB(DrawElementsBaseVertex, 590, DrawElementsBaseVertex@20)
+ GL_STUB(DrawRangeElementsBaseVertex, 591, DrawRangeElementsBaseVertex@28)
+ GL_STUB(MultiDrawElementsBaseVertex, 592, MultiDrawElementsBaseVertex@24)
+ GL_STUB(BindTransformFeedback, 593, BindTransformFeedback@8)
+ GL_STUB(DeleteTransformFeedbacks, 594, DeleteTransformFeedbacks@8)
+ GL_STUB(DrawTransformFeedback, 595, DrawTransformFeedback@8)
+ GL_STUB(GenTransformFeedbacks, 596, GenTransformFeedbacks@8)
+ GL_STUB(IsTransformFeedback, 597, IsTransformFeedback@4)
+ GL_STUB(PauseTransformFeedback, 598, PauseTransformFeedback@0)
+ GL_STUB(ResumeTransformFeedback, 599, ResumeTransformFeedback@0)
+ GL_STUB(PolygonOffsetEXT, 600, PolygonOffsetEXT@8)
+ GL_STUB(_dispatch_stub_601, 601, _dispatch_stub_601@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_601, _dispatch_stub_601@8))
+ GL_STUB(_dispatch_stub_602, 602, _dispatch_stub_602@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_602, _dispatch_stub_602@8))
+ GL_STUB(_dispatch_stub_603, 603, _dispatch_stub_603@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_603, _dispatch_stub_603@8))
+ GL_STUB(_dispatch_stub_604, 604, _dispatch_stub_604@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_604, _dispatch_stub_604@8))
+ GL_STUB(_dispatch_stub_605, 605, _dispatch_stub_605@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_605, _dispatch_stub_605@8))
+ GL_STUB(_dispatch_stub_606, 606, _dispatch_stub_606@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_606, _dispatch_stub_606@8))
+ GL_STUB(_dispatch_stub_607, 607, _dispatch_stub_607@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_607, _dispatch_stub_607@8))
+ GL_STUB(_dispatch_stub_608, 608, _dispatch_stub_608@4)
+ HIDDEN(GL_PREFIX(_dispatch_stub_608, _dispatch_stub_608@4))
+ GL_STUB(ColorPointerEXT, 609, ColorPointerEXT@20)
+ GL_STUB(EdgeFlagPointerEXT, 610, EdgeFlagPointerEXT@12)
+ GL_STUB(IndexPointerEXT, 611, IndexPointerEXT@16)
+ GL_STUB(NormalPointerEXT, 612, NormalPointerEXT@16)
+ GL_STUB(TexCoordPointerEXT, 613, TexCoordPointerEXT@20)
+ GL_STUB(VertexPointerEXT, 614, VertexPointerEXT@20)
+ GL_STUB(PointParameterfEXT, 615, PointParameterfEXT@8)
+ GL_STUB(PointParameterfvEXT, 616, PointParameterfvEXT@8)
+ GL_STUB(LockArraysEXT, 617, LockArraysEXT@8)
+ GL_STUB(UnlockArraysEXT, 618, UnlockArraysEXT@0)
+ GL_STUB(SecondaryColor3bEXT, 619, SecondaryColor3bEXT@12)
+ GL_STUB(SecondaryColor3bvEXT, 620, SecondaryColor3bvEXT@4)
+ GL_STUB(SecondaryColor3dEXT, 621, SecondaryColor3dEXT@24)
+ GL_STUB(SecondaryColor3dvEXT, 622, SecondaryColor3dvEXT@4)
+ GL_STUB(SecondaryColor3fEXT, 623, SecondaryColor3fEXT@12)
+ GL_STUB(SecondaryColor3fvEXT, 624, SecondaryColor3fvEXT@4)
+ GL_STUB(SecondaryColor3iEXT, 625, SecondaryColor3iEXT@12)
+ GL_STUB(SecondaryColor3ivEXT, 626, SecondaryColor3ivEXT@4)
+ GL_STUB(SecondaryColor3sEXT, 627, SecondaryColor3sEXT@12)
+ GL_STUB(SecondaryColor3svEXT, 628, SecondaryColor3svEXT@4)
+ GL_STUB(SecondaryColor3ubEXT, 629, SecondaryColor3ubEXT@12)
+ GL_STUB(SecondaryColor3ubvEXT, 630, SecondaryColor3ubvEXT@4)
+ GL_STUB(SecondaryColor3uiEXT, 631, SecondaryColor3uiEXT@12)
+ GL_STUB(SecondaryColor3uivEXT, 632, SecondaryColor3uivEXT@4)
+ GL_STUB(SecondaryColor3usEXT, 633, SecondaryColor3usEXT@12)
+ GL_STUB(SecondaryColor3usvEXT, 634, SecondaryColor3usvEXT@4)
+ GL_STUB(SecondaryColorPointerEXT, 635, SecondaryColorPointerEXT@16)
+ GL_STUB(MultiDrawArraysEXT, 636, MultiDrawArraysEXT@16)
+ GL_STUB(MultiDrawElementsEXT, 637, MultiDrawElementsEXT@20)
+ GL_STUB(FogCoordPointerEXT, 638, FogCoordPointerEXT@12)
+ GL_STUB(FogCoorddEXT, 639, FogCoorddEXT@8)
+ GL_STUB(FogCoorddvEXT, 640, FogCoorddvEXT@4)
+ GL_STUB(FogCoordfEXT, 641, FogCoordfEXT@4)
+ GL_STUB(FogCoordfvEXT, 642, FogCoordfvEXT@4)
+ GL_STUB(_dispatch_stub_643, 643, _dispatch_stub_643@4)
+ HIDDEN(GL_PREFIX(_dispatch_stub_643, _dispatch_stub_643@4))
+ GL_STUB(BlendFuncSeparateEXT, 644, BlendFuncSeparateEXT@16)
+ GL_STUB(FlushVertexArrayRangeNV, 645, FlushVertexArrayRangeNV@0)
+ GL_STUB(VertexArrayRangeNV, 646, VertexArrayRangeNV@8)
+ GL_STUB(CombinerInputNV, 647, CombinerInputNV@24)
+ GL_STUB(CombinerOutputNV, 648, CombinerOutputNV@40)
+ GL_STUB(CombinerParameterfNV, 649, CombinerParameterfNV@8)
+ GL_STUB(CombinerParameterfvNV, 650, CombinerParameterfvNV@8)
+ GL_STUB(CombinerParameteriNV, 651, CombinerParameteriNV@8)
+ GL_STUB(CombinerParameterivNV, 652, CombinerParameterivNV@8)
+ GL_STUB(FinalCombinerInputNV, 653, FinalCombinerInputNV@16)
+ GL_STUB(GetCombinerInputParameterfvNV, 654, GetCombinerInputParameterfvNV@20)
+ GL_STUB(GetCombinerInputParameterivNV, 655, GetCombinerInputParameterivNV@20)
+ GL_STUB(GetCombinerOutputParameterfvNV, 656, GetCombinerOutputParameterfvNV@16)
+ GL_STUB(GetCombinerOutputParameterivNV, 657, GetCombinerOutputParameterivNV@16)
+ GL_STUB(GetFinalCombinerInputParameterfvNV, 658, GetFinalCombinerInputParameterfvNV@12)
+ GL_STUB(GetFinalCombinerInputParameterivNV, 659, GetFinalCombinerInputParameterivNV@12)
+ GL_STUB(ResizeBuffersMESA, 660, ResizeBuffersMESA@0)
+ GL_STUB(WindowPos2dMESA, 661, WindowPos2dMESA@16)
+ GL_STUB(WindowPos2dvMESA, 662, WindowPos2dvMESA@4)
+ GL_STUB(WindowPos2fMESA, 663, WindowPos2fMESA@8)
+ GL_STUB(WindowPos2fvMESA, 664, WindowPos2fvMESA@4)
+ GL_STUB(WindowPos2iMESA, 665, WindowPos2iMESA@8)
+ GL_STUB(WindowPos2ivMESA, 666, WindowPos2ivMESA@4)
+ GL_STUB(WindowPos2sMESA, 667, WindowPos2sMESA@8)
+ GL_STUB(WindowPos2svMESA, 668, WindowPos2svMESA@4)
+ GL_STUB(WindowPos3dMESA, 669, WindowPos3dMESA@24)
+ GL_STUB(WindowPos3dvMESA, 670, WindowPos3dvMESA@4)
+ GL_STUB(WindowPos3fMESA, 671, WindowPos3fMESA@12)
+ GL_STUB(WindowPos3fvMESA, 672, WindowPos3fvMESA@4)
+ GL_STUB(WindowPos3iMESA, 673, WindowPos3iMESA@12)
+ GL_STUB(WindowPos3ivMESA, 674, WindowPos3ivMESA@4)
+ GL_STUB(WindowPos3sMESA, 675, WindowPos3sMESA@12)
+ GL_STUB(WindowPos3svMESA, 676, WindowPos3svMESA@4)
+ GL_STUB(WindowPos4dMESA, 677, WindowPos4dMESA@32)
+ GL_STUB(WindowPos4dvMESA, 678, WindowPos4dvMESA@4)
+ GL_STUB(WindowPos4fMESA, 679, WindowPos4fMESA@16)
+ GL_STUB(WindowPos4fvMESA, 680, WindowPos4fvMESA@4)
+ GL_STUB(WindowPos4iMESA, 681, WindowPos4iMESA@16)
+ GL_STUB(WindowPos4ivMESA, 682, WindowPos4ivMESA@4)
+ GL_STUB(WindowPos4sMESA, 683, WindowPos4sMESA@16)
+ GL_STUB(WindowPos4svMESA, 684, WindowPos4svMESA@4)
+ GL_STUB(_dispatch_stub_685, 685, _dispatch_stub_685@20)
+ HIDDEN(GL_PREFIX(_dispatch_stub_685, _dispatch_stub_685@20))
+ GL_STUB(_dispatch_stub_686, 686, _dispatch_stub_686@24)
+ HIDDEN(GL_PREFIX(_dispatch_stub_686, _dispatch_stub_686@24))
+ GL_STUB(_dispatch_stub_687, 687, _dispatch_stub_687@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_687, _dispatch_stub_687@8))
+ GL_STUB(_dispatch_stub_688, 688, _dispatch_stub_688@4)
+ HIDDEN(GL_PREFIX(_dispatch_stub_688, _dispatch_stub_688@4))
+ GL_STUB(_dispatch_stub_689, 689, _dispatch_stub_689@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_689, _dispatch_stub_689@8))
+ GL_STUB(_dispatch_stub_690, 690, _dispatch_stub_690@12)
+ HIDDEN(GL_PREFIX(_dispatch_stub_690, _dispatch_stub_690@12))
+ GL_STUB(_dispatch_stub_691, 691, _dispatch_stub_691@4)
+ HIDDEN(GL_PREFIX(_dispatch_stub_691, _dispatch_stub_691@4))
+ GL_STUB(_dispatch_stub_692, 692, _dispatch_stub_692@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_692, _dispatch_stub_692@8))
+ GL_STUB(_dispatch_stub_693, 693, _dispatch_stub_693@4)
+ HIDDEN(GL_PREFIX(_dispatch_stub_693, _dispatch_stub_693@4))
+ GL_STUB(AreProgramsResidentNV, 694, AreProgramsResidentNV@12)
+ GL_STUB(BindProgramNV, 695, BindProgramNV@8)
+ GL_STUB(DeleteProgramsNV, 696, DeleteProgramsNV@8)
+ GL_STUB(ExecuteProgramNV, 697, ExecuteProgramNV@12)
+ GL_STUB(GenProgramsNV, 698, GenProgramsNV@8)
+ GL_STUB(GetProgramParameterdvNV, 699, GetProgramParameterdvNV@16)
+ GL_STUB(GetProgramParameterfvNV, 700, GetProgramParameterfvNV@16)
+ GL_STUB(GetProgramStringNV, 701, GetProgramStringNV@12)
+ GL_STUB(GetProgramivNV, 702, GetProgramivNV@12)
+ GL_STUB(GetTrackMatrixivNV, 703, GetTrackMatrixivNV@16)
+ GL_STUB(GetVertexAttribPointervNV, 704, GetVertexAttribPointervNV@12)
+ GL_STUB(GetVertexAttribdvNV, 705, GetVertexAttribdvNV@12)
+ GL_STUB(GetVertexAttribfvNV, 706, GetVertexAttribfvNV@12)
+ GL_STUB(GetVertexAttribivNV, 707, GetVertexAttribivNV@12)
+ GL_STUB(IsProgramNV, 708, IsProgramNV@4)
+ GL_STUB(LoadProgramNV, 709, LoadProgramNV@16)
+ GL_STUB(ProgramParameters4dvNV, 710, ProgramParameters4dvNV@16)
+ GL_STUB(ProgramParameters4fvNV, 711, ProgramParameters4fvNV@16)
+ GL_STUB(RequestResidentProgramsNV, 712, RequestResidentProgramsNV@8)
+ GL_STUB(TrackMatrixNV, 713, TrackMatrixNV@16)
+ GL_STUB(VertexAttrib1dNV, 714, VertexAttrib1dNV@12)
+ GL_STUB(VertexAttrib1dvNV, 715, VertexAttrib1dvNV@8)
+ GL_STUB(VertexAttrib1fNV, 716, VertexAttrib1fNV@8)
+ GL_STUB(VertexAttrib1fvNV, 717, VertexAttrib1fvNV@8)
+ GL_STUB(VertexAttrib1sNV, 718, VertexAttrib1sNV@8)
+ GL_STUB(VertexAttrib1svNV, 719, VertexAttrib1svNV@8)
+ GL_STUB(VertexAttrib2dNV, 720, VertexAttrib2dNV@20)
+ GL_STUB(VertexAttrib2dvNV, 721, VertexAttrib2dvNV@8)
+ GL_STUB(VertexAttrib2fNV, 722, VertexAttrib2fNV@12)
+ GL_STUB(VertexAttrib2fvNV, 723, VertexAttrib2fvNV@8)
+ GL_STUB(VertexAttrib2sNV, 724, VertexAttrib2sNV@12)
+ GL_STUB(VertexAttrib2svNV, 725, VertexAttrib2svNV@8)
+ GL_STUB(VertexAttrib3dNV, 726, VertexAttrib3dNV@28)
+ GL_STUB(VertexAttrib3dvNV, 727, VertexAttrib3dvNV@8)
+ GL_STUB(VertexAttrib3fNV, 728, VertexAttrib3fNV@16)
+ GL_STUB(VertexAttrib3fvNV, 729, VertexAttrib3fvNV@8)
+ GL_STUB(VertexAttrib3sNV, 730, VertexAttrib3sNV@16)
+ GL_STUB(VertexAttrib3svNV, 731, VertexAttrib3svNV@8)
+ GL_STUB(VertexAttrib4dNV, 732, VertexAttrib4dNV@36)
+ GL_STUB(VertexAttrib4dvNV, 733, VertexAttrib4dvNV@8)
+ GL_STUB(VertexAttrib4fNV, 734, VertexAttrib4fNV@20)
+ GL_STUB(VertexAttrib4fvNV, 735, VertexAttrib4fvNV@8)
+ GL_STUB(VertexAttrib4sNV, 736, VertexAttrib4sNV@20)
+ GL_STUB(VertexAttrib4svNV, 737, VertexAttrib4svNV@8)
+ GL_STUB(VertexAttrib4ubNV, 738, VertexAttrib4ubNV@20)
+ GL_STUB(VertexAttrib4ubvNV, 739, VertexAttrib4ubvNV@8)
+ GL_STUB(VertexAttribPointerNV, 740, VertexAttribPointerNV@20)
+ GL_STUB(VertexAttribs1dvNV, 741, VertexAttribs1dvNV@12)
+ GL_STUB(VertexAttribs1fvNV, 742, VertexAttribs1fvNV@12)
+ GL_STUB(VertexAttribs1svNV, 743, VertexAttribs1svNV@12)
+ GL_STUB(VertexAttribs2dvNV, 744, VertexAttribs2dvNV@12)
+ GL_STUB(VertexAttribs2fvNV, 745, VertexAttribs2fvNV@12)
+ GL_STUB(VertexAttribs2svNV, 746, VertexAttribs2svNV@12)
+ GL_STUB(VertexAttribs3dvNV, 747, VertexAttribs3dvNV@12)
+ GL_STUB(VertexAttribs3fvNV, 748, VertexAttribs3fvNV@12)
+ GL_STUB(VertexAttribs3svNV, 749, VertexAttribs3svNV@12)
+ GL_STUB(VertexAttribs4dvNV, 750, VertexAttribs4dvNV@12)
+ GL_STUB(VertexAttribs4fvNV, 751, VertexAttribs4fvNV@12)
+ GL_STUB(VertexAttribs4svNV, 752, VertexAttribs4svNV@12)
+ GL_STUB(VertexAttribs4ubvNV, 753, VertexAttribs4ubvNV@12)
+ GL_STUB(GetTexBumpParameterfvATI, 754, GetTexBumpParameterfvATI@8)
+ GL_STUB(GetTexBumpParameterivATI, 755, GetTexBumpParameterivATI@8)
+ GL_STUB(TexBumpParameterfvATI, 756, TexBumpParameterfvATI@8)
+ GL_STUB(TexBumpParameterivATI, 757, TexBumpParameterivATI@8)
+ GL_STUB(AlphaFragmentOp1ATI, 758, AlphaFragmentOp1ATI@24)
+ GL_STUB(AlphaFragmentOp2ATI, 759, AlphaFragmentOp2ATI@36)
+ GL_STUB(AlphaFragmentOp3ATI, 760, AlphaFragmentOp3ATI@48)
+ GL_STUB(BeginFragmentShaderATI, 761, BeginFragmentShaderATI@0)
+ GL_STUB(BindFragmentShaderATI, 762, BindFragmentShaderATI@4)
+ GL_STUB(ColorFragmentOp1ATI, 763, ColorFragmentOp1ATI@28)
+ GL_STUB(ColorFragmentOp2ATI, 764, ColorFragmentOp2ATI@40)
+ GL_STUB(ColorFragmentOp3ATI, 765, ColorFragmentOp3ATI@52)
+ GL_STUB(DeleteFragmentShaderATI, 766, DeleteFragmentShaderATI@4)
+ GL_STUB(EndFragmentShaderATI, 767, EndFragmentShaderATI@0)
+ GL_STUB(GenFragmentShadersATI, 768, GenFragmentShadersATI@4)
+ GL_STUB(PassTexCoordATI, 769, PassTexCoordATI@12)
+ GL_STUB(SampleMapATI, 770, SampleMapATI@12)
+ GL_STUB(SetFragmentShaderConstantATI, 771, SetFragmentShaderConstantATI@8)
+ GL_STUB(PointParameteriNV, 772, PointParameteriNV@8)
+ GL_STUB(PointParameterivNV, 773, PointParameterivNV@8)
+ GL_STUB(_dispatch_stub_774, 774, _dispatch_stub_774@4)
+ HIDDEN(GL_PREFIX(_dispatch_stub_774, _dispatch_stub_774@4))
+ GL_STUB(_dispatch_stub_775, 775, _dispatch_stub_775@4)
+ HIDDEN(GL_PREFIX(_dispatch_stub_775, _dispatch_stub_775@4))
+ GL_STUB(_dispatch_stub_776, 776, _dispatch_stub_776@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_776, _dispatch_stub_776@8))
+ GL_STUB(_dispatch_stub_777, 777, _dispatch_stub_777@8)
HIDDEN(GL_PREFIX(_dispatch_stub_777, _dispatch_stub_777@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_795, _gloffset_BlitFramebufferEXT, _dispatch_stub_795@40)
- HIDDEN(GL_PREFIX(_dispatch_stub_795, _dispatch_stub_795@40))
- GL_STUB(_dispatch_stub_796, _gloffset_BufferParameteriAPPLE, _dispatch_stub_796@12)
- HIDDEN(GL_PREFIX(_dispatch_stub_796, _dispatch_stub_796@12))
- GL_STUB(_dispatch_stub_797, _gloffset_FlushMappedBufferRangeAPPLE, _dispatch_stub_797@12)
- HIDDEN(GL_PREFIX(_dispatch_stub_797, _dispatch_stub_797@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_815, _gloffset_GetTexParameterPointervAPPLE, _dispatch_stub_815@12)
- HIDDEN(GL_PREFIX(_dispatch_stub_815, _dispatch_stub_815@12))
- GL_STUB(_dispatch_stub_816, _gloffset_TextureRangeAPPLE, _dispatch_stub_816@12)
- HIDDEN(GL_PREFIX(_dispatch_stub_816, _dispatch_stub_816@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_820, _gloffset_StencilFuncSeparateATI, _dispatch_stub_820@16)
- HIDDEN(GL_PREFIX(_dispatch_stub_820, _dispatch_stub_820@16))
- GL_STUB(_dispatch_stub_821, _gloffset_ProgramEnvParameters4fvEXT, _dispatch_stub_821@16)
- HIDDEN(GL_PREFIX(_dispatch_stub_821, _dispatch_stub_821@16))
- GL_STUB(_dispatch_stub_822, _gloffset_ProgramLocalParameters4fvEXT, _dispatch_stub_822@16)
- HIDDEN(GL_PREFIX(_dispatch_stub_822, _dispatch_stub_822@16))
- GL_STUB(_dispatch_stub_823, _gloffset_GetQueryObjecti64vEXT, _dispatch_stub_823@12)
- HIDDEN(GL_PREFIX(_dispatch_stub_823, _dispatch_stub_823@12))
- GL_STUB(_dispatch_stub_824, _gloffset_GetQueryObjectui64vEXT, _dispatch_stub_824@12)
- HIDDEN(GL_PREFIX(_dispatch_stub_824, _dispatch_stub_824@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)
+ GL_STUB(_dispatch_stub_778, 778, _dispatch_stub_778@4)
+ HIDDEN(GL_PREFIX(_dispatch_stub_778, _dispatch_stub_778@4))
+ GL_STUB(GetProgramNamedParameterdvNV, 779, GetProgramNamedParameterdvNV@16)
+ GL_STUB(GetProgramNamedParameterfvNV, 780, GetProgramNamedParameterfvNV@16)
+ GL_STUB(ProgramNamedParameter4dNV, 781, ProgramNamedParameter4dNV@44)
+ GL_STUB(ProgramNamedParameter4dvNV, 782, ProgramNamedParameter4dvNV@16)
+ GL_STUB(ProgramNamedParameter4fNV, 783, ProgramNamedParameter4fNV@28)
+ GL_STUB(ProgramNamedParameter4fvNV, 784, ProgramNamedParameter4fvNV@16)
+ GL_STUB(PrimitiveRestartIndexNV, 785, PrimitiveRestartIndexNV@4)
+ GL_STUB(PrimitiveRestartNV, 786, PrimitiveRestartNV@0)
+ GL_STUB(_dispatch_stub_787, 787, _dispatch_stub_787@16)
+ HIDDEN(GL_PREFIX(_dispatch_stub_787, _dispatch_stub_787@16))
+ GL_STUB(_dispatch_stub_788, 788, _dispatch_stub_788@8)
+ HIDDEN(GL_PREFIX(_dispatch_stub_788, _dispatch_stub_788@8))
+ GL_STUB(BindFramebufferEXT, 789, BindFramebufferEXT@8)
+ GL_STUB(BindRenderbufferEXT, 790, BindRenderbufferEXT@8)
+ GL_STUB(CheckFramebufferStatusEXT, 791, CheckFramebufferStatusEXT@4)
+ GL_STUB(DeleteFramebuffersEXT, 792, DeleteFramebuffersEXT@8)
+ GL_STUB(DeleteRenderbuffersEXT, 793, DeleteRenderbuffersEXT@8)
+ GL_STUB(FramebufferRenderbufferEXT, 794, FramebufferRenderbufferEXT@16)
+ GL_STUB(FramebufferTexture1DEXT, 795, FramebufferTexture1DEXT@20)
+ GL_STUB(FramebufferTexture2DEXT, 796, FramebufferTexture2DEXT@20)
+ GL_STUB(FramebufferTexture3DEXT, 797, FramebufferTexture3DEXT@24)
+ GL_STUB(GenFramebuffersEXT, 798, GenFramebuffersEXT@8)
+ GL_STUB(GenRenderbuffersEXT, 799, GenRenderbuffersEXT@8)
+ GL_STUB(GenerateMipmapEXT, 800, GenerateMipmapEXT@4)
+ GL_STUB(GetFramebufferAttachmentParameterivEXT, 801, GetFramebufferAttachmentParameterivEXT@16)
+ GL_STUB(GetRenderbufferParameterivEXT, 802, GetRenderbufferParameterivEXT@12)
+ GL_STUB(IsFramebufferEXT, 803, IsFramebufferEXT@4)
+ GL_STUB(IsRenderbufferEXT, 804, IsRenderbufferEXT@4)
+ GL_STUB(RenderbufferStorageEXT, 805, RenderbufferStorageEXT@16)
+ GL_STUB(_dispatch_stub_806, 806, _dispatch_stub_806@40)
+ HIDDEN(GL_PREFIX(_dispatch_stub_806, _dispatch_stub_806@40))
+ GL_STUB(_dispatch_stub_807, 807, _dispatch_stub_807@12)
+ HIDDEN(GL_PREFIX(_dispatch_stub_807, _dispatch_stub_807@12))
+ GL_STUB(_dispatch_stub_808, 808, _dispatch_stub_808@12)
+ HIDDEN(GL_PREFIX(_dispatch_stub_808, _dispatch_stub_808@12))
+ GL_STUB(BindFragDataLocationEXT, 809, BindFragDataLocationEXT@12)
+ GL_STUB(GetFragDataLocationEXT, 810, GetFragDataLocationEXT@8)
+ GL_STUB(GetUniformuivEXT, 811, GetUniformuivEXT@12)
+ GL_STUB(GetVertexAttribIivEXT, 812, GetVertexAttribIivEXT@12)
+ GL_STUB(GetVertexAttribIuivEXT, 813, GetVertexAttribIuivEXT@12)
+ GL_STUB(Uniform1uiEXT, 814, Uniform1uiEXT@8)
+ GL_STUB(Uniform1uivEXT, 815, Uniform1uivEXT@12)
+ GL_STUB(Uniform2uiEXT, 816, Uniform2uiEXT@12)
+ GL_STUB(Uniform2uivEXT, 817, Uniform2uivEXT@12)
+ GL_STUB(Uniform3uiEXT, 818, Uniform3uiEXT@16)
+ GL_STUB(Uniform3uivEXT, 819, Uniform3uivEXT@12)
+ GL_STUB(Uniform4uiEXT, 820, Uniform4uiEXT@20)
+ GL_STUB(Uniform4uivEXT, 821, Uniform4uivEXT@12)
+ GL_STUB(VertexAttribI1iEXT, 822, VertexAttribI1iEXT@8)
+ GL_STUB(VertexAttribI1ivEXT, 823, VertexAttribI1ivEXT@8)
+ GL_STUB(VertexAttribI1uiEXT, 824, VertexAttribI1uiEXT@8)
+ GL_STUB(VertexAttribI1uivEXT, 825, VertexAttribI1uivEXT@8)
+ GL_STUB(VertexAttribI2iEXT, 826, VertexAttribI2iEXT@12)
+ GL_STUB(VertexAttribI2ivEXT, 827, VertexAttribI2ivEXT@8)
+ GL_STUB(VertexAttribI2uiEXT, 828, VertexAttribI2uiEXT@12)
+ GL_STUB(VertexAttribI2uivEXT, 829, VertexAttribI2uivEXT@8)
+ GL_STUB(VertexAttribI3iEXT, 830, VertexAttribI3iEXT@16)
+ GL_STUB(VertexAttribI3ivEXT, 831, VertexAttribI3ivEXT@8)
+ GL_STUB(VertexAttribI3uiEXT, 832, VertexAttribI3uiEXT@16)
+ GL_STUB(VertexAttribI3uivEXT, 833, VertexAttribI3uivEXT@8)
+ GL_STUB(VertexAttribI4bvEXT, 834, VertexAttribI4bvEXT@8)
+ GL_STUB(VertexAttribI4iEXT, 835, VertexAttribI4iEXT@20)
+ GL_STUB(VertexAttribI4ivEXT, 836, VertexAttribI4ivEXT@8)
+ GL_STUB(VertexAttribI4svEXT, 837, VertexAttribI4svEXT@8)
+ GL_STUB(VertexAttribI4ubvEXT, 838, VertexAttribI4ubvEXT@8)
+ GL_STUB(VertexAttribI4uiEXT, 839, VertexAttribI4uiEXT@20)
+ GL_STUB(VertexAttribI4uivEXT, 840, VertexAttribI4uivEXT@8)
+ GL_STUB(VertexAttribI4usvEXT, 841, VertexAttribI4usvEXT@8)
+ GL_STUB(VertexAttribIPointerEXT, 842, VertexAttribIPointerEXT@20)
+ GL_STUB(FramebufferTextureLayerEXT, 843, FramebufferTextureLayerEXT@20)
+ GL_STUB(ColorMaskIndexedEXT, 844, ColorMaskIndexedEXT@20)
+ GL_STUB(DisableIndexedEXT, 845, DisableIndexedEXT@8)
+ GL_STUB(EnableIndexedEXT, 846, EnableIndexedEXT@8)
+ GL_STUB(GetBooleanIndexedvEXT, 847, GetBooleanIndexedvEXT@12)
+ GL_STUB(GetIntegerIndexedvEXT, 848, GetIntegerIndexedvEXT@12)
+ GL_STUB(IsEnabledIndexedEXT, 849, IsEnabledIndexedEXT@8)
+ GL_STUB(ClearColorIiEXT, 850, ClearColorIiEXT@16)
+ GL_STUB(ClearColorIuiEXT, 851, ClearColorIuiEXT@16)
+ GL_STUB(GetTexParameterIivEXT, 852, GetTexParameterIivEXT@12)
+ GL_STUB(GetTexParameterIuivEXT, 853, GetTexParameterIuivEXT@12)
+ GL_STUB(TexParameterIivEXT, 854, TexParameterIivEXT@12)
+ GL_STUB(TexParameterIuivEXT, 855, TexParameterIuivEXT@12)
+ GL_STUB(BeginConditionalRenderNV, 856, BeginConditionalRenderNV@8)
+ GL_STUB(EndConditionalRenderNV, 857, EndConditionalRenderNV@0)
+ GL_STUB(BeginTransformFeedbackEXT, 858, BeginTransformFeedbackEXT@4)
+ GL_STUB(BindBufferBaseEXT, 859, BindBufferBaseEXT@12)
+ GL_STUB(BindBufferOffsetEXT, 860, BindBufferOffsetEXT@16)
+ GL_STUB(BindBufferRangeEXT, 861, BindBufferRangeEXT@20)
+ GL_STUB(EndTransformFeedbackEXT, 862, EndTransformFeedbackEXT@0)
+ GL_STUB(GetTransformFeedbackVaryingEXT, 863, GetTransformFeedbackVaryingEXT@28)
+ GL_STUB(TransformFeedbackVaryingsEXT, 864, TransformFeedbackVaryingsEXT@16)
+ GL_STUB(ProvokingVertexEXT, 865, ProvokingVertexEXT@4)
+ GL_STUB(_dispatch_stub_866, 866, _dispatch_stub_866@12)
+ HIDDEN(GL_PREFIX(_dispatch_stub_866, _dispatch_stub_866@12))
+ GL_STUB(_dispatch_stub_867, 867, _dispatch_stub_867@12)
+ HIDDEN(GL_PREFIX(_dispatch_stub_867, _dispatch_stub_867@12))
+ GL_STUB(GetObjectParameterivAPPLE, 868, GetObjectParameterivAPPLE@16)
+ GL_STUB(ObjectPurgeableAPPLE, 869, ObjectPurgeableAPPLE@12)
+ GL_STUB(ObjectUnpurgeableAPPLE, 870, ObjectUnpurgeableAPPLE@12)
+ GL_STUB(ActiveProgramEXT, 871, ActiveProgramEXT@4)
+ GL_STUB(CreateShaderProgramEXT, 872, CreateShaderProgramEXT@8)
+ GL_STUB(UseShaderProgramEXT, 873, UseShaderProgramEXT@8)
+ GL_STUB(_dispatch_stub_874, 874, _dispatch_stub_874@16)
+ HIDDEN(GL_PREFIX(_dispatch_stub_874, _dispatch_stub_874@16))
+ GL_STUB(_dispatch_stub_875, 875, _dispatch_stub_875@16)
+ HIDDEN(GL_PREFIX(_dispatch_stub_875, _dispatch_stub_875@16))
+ GL_STUB(_dispatch_stub_876, 876, _dispatch_stub_876@16)
+ HIDDEN(GL_PREFIX(_dispatch_stub_876, _dispatch_stub_876@16))
+ GL_STUB(_dispatch_stub_877, 877, _dispatch_stub_877@12)
+ HIDDEN(GL_PREFIX(_dispatch_stub_877, _dispatch_stub_877@12))
+ GL_STUB(_dispatch_stub_878, 878, _dispatch_stub_878@12)
+ HIDDEN(GL_PREFIX(_dispatch_stub_878, _dispatch_stub_878@12))
+ GL_STUB(EGLImageTargetRenderbufferStorageOES, 879, EGLImageTargetRenderbufferStorageOES@8)
+ GL_STUB(EGLImageTargetTexture2DOES, 880, EGLImageTargetTexture2DOES@8)
+ GL_STUB_ALIAS(ArrayElementEXT, 306, ArrayElementEXT@4, ArrayElement, ArrayElement@4)
+ GL_STUB_ALIAS(BindTextureEXT, 307, BindTextureEXT@8, BindTexture, BindTexture@8)
+ GL_STUB_ALIAS(DrawArraysEXT, 310, DrawArraysEXT@12, DrawArrays, DrawArrays@12)
#ifndef GLX_INDIRECT_RENDERING
- GL_STUB_ALIAS(AreTexturesResidentEXT, _gloffset_AreTexturesResident, AreTexturesResidentEXT@12, AreTexturesResident, AreTexturesResident@12)
+ GL_STUB_ALIAS(AreTexturesResidentEXT, 322, 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)
+ GL_STUB_ALIAS(CopyTexImage1DEXT, 323, CopyTexImage1DEXT@28, CopyTexImage1D, CopyTexImage1D@28)
+ GL_STUB_ALIAS(CopyTexImage2DEXT, 324, CopyTexImage2DEXT@32, CopyTexImage2D, CopyTexImage2D@32)
+ GL_STUB_ALIAS(CopyTexSubImage1DEXT, 325, CopyTexSubImage1DEXT@24, CopyTexSubImage1D, CopyTexSubImage1D@24)
+ GL_STUB_ALIAS(CopyTexSubImage2DEXT, 326, CopyTexSubImage2DEXT@32, CopyTexSubImage2D, CopyTexSubImage2D@32)
#ifndef GLX_INDIRECT_RENDERING
- GL_STUB_ALIAS(DeleteTexturesEXT, _gloffset_DeleteTextures, DeleteTexturesEXT@8, DeleteTextures, DeleteTextures@8)
+ GL_STUB_ALIAS(DeleteTexturesEXT, 327, DeleteTexturesEXT@8, DeleteTextures, DeleteTextures@8)
#endif
#ifndef GLX_INDIRECT_RENDERING
- GL_STUB_ALIAS(GenTexturesEXT, _gloffset_GenTextures, GenTexturesEXT@8, GenTextures, GenTextures@8)
+ GL_STUB_ALIAS(GenTexturesEXT, 328, GenTexturesEXT@8, GenTextures, GenTextures@8)
#endif
- GL_STUB_ALIAS(GetPointervEXT, _gloffset_GetPointerv, GetPointervEXT@8, GetPointerv, GetPointerv@8)
+ GL_STUB_ALIAS(GetPointervEXT, 329, GetPointervEXT@8, GetPointerv, GetPointerv@8)
#ifndef GLX_INDIRECT_RENDERING
- GL_STUB_ALIAS(IsTextureEXT, _gloffset_IsTexture, IsTextureEXT@4, IsTexture, IsTexture@4)
+ GL_STUB_ALIAS(IsTextureEXT, 330, 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)
+ GL_STUB_ALIAS(PrioritizeTexturesEXT, 331, PrioritizeTexturesEXT@12, PrioritizeTextures, PrioritizeTextures@12)
+ GL_STUB_ALIAS(TexSubImage1DEXT, 332, TexSubImage1DEXT@28, TexSubImage1D, TexSubImage1D@28)
+ GL_STUB_ALIAS(TexSubImage2DEXT, 333, TexSubImage2DEXT@36, TexSubImage2D, TexSubImage2D@36)
+ GL_STUB_ALIAS(BlendColorEXT, 336, BlendColorEXT@16, BlendColor, BlendColor@16)
+ GL_STUB_ALIAS(BlendEquationEXT, 337, BlendEquationEXT@4, BlendEquation, BlendEquation@4)
+ GL_STUB_ALIAS(DrawRangeElementsEXT, 338, DrawRangeElementsEXT@24, DrawRangeElements, DrawRangeElements@24)
+ GL_STUB_ALIAS(ColorTableEXT, 339, ColorTableEXT@24, ColorTable, ColorTable@24)
#ifndef GLX_INDIRECT_RENDERING
- GL_STUB_ALIAS(GetColorTableEXT, _gloffset_GetColorTable, GetColorTableEXT@16, GetColorTable, GetColorTable@16)
+ GL_STUB_ALIAS(GetColorTableEXT, 343, GetColorTableEXT@16, GetColorTable, GetColorTable@16)
#endif
#ifndef GLX_INDIRECT_RENDERING
- GL_STUB_ALIAS(GetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv, GetColorTableParameterfvEXT@12, GetColorTableParameterfv, GetColorTableParameterfv@12)
+ GL_STUB_ALIAS(GetColorTableParameterfvEXT, 344, GetColorTableParameterfvEXT@12, GetColorTableParameterfv, GetColorTableParameterfv@12)
#endif
#ifndef GLX_INDIRECT_RENDERING
- GL_STUB_ALIAS(GetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv, GetColorTableParameterivEXT@12, GetColorTableParameteriv, GetColorTableParameteriv@12)
+ GL_STUB_ALIAS(GetColorTableParameterivEXT, 345, 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_765, _dispatch_stub_765@8)
- GL_STUB_ALIAS(IsVertexArray, _gloffset_IsVertexArrayAPPLE, IsVertexArray@4, _dispatch_stub_767, _dispatch_stub_767@4)
- GL_STUB_ALIAS(BlendEquationSeparate, _gloffset_BlendEquationSeparateEXT, BlendEquationSeparate@8, _dispatch_stub_777, _dispatch_stub_777@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_795, _dispatch_stub_795@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)
+ GL_STUB_ALIAS(TexImage3DEXT, 371, TexImage3DEXT@40, TexImage3D, TexImage3D@40)
+ GL_STUB_ALIAS(TexSubImage3DEXT, 372, TexSubImage3DEXT@44, TexSubImage3D, TexSubImage3D@44)
+ GL_STUB_ALIAS(CopyTexSubImage3DEXT, 373, CopyTexSubImage3DEXT@36, CopyTexSubImage3D, CopyTexSubImage3D@36)
+ GL_STUB_ALIAS(ActiveTexture, 374, ActiveTexture@4, ActiveTextureARB, ActiveTextureARB@4)
+ GL_STUB_ALIAS(ClientActiveTexture, 375, ClientActiveTexture@4, ClientActiveTextureARB, ClientActiveTextureARB@4)
+ GL_STUB_ALIAS(MultiTexCoord1d, 376, MultiTexCoord1d@12, MultiTexCoord1dARB, MultiTexCoord1dARB@12)
+ GL_STUB_ALIAS(MultiTexCoord1dv, 377, MultiTexCoord1dv@8, MultiTexCoord1dvARB, MultiTexCoord1dvARB@8)
+ GL_STUB_ALIAS(MultiTexCoord1f, 378, MultiTexCoord1f@8, MultiTexCoord1fARB, MultiTexCoord1fARB@8)
+ GL_STUB_ALIAS(MultiTexCoord1fv, 379, MultiTexCoord1fv@8, MultiTexCoord1fvARB, MultiTexCoord1fvARB@8)
+ GL_STUB_ALIAS(MultiTexCoord1i, 380, MultiTexCoord1i@8, MultiTexCoord1iARB, MultiTexCoord1iARB@8)
+ GL_STUB_ALIAS(MultiTexCoord1iv, 381, MultiTexCoord1iv@8, MultiTexCoord1ivARB, MultiTexCoord1ivARB@8)
+ GL_STUB_ALIAS(MultiTexCoord1s, 382, MultiTexCoord1s@8, MultiTexCoord1sARB, MultiTexCoord1sARB@8)
+ GL_STUB_ALIAS(MultiTexCoord1sv, 383, MultiTexCoord1sv@8, MultiTexCoord1svARB, MultiTexCoord1svARB@8)
+ GL_STUB_ALIAS(MultiTexCoord2d, 384, MultiTexCoord2d@20, MultiTexCoord2dARB, MultiTexCoord2dARB@20)
+ GL_STUB_ALIAS(MultiTexCoord2dv, 385, MultiTexCoord2dv@8, MultiTexCoord2dvARB, MultiTexCoord2dvARB@8)
+ GL_STUB_ALIAS(MultiTexCoord2f, 386, MultiTexCoord2f@12, MultiTexCoord2fARB, MultiTexCoord2fARB@12)
+ GL_STUB_ALIAS(MultiTexCoord2fv, 387, MultiTexCoord2fv@8, MultiTexCoord2fvARB, MultiTexCoord2fvARB@8)
+ GL_STUB_ALIAS(MultiTexCoord2i, 388, MultiTexCoord2i@12, MultiTexCoord2iARB, MultiTexCoord2iARB@12)
+ GL_STUB_ALIAS(MultiTexCoord2iv, 389, MultiTexCoord2iv@8, MultiTexCoord2ivARB, MultiTexCoord2ivARB@8)
+ GL_STUB_ALIAS(MultiTexCoord2s, 390, MultiTexCoord2s@12, MultiTexCoord2sARB, MultiTexCoord2sARB@12)
+ GL_STUB_ALIAS(MultiTexCoord2sv, 391, MultiTexCoord2sv@8, MultiTexCoord2svARB, MultiTexCoord2svARB@8)
+ GL_STUB_ALIAS(MultiTexCoord3d, 392, MultiTexCoord3d@28, MultiTexCoord3dARB, MultiTexCoord3dARB@28)
+ GL_STUB_ALIAS(MultiTexCoord3dv, 393, MultiTexCoord3dv@8, MultiTexCoord3dvARB, MultiTexCoord3dvARB@8)
+ GL_STUB_ALIAS(MultiTexCoord3f, 394, MultiTexCoord3f@16, MultiTexCoord3fARB, MultiTexCoord3fARB@16)
+ GL_STUB_ALIAS(MultiTexCoord3fv, 395, MultiTexCoord3fv@8, MultiTexCoord3fvARB, MultiTexCoord3fvARB@8)
+ GL_STUB_ALIAS(MultiTexCoord3i, 396, MultiTexCoord3i@16, MultiTexCoord3iARB, MultiTexCoord3iARB@16)
+ GL_STUB_ALIAS(MultiTexCoord3iv, 397, MultiTexCoord3iv@8, MultiTexCoord3ivARB, MultiTexCoord3ivARB@8)
+ GL_STUB_ALIAS(MultiTexCoord3s, 398, MultiTexCoord3s@16, MultiTexCoord3sARB, MultiTexCoord3sARB@16)
+ GL_STUB_ALIAS(MultiTexCoord3sv, 399, MultiTexCoord3sv@8, MultiTexCoord3svARB, MultiTexCoord3svARB@8)
+ GL_STUB_ALIAS(MultiTexCoord4d, 400, MultiTexCoord4d@36, MultiTexCoord4dARB, MultiTexCoord4dARB@36)
+ GL_STUB_ALIAS(MultiTexCoord4dv, 401, MultiTexCoord4dv@8, MultiTexCoord4dvARB, MultiTexCoord4dvARB@8)
+ GL_STUB_ALIAS(MultiTexCoord4f, 402, MultiTexCoord4f@20, MultiTexCoord4fARB, MultiTexCoord4fARB@20)
+ GL_STUB_ALIAS(MultiTexCoord4fv, 403, MultiTexCoord4fv@8, MultiTexCoord4fvARB, MultiTexCoord4fvARB@8)
+ GL_STUB_ALIAS(MultiTexCoord4i, 404, MultiTexCoord4i@20, MultiTexCoord4iARB, MultiTexCoord4iARB@20)
+ GL_STUB_ALIAS(MultiTexCoord4iv, 405, MultiTexCoord4iv@8, MultiTexCoord4ivARB, MultiTexCoord4ivARB@8)
+ GL_STUB_ALIAS(MultiTexCoord4s, 406, MultiTexCoord4s@20, MultiTexCoord4sARB, MultiTexCoord4sARB@20)
+ GL_STUB_ALIAS(MultiTexCoord4sv, 407, MultiTexCoord4sv@8, MultiTexCoord4svARB, MultiTexCoord4svARB@8)
+ GL_STUB_ALIAS(LoadTransposeMatrixd, 441, LoadTransposeMatrixd@4, LoadTransposeMatrixdARB, LoadTransposeMatrixdARB@4)
+ GL_STUB_ALIAS(LoadTransposeMatrixf, 442, LoadTransposeMatrixf@4, LoadTransposeMatrixfARB, LoadTransposeMatrixfARB@4)
+ GL_STUB_ALIAS(MultTransposeMatrixd, 443, MultTransposeMatrixd@4, MultTransposeMatrixdARB, MultTransposeMatrixdARB@4)
+ GL_STUB_ALIAS(MultTransposeMatrixf, 444, MultTransposeMatrixf@4, MultTransposeMatrixfARB, MultTransposeMatrixfARB@4)
+ GL_STUB_ALIAS(SampleCoverage, 445, SampleCoverage@8, SampleCoverageARB, SampleCoverageARB@8)
+ GL_STUB_ALIAS(CompressedTexImage1D, 446, CompressedTexImage1D@28, CompressedTexImage1DARB, CompressedTexImage1DARB@28)
+ GL_STUB_ALIAS(CompressedTexImage2D, 447, CompressedTexImage2D@32, CompressedTexImage2DARB, CompressedTexImage2DARB@32)
+ GL_STUB_ALIAS(CompressedTexImage3D, 448, CompressedTexImage3D@36, CompressedTexImage3DARB, CompressedTexImage3DARB@36)
+ GL_STUB_ALIAS(CompressedTexSubImage1D, 449, CompressedTexSubImage1D@28, CompressedTexSubImage1DARB, CompressedTexSubImage1DARB@28)
+ GL_STUB_ALIAS(CompressedTexSubImage2D, 450, CompressedTexSubImage2D@36, CompressedTexSubImage2DARB, CompressedTexSubImage2DARB@36)
+ GL_STUB_ALIAS(CompressedTexSubImage3D, 451, CompressedTexSubImage3D@44, CompressedTexSubImage3DARB, CompressedTexSubImage3DARB@44)
+ GL_STUB_ALIAS(GetCompressedTexImage, 452, GetCompressedTexImage@12, GetCompressedTexImageARB, GetCompressedTexImageARB@12)
+ GL_STUB_ALIAS(DisableVertexAttribArray, 453, DisableVertexAttribArray@4, DisableVertexAttribArrayARB, DisableVertexAttribArrayARB@4)
+ GL_STUB_ALIAS(EnableVertexAttribArray, 454, EnableVertexAttribArray@4, EnableVertexAttribArrayARB, EnableVertexAttribArrayARB@4)
+ GL_STUB_ALIAS(GetVertexAttribdv, 461, GetVertexAttribdv@12, GetVertexAttribdvARB, GetVertexAttribdvARB@12)
+ GL_STUB_ALIAS(GetVertexAttribfv, 462, GetVertexAttribfv@12, GetVertexAttribfvARB, GetVertexAttribfvARB@12)
+ GL_STUB_ALIAS(GetVertexAttribiv, 463, GetVertexAttribiv@12, GetVertexAttribivARB, GetVertexAttribivARB@12)
+ GL_STUB_ALIAS(ProgramParameter4dNV, 464, ProgramParameter4dNV@40, ProgramEnvParameter4dARB, ProgramEnvParameter4dARB@40)
+ GL_STUB_ALIAS(ProgramParameter4dvNV, 465, ProgramParameter4dvNV@12, ProgramEnvParameter4dvARB, ProgramEnvParameter4dvARB@12)
+ GL_STUB_ALIAS(ProgramParameter4fNV, 466, ProgramParameter4fNV@24, ProgramEnvParameter4fARB, ProgramEnvParameter4fARB@24)
+ GL_STUB_ALIAS(ProgramParameter4fvNV, 467, ProgramParameter4fvNV@12, ProgramEnvParameter4fvARB, ProgramEnvParameter4fvARB@12)
+ GL_STUB_ALIAS(VertexAttrib1d, 473, VertexAttrib1d@12, VertexAttrib1dARB, VertexAttrib1dARB@12)
+ GL_STUB_ALIAS(VertexAttrib1dv, 474, VertexAttrib1dv@8, VertexAttrib1dvARB, VertexAttrib1dvARB@8)
+ GL_STUB_ALIAS(VertexAttrib1f, 475, VertexAttrib1f@8, VertexAttrib1fARB, VertexAttrib1fARB@8)
+ GL_STUB_ALIAS(VertexAttrib1fv, 476, VertexAttrib1fv@8, VertexAttrib1fvARB, VertexAttrib1fvARB@8)
+ GL_STUB_ALIAS(VertexAttrib1s, 477, VertexAttrib1s@8, VertexAttrib1sARB, VertexAttrib1sARB@8)
+ GL_STUB_ALIAS(VertexAttrib1sv, 478, VertexAttrib1sv@8, VertexAttrib1svARB, VertexAttrib1svARB@8)
+ GL_STUB_ALIAS(VertexAttrib2d, 479, VertexAttrib2d@20, VertexAttrib2dARB, VertexAttrib2dARB@20)
+ GL_STUB_ALIAS(VertexAttrib2dv, 480, VertexAttrib2dv@8, VertexAttrib2dvARB, VertexAttrib2dvARB@8)
+ GL_STUB_ALIAS(VertexAttrib2f, 481, VertexAttrib2f@12, VertexAttrib2fARB, VertexAttrib2fARB@12)
+ GL_STUB_ALIAS(VertexAttrib2fv, 482, VertexAttrib2fv@8, VertexAttrib2fvARB, VertexAttrib2fvARB@8)
+ GL_STUB_ALIAS(VertexAttrib2s, 483, VertexAttrib2s@12, VertexAttrib2sARB, VertexAttrib2sARB@12)
+ GL_STUB_ALIAS(VertexAttrib2sv, 484, VertexAttrib2sv@8, VertexAttrib2svARB, VertexAttrib2svARB@8)
+ GL_STUB_ALIAS(VertexAttrib3d, 485, VertexAttrib3d@28, VertexAttrib3dARB, VertexAttrib3dARB@28)
+ GL_STUB_ALIAS(VertexAttrib3dv, 486, VertexAttrib3dv@8, VertexAttrib3dvARB, VertexAttrib3dvARB@8)
+ GL_STUB_ALIAS(VertexAttrib3f, 487, VertexAttrib3f@16, VertexAttrib3fARB, VertexAttrib3fARB@16)
+ GL_STUB_ALIAS(VertexAttrib3fv, 488, VertexAttrib3fv@8, VertexAttrib3fvARB, VertexAttrib3fvARB@8)
+ GL_STUB_ALIAS(VertexAttrib3s, 489, VertexAttrib3s@16, VertexAttrib3sARB, VertexAttrib3sARB@16)
+ GL_STUB_ALIAS(VertexAttrib3sv, 490, VertexAttrib3sv@8, VertexAttrib3svARB, VertexAttrib3svARB@8)
+ GL_STUB_ALIAS(VertexAttrib4Nbv, 491, VertexAttrib4Nbv@8, VertexAttrib4NbvARB, VertexAttrib4NbvARB@8)
+ GL_STUB_ALIAS(VertexAttrib4Niv, 492, VertexAttrib4Niv@8, VertexAttrib4NivARB, VertexAttrib4NivARB@8)
+ GL_STUB_ALIAS(VertexAttrib4Nsv, 493, VertexAttrib4Nsv@8, VertexAttrib4NsvARB, VertexAttrib4NsvARB@8)
+ GL_STUB_ALIAS(VertexAttrib4Nub, 494, VertexAttrib4Nub@20, VertexAttrib4NubARB, VertexAttrib4NubARB@20)
+ GL_STUB_ALIAS(VertexAttrib4Nubv, 495, VertexAttrib4Nubv@8, VertexAttrib4NubvARB, VertexAttrib4NubvARB@8)
+ GL_STUB_ALIAS(VertexAttrib4Nuiv, 496, VertexAttrib4Nuiv@8, VertexAttrib4NuivARB, VertexAttrib4NuivARB@8)
+ GL_STUB_ALIAS(VertexAttrib4Nusv, 497, VertexAttrib4Nusv@8, VertexAttrib4NusvARB, VertexAttrib4NusvARB@8)
+ GL_STUB_ALIAS(VertexAttrib4bv, 498, VertexAttrib4bv@8, VertexAttrib4bvARB, VertexAttrib4bvARB@8)
+ GL_STUB_ALIAS(VertexAttrib4d, 499, VertexAttrib4d@36, VertexAttrib4dARB, VertexAttrib4dARB@36)
+ GL_STUB_ALIAS(VertexAttrib4dv, 500, VertexAttrib4dv@8, VertexAttrib4dvARB, VertexAttrib4dvARB@8)
+ GL_STUB_ALIAS(VertexAttrib4f, 501, VertexAttrib4f@20, VertexAttrib4fARB, VertexAttrib4fARB@20)
+ GL_STUB_ALIAS(VertexAttrib4fv, 502, VertexAttrib4fv@8, VertexAttrib4fvARB, VertexAttrib4fvARB@8)
+ GL_STUB_ALIAS(VertexAttrib4iv, 503, VertexAttrib4iv@8, VertexAttrib4ivARB, VertexAttrib4ivARB@8)
+ GL_STUB_ALIAS(VertexAttrib4s, 504, VertexAttrib4s@20, VertexAttrib4sARB, VertexAttrib4sARB@20)
+ GL_STUB_ALIAS(VertexAttrib4sv, 505, VertexAttrib4sv@8, VertexAttrib4svARB, VertexAttrib4svARB@8)
+ GL_STUB_ALIAS(VertexAttrib4ubv, 506, VertexAttrib4ubv@8, VertexAttrib4ubvARB, VertexAttrib4ubvARB@8)
+ GL_STUB_ALIAS(VertexAttrib4uiv, 507, VertexAttrib4uiv@8, VertexAttrib4uivARB, VertexAttrib4uivARB@8)
+ GL_STUB_ALIAS(VertexAttrib4usv, 508, VertexAttrib4usv@8, VertexAttrib4usvARB, VertexAttrib4usvARB@8)
+ GL_STUB_ALIAS(VertexAttribPointer, 509, VertexAttribPointer@24, VertexAttribPointerARB, VertexAttribPointerARB@24)
+ GL_STUB_ALIAS(BindBuffer, 510, BindBuffer@8, BindBufferARB, BindBufferARB@8)
+ GL_STUB_ALIAS(BufferData, 511, BufferData@16, BufferDataARB, BufferDataARB@16)
+ GL_STUB_ALIAS(BufferSubData, 512, BufferSubData@16, BufferSubDataARB, BufferSubDataARB@16)
+ GL_STUB_ALIAS(DeleteBuffers, 513, DeleteBuffers@8, DeleteBuffersARB, DeleteBuffersARB@8)
+ GL_STUB_ALIAS(GenBuffers, 514, GenBuffers@8, GenBuffersARB, GenBuffersARB@8)
+ GL_STUB_ALIAS(GetBufferParameteriv, 515, GetBufferParameteriv@12, GetBufferParameterivARB, GetBufferParameterivARB@12)
+ GL_STUB_ALIAS(GetBufferPointerv, 516, GetBufferPointerv@12, GetBufferPointervARB, GetBufferPointervARB@12)
+ GL_STUB_ALIAS(GetBufferSubData, 517, GetBufferSubData@16, GetBufferSubDataARB, GetBufferSubDataARB@16)
+ GL_STUB_ALIAS(IsBuffer, 518, IsBuffer@4, IsBufferARB, IsBufferARB@4)
+ GL_STUB_ALIAS(MapBuffer, 519, MapBuffer@8, MapBufferARB, MapBufferARB@8)
+ GL_STUB_ALIAS(UnmapBuffer, 520, UnmapBuffer@4, UnmapBufferARB, UnmapBufferARB@4)
+ GL_STUB_ALIAS(BeginQuery, 521, BeginQuery@8, BeginQueryARB, BeginQueryARB@8)
+ GL_STUB_ALIAS(DeleteQueries, 522, DeleteQueries@8, DeleteQueriesARB, DeleteQueriesARB@8)
+ GL_STUB_ALIAS(EndQuery, 523, EndQuery@4, EndQueryARB, EndQueryARB@4)
+ GL_STUB_ALIAS(GenQueries, 524, GenQueries@8, GenQueriesARB, GenQueriesARB@8)
+ GL_STUB_ALIAS(GetQueryObjectiv, 525, GetQueryObjectiv@12, GetQueryObjectivARB, GetQueryObjectivARB@12)
+ GL_STUB_ALIAS(GetQueryObjectuiv, 526, GetQueryObjectuiv@12, GetQueryObjectuivARB, GetQueryObjectuivARB@12)
+ GL_STUB_ALIAS(GetQueryiv, 527, GetQueryiv@12, GetQueryivARB, GetQueryivARB@12)
+ GL_STUB_ALIAS(IsQuery, 528, IsQuery@4, IsQueryARB, IsQueryARB@4)
+ GL_STUB_ALIAS(CompileShader, 530, CompileShader@4, CompileShaderARB, CompileShaderARB@4)
+ GL_STUB_ALIAS(GetActiveUniform, 535, GetActiveUniform@28, GetActiveUniformARB, GetActiveUniformARB@28)
+ GL_STUB_ALIAS(GetShaderSource, 541, GetShaderSource@16, GetShaderSourceARB, GetShaderSourceARB@16)
+ GL_STUB_ALIAS(GetUniformLocation, 542, GetUniformLocation@8, GetUniformLocationARB, GetUniformLocationARB@8)
+ GL_STUB_ALIAS(GetUniformfv, 543, GetUniformfv@12, GetUniformfvARB, GetUniformfvARB@12)
+ GL_STUB_ALIAS(GetUniformiv, 544, GetUniformiv@12, GetUniformivARB, GetUniformivARB@12)
+ GL_STUB_ALIAS(LinkProgram, 545, LinkProgram@4, LinkProgramARB, LinkProgramARB@4)
+ GL_STUB_ALIAS(ShaderSource, 546, ShaderSource@16, ShaderSourceARB, ShaderSourceARB@16)
+ GL_STUB_ALIAS(Uniform1f, 547, Uniform1f@8, Uniform1fARB, Uniform1fARB@8)
+ GL_STUB_ALIAS(Uniform1fv, 548, Uniform1fv@12, Uniform1fvARB, Uniform1fvARB@12)
+ GL_STUB_ALIAS(Uniform1i, 549, Uniform1i@8, Uniform1iARB, Uniform1iARB@8)
+ GL_STUB_ALIAS(Uniform1iv, 550, Uniform1iv@12, Uniform1ivARB, Uniform1ivARB@12)
+ GL_STUB_ALIAS(Uniform2f, 551, Uniform2f@12, Uniform2fARB, Uniform2fARB@12)
+ GL_STUB_ALIAS(Uniform2fv, 552, Uniform2fv@12, Uniform2fvARB, Uniform2fvARB@12)
+ GL_STUB_ALIAS(Uniform2i, 553, Uniform2i@12, Uniform2iARB, Uniform2iARB@12)
+ GL_STUB_ALIAS(Uniform2iv, 554, Uniform2iv@12, Uniform2ivARB, Uniform2ivARB@12)
+ GL_STUB_ALIAS(Uniform3f, 555, Uniform3f@16, Uniform3fARB, Uniform3fARB@16)
+ GL_STUB_ALIAS(Uniform3fv, 556, Uniform3fv@12, Uniform3fvARB, Uniform3fvARB@12)
+ GL_STUB_ALIAS(Uniform3i, 557, Uniform3i@16, Uniform3iARB, Uniform3iARB@16)
+ GL_STUB_ALIAS(Uniform3iv, 558, Uniform3iv@12, Uniform3ivARB, Uniform3ivARB@12)
+ GL_STUB_ALIAS(Uniform4f, 559, Uniform4f@20, Uniform4fARB, Uniform4fARB@20)
+ GL_STUB_ALIAS(Uniform4fv, 560, Uniform4fv@12, Uniform4fvARB, Uniform4fvARB@12)
+ GL_STUB_ALIAS(Uniform4i, 561, Uniform4i@20, Uniform4iARB, Uniform4iARB@20)
+ GL_STUB_ALIAS(Uniform4iv, 562, Uniform4iv@12, Uniform4ivARB, Uniform4ivARB@12)
+ GL_STUB_ALIAS(UniformMatrix2fv, 563, UniformMatrix2fv@16, UniformMatrix2fvARB, UniformMatrix2fvARB@16)
+ GL_STUB_ALIAS(UniformMatrix3fv, 564, UniformMatrix3fv@16, UniformMatrix3fvARB, UniformMatrix3fvARB@16)
+ GL_STUB_ALIAS(UniformMatrix4fv, 565, UniformMatrix4fv@16, UniformMatrix4fvARB, UniformMatrix4fvARB@16)
+ GL_STUB_ALIAS(UseProgram, 566, UseProgram@4, UseProgramObjectARB, UseProgramObjectARB@4)
+ GL_STUB_ALIAS(ValidateProgram, 567, ValidateProgram@4, ValidateProgramARB, ValidateProgramARB@4)
+ GL_STUB_ALIAS(BindAttribLocation, 568, BindAttribLocation@12, BindAttribLocationARB, BindAttribLocationARB@12)
+ GL_STUB_ALIAS(GetActiveAttrib, 569, GetActiveAttrib@28, GetActiveAttribARB, GetActiveAttribARB@28)
+ GL_STUB_ALIAS(GetAttribLocation, 570, GetAttribLocation@8, GetAttribLocationARB, GetAttribLocationARB@8)
+ GL_STUB_ALIAS(DrawBuffers, 571, DrawBuffers@8, DrawBuffersARB, DrawBuffersARB@8)
+ GL_STUB_ALIAS(DrawBuffersATI, 571, DrawBuffersATI@8, DrawBuffersARB, DrawBuffersARB@8)
+ GL_STUB_ALIAS(DrawArraysInstancedEXT, 572, DrawArraysInstancedEXT@16, DrawArraysInstancedARB, DrawArraysInstancedARB@16)
+ GL_STUB_ALIAS(DrawArraysInstanced, 572, DrawArraysInstanced@16, DrawArraysInstancedARB, DrawArraysInstancedARB@16)
+ GL_STUB_ALIAS(DrawElementsInstancedEXT, 573, DrawElementsInstancedEXT@20, DrawElementsInstancedARB, DrawElementsInstancedARB@20)
+ GL_STUB_ALIAS(DrawElementsInstanced, 573, DrawElementsInstanced@20, DrawElementsInstancedARB, DrawElementsInstancedARB@20)
+ GL_STUB_ALIAS(RenderbufferStorageMultisampleEXT, 574, RenderbufferStorageMultisampleEXT@20, RenderbufferStorageMultisample, RenderbufferStorageMultisample@20)
+ GL_STUB_ALIAS(PointParameterf, 615, PointParameterf@8, PointParameterfEXT, PointParameterfEXT@8)
+ GL_STUB_ALIAS(PointParameterfARB, 615, PointParameterfARB@8, PointParameterfEXT, PointParameterfEXT@8)
+ GL_STUB_ALIAS(PointParameterfv, 616, PointParameterfv@8, PointParameterfvEXT, PointParameterfvEXT@8)
+ GL_STUB_ALIAS(PointParameterfvARB, 616, PointParameterfvARB@8, PointParameterfvEXT, PointParameterfvEXT@8)
+ GL_STUB_ALIAS(SecondaryColor3b, 619, SecondaryColor3b@12, SecondaryColor3bEXT, SecondaryColor3bEXT@12)
+ GL_STUB_ALIAS(SecondaryColor3bv, 620, SecondaryColor3bv@4, SecondaryColor3bvEXT, SecondaryColor3bvEXT@4)
+ GL_STUB_ALIAS(SecondaryColor3d, 621, SecondaryColor3d@24, SecondaryColor3dEXT, SecondaryColor3dEXT@24)
+ GL_STUB_ALIAS(SecondaryColor3dv, 622, SecondaryColor3dv@4, SecondaryColor3dvEXT, SecondaryColor3dvEXT@4)
+ GL_STUB_ALIAS(SecondaryColor3f, 623, SecondaryColor3f@12, SecondaryColor3fEXT, SecondaryColor3fEXT@12)
+ GL_STUB_ALIAS(SecondaryColor3fv, 624, SecondaryColor3fv@4, SecondaryColor3fvEXT, SecondaryColor3fvEXT@4)
+ GL_STUB_ALIAS(SecondaryColor3i, 625, SecondaryColor3i@12, SecondaryColor3iEXT, SecondaryColor3iEXT@12)
+ GL_STUB_ALIAS(SecondaryColor3iv, 626, SecondaryColor3iv@4, SecondaryColor3ivEXT, SecondaryColor3ivEXT@4)
+ GL_STUB_ALIAS(SecondaryColor3s, 627, SecondaryColor3s@12, SecondaryColor3sEXT, SecondaryColor3sEXT@12)
+ GL_STUB_ALIAS(SecondaryColor3sv, 628, SecondaryColor3sv@4, SecondaryColor3svEXT, SecondaryColor3svEXT@4)
+ GL_STUB_ALIAS(SecondaryColor3ub, 629, SecondaryColor3ub@12, SecondaryColor3ubEXT, SecondaryColor3ubEXT@12)
+ GL_STUB_ALIAS(SecondaryColor3ubv, 630, SecondaryColor3ubv@4, SecondaryColor3ubvEXT, SecondaryColor3ubvEXT@4)
+ GL_STUB_ALIAS(SecondaryColor3ui, 631, SecondaryColor3ui@12, SecondaryColor3uiEXT, SecondaryColor3uiEXT@12)
+ GL_STUB_ALIAS(SecondaryColor3uiv, 632, SecondaryColor3uiv@4, SecondaryColor3uivEXT, SecondaryColor3uivEXT@4)
+ GL_STUB_ALIAS(SecondaryColor3us, 633, SecondaryColor3us@12, SecondaryColor3usEXT, SecondaryColor3usEXT@12)
+ GL_STUB_ALIAS(SecondaryColor3usv, 634, SecondaryColor3usv@4, SecondaryColor3usvEXT, SecondaryColor3usvEXT@4)
+ GL_STUB_ALIAS(SecondaryColorPointer, 635, SecondaryColorPointer@16, SecondaryColorPointerEXT, SecondaryColorPointerEXT@16)
+ GL_STUB_ALIAS(MultiDrawArrays, 636, MultiDrawArrays@16, MultiDrawArraysEXT, MultiDrawArraysEXT@16)
+ GL_STUB_ALIAS(MultiDrawElements, 637, MultiDrawElements@20, MultiDrawElementsEXT, MultiDrawElementsEXT@20)
+ GL_STUB_ALIAS(FogCoordPointer, 638, FogCoordPointer@12, FogCoordPointerEXT, FogCoordPointerEXT@12)
+ GL_STUB_ALIAS(FogCoordd, 639, FogCoordd@8, FogCoorddEXT, FogCoorddEXT@8)
+ GL_STUB_ALIAS(FogCoorddv, 640, FogCoorddv@4, FogCoorddvEXT, FogCoorddvEXT@4)
+ GL_STUB_ALIAS(FogCoordf, 641, FogCoordf@4, FogCoordfEXT, FogCoordfEXT@4)
+ GL_STUB_ALIAS(FogCoordfv, 642, FogCoordfv@4, FogCoordfvEXT, FogCoordfvEXT@4)
+ GL_STUB_ALIAS(BlendFuncSeparate, 644, BlendFuncSeparate@16, BlendFuncSeparateEXT, BlendFuncSeparateEXT@16)
+ GL_STUB_ALIAS(WindowPos2d, 661, WindowPos2d@16, WindowPos2dMESA, WindowPos2dMESA@16)
+ GL_STUB_ALIAS(WindowPos2dARB, 661, WindowPos2dARB@16, WindowPos2dMESA, WindowPos2dMESA@16)
+ GL_STUB_ALIAS(WindowPos2dv, 662, WindowPos2dv@4, WindowPos2dvMESA, WindowPos2dvMESA@4)
+ GL_STUB_ALIAS(WindowPos2dvARB, 662, WindowPos2dvARB@4, WindowPos2dvMESA, WindowPos2dvMESA@4)
+ GL_STUB_ALIAS(WindowPos2f, 663, WindowPos2f@8, WindowPos2fMESA, WindowPos2fMESA@8)
+ GL_STUB_ALIAS(WindowPos2fARB, 663, WindowPos2fARB@8, WindowPos2fMESA, WindowPos2fMESA@8)
+ GL_STUB_ALIAS(WindowPos2fv, 664, WindowPos2fv@4, WindowPos2fvMESA, WindowPos2fvMESA@4)
+ GL_STUB_ALIAS(WindowPos2fvARB, 664, WindowPos2fvARB@4, WindowPos2fvMESA, WindowPos2fvMESA@4)
+ GL_STUB_ALIAS(WindowPos2i, 665, WindowPos2i@8, WindowPos2iMESA, WindowPos2iMESA@8)
+ GL_STUB_ALIAS(WindowPos2iARB, 665, WindowPos2iARB@8, WindowPos2iMESA, WindowPos2iMESA@8)
+ GL_STUB_ALIAS(WindowPos2iv, 666, WindowPos2iv@4, WindowPos2ivMESA, WindowPos2ivMESA@4)
+ GL_STUB_ALIAS(WindowPos2ivARB, 666, WindowPos2ivARB@4, WindowPos2ivMESA, WindowPos2ivMESA@4)
+ GL_STUB_ALIAS(WindowPos2s, 667, WindowPos2s@8, WindowPos2sMESA, WindowPos2sMESA@8)
+ GL_STUB_ALIAS(WindowPos2sARB, 667, WindowPos2sARB@8, WindowPos2sMESA, WindowPos2sMESA@8)
+ GL_STUB_ALIAS(WindowPos2sv, 668, WindowPos2sv@4, WindowPos2svMESA, WindowPos2svMESA@4)
+ GL_STUB_ALIAS(WindowPos2svARB, 668, WindowPos2svARB@4, WindowPos2svMESA, WindowPos2svMESA@4)
+ GL_STUB_ALIAS(WindowPos3d, 669, WindowPos3d@24, WindowPos3dMESA, WindowPos3dMESA@24)
+ GL_STUB_ALIAS(WindowPos3dARB, 669, WindowPos3dARB@24, WindowPos3dMESA, WindowPos3dMESA@24)
+ GL_STUB_ALIAS(WindowPos3dv, 670, WindowPos3dv@4, WindowPos3dvMESA, WindowPos3dvMESA@4)
+ GL_STUB_ALIAS(WindowPos3dvARB, 670, WindowPos3dvARB@4, WindowPos3dvMESA, WindowPos3dvMESA@4)
+ GL_STUB_ALIAS(WindowPos3f, 671, WindowPos3f@12, WindowPos3fMESA, WindowPos3fMESA@12)
+ GL_STUB_ALIAS(WindowPos3fARB, 671, WindowPos3fARB@12, WindowPos3fMESA, WindowPos3fMESA@12)
+ GL_STUB_ALIAS(WindowPos3fv, 672, WindowPos3fv@4, WindowPos3fvMESA, WindowPos3fvMESA@4)
+ GL_STUB_ALIAS(WindowPos3fvARB, 672, WindowPos3fvARB@4, WindowPos3fvMESA, WindowPos3fvMESA@4)
+ GL_STUB_ALIAS(WindowPos3i, 673, WindowPos3i@12, WindowPos3iMESA, WindowPos3iMESA@12)
+ GL_STUB_ALIAS(WindowPos3iARB, 673, WindowPos3iARB@12, WindowPos3iMESA, WindowPos3iMESA@12)
+ GL_STUB_ALIAS(WindowPos3iv, 674, WindowPos3iv@4, WindowPos3ivMESA, WindowPos3ivMESA@4)
+ GL_STUB_ALIAS(WindowPos3ivARB, 674, WindowPos3ivARB@4, WindowPos3ivMESA, WindowPos3ivMESA@4)
+ GL_STUB_ALIAS(WindowPos3s, 675, WindowPos3s@12, WindowPos3sMESA, WindowPos3sMESA@12)
+ GL_STUB_ALIAS(WindowPos3sARB, 675, WindowPos3sARB@12, WindowPos3sMESA, WindowPos3sMESA@12)
+ GL_STUB_ALIAS(WindowPos3sv, 676, WindowPos3sv@4, WindowPos3svMESA, WindowPos3svMESA@4)
+ GL_STUB_ALIAS(WindowPos3svARB, 676, WindowPos3svARB@4, WindowPos3svMESA, WindowPos3svMESA@4)
+ GL_STUB_ALIAS(BindProgramARB, 695, BindProgramARB@8, BindProgramNV, BindProgramNV@8)
+ GL_STUB_ALIAS(DeleteProgramsARB, 696, DeleteProgramsARB@8, DeleteProgramsNV, DeleteProgramsNV@8)
+ GL_STUB_ALIAS(GenProgramsARB, 698, GenProgramsARB@8, GenProgramsNV, GenProgramsNV@8)
+ GL_STUB_ALIAS(GetVertexAttribPointerv, 704, GetVertexAttribPointerv@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12)
+ GL_STUB_ALIAS(GetVertexAttribPointervARB, 704, GetVertexAttribPointervARB@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12)
+ GL_STUB_ALIAS(IsProgramARB, 708, IsProgramARB@4, IsProgramNV, IsProgramNV@4)
+ GL_STUB_ALIAS(PointParameteri, 772, PointParameteri@8, PointParameteriNV, PointParameteriNV@8)
+ GL_STUB_ALIAS(PointParameteriv, 773, PointParameteriv@8, PointParameterivNV, PointParameterivNV@8)
+ GL_STUB_ALIAS(DeleteVertexArrays, 776, DeleteVertexArrays@8, _dispatch_stub_776, _dispatch_stub_776@8)
+ GL_STUB_ALIAS(IsVertexArray, 778, IsVertexArray@4, _dispatch_stub_778, _dispatch_stub_778@4)
+ GL_STUB_ALIAS(PrimitiveRestartIndex, 785, PrimitiveRestartIndex@4, PrimitiveRestartIndexNV, PrimitiveRestartIndexNV@4)
+ GL_STUB_ALIAS(BlendEquationSeparate, 788, BlendEquationSeparate@8, _dispatch_stub_788, _dispatch_stub_788@8)
+ GL_STUB_ALIAS(BindFramebuffer, 789, BindFramebuffer@8, BindFramebufferEXT, BindFramebufferEXT@8)
+ GL_STUB_ALIAS(BindRenderbuffer, 790, BindRenderbuffer@8, BindRenderbufferEXT, BindRenderbufferEXT@8)
+ GL_STUB_ALIAS(CheckFramebufferStatus, 791, CheckFramebufferStatus@4, CheckFramebufferStatusEXT, CheckFramebufferStatusEXT@4)
+ GL_STUB_ALIAS(DeleteFramebuffers, 792, DeleteFramebuffers@8, DeleteFramebuffersEXT, DeleteFramebuffersEXT@8)
+ GL_STUB_ALIAS(DeleteRenderbuffers, 793, DeleteRenderbuffers@8, DeleteRenderbuffersEXT, DeleteRenderbuffersEXT@8)
+ GL_STUB_ALIAS(FramebufferRenderbuffer, 794, FramebufferRenderbuffer@16, FramebufferRenderbufferEXT, FramebufferRenderbufferEXT@16)
+ GL_STUB_ALIAS(FramebufferTexture1D, 795, FramebufferTexture1D@20, FramebufferTexture1DEXT, FramebufferTexture1DEXT@20)
+ GL_STUB_ALIAS(FramebufferTexture2D, 796, FramebufferTexture2D@20, FramebufferTexture2DEXT, FramebufferTexture2DEXT@20)
+ GL_STUB_ALIAS(FramebufferTexture3D, 797, FramebufferTexture3D@24, FramebufferTexture3DEXT, FramebufferTexture3DEXT@24)
+ GL_STUB_ALIAS(GenFramebuffers, 798, GenFramebuffers@8, GenFramebuffersEXT, GenFramebuffersEXT@8)
+ GL_STUB_ALIAS(GenRenderbuffers, 799, GenRenderbuffers@8, GenRenderbuffersEXT, GenRenderbuffersEXT@8)
+ GL_STUB_ALIAS(GenerateMipmap, 800, GenerateMipmap@4, GenerateMipmapEXT, GenerateMipmapEXT@4)
+ GL_STUB_ALIAS(GetFramebufferAttachmentParameteriv, 801, GetFramebufferAttachmentParameteriv@16, GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameterivEXT@16)
+ GL_STUB_ALIAS(GetRenderbufferParameteriv, 802, GetRenderbufferParameteriv@12, GetRenderbufferParameterivEXT, GetRenderbufferParameterivEXT@12)
+ GL_STUB_ALIAS(IsFramebuffer, 803, IsFramebuffer@4, IsFramebufferEXT, IsFramebufferEXT@4)
+ GL_STUB_ALIAS(IsRenderbuffer, 804, IsRenderbuffer@4, IsRenderbufferEXT, IsRenderbufferEXT@4)
+ GL_STUB_ALIAS(RenderbufferStorage, 805, RenderbufferStorage@16, RenderbufferStorageEXT, RenderbufferStorageEXT@16)
+ GL_STUB_ALIAS(BlitFramebuffer, 806, BlitFramebuffer@40, _dispatch_stub_806, _dispatch_stub_806@40)
+ GL_STUB_ALIAS(BindFragDataLocation, 809, BindFragDataLocation@12, BindFragDataLocationEXT, BindFragDataLocationEXT@12)
+ GL_STUB_ALIAS(GetFragDataLocation, 810, GetFragDataLocation@8, GetFragDataLocationEXT, GetFragDataLocationEXT@8)
+ GL_STUB_ALIAS(GetUniformuiv, 811, GetUniformuiv@12, GetUniformuivEXT, GetUniformuivEXT@12)
+ GL_STUB_ALIAS(GetVertexAttribIiv, 812, GetVertexAttribIiv@12, GetVertexAttribIivEXT, GetVertexAttribIivEXT@12)
+ GL_STUB_ALIAS(GetVertexAttribIuiv, 813, GetVertexAttribIuiv@12, GetVertexAttribIuivEXT, GetVertexAttribIuivEXT@12)
+ GL_STUB_ALIAS(Uniform1ui, 814, Uniform1ui@8, Uniform1uiEXT, Uniform1uiEXT@8)
+ GL_STUB_ALIAS(Uniform1uiv, 815, Uniform1uiv@12, Uniform1uivEXT, Uniform1uivEXT@12)
+ GL_STUB_ALIAS(Uniform2ui, 816, Uniform2ui@12, Uniform2uiEXT, Uniform2uiEXT@12)
+ GL_STUB_ALIAS(Uniform2uiv, 817, Uniform2uiv@12, Uniform2uivEXT, Uniform2uivEXT@12)
+ GL_STUB_ALIAS(Uniform3ui, 818, Uniform3ui@16, Uniform3uiEXT, Uniform3uiEXT@16)
+ GL_STUB_ALIAS(Uniform3uiv, 819, Uniform3uiv@12, Uniform3uivEXT, Uniform3uivEXT@12)
+ GL_STUB_ALIAS(Uniform4ui, 820, Uniform4ui@20, Uniform4uiEXT, Uniform4uiEXT@20)
+ GL_STUB_ALIAS(Uniform4uiv, 821, Uniform4uiv@12, Uniform4uivEXT, Uniform4uivEXT@12)
+ GL_STUB_ALIAS(VertexAttribI1i, 822, VertexAttribI1i@8, VertexAttribI1iEXT, VertexAttribI1iEXT@8)
+ GL_STUB_ALIAS(VertexAttribI1iv, 823, VertexAttribI1iv@8, VertexAttribI1ivEXT, VertexAttribI1ivEXT@8)
+ GL_STUB_ALIAS(VertexAttribI1ui, 824, VertexAttribI1ui@8, VertexAttribI1uiEXT, VertexAttribI1uiEXT@8)
+ GL_STUB_ALIAS(VertexAttribI1uiv, 825, VertexAttribI1uiv@8, VertexAttribI1uivEXT, VertexAttribI1uivEXT@8)
+ GL_STUB_ALIAS(VertexAttribI2i, 826, VertexAttribI2i@12, VertexAttribI2iEXT, VertexAttribI2iEXT@12)
+ GL_STUB_ALIAS(VertexAttribI2iv, 827, VertexAttribI2iv@8, VertexAttribI2ivEXT, VertexAttribI2ivEXT@8)
+ GL_STUB_ALIAS(VertexAttribI2ui, 828, VertexAttribI2ui@12, VertexAttribI2uiEXT, VertexAttribI2uiEXT@12)
+ GL_STUB_ALIAS(VertexAttribI2uiv, 829, VertexAttribI2uiv@8, VertexAttribI2uivEXT, VertexAttribI2uivEXT@8)
+ GL_STUB_ALIAS(VertexAttribI3i, 830, VertexAttribI3i@16, VertexAttribI3iEXT, VertexAttribI3iEXT@16)
+ GL_STUB_ALIAS(VertexAttribI3iv, 831, VertexAttribI3iv@8, VertexAttribI3ivEXT, VertexAttribI3ivEXT@8)
+ GL_STUB_ALIAS(VertexAttribI3ui, 832, VertexAttribI3ui@16, VertexAttribI3uiEXT, VertexAttribI3uiEXT@16)
+ GL_STUB_ALIAS(VertexAttribI3uiv, 833, VertexAttribI3uiv@8, VertexAttribI3uivEXT, VertexAttribI3uivEXT@8)
+ GL_STUB_ALIAS(VertexAttribI4bv, 834, VertexAttribI4bv@8, VertexAttribI4bvEXT, VertexAttribI4bvEXT@8)
+ GL_STUB_ALIAS(VertexAttribI4i, 835, VertexAttribI4i@20, VertexAttribI4iEXT, VertexAttribI4iEXT@20)
+ GL_STUB_ALIAS(VertexAttribI4iv, 836, VertexAttribI4iv@8, VertexAttribI4ivEXT, VertexAttribI4ivEXT@8)
+ GL_STUB_ALIAS(VertexAttribI4sv, 837, VertexAttribI4sv@8, VertexAttribI4svEXT, VertexAttribI4svEXT@8)
+ GL_STUB_ALIAS(VertexAttribI4ubv, 838, VertexAttribI4ubv@8, VertexAttribI4ubvEXT, VertexAttribI4ubvEXT@8)
+ GL_STUB_ALIAS(VertexAttribI4ui, 839, VertexAttribI4ui@20, VertexAttribI4uiEXT, VertexAttribI4uiEXT@20)
+ GL_STUB_ALIAS(VertexAttribI4uiv, 840, VertexAttribI4uiv@8, VertexAttribI4uivEXT, VertexAttribI4uivEXT@8)
+ GL_STUB_ALIAS(VertexAttribI4usv, 841, VertexAttribI4usv@8, VertexAttribI4usvEXT, VertexAttribI4usvEXT@8)
+ GL_STUB_ALIAS(VertexAttribIPointer, 842, VertexAttribIPointer@20, VertexAttribIPointerEXT, VertexAttribIPointerEXT@20)
+ GL_STUB_ALIAS(FramebufferTextureLayer, 843, FramebufferTextureLayer@20, FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20)
+ GL_STUB_ALIAS(ColorMaski, 844, ColorMaski@20, ColorMaskIndexedEXT, ColorMaskIndexedEXT@20)
+ GL_STUB_ALIAS(Disablei, 845, Disablei@8, DisableIndexedEXT, DisableIndexedEXT@8)
+ GL_STUB_ALIAS(Enablei, 846, Enablei@8, EnableIndexedEXT, EnableIndexedEXT@8)
+ GL_STUB_ALIAS(GetBooleani_v, 847, GetBooleani_v@12, GetBooleanIndexedvEXT, GetBooleanIndexedvEXT@12)
+ GL_STUB_ALIAS(GetIntegeri_v, 848, GetIntegeri_v@12, GetIntegerIndexedvEXT, GetIntegerIndexedvEXT@12)
+ GL_STUB_ALIAS(IsEnabledi, 849, IsEnabledi@8, IsEnabledIndexedEXT, IsEnabledIndexedEXT@8)
+ GL_STUB_ALIAS(GetTexParameterIiv, 852, GetTexParameterIiv@12, GetTexParameterIivEXT, GetTexParameterIivEXT@12)
+ GL_STUB_ALIAS(GetTexParameterIuiv, 853, GetTexParameterIuiv@12, GetTexParameterIuivEXT, GetTexParameterIuivEXT@12)
+ GL_STUB_ALIAS(TexParameterIiv, 854, TexParameterIiv@12, TexParameterIivEXT, TexParameterIivEXT@12)
+ GL_STUB_ALIAS(TexParameterIuiv, 855, TexParameterIuiv@12, TexParameterIuivEXT, TexParameterIuivEXT@12)
+ GL_STUB_ALIAS(BeginConditionalRender, 856, BeginConditionalRender@8, BeginConditionalRenderNV, BeginConditionalRenderNV@8)
+ GL_STUB_ALIAS(EndConditionalRender, 857, EndConditionalRender@0, EndConditionalRenderNV, EndConditionalRenderNV@0)
+ GL_STUB_ALIAS(BeginTransformFeedback, 858, BeginTransformFeedback@4, BeginTransformFeedbackEXT, BeginTransformFeedbackEXT@4)
+ GL_STUB_ALIAS(BindBufferBase, 859, BindBufferBase@12, BindBufferBaseEXT, BindBufferBaseEXT@12)
+ GL_STUB_ALIAS(BindBufferRange, 861, BindBufferRange@20, BindBufferRangeEXT, BindBufferRangeEXT@20)
+ GL_STUB_ALIAS(EndTransformFeedback, 862, EndTransformFeedback@0, EndTransformFeedbackEXT, EndTransformFeedbackEXT@0)
+ GL_STUB_ALIAS(GetTransformFeedbackVarying, 863, GetTransformFeedbackVarying@28, GetTransformFeedbackVaryingEXT, GetTransformFeedbackVaryingEXT@28)
+ GL_STUB_ALIAS(TransformFeedbackVaryings, 864, TransformFeedbackVaryings@16, TransformFeedbackVaryingsEXT, TransformFeedbackVaryingsEXT@16)
+ GL_STUB_ALIAS(ProvokingVertex, 865, ProvokingVertex@4, ProvokingVertexEXT, ProvokingVertexEXT@4)
GLOBL GLNAME(gl_dispatch_functions_end)
HIDDEN(GLNAME(gl_dispatch_functions_end))
diff --git a/src/mapi/glapi/glapidispatch.h b/src/mapi/glapi/glapidispatch.h
deleted file mode 100644
index 582fc01556..0000000000
--- a/src/mapi/glapi/glapidispatch.h
+++ /dev/null
@@ -1,4231 +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_FramebufferTextureARB(disp, parameters) (*((disp)->FramebufferTextureARB)) parameters
-#define GET_FramebufferTextureARB(disp) ((disp)->FramebufferTextureARB)
-#define SET_FramebufferTextureARB(disp, fn) ((disp)->FramebufferTextureARB = fn)
-#define CALL_FramebufferTextureFaceARB(disp, parameters) (*((disp)->FramebufferTextureFaceARB)) parameters
-#define GET_FramebufferTextureFaceARB(disp) ((disp)->FramebufferTextureFaceARB)
-#define SET_FramebufferTextureFaceARB(disp, fn) ((disp)->FramebufferTextureFaceARB = fn)
-#define CALL_ProgramParameteriARB(disp, parameters) (*((disp)->ProgramParameteriARB)) parameters
-#define GET_ProgramParameteriARB(disp) ((disp)->ProgramParameteriARB)
-#define SET_ProgramParameteriARB(disp, fn) ((disp)->ProgramParameteriARB = 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_BindTransformFeedback(disp, parameters) (*((disp)->BindTransformFeedback)) parameters
-#define GET_BindTransformFeedback(disp) ((disp)->BindTransformFeedback)
-#define SET_BindTransformFeedback(disp, fn) ((disp)->BindTransformFeedback = fn)
-#define CALL_DeleteTransformFeedbacks(disp, parameters) (*((disp)->DeleteTransformFeedbacks)) parameters
-#define GET_DeleteTransformFeedbacks(disp) ((disp)->DeleteTransformFeedbacks)
-#define SET_DeleteTransformFeedbacks(disp, fn) ((disp)->DeleteTransformFeedbacks = fn)
-#define CALL_DrawTransformFeedback(disp, parameters) (*((disp)->DrawTransformFeedback)) parameters
-#define GET_DrawTransformFeedback(disp) ((disp)->DrawTransformFeedback)
-#define SET_DrawTransformFeedback(disp, fn) ((disp)->DrawTransformFeedback = fn)
-#define CALL_GenTransformFeedbacks(disp, parameters) (*((disp)->GenTransformFeedbacks)) parameters
-#define GET_GenTransformFeedbacks(disp) ((disp)->GenTransformFeedbacks)
-#define SET_GenTransformFeedbacks(disp, fn) ((disp)->GenTransformFeedbacks = fn)
-#define CALL_IsTransformFeedback(disp, parameters) (*((disp)->IsTransformFeedback)) parameters
-#define GET_IsTransformFeedback(disp) ((disp)->IsTransformFeedback)
-#define SET_IsTransformFeedback(disp, fn) ((disp)->IsTransformFeedback = fn)
-#define CALL_PauseTransformFeedback(disp, parameters) (*((disp)->PauseTransformFeedback)) parameters
-#define GET_PauseTransformFeedback(disp) ((disp)->PauseTransformFeedback)
-#define SET_PauseTransformFeedback(disp, fn) ((disp)->PauseTransformFeedback = fn)
-#define CALL_ResumeTransformFeedback(disp, parameters) (*((disp)->ResumeTransformFeedback)) parameters
-#define GET_ResumeTransformFeedback(disp) ((disp)->ResumeTransformFeedback)
-#define SET_ResumeTransformFeedback(disp, fn) ((disp)->ResumeTransformFeedback = 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_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_PrimitiveRestartIndexNV(disp, parameters) (*((disp)->PrimitiveRestartIndexNV)) parameters
-#define GET_PrimitiveRestartIndexNV(disp) ((disp)->PrimitiveRestartIndexNV)
-#define SET_PrimitiveRestartIndexNV(disp, fn) ((disp)->PrimitiveRestartIndexNV = fn)
-#define CALL_PrimitiveRestartNV(disp, parameters) (*((disp)->PrimitiveRestartNV)) parameters
-#define GET_PrimitiveRestartNV(disp) ((disp)->PrimitiveRestartNV)
-#define SET_PrimitiveRestartNV(disp, fn) ((disp)->PrimitiveRestartNV = 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 419
-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 FramebufferTextureARB_remap_index 156
-#define FramebufferTextureFaceARB_remap_index 157
-#define ProgramParameteriARB_remap_index 158
-#define FlushMappedBufferRange_remap_index 159
-#define MapBufferRange_remap_index 160
-#define BindVertexArray_remap_index 161
-#define GenVertexArrays_remap_index 162
-#define CopyBufferSubData_remap_index 163
-#define ClientWaitSync_remap_index 164
-#define DeleteSync_remap_index 165
-#define FenceSync_remap_index 166
-#define GetInteger64v_remap_index 167
-#define GetSynciv_remap_index 168
-#define IsSync_remap_index 169
-#define WaitSync_remap_index 170
-#define DrawElementsBaseVertex_remap_index 171
-#define DrawRangeElementsBaseVertex_remap_index 172
-#define MultiDrawElementsBaseVertex_remap_index 173
-#define BindTransformFeedback_remap_index 174
-#define DeleteTransformFeedbacks_remap_index 175
-#define DrawTransformFeedback_remap_index 176
-#define GenTransformFeedbacks_remap_index 177
-#define IsTransformFeedback_remap_index 178
-#define PauseTransformFeedback_remap_index 179
-#define ResumeTransformFeedback_remap_index 180
-#define PolygonOffsetEXT_remap_index 181
-#define GetPixelTexGenParameterfvSGIS_remap_index 182
-#define GetPixelTexGenParameterivSGIS_remap_index 183
-#define PixelTexGenParameterfSGIS_remap_index 184
-#define PixelTexGenParameterfvSGIS_remap_index 185
-#define PixelTexGenParameteriSGIS_remap_index 186
-#define PixelTexGenParameterivSGIS_remap_index 187
-#define SampleMaskSGIS_remap_index 188
-#define SamplePatternSGIS_remap_index 189
-#define ColorPointerEXT_remap_index 190
-#define EdgeFlagPointerEXT_remap_index 191
-#define IndexPointerEXT_remap_index 192
-#define NormalPointerEXT_remap_index 193
-#define TexCoordPointerEXT_remap_index 194
-#define VertexPointerEXT_remap_index 195
-#define PointParameterfEXT_remap_index 196
-#define PointParameterfvEXT_remap_index 197
-#define LockArraysEXT_remap_index 198
-#define UnlockArraysEXT_remap_index 199
-#define SecondaryColor3bEXT_remap_index 200
-#define SecondaryColor3bvEXT_remap_index 201
-#define SecondaryColor3dEXT_remap_index 202
-#define SecondaryColor3dvEXT_remap_index 203
-#define SecondaryColor3fEXT_remap_index 204
-#define SecondaryColor3fvEXT_remap_index 205
-#define SecondaryColor3iEXT_remap_index 206
-#define SecondaryColor3ivEXT_remap_index 207
-#define SecondaryColor3sEXT_remap_index 208
-#define SecondaryColor3svEXT_remap_index 209
-#define SecondaryColor3ubEXT_remap_index 210
-#define SecondaryColor3ubvEXT_remap_index 211
-#define SecondaryColor3uiEXT_remap_index 212
-#define SecondaryColor3uivEXT_remap_index 213
-#define SecondaryColor3usEXT_remap_index 214
-#define SecondaryColor3usvEXT_remap_index 215
-#define SecondaryColorPointerEXT_remap_index 216
-#define MultiDrawArraysEXT_remap_index 217
-#define MultiDrawElementsEXT_remap_index 218
-#define FogCoordPointerEXT_remap_index 219
-#define FogCoorddEXT_remap_index 220
-#define FogCoorddvEXT_remap_index 221
-#define FogCoordfEXT_remap_index 222
-#define FogCoordfvEXT_remap_index 223
-#define PixelTexGenSGIX_remap_index 224
-#define BlendFuncSeparateEXT_remap_index 225
-#define FlushVertexArrayRangeNV_remap_index 226
-#define VertexArrayRangeNV_remap_index 227
-#define CombinerInputNV_remap_index 228
-#define CombinerOutputNV_remap_index 229
-#define CombinerParameterfNV_remap_index 230
-#define CombinerParameterfvNV_remap_index 231
-#define CombinerParameteriNV_remap_index 232
-#define CombinerParameterivNV_remap_index 233
-#define FinalCombinerInputNV_remap_index 234
-#define GetCombinerInputParameterfvNV_remap_index 235
-#define GetCombinerInputParameterivNV_remap_index 236
-#define GetCombinerOutputParameterfvNV_remap_index 237
-#define GetCombinerOutputParameterivNV_remap_index 238
-#define GetFinalCombinerInputParameterfvNV_remap_index 239
-#define GetFinalCombinerInputParameterivNV_remap_index 240
-#define ResizeBuffersMESA_remap_index 241
-#define WindowPos2dMESA_remap_index 242
-#define WindowPos2dvMESA_remap_index 243
-#define WindowPos2fMESA_remap_index 244
-#define WindowPos2fvMESA_remap_index 245
-#define WindowPos2iMESA_remap_index 246
-#define WindowPos2ivMESA_remap_index 247
-#define WindowPos2sMESA_remap_index 248
-#define WindowPos2svMESA_remap_index 249
-#define WindowPos3dMESA_remap_index 250
-#define WindowPos3dvMESA_remap_index 251
-#define WindowPos3fMESA_remap_index 252
-#define WindowPos3fvMESA_remap_index 253
-#define WindowPos3iMESA_remap_index 254
-#define WindowPos3ivMESA_remap_index 255
-#define WindowPos3sMESA_remap_index 256
-#define WindowPos3svMESA_remap_index 257
-#define WindowPos4dMESA_remap_index 258
-#define WindowPos4dvMESA_remap_index 259
-#define WindowPos4fMESA_remap_index 260
-#define WindowPos4fvMESA_remap_index 261
-#define WindowPos4iMESA_remap_index 262
-#define WindowPos4ivMESA_remap_index 263
-#define WindowPos4sMESA_remap_index 264
-#define WindowPos4svMESA_remap_index 265
-#define MultiModeDrawArraysIBM_remap_index 266
-#define MultiModeDrawElementsIBM_remap_index 267
-#define DeleteFencesNV_remap_index 268
-#define FinishFenceNV_remap_index 269
-#define GenFencesNV_remap_index 270
-#define GetFenceivNV_remap_index 271
-#define IsFenceNV_remap_index 272
-#define SetFenceNV_remap_index 273
-#define TestFenceNV_remap_index 274
-#define AreProgramsResidentNV_remap_index 275
-#define BindProgramNV_remap_index 276
-#define DeleteProgramsNV_remap_index 277
-#define ExecuteProgramNV_remap_index 278
-#define GenProgramsNV_remap_index 279
-#define GetProgramParameterdvNV_remap_index 280
-#define GetProgramParameterfvNV_remap_index 281
-#define GetProgramStringNV_remap_index 282
-#define GetProgramivNV_remap_index 283
-#define GetTrackMatrixivNV_remap_index 284
-#define GetVertexAttribPointervNV_remap_index 285
-#define GetVertexAttribdvNV_remap_index 286
-#define GetVertexAttribfvNV_remap_index 287
-#define GetVertexAttribivNV_remap_index 288
-#define IsProgramNV_remap_index 289
-#define LoadProgramNV_remap_index 290
-#define ProgramParameters4dvNV_remap_index 291
-#define ProgramParameters4fvNV_remap_index 292
-#define RequestResidentProgramsNV_remap_index 293
-#define TrackMatrixNV_remap_index 294
-#define VertexAttrib1dNV_remap_index 295
-#define VertexAttrib1dvNV_remap_index 296
-#define VertexAttrib1fNV_remap_index 297
-#define VertexAttrib1fvNV_remap_index 298
-#define VertexAttrib1sNV_remap_index 299
-#define VertexAttrib1svNV_remap_index 300
-#define VertexAttrib2dNV_remap_index 301
-#define VertexAttrib2dvNV_remap_index 302
-#define VertexAttrib2fNV_remap_index 303
-#define VertexAttrib2fvNV_remap_index 304
-#define VertexAttrib2sNV_remap_index 305
-#define VertexAttrib2svNV_remap_index 306
-#define VertexAttrib3dNV_remap_index 307
-#define VertexAttrib3dvNV_remap_index 308
-#define VertexAttrib3fNV_remap_index 309
-#define VertexAttrib3fvNV_remap_index 310
-#define VertexAttrib3sNV_remap_index 311
-#define VertexAttrib3svNV_remap_index 312
-#define VertexAttrib4dNV_remap_index 313
-#define VertexAttrib4dvNV_remap_index 314
-#define VertexAttrib4fNV_remap_index 315
-#define VertexAttrib4fvNV_remap_index 316
-#define VertexAttrib4sNV_remap_index 317
-#define VertexAttrib4svNV_remap_index 318
-#define VertexAttrib4ubNV_remap_index 319
-#define VertexAttrib4ubvNV_remap_index 320
-#define VertexAttribPointerNV_remap_index 321
-#define VertexAttribs1dvNV_remap_index 322
-#define VertexAttribs1fvNV_remap_index 323
-#define VertexAttribs1svNV_remap_index 324
-#define VertexAttribs2dvNV_remap_index 325
-#define VertexAttribs2fvNV_remap_index 326
-#define VertexAttribs2svNV_remap_index 327
-#define VertexAttribs3dvNV_remap_index 328
-#define VertexAttribs3fvNV_remap_index 329
-#define VertexAttribs3svNV_remap_index 330
-#define VertexAttribs4dvNV_remap_index 331
-#define VertexAttribs4fvNV_remap_index 332
-#define VertexAttribs4svNV_remap_index 333
-#define VertexAttribs4ubvNV_remap_index 334
-#define GetTexBumpParameterfvATI_remap_index 335
-#define GetTexBumpParameterivATI_remap_index 336
-#define TexBumpParameterfvATI_remap_index 337
-#define TexBumpParameterivATI_remap_index 338
-#define AlphaFragmentOp1ATI_remap_index 339
-#define AlphaFragmentOp2ATI_remap_index 340
-#define AlphaFragmentOp3ATI_remap_index 341
-#define BeginFragmentShaderATI_remap_index 342
-#define BindFragmentShaderATI_remap_index 343
-#define ColorFragmentOp1ATI_remap_index 344
-#define ColorFragmentOp2ATI_remap_index 345
-#define ColorFragmentOp3ATI_remap_index 346
-#define DeleteFragmentShaderATI_remap_index 347
-#define EndFragmentShaderATI_remap_index 348
-#define GenFragmentShadersATI_remap_index 349
-#define PassTexCoordATI_remap_index 350
-#define SampleMapATI_remap_index 351
-#define SetFragmentShaderConstantATI_remap_index 352
-#define PointParameteriNV_remap_index 353
-#define PointParameterivNV_remap_index 354
-#define ActiveStencilFaceEXT_remap_index 355
-#define BindVertexArrayAPPLE_remap_index 356
-#define DeleteVertexArraysAPPLE_remap_index 357
-#define GenVertexArraysAPPLE_remap_index 358
-#define IsVertexArrayAPPLE_remap_index 359
-#define GetProgramNamedParameterdvNV_remap_index 360
-#define GetProgramNamedParameterfvNV_remap_index 361
-#define ProgramNamedParameter4dNV_remap_index 362
-#define ProgramNamedParameter4dvNV_remap_index 363
-#define ProgramNamedParameter4fNV_remap_index 364
-#define ProgramNamedParameter4fvNV_remap_index 365
-#define PrimitiveRestartIndexNV_remap_index 366
-#define PrimitiveRestartNV_remap_index 367
-#define DepthBoundsEXT_remap_index 368
-#define BlendEquationSeparateEXT_remap_index 369
-#define BindFramebufferEXT_remap_index 370
-#define BindRenderbufferEXT_remap_index 371
-#define CheckFramebufferStatusEXT_remap_index 372
-#define DeleteFramebuffersEXT_remap_index 373
-#define DeleteRenderbuffersEXT_remap_index 374
-#define FramebufferRenderbufferEXT_remap_index 375
-#define FramebufferTexture1DEXT_remap_index 376
-#define FramebufferTexture2DEXT_remap_index 377
-#define FramebufferTexture3DEXT_remap_index 378
-#define GenFramebuffersEXT_remap_index 379
-#define GenRenderbuffersEXT_remap_index 380
-#define GenerateMipmapEXT_remap_index 381
-#define GetFramebufferAttachmentParameterivEXT_remap_index 382
-#define GetRenderbufferParameterivEXT_remap_index 383
-#define IsFramebufferEXT_remap_index 384
-#define IsRenderbufferEXT_remap_index 385
-#define RenderbufferStorageEXT_remap_index 386
-#define BlitFramebufferEXT_remap_index 387
-#define BufferParameteriAPPLE_remap_index 388
-#define FlushMappedBufferRangeAPPLE_remap_index 389
-#define FramebufferTextureLayerEXT_remap_index 390
-#define ColorMaskIndexedEXT_remap_index 391
-#define DisableIndexedEXT_remap_index 392
-#define EnableIndexedEXT_remap_index 393
-#define GetBooleanIndexedvEXT_remap_index 394
-#define GetIntegerIndexedvEXT_remap_index 395
-#define IsEnabledIndexedEXT_remap_index 396
-#define BeginConditionalRenderNV_remap_index 397
-#define EndConditionalRenderNV_remap_index 398
-#define BeginTransformFeedbackEXT_remap_index 399
-#define BindBufferBaseEXT_remap_index 400
-#define BindBufferOffsetEXT_remap_index 401
-#define BindBufferRangeEXT_remap_index 402
-#define EndTransformFeedbackEXT_remap_index 403
-#define GetTransformFeedbackVaryingEXT_remap_index 404
-#define TransformFeedbackVaryingsEXT_remap_index 405
-#define ProvokingVertexEXT_remap_index 406
-#define GetTexParameterPointervAPPLE_remap_index 407
-#define TextureRangeAPPLE_remap_index 408
-#define GetObjectParameterivAPPLE_remap_index 409
-#define ObjectPurgeableAPPLE_remap_index 410
-#define ObjectUnpurgeableAPPLE_remap_index 411
-#define StencilFuncSeparateATI_remap_index 412
-#define ProgramEnvParameters4fvEXT_remap_index 413
-#define ProgramLocalParameters4fvEXT_remap_index 414
-#define GetQueryObjecti64vEXT_remap_index 415
-#define GetQueryObjectui64vEXT_remap_index 416
-#define EGLImageTargetRenderbufferStorageOES_remap_index 417
-#define EGLImageTargetTexture2DOES_remap_index 418
-
-#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_FramebufferTextureARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint)), driDispatchRemapTable[FramebufferTextureARB_remap_index], parameters)
-#define GET_FramebufferTextureARB(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTextureARB_remap_index])
-#define SET_FramebufferTextureARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTextureARB_remap_index], fn)
-#define CALL_FramebufferTextureFaceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint, GLenum)), driDispatchRemapTable[FramebufferTextureFaceARB_remap_index], parameters)
-#define GET_FramebufferTextureFaceARB(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTextureFaceARB_remap_index])
-#define SET_FramebufferTextureFaceARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTextureFaceARB_remap_index], fn)
-#define CALL_ProgramParameteriARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint)), driDispatchRemapTable[ProgramParameteriARB_remap_index], parameters)
-#define GET_ProgramParameteriARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramParameteriARB_remap_index])
-#define SET_ProgramParameteriARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramParameteriARB_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_BindTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindTransformFeedback_remap_index], parameters)
-#define GET_BindTransformFeedback(disp) GET_by_offset(disp, driDispatchRemapTable[BindTransformFeedback_remap_index])
-#define SET_BindTransformFeedback(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindTransformFeedback_remap_index], fn)
-#define CALL_DeleteTransformFeedbacks(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteTransformFeedbacks_remap_index], parameters)
-#define GET_DeleteTransformFeedbacks(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteTransformFeedbacks_remap_index])
-#define SET_DeleteTransformFeedbacks(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteTransformFeedbacks_remap_index], fn)
-#define CALL_DrawTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[DrawTransformFeedback_remap_index], parameters)
-#define GET_DrawTransformFeedback(disp) GET_by_offset(disp, driDispatchRemapTable[DrawTransformFeedback_remap_index])
-#define SET_DrawTransformFeedback(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawTransformFeedback_remap_index], fn)
-#define CALL_GenTransformFeedbacks(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenTransformFeedbacks_remap_index], parameters)
-#define GET_GenTransformFeedbacks(disp) GET_by_offset(disp, driDispatchRemapTable[GenTransformFeedbacks_remap_index])
-#define SET_GenTransformFeedbacks(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenTransformFeedbacks_remap_index], fn)
-#define CALL_IsTransformFeedback(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsTransformFeedback_remap_index], parameters)
-#define GET_IsTransformFeedback(disp) GET_by_offset(disp, driDispatchRemapTable[IsTransformFeedback_remap_index])
-#define SET_IsTransformFeedback(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsTransformFeedback_remap_index], fn)
-#define CALL_PauseTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[PauseTransformFeedback_remap_index], parameters)
-#define GET_PauseTransformFeedback(disp) GET_by_offset(disp, driDispatchRemapTable[PauseTransformFeedback_remap_index])
-#define SET_PauseTransformFeedback(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PauseTransformFeedback_remap_index], fn)
-#define CALL_ResumeTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[ResumeTransformFeedback_remap_index], parameters)
-#define GET_ResumeTransformFeedback(disp) GET_by_offset(disp, driDispatchRemapTable[ResumeTransformFeedback_remap_index])
-#define SET_ResumeTransformFeedback(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ResumeTransformFeedback_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_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, const GLint *, const 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_PrimitiveRestartIndexNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[PrimitiveRestartIndexNV_remap_index], parameters)
-#define GET_PrimitiveRestartIndexNV(disp) GET_by_offset(disp, driDispatchRemapTable[PrimitiveRestartIndexNV_remap_index])
-#define SET_PrimitiveRestartIndexNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PrimitiveRestartIndexNV_remap_index], fn)
-#define CALL_PrimitiveRestartNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[PrimitiveRestartNV_remap_index], parameters)
-#define GET_PrimitiveRestartNV(disp) GET_by_offset(disp, driDispatchRemapTable[PrimitiveRestartNV_remap_index])
-#define SET_PrimitiveRestartNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PrimitiveRestartNV_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
deleted file mode 100644
index 9bb143574b..0000000000
--- a/src/mapi/glapi/glapioffsets.h
+++ /dev/null
@@ -1,1290 +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_FramebufferTextureARB 564
-#define _gloffset_FramebufferTextureFaceARB 565
-#define _gloffset_ProgramParameteriARB 566
-#define _gloffset_FlushMappedBufferRange 567
-#define _gloffset_MapBufferRange 568
-#define _gloffset_BindVertexArray 569
-#define _gloffset_GenVertexArrays 570
-#define _gloffset_CopyBufferSubData 571
-#define _gloffset_ClientWaitSync 572
-#define _gloffset_DeleteSync 573
-#define _gloffset_FenceSync 574
-#define _gloffset_GetInteger64v 575
-#define _gloffset_GetSynciv 576
-#define _gloffset_IsSync 577
-#define _gloffset_WaitSync 578
-#define _gloffset_DrawElementsBaseVertex 579
-#define _gloffset_DrawRangeElementsBaseVertex 580
-#define _gloffset_MultiDrawElementsBaseVertex 581
-#define _gloffset_BindTransformFeedback 582
-#define _gloffset_DeleteTransformFeedbacks 583
-#define _gloffset_DrawTransformFeedback 584
-#define _gloffset_GenTransformFeedbacks 585
-#define _gloffset_IsTransformFeedback 586
-#define _gloffset_PauseTransformFeedback 587
-#define _gloffset_ResumeTransformFeedback 588
-#define _gloffset_PolygonOffsetEXT 589
-#define _gloffset_GetPixelTexGenParameterfvSGIS 590
-#define _gloffset_GetPixelTexGenParameterivSGIS 591
-#define _gloffset_PixelTexGenParameterfSGIS 592
-#define _gloffset_PixelTexGenParameterfvSGIS 593
-#define _gloffset_PixelTexGenParameteriSGIS 594
-#define _gloffset_PixelTexGenParameterivSGIS 595
-#define _gloffset_SampleMaskSGIS 596
-#define _gloffset_SamplePatternSGIS 597
-#define _gloffset_ColorPointerEXT 598
-#define _gloffset_EdgeFlagPointerEXT 599
-#define _gloffset_IndexPointerEXT 600
-#define _gloffset_NormalPointerEXT 601
-#define _gloffset_TexCoordPointerEXT 602
-#define _gloffset_VertexPointerEXT 603
-#define _gloffset_PointParameterfEXT 604
-#define _gloffset_PointParameterfvEXT 605
-#define _gloffset_LockArraysEXT 606
-#define _gloffset_UnlockArraysEXT 607
-#define _gloffset_SecondaryColor3bEXT 608
-#define _gloffset_SecondaryColor3bvEXT 609
-#define _gloffset_SecondaryColor3dEXT 610
-#define _gloffset_SecondaryColor3dvEXT 611
-#define _gloffset_SecondaryColor3fEXT 612
-#define _gloffset_SecondaryColor3fvEXT 613
-#define _gloffset_SecondaryColor3iEXT 614
-#define _gloffset_SecondaryColor3ivEXT 615
-#define _gloffset_SecondaryColor3sEXT 616
-#define _gloffset_SecondaryColor3svEXT 617
-#define _gloffset_SecondaryColor3ubEXT 618
-#define _gloffset_SecondaryColor3ubvEXT 619
-#define _gloffset_SecondaryColor3uiEXT 620
-#define _gloffset_SecondaryColor3uivEXT 621
-#define _gloffset_SecondaryColor3usEXT 622
-#define _gloffset_SecondaryColor3usvEXT 623
-#define _gloffset_SecondaryColorPointerEXT 624
-#define _gloffset_MultiDrawArraysEXT 625
-#define _gloffset_MultiDrawElementsEXT 626
-#define _gloffset_FogCoordPointerEXT 627
-#define _gloffset_FogCoorddEXT 628
-#define _gloffset_FogCoorddvEXT 629
-#define _gloffset_FogCoordfEXT 630
-#define _gloffset_FogCoordfvEXT 631
-#define _gloffset_PixelTexGenSGIX 632
-#define _gloffset_BlendFuncSeparateEXT 633
-#define _gloffset_FlushVertexArrayRangeNV 634
-#define _gloffset_VertexArrayRangeNV 635
-#define _gloffset_CombinerInputNV 636
-#define _gloffset_CombinerOutputNV 637
-#define _gloffset_CombinerParameterfNV 638
-#define _gloffset_CombinerParameterfvNV 639
-#define _gloffset_CombinerParameteriNV 640
-#define _gloffset_CombinerParameterivNV 641
-#define _gloffset_FinalCombinerInputNV 642
-#define _gloffset_GetCombinerInputParameterfvNV 643
-#define _gloffset_GetCombinerInputParameterivNV 644
-#define _gloffset_GetCombinerOutputParameterfvNV 645
-#define _gloffset_GetCombinerOutputParameterivNV 646
-#define _gloffset_GetFinalCombinerInputParameterfvNV 647
-#define _gloffset_GetFinalCombinerInputParameterivNV 648
-#define _gloffset_ResizeBuffersMESA 649
-#define _gloffset_WindowPos2dMESA 650
-#define _gloffset_WindowPos2dvMESA 651
-#define _gloffset_WindowPos2fMESA 652
-#define _gloffset_WindowPos2fvMESA 653
-#define _gloffset_WindowPos2iMESA 654
-#define _gloffset_WindowPos2ivMESA 655
-#define _gloffset_WindowPos2sMESA 656
-#define _gloffset_WindowPos2svMESA 657
-#define _gloffset_WindowPos3dMESA 658
-#define _gloffset_WindowPos3dvMESA 659
-#define _gloffset_WindowPos3fMESA 660
-#define _gloffset_WindowPos3fvMESA 661
-#define _gloffset_WindowPos3iMESA 662
-#define _gloffset_WindowPos3ivMESA 663
-#define _gloffset_WindowPos3sMESA 664
-#define _gloffset_WindowPos3svMESA 665
-#define _gloffset_WindowPos4dMESA 666
-#define _gloffset_WindowPos4dvMESA 667
-#define _gloffset_WindowPos4fMESA 668
-#define _gloffset_WindowPos4fvMESA 669
-#define _gloffset_WindowPos4iMESA 670
-#define _gloffset_WindowPos4ivMESA 671
-#define _gloffset_WindowPos4sMESA 672
-#define _gloffset_WindowPos4svMESA 673
-#define _gloffset_MultiModeDrawArraysIBM 674
-#define _gloffset_MultiModeDrawElementsIBM 675
-#define _gloffset_DeleteFencesNV 676
-#define _gloffset_FinishFenceNV 677
-#define _gloffset_GenFencesNV 678
-#define _gloffset_GetFenceivNV 679
-#define _gloffset_IsFenceNV 680
-#define _gloffset_SetFenceNV 681
-#define _gloffset_TestFenceNV 682
-#define _gloffset_AreProgramsResidentNV 683
-#define _gloffset_BindProgramNV 684
-#define _gloffset_DeleteProgramsNV 685
-#define _gloffset_ExecuteProgramNV 686
-#define _gloffset_GenProgramsNV 687
-#define _gloffset_GetProgramParameterdvNV 688
-#define _gloffset_GetProgramParameterfvNV 689
-#define _gloffset_GetProgramStringNV 690
-#define _gloffset_GetProgramivNV 691
-#define _gloffset_GetTrackMatrixivNV 692
-#define _gloffset_GetVertexAttribPointervNV 693
-#define _gloffset_GetVertexAttribdvNV 694
-#define _gloffset_GetVertexAttribfvNV 695
-#define _gloffset_GetVertexAttribivNV 696
-#define _gloffset_IsProgramNV 697
-#define _gloffset_LoadProgramNV 698
-#define _gloffset_ProgramParameters4dvNV 699
-#define _gloffset_ProgramParameters4fvNV 700
-#define _gloffset_RequestResidentProgramsNV 701
-#define _gloffset_TrackMatrixNV 702
-#define _gloffset_VertexAttrib1dNV 703
-#define _gloffset_VertexAttrib1dvNV 704
-#define _gloffset_VertexAttrib1fNV 705
-#define _gloffset_VertexAttrib1fvNV 706
-#define _gloffset_VertexAttrib1sNV 707
-#define _gloffset_VertexAttrib1svNV 708
-#define _gloffset_VertexAttrib2dNV 709
-#define _gloffset_VertexAttrib2dvNV 710
-#define _gloffset_VertexAttrib2fNV 711
-#define _gloffset_VertexAttrib2fvNV 712
-#define _gloffset_VertexAttrib2sNV 713
-#define _gloffset_VertexAttrib2svNV 714
-#define _gloffset_VertexAttrib3dNV 715
-#define _gloffset_VertexAttrib3dvNV 716
-#define _gloffset_VertexAttrib3fNV 717
-#define _gloffset_VertexAttrib3fvNV 718
-#define _gloffset_VertexAttrib3sNV 719
-#define _gloffset_VertexAttrib3svNV 720
-#define _gloffset_VertexAttrib4dNV 721
-#define _gloffset_VertexAttrib4dvNV 722
-#define _gloffset_VertexAttrib4fNV 723
-#define _gloffset_VertexAttrib4fvNV 724
-#define _gloffset_VertexAttrib4sNV 725
-#define _gloffset_VertexAttrib4svNV 726
-#define _gloffset_VertexAttrib4ubNV 727
-#define _gloffset_VertexAttrib4ubvNV 728
-#define _gloffset_VertexAttribPointerNV 729
-#define _gloffset_VertexAttribs1dvNV 730
-#define _gloffset_VertexAttribs1fvNV 731
-#define _gloffset_VertexAttribs1svNV 732
-#define _gloffset_VertexAttribs2dvNV 733
-#define _gloffset_VertexAttribs2fvNV 734
-#define _gloffset_VertexAttribs2svNV 735
-#define _gloffset_VertexAttribs3dvNV 736
-#define _gloffset_VertexAttribs3fvNV 737
-#define _gloffset_VertexAttribs3svNV 738
-#define _gloffset_VertexAttribs4dvNV 739
-#define _gloffset_VertexAttribs4fvNV 740
-#define _gloffset_VertexAttribs4svNV 741
-#define _gloffset_VertexAttribs4ubvNV 742
-#define _gloffset_GetTexBumpParameterfvATI 743
-#define _gloffset_GetTexBumpParameterivATI 744
-#define _gloffset_TexBumpParameterfvATI 745
-#define _gloffset_TexBumpParameterivATI 746
-#define _gloffset_AlphaFragmentOp1ATI 747
-#define _gloffset_AlphaFragmentOp2ATI 748
-#define _gloffset_AlphaFragmentOp3ATI 749
-#define _gloffset_BeginFragmentShaderATI 750
-#define _gloffset_BindFragmentShaderATI 751
-#define _gloffset_ColorFragmentOp1ATI 752
-#define _gloffset_ColorFragmentOp2ATI 753
-#define _gloffset_ColorFragmentOp3ATI 754
-#define _gloffset_DeleteFragmentShaderATI 755
-#define _gloffset_EndFragmentShaderATI 756
-#define _gloffset_GenFragmentShadersATI 757
-#define _gloffset_PassTexCoordATI 758
-#define _gloffset_SampleMapATI 759
-#define _gloffset_SetFragmentShaderConstantATI 760
-#define _gloffset_PointParameteriNV 761
-#define _gloffset_PointParameterivNV 762
-#define _gloffset_ActiveStencilFaceEXT 763
-#define _gloffset_BindVertexArrayAPPLE 764
-#define _gloffset_DeleteVertexArraysAPPLE 765
-#define _gloffset_GenVertexArraysAPPLE 766
-#define _gloffset_IsVertexArrayAPPLE 767
-#define _gloffset_GetProgramNamedParameterdvNV 768
-#define _gloffset_GetProgramNamedParameterfvNV 769
-#define _gloffset_ProgramNamedParameter4dNV 770
-#define _gloffset_ProgramNamedParameter4dvNV 771
-#define _gloffset_ProgramNamedParameter4fNV 772
-#define _gloffset_ProgramNamedParameter4fvNV 773
-#define _gloffset_PrimitiveRestartIndexNV 774
-#define _gloffset_PrimitiveRestartNV 775
-#define _gloffset_DepthBoundsEXT 776
-#define _gloffset_BlendEquationSeparateEXT 777
-#define _gloffset_BindFramebufferEXT 778
-#define _gloffset_BindRenderbufferEXT 779
-#define _gloffset_CheckFramebufferStatusEXT 780
-#define _gloffset_DeleteFramebuffersEXT 781
-#define _gloffset_DeleteRenderbuffersEXT 782
-#define _gloffset_FramebufferRenderbufferEXT 783
-#define _gloffset_FramebufferTexture1DEXT 784
-#define _gloffset_FramebufferTexture2DEXT 785
-#define _gloffset_FramebufferTexture3DEXT 786
-#define _gloffset_GenFramebuffersEXT 787
-#define _gloffset_GenRenderbuffersEXT 788
-#define _gloffset_GenerateMipmapEXT 789
-#define _gloffset_GetFramebufferAttachmentParameterivEXT 790
-#define _gloffset_GetRenderbufferParameterivEXT 791
-#define _gloffset_IsFramebufferEXT 792
-#define _gloffset_IsRenderbufferEXT 793
-#define _gloffset_RenderbufferStorageEXT 794
-#define _gloffset_BlitFramebufferEXT 795
-#define _gloffset_BufferParameteriAPPLE 796
-#define _gloffset_FlushMappedBufferRangeAPPLE 797
-#define _gloffset_FramebufferTextureLayerEXT 798
-#define _gloffset_ColorMaskIndexedEXT 799
-#define _gloffset_DisableIndexedEXT 800
-#define _gloffset_EnableIndexedEXT 801
-#define _gloffset_GetBooleanIndexedvEXT 802
-#define _gloffset_GetIntegerIndexedvEXT 803
-#define _gloffset_IsEnabledIndexedEXT 804
-#define _gloffset_BeginConditionalRenderNV 805
-#define _gloffset_EndConditionalRenderNV 806
-#define _gloffset_BeginTransformFeedbackEXT 807
-#define _gloffset_BindBufferBaseEXT 808
-#define _gloffset_BindBufferOffsetEXT 809
-#define _gloffset_BindBufferRangeEXT 810
-#define _gloffset_EndTransformFeedbackEXT 811
-#define _gloffset_GetTransformFeedbackVaryingEXT 812
-#define _gloffset_TransformFeedbackVaryingsEXT 813
-#define _gloffset_ProvokingVertexEXT 814
-#define _gloffset_GetTexParameterPointervAPPLE 815
-#define _gloffset_TextureRangeAPPLE 816
-#define _gloffset_GetObjectParameterivAPPLE 817
-#define _gloffset_ObjectPurgeableAPPLE 818
-#define _gloffset_ObjectUnpurgeableAPPLE 819
-#define _gloffset_StencilFuncSeparateATI 820
-#define _gloffset_ProgramEnvParameters4fvEXT 821
-#define _gloffset_ProgramLocalParameters4fvEXT 822
-#define _gloffset_GetQueryObjecti64vEXT 823
-#define _gloffset_GetQueryObjectui64vEXT 824
-#define _gloffset_EGLImageTargetRenderbufferStorageOES 825
-#define _gloffset_EGLImageTargetTexture2DOES 826
-#define _gloffset_FIRST_DYNAMIC 827
-
-#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_FramebufferTextureARB driDispatchRemapTable[FramebufferTextureARB_remap_index]
-#define _gloffset_FramebufferTextureFaceARB driDispatchRemapTable[FramebufferTextureFaceARB_remap_index]
-#define _gloffset_ProgramParameteriARB driDispatchRemapTable[ProgramParameteriARB_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_BindTransformFeedback driDispatchRemapTable[BindTransformFeedback_remap_index]
-#define _gloffset_DeleteTransformFeedbacks driDispatchRemapTable[DeleteTransformFeedbacks_remap_index]
-#define _gloffset_DrawTransformFeedback driDispatchRemapTable[DrawTransformFeedback_remap_index]
-#define _gloffset_GenTransformFeedbacks driDispatchRemapTable[GenTransformFeedbacks_remap_index]
-#define _gloffset_IsTransformFeedback driDispatchRemapTable[IsTransformFeedback_remap_index]
-#define _gloffset_PauseTransformFeedback driDispatchRemapTable[PauseTransformFeedback_remap_index]
-#define _gloffset_ResumeTransformFeedback driDispatchRemapTable[ResumeTransformFeedback_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_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_PrimitiveRestartIndexNV driDispatchRemapTable[PrimitiveRestartIndexNV_remap_index]
-#define _gloffset_PrimitiveRestartNV driDispatchRemapTable[PrimitiveRestartNV_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
index b9802da8e4..af6b346174 100644
--- a/src/mapi/glapi/glapitable.h
+++ b/src/mapi/glapi/glapitable.h
@@ -470,403 +470,457 @@ struct _glapi_table
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 FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 564 */
- void (GLAPIENTRYP FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 565 */
- void (GLAPIENTRYP ProgramParameteriARB)(GLuint program, GLenum pname, GLint value); /* 566 */
- void (GLAPIENTRYP FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); /* 567 */
- GLvoid * (GLAPIENTRYP MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 568 */
- void (GLAPIENTRYP BindVertexArray)(GLuint array); /* 569 */
- void (GLAPIENTRYP GenVertexArrays)(GLsizei n, GLuint * arrays); /* 570 */
- void (GLAPIENTRYP CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 571 */
- GLenum (GLAPIENTRYP ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 572 */
- void (GLAPIENTRYP DeleteSync)(GLsync sync); /* 573 */
- GLsync (GLAPIENTRYP FenceSync)(GLenum condition, GLbitfield flags); /* 574 */
- void (GLAPIENTRYP GetInteger64v)(GLenum pname, GLint64 * params); /* 575 */
- void (GLAPIENTRYP GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 576 */
- GLboolean (GLAPIENTRYP IsSync)(GLsync sync); /* 577 */
- void (GLAPIENTRYP WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 578 */
- void (GLAPIENTRYP DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 579 */
- void (GLAPIENTRYP DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 580 */
- void (GLAPIENTRYP MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex); /* 581 */
- void (GLAPIENTRYP BindTransformFeedback)(GLenum target, GLuint id); /* 582 */
- void (GLAPIENTRYP DeleteTransformFeedbacks)(GLsizei n, const GLuint * ids); /* 583 */
- void (GLAPIENTRYP DrawTransformFeedback)(GLenum mode, GLuint id); /* 584 */
- void (GLAPIENTRYP GenTransformFeedbacks)(GLsizei n, GLuint * ids); /* 585 */
- GLboolean (GLAPIENTRYP IsTransformFeedback)(GLuint id); /* 586 */
- void (GLAPIENTRYP PauseTransformFeedback)(void); /* 587 */
- void (GLAPIENTRYP ResumeTransformFeedback)(void); /* 588 */
- void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 589 */
- void (GLAPIENTRYP GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params); /* 590 */
- void (GLAPIENTRYP GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params); /* 591 */
- void (GLAPIENTRYP PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); /* 592 */
- void (GLAPIENTRYP PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params); /* 593 */
- void (GLAPIENTRYP PixelTexGenParameteriSGIS)(GLenum pname, GLint param); /* 594 */
- void (GLAPIENTRYP PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params); /* 595 */
- void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 596 */
- void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 597 */
- void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 598 */
- void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 599 */
- void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 600 */
- void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 601 */
- void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 602 */
- void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 603 */
- void (GLAPIENTRYP PointParameterfEXT)(GLenum pname, GLfloat param); /* 604 */
- void (GLAPIENTRYP PointParameterfvEXT)(GLenum pname, const GLfloat * params); /* 605 */
- void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 606 */
- void (GLAPIENTRYP UnlockArraysEXT)(void); /* 607 */
- void (GLAPIENTRYP SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue); /* 608 */
- void (GLAPIENTRYP SecondaryColor3bvEXT)(const GLbyte * v); /* 609 */
- void (GLAPIENTRYP SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue); /* 610 */
- void (GLAPIENTRYP SecondaryColor3dvEXT)(const GLdouble * v); /* 611 */
- void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 612 */
- void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 613 */
- void (GLAPIENTRYP SecondaryColor3iEXT)(GLint red, GLint green, GLint blue); /* 614 */
- void (GLAPIENTRYP SecondaryColor3ivEXT)(const GLint * v); /* 615 */
- void (GLAPIENTRYP SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue); /* 616 */
- void (GLAPIENTRYP SecondaryColor3svEXT)(const GLshort * v); /* 617 */
- void (GLAPIENTRYP SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue); /* 618 */
- void (GLAPIENTRYP SecondaryColor3ubvEXT)(const GLubyte * v); /* 619 */
- void (GLAPIENTRYP SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue); /* 620 */
- void (GLAPIENTRYP SecondaryColor3uivEXT)(const GLuint * v); /* 621 */
- void (GLAPIENTRYP SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue); /* 622 */
- void (GLAPIENTRYP SecondaryColor3usvEXT)(const GLushort * v); /* 623 */
- void (GLAPIENTRYP SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 624 */
- void (GLAPIENTRYP MultiDrawArraysEXT)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount); /* 625 */
- void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); /* 626 */
- void (GLAPIENTRYP FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 627 */
- void (GLAPIENTRYP FogCoorddEXT)(GLdouble coord); /* 628 */
- void (GLAPIENTRYP FogCoorddvEXT)(const GLdouble * coord); /* 629 */
- void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 630 */
- void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 631 */
- void (GLAPIENTRYP PixelTexGenSGIX)(GLenum mode); /* 632 */
- void (GLAPIENTRYP BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 633 */
- void (GLAPIENTRYP FlushVertexArrayRangeNV)(void); /* 634 */
- void (GLAPIENTRYP VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer); /* 635 */
- void (GLAPIENTRYP CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 636 */
- void (GLAPIENTRYP CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); /* 637 */
- void (GLAPIENTRYP CombinerParameterfNV)(GLenum pname, GLfloat param); /* 638 */
- void (GLAPIENTRYP CombinerParameterfvNV)(GLenum pname, const GLfloat * params); /* 639 */
- void (GLAPIENTRYP CombinerParameteriNV)(GLenum pname, GLint param); /* 640 */
- void (GLAPIENTRYP CombinerParameterivNV)(GLenum pname, const GLint * params); /* 641 */
- void (GLAPIENTRYP FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 642 */
- void (GLAPIENTRYP GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); /* 643 */
- void (GLAPIENTRYP GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); /* 644 */
- void (GLAPIENTRYP GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params); /* 645 */
- void (GLAPIENTRYP GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params); /* 646 */
- void (GLAPIENTRYP GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params); /* 647 */
- void (GLAPIENTRYP GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params); /* 648 */
- void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 649 */
- void (GLAPIENTRYP WindowPos2dMESA)(GLdouble x, GLdouble y); /* 650 */
- void (GLAPIENTRYP WindowPos2dvMESA)(const GLdouble * v); /* 651 */
- void (GLAPIENTRYP WindowPos2fMESA)(GLfloat x, GLfloat y); /* 652 */
- void (GLAPIENTRYP WindowPos2fvMESA)(const GLfloat * v); /* 653 */
- void (GLAPIENTRYP WindowPos2iMESA)(GLint x, GLint y); /* 654 */
- void (GLAPIENTRYP WindowPos2ivMESA)(const GLint * v); /* 655 */
- void (GLAPIENTRYP WindowPos2sMESA)(GLshort x, GLshort y); /* 656 */
- void (GLAPIENTRYP WindowPos2svMESA)(const GLshort * v); /* 657 */
- void (GLAPIENTRYP WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); /* 658 */
- void (GLAPIENTRYP WindowPos3dvMESA)(const GLdouble * v); /* 659 */
- void (GLAPIENTRYP WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); /* 660 */
- void (GLAPIENTRYP WindowPos3fvMESA)(const GLfloat * v); /* 661 */
- void (GLAPIENTRYP WindowPos3iMESA)(GLint x, GLint y, GLint z); /* 662 */
- void (GLAPIENTRYP WindowPos3ivMESA)(const GLint * v); /* 663 */
- void (GLAPIENTRYP WindowPos3sMESA)(GLshort x, GLshort y, GLshort z); /* 664 */
- void (GLAPIENTRYP WindowPos3svMESA)(const GLshort * v); /* 665 */
- void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 666 */
- void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 667 */
- void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 668 */
- void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 669 */
- void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 670 */
- void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 671 */
- void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 672 */
- void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 673 */
- void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 674 */
- void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 675 */
- void (GLAPIENTRYP DeleteFencesNV)(GLsizei n, const GLuint * fences); /* 676 */
- void (GLAPIENTRYP FinishFenceNV)(GLuint fence); /* 677 */
- void (GLAPIENTRYP GenFencesNV)(GLsizei n, GLuint * fences); /* 678 */
- void (GLAPIENTRYP GetFenceivNV)(GLuint fence, GLenum pname, GLint * params); /* 679 */
- GLboolean (GLAPIENTRYP IsFenceNV)(GLuint fence); /* 680 */
- void (GLAPIENTRYP SetFenceNV)(GLuint fence, GLenum condition); /* 681 */
- GLboolean (GLAPIENTRYP TestFenceNV)(GLuint fence); /* 682 */
- GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 683 */
- void (GLAPIENTRYP BindProgramNV)(GLenum target, GLuint program); /* 684 */
- void (GLAPIENTRYP DeleteProgramsNV)(GLsizei n, const GLuint * programs); /* 685 */
- void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 686 */
- void (GLAPIENTRYP GenProgramsNV)(GLsizei n, GLuint * programs); /* 687 */
- void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 688 */
- void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 689 */
- void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 690 */
- void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 691 */
- void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 692 */
- void (GLAPIENTRYP GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer); /* 693 */
- void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 694 */
- void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 695 */
- void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 696 */
- GLboolean (GLAPIENTRYP IsProgramNV)(GLuint program); /* 697 */
- void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 698 */
- void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params); /* 699 */
- void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params); /* 700 */
- void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 701 */
- void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 702 */
- void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 703 */
- void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 704 */
- void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 705 */
- void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 706 */
- void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 707 */
- void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 708 */
- void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 709 */
- void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 710 */
- void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 711 */
- void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 712 */
- void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 713 */
- void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 714 */
- void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 715 */
- void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 716 */
- void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 717 */
- void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 718 */
- void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 719 */
- void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 720 */
- void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 721 */
- void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 722 */
- void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 723 */
- void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 724 */
- void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 725 */
- void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 726 */
- void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 727 */
- void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 728 */
- void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 729 */
- void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 730 */
- void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 731 */
- void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 732 */
- void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 733 */
- void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 734 */
- void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 735 */
- void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 736 */
- void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 737 */
- void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 738 */
- void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 739 */
- void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 740 */
- void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 741 */
- void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 742 */
- void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 743 */
- void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 744 */
- void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 745 */
- void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 746 */
- void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 747 */
- void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 748 */
- 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); /* 749 */
- void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 750 */
- void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 751 */
- void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 752 */
- void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 753 */
- 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); /* 754 */
- void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 755 */
- void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 756 */
- GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 757 */
- void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 758 */
- void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 759 */
- void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 760 */
- void (GLAPIENTRYP PointParameteriNV)(GLenum pname, GLint param); /* 761 */
- void (GLAPIENTRYP PointParameterivNV)(GLenum pname, const GLint * params); /* 762 */
- void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 763 */
- void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 764 */
- void (GLAPIENTRYP DeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays); /* 765 */
- void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 766 */
- GLboolean (GLAPIENTRYP IsVertexArrayAPPLE)(GLuint array); /* 767 */
- void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 768 */
- void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 769 */
- void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 770 */
- void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 771 */
- void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 772 */
- void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 773 */
- void (GLAPIENTRYP PrimitiveRestartIndexNV)(GLuint index); /* 774 */
- void (GLAPIENTRYP PrimitiveRestartNV)(void); /* 775 */
- void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 776 */
- void (GLAPIENTRYP BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA); /* 777 */
- void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 778 */
- void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 779 */
- GLenum (GLAPIENTRYP CheckFramebufferStatusEXT)(GLenum target); /* 780 */
- void (GLAPIENTRYP DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers); /* 781 */
- void (GLAPIENTRYP DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers); /* 782 */
- void (GLAPIENTRYP FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 783 */
- void (GLAPIENTRYP FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 784 */
- void (GLAPIENTRYP FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 785 */
- void (GLAPIENTRYP FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 786 */
- void (GLAPIENTRYP GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers); /* 787 */
- void (GLAPIENTRYP GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers); /* 788 */
- void (GLAPIENTRYP GenerateMipmapEXT)(GLenum target); /* 789 */
- void (GLAPIENTRYP GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params); /* 790 */
- void (GLAPIENTRYP GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 791 */
- GLboolean (GLAPIENTRYP IsFramebufferEXT)(GLuint framebuffer); /* 792 */
- GLboolean (GLAPIENTRYP IsRenderbufferEXT)(GLuint renderbuffer); /* 793 */
- void (GLAPIENTRYP RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 794 */
- void (GLAPIENTRYP BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 795 */
- void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 796 */
- void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 797 */
- void (GLAPIENTRYP FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 798 */
- void (GLAPIENTRYP ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); /* 799 */
- void (GLAPIENTRYP DisableIndexedEXT)(GLenum target, GLuint index); /* 800 */
- void (GLAPIENTRYP EnableIndexedEXT)(GLenum target, GLuint index); /* 801 */
- void (GLAPIENTRYP GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data); /* 802 */
- void (GLAPIENTRYP GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data); /* 803 */
- GLboolean (GLAPIENTRYP IsEnabledIndexedEXT)(GLenum target, GLuint index); /* 804 */
- void (GLAPIENTRYP BeginConditionalRenderNV)(GLuint query, GLenum mode); /* 805 */
- void (GLAPIENTRYP EndConditionalRenderNV)(void); /* 806 */
- void (GLAPIENTRYP BeginTransformFeedbackEXT)(GLenum mode); /* 807 */
- void (GLAPIENTRYP BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer); /* 808 */
- void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 809 */
- void (GLAPIENTRYP BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 810 */
- void (GLAPIENTRYP EndTransformFeedbackEXT)(void); /* 811 */
- void (GLAPIENTRYP GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); /* 812 */
- void (GLAPIENTRYP TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); /* 813 */
- void (GLAPIENTRYP ProvokingVertexEXT)(GLenum mode); /* 814 */
- void (GLAPIENTRYP GetTexParameterPointervAPPLE)(GLenum target, GLenum pname, GLvoid ** params); /* 815 */
- void (GLAPIENTRYP TextureRangeAPPLE)(GLenum target, GLsizei length, GLvoid * pointer); /* 816 */
- void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 817 */
- GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 818 */
- GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 819 */
- void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 820 */
- void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 821 */
- void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 822 */
- void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 823 */
- void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 824 */
- void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 825 */
- void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 826 */
+ void (GLAPIENTRYP ClampColor)(GLenum target, GLenum clamp); /* 430 */
+ void (GLAPIENTRYP ClearBufferfi)(GLenum buffer, GLint drawbuffer, const GLfloat depth, const GLint stencil); /* 431 */
+ void (GLAPIENTRYP ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat * value); /* 432 */
+ void (GLAPIENTRYP ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint * value); /* 433 */
+ void (GLAPIENTRYP ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint * value); /* 434 */
+ const GLubyte * (GLAPIENTRYP GetStringi)(GLenum name, GLuint index); /* 435 */
+ void (GLAPIENTRYP TexBuffer)(GLenum target, GLenum internalFormat, GLuint buffer); /* 436 */
+ void (GLAPIENTRYP FramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 437 */
+ void (GLAPIENTRYP GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 * params); /* 438 */
+ void (GLAPIENTRYP GetInteger64i_v)(GLenum cap, GLuint index, GLint64 * data); /* 439 */
+ void (GLAPIENTRYP VertexAttribDivisor)(GLuint index, GLuint divisor); /* 440 */
+ void (GLAPIENTRYP LoadTransposeMatrixdARB)(const GLdouble * m); /* 441 */
+ void (GLAPIENTRYP LoadTransposeMatrixfARB)(const GLfloat * m); /* 442 */
+ void (GLAPIENTRYP MultTransposeMatrixdARB)(const GLdouble * m); /* 443 */
+ void (GLAPIENTRYP MultTransposeMatrixfARB)(const GLfloat * m); /* 444 */
+ void (GLAPIENTRYP SampleCoverageARB)(GLclampf value, GLboolean invert); /* 445 */
+ void (GLAPIENTRYP CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data); /* 446 */
+ void (GLAPIENTRYP CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data); /* 447 */
+ void (GLAPIENTRYP CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data); /* 448 */
+ void (GLAPIENTRYP CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data); /* 449 */
+ void (GLAPIENTRYP CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data); /* 450 */
+ 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); /* 451 */
+ void (GLAPIENTRYP GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img); /* 452 */
+ void (GLAPIENTRYP DisableVertexAttribArrayARB)(GLuint index); /* 453 */
+ void (GLAPIENTRYP EnableVertexAttribArrayARB)(GLuint index); /* 454 */
+ void (GLAPIENTRYP GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params); /* 455 */
+ void (GLAPIENTRYP GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params); /* 456 */
+ void (GLAPIENTRYP GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params); /* 457 */
+ void (GLAPIENTRYP GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params); /* 458 */
+ void (GLAPIENTRYP GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string); /* 459 */
+ void (GLAPIENTRYP GetProgramivARB)(GLenum target, GLenum pname, GLint * params); /* 460 */
+ void (GLAPIENTRYP GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params); /* 461 */
+ void (GLAPIENTRYP GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params); /* 462 */
+ void (GLAPIENTRYP GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params); /* 463 */
+ void (GLAPIENTRYP ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 464 */
+ void (GLAPIENTRYP ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params); /* 465 */
+ void (GLAPIENTRYP ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 466 */
+ void (GLAPIENTRYP ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params); /* 467 */
+ void (GLAPIENTRYP ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 468 */
+ void (GLAPIENTRYP ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params); /* 469 */
+ void (GLAPIENTRYP ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 470 */
+ void (GLAPIENTRYP ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params); /* 471 */
+ void (GLAPIENTRYP ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string); /* 472 */
+ void (GLAPIENTRYP VertexAttrib1dARB)(GLuint index, GLdouble x); /* 473 */
+ void (GLAPIENTRYP VertexAttrib1dvARB)(GLuint index, const GLdouble * v); /* 474 */
+ void (GLAPIENTRYP VertexAttrib1fARB)(GLuint index, GLfloat x); /* 475 */
+ void (GLAPIENTRYP VertexAttrib1fvARB)(GLuint index, const GLfloat * v); /* 476 */
+ void (GLAPIENTRYP VertexAttrib1sARB)(GLuint index, GLshort x); /* 477 */
+ void (GLAPIENTRYP VertexAttrib1svARB)(GLuint index, const GLshort * v); /* 478 */
+ void (GLAPIENTRYP VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y); /* 479 */
+ void (GLAPIENTRYP VertexAttrib2dvARB)(GLuint index, const GLdouble * v); /* 480 */
+ void (GLAPIENTRYP VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y); /* 481 */
+ void (GLAPIENTRYP VertexAttrib2fvARB)(GLuint index, const GLfloat * v); /* 482 */
+ void (GLAPIENTRYP VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y); /* 483 */
+ void (GLAPIENTRYP VertexAttrib2svARB)(GLuint index, const GLshort * v); /* 484 */
+ void (GLAPIENTRYP VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 485 */
+ void (GLAPIENTRYP VertexAttrib3dvARB)(GLuint index, const GLdouble * v); /* 486 */
+ void (GLAPIENTRYP VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 487 */
+ void (GLAPIENTRYP VertexAttrib3fvARB)(GLuint index, const GLfloat * v); /* 488 */
+ void (GLAPIENTRYP VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z); /* 489 */
+ void (GLAPIENTRYP VertexAttrib3svARB)(GLuint index, const GLshort * v); /* 490 */
+ void (GLAPIENTRYP VertexAttrib4NbvARB)(GLuint index, const GLbyte * v); /* 491 */
+ void (GLAPIENTRYP VertexAttrib4NivARB)(GLuint index, const GLint * v); /* 492 */
+ void (GLAPIENTRYP VertexAttrib4NsvARB)(GLuint index, const GLshort * v); /* 493 */
+ void (GLAPIENTRYP VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 494 */
+ void (GLAPIENTRYP VertexAttrib4NubvARB)(GLuint index, const GLubyte * v); /* 495 */
+ void (GLAPIENTRYP VertexAttrib4NuivARB)(GLuint index, const GLuint * v); /* 496 */
+ void (GLAPIENTRYP VertexAttrib4NusvARB)(GLuint index, const GLushort * v); /* 497 */
+ void (GLAPIENTRYP VertexAttrib4bvARB)(GLuint index, const GLbyte * v); /* 498 */
+ void (GLAPIENTRYP VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 499 */
+ void (GLAPIENTRYP VertexAttrib4dvARB)(GLuint index, const GLdouble * v); /* 500 */
+ void (GLAPIENTRYP VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 501 */
+ void (GLAPIENTRYP VertexAttrib4fvARB)(GLuint index, const GLfloat * v); /* 502 */
+ void (GLAPIENTRYP VertexAttrib4ivARB)(GLuint index, const GLint * v); /* 503 */
+ void (GLAPIENTRYP VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 504 */
+ void (GLAPIENTRYP VertexAttrib4svARB)(GLuint index, const GLshort * v); /* 505 */
+ void (GLAPIENTRYP VertexAttrib4ubvARB)(GLuint index, const GLubyte * v); /* 506 */
+ void (GLAPIENTRYP VertexAttrib4uivARB)(GLuint index, const GLuint * v); /* 507 */
+ void (GLAPIENTRYP VertexAttrib4usvARB)(GLuint index, const GLushort * v); /* 508 */
+ void (GLAPIENTRYP VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer); /* 509 */
+ void (GLAPIENTRYP BindBufferARB)(GLenum target, GLuint buffer); /* 510 */
+ void (GLAPIENTRYP BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage); /* 511 */
+ void (GLAPIENTRYP BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data); /* 512 */
+ void (GLAPIENTRYP DeleteBuffersARB)(GLsizei n, const GLuint * buffer); /* 513 */
+ void (GLAPIENTRYP GenBuffersARB)(GLsizei n, GLuint * buffer); /* 514 */
+ void (GLAPIENTRYP GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params); /* 515 */
+ void (GLAPIENTRYP GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params); /* 516 */
+ void (GLAPIENTRYP GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data); /* 517 */
+ GLboolean (GLAPIENTRYP IsBufferARB)(GLuint buffer); /* 518 */
+ GLvoid * (GLAPIENTRYP MapBufferARB)(GLenum target, GLenum access); /* 519 */
+ GLboolean (GLAPIENTRYP UnmapBufferARB)(GLenum target); /* 520 */
+ void (GLAPIENTRYP BeginQueryARB)(GLenum target, GLuint id); /* 521 */
+ void (GLAPIENTRYP DeleteQueriesARB)(GLsizei n, const GLuint * ids); /* 522 */
+ void (GLAPIENTRYP EndQueryARB)(GLenum target); /* 523 */
+ void (GLAPIENTRYP GenQueriesARB)(GLsizei n, GLuint * ids); /* 524 */
+ void (GLAPIENTRYP GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params); /* 525 */
+ void (GLAPIENTRYP GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params); /* 526 */
+ void (GLAPIENTRYP GetQueryivARB)(GLenum target, GLenum pname, GLint * params); /* 527 */
+ GLboolean (GLAPIENTRYP IsQueryARB)(GLuint id); /* 528 */
+ void (GLAPIENTRYP AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj); /* 529 */
+ void (GLAPIENTRYP CompileShaderARB)(GLhandleARB shader); /* 530 */
+ GLhandleARB (GLAPIENTRYP CreateProgramObjectARB)(void); /* 531 */
+ GLhandleARB (GLAPIENTRYP CreateShaderObjectARB)(GLenum shaderType); /* 532 */
+ void (GLAPIENTRYP DeleteObjectARB)(GLhandleARB obj); /* 533 */
+ void (GLAPIENTRYP DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj); /* 534 */
+ void (GLAPIENTRYP GetActiveUniformARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); /* 535 */
+ void (GLAPIENTRYP GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei * length, GLhandleARB * infoLog); /* 536 */
+ GLhandleARB (GLAPIENTRYP GetHandleARB)(GLenum pname); /* 537 */
+ void (GLAPIENTRYP GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog); /* 538 */
+ void (GLAPIENTRYP GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat * params); /* 539 */
+ void (GLAPIENTRYP GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint * params); /* 540 */
+ void (GLAPIENTRYP GetShaderSourceARB)(GLhandleARB shader, GLsizei bufSize, GLsizei * length, GLcharARB * source); /* 541 */
+ GLint (GLAPIENTRYP GetUniformLocationARB)(GLhandleARB program, const GLcharARB * name); /* 542 */
+ void (GLAPIENTRYP GetUniformfvARB)(GLhandleARB program, GLint location, GLfloat * params); /* 543 */
+ void (GLAPIENTRYP GetUniformivARB)(GLhandleARB program, GLint location, GLint * params); /* 544 */
+ void (GLAPIENTRYP LinkProgramARB)(GLhandleARB program); /* 545 */
+ void (GLAPIENTRYP ShaderSourceARB)(GLhandleARB shader, GLsizei count, const GLcharARB ** string, const GLint * length); /* 546 */
+ void (GLAPIENTRYP Uniform1fARB)(GLint location, GLfloat v0); /* 547 */
+ void (GLAPIENTRYP Uniform1fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 548 */
+ void (GLAPIENTRYP Uniform1iARB)(GLint location, GLint v0); /* 549 */
+ void (GLAPIENTRYP Uniform1ivARB)(GLint location, GLsizei count, const GLint * value); /* 550 */
+ void (GLAPIENTRYP Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1); /* 551 */
+ void (GLAPIENTRYP Uniform2fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 552 */
+ void (GLAPIENTRYP Uniform2iARB)(GLint location, GLint v0, GLint v1); /* 553 */
+ void (GLAPIENTRYP Uniform2ivARB)(GLint location, GLsizei count, const GLint * value); /* 554 */
+ void (GLAPIENTRYP Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 555 */
+ void (GLAPIENTRYP Uniform3fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 556 */
+ void (GLAPIENTRYP Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2); /* 557 */
+ void (GLAPIENTRYP Uniform3ivARB)(GLint location, GLsizei count, const GLint * value); /* 558 */
+ void (GLAPIENTRYP Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 559 */
+ void (GLAPIENTRYP Uniform4fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 560 */
+ void (GLAPIENTRYP Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 561 */
+ void (GLAPIENTRYP Uniform4ivARB)(GLint location, GLsizei count, const GLint * value); /* 562 */
+ void (GLAPIENTRYP UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 563 */
+ void (GLAPIENTRYP UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 564 */
+ void (GLAPIENTRYP UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 565 */
+ void (GLAPIENTRYP UseProgramObjectARB)(GLhandleARB program); /* 566 */
+ void (GLAPIENTRYP ValidateProgramARB)(GLhandleARB program); /* 567 */
+ void (GLAPIENTRYP BindAttribLocationARB)(GLhandleARB program, GLuint index, const GLcharARB * name); /* 568 */
+ void (GLAPIENTRYP GetActiveAttribARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); /* 569 */
+ GLint (GLAPIENTRYP GetAttribLocationARB)(GLhandleARB program, const GLcharARB * name); /* 570 */
+ void (GLAPIENTRYP DrawBuffersARB)(GLsizei n, const GLenum * bufs); /* 571 */
+ void (GLAPIENTRYP DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); /* 572 */
+ void (GLAPIENTRYP DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount); /* 573 */
+ void (GLAPIENTRYP RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 574 */
+ void (GLAPIENTRYP FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 575 */
+ void (GLAPIENTRYP FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 576 */
+ void (GLAPIENTRYP ProgramParameteriARB)(GLuint program, GLenum pname, GLint value); /* 577 */
+ void (GLAPIENTRYP FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); /* 578 */
+ GLvoid * (GLAPIENTRYP MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 579 */
+ void (GLAPIENTRYP BindVertexArray)(GLuint array); /* 580 */
+ void (GLAPIENTRYP GenVertexArrays)(GLsizei n, GLuint * arrays); /* 581 */
+ void (GLAPIENTRYP CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 582 */
+ GLenum (GLAPIENTRYP ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 583 */
+ void (GLAPIENTRYP DeleteSync)(GLsync sync); /* 584 */
+ GLsync (GLAPIENTRYP FenceSync)(GLenum condition, GLbitfield flags); /* 585 */
+ void (GLAPIENTRYP GetInteger64v)(GLenum pname, GLint64 * params); /* 586 */
+ void (GLAPIENTRYP GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 587 */
+ GLboolean (GLAPIENTRYP IsSync)(GLsync sync); /* 588 */
+ void (GLAPIENTRYP WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 589 */
+ void (GLAPIENTRYP DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 590 */
+ void (GLAPIENTRYP DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 591 */
+ void (GLAPIENTRYP MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex); /* 592 */
+ void (GLAPIENTRYP BindTransformFeedback)(GLenum target, GLuint id); /* 593 */
+ void (GLAPIENTRYP DeleteTransformFeedbacks)(GLsizei n, const GLuint * ids); /* 594 */
+ void (GLAPIENTRYP DrawTransformFeedback)(GLenum mode, GLuint id); /* 595 */
+ void (GLAPIENTRYP GenTransformFeedbacks)(GLsizei n, GLuint * ids); /* 596 */
+ GLboolean (GLAPIENTRYP IsTransformFeedback)(GLuint id); /* 597 */
+ void (GLAPIENTRYP PauseTransformFeedback)(void); /* 598 */
+ void (GLAPIENTRYP ResumeTransformFeedback)(void); /* 599 */
+ void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 600 */
+ void (GLAPIENTRYP GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params); /* 601 */
+ void (GLAPIENTRYP GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params); /* 602 */
+ void (GLAPIENTRYP PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); /* 603 */
+ void (GLAPIENTRYP PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params); /* 604 */
+ void (GLAPIENTRYP PixelTexGenParameteriSGIS)(GLenum pname, GLint param); /* 605 */
+ void (GLAPIENTRYP PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params); /* 606 */
+ void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 607 */
+ void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 608 */
+ void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 609 */
+ void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 610 */
+ void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 611 */
+ void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 612 */
+ void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 613 */
+ void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 614 */
+ void (GLAPIENTRYP PointParameterfEXT)(GLenum pname, GLfloat param); /* 615 */
+ void (GLAPIENTRYP PointParameterfvEXT)(GLenum pname, const GLfloat * params); /* 616 */
+ void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 617 */
+ void (GLAPIENTRYP UnlockArraysEXT)(void); /* 618 */
+ void (GLAPIENTRYP SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue); /* 619 */
+ void (GLAPIENTRYP SecondaryColor3bvEXT)(const GLbyte * v); /* 620 */
+ void (GLAPIENTRYP SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue); /* 621 */
+ void (GLAPIENTRYP SecondaryColor3dvEXT)(const GLdouble * v); /* 622 */
+ void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 623 */
+ void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 624 */
+ void (GLAPIENTRYP SecondaryColor3iEXT)(GLint red, GLint green, GLint blue); /* 625 */
+ void (GLAPIENTRYP SecondaryColor3ivEXT)(const GLint * v); /* 626 */
+ void (GLAPIENTRYP SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue); /* 627 */
+ void (GLAPIENTRYP SecondaryColor3svEXT)(const GLshort * v); /* 628 */
+ void (GLAPIENTRYP SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue); /* 629 */
+ void (GLAPIENTRYP SecondaryColor3ubvEXT)(const GLubyte * v); /* 630 */
+ void (GLAPIENTRYP SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue); /* 631 */
+ void (GLAPIENTRYP SecondaryColor3uivEXT)(const GLuint * v); /* 632 */
+ void (GLAPIENTRYP SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue); /* 633 */
+ void (GLAPIENTRYP SecondaryColor3usvEXT)(const GLushort * v); /* 634 */
+ void (GLAPIENTRYP SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 635 */
+ void (GLAPIENTRYP MultiDrawArraysEXT)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount); /* 636 */
+ void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); /* 637 */
+ void (GLAPIENTRYP FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 638 */
+ void (GLAPIENTRYP FogCoorddEXT)(GLdouble coord); /* 639 */
+ void (GLAPIENTRYP FogCoorddvEXT)(const GLdouble * coord); /* 640 */
+ void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 641 */
+ void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 642 */
+ void (GLAPIENTRYP PixelTexGenSGIX)(GLenum mode); /* 643 */
+ void (GLAPIENTRYP BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 644 */
+ void (GLAPIENTRYP FlushVertexArrayRangeNV)(void); /* 645 */
+ void (GLAPIENTRYP VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer); /* 646 */
+ void (GLAPIENTRYP CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 647 */
+ void (GLAPIENTRYP CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); /* 648 */
+ void (GLAPIENTRYP CombinerParameterfNV)(GLenum pname, GLfloat param); /* 649 */
+ void (GLAPIENTRYP CombinerParameterfvNV)(GLenum pname, const GLfloat * params); /* 650 */
+ void (GLAPIENTRYP CombinerParameteriNV)(GLenum pname, GLint param); /* 651 */
+ void (GLAPIENTRYP CombinerParameterivNV)(GLenum pname, const GLint * params); /* 652 */
+ void (GLAPIENTRYP FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 653 */
+ void (GLAPIENTRYP GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); /* 654 */
+ void (GLAPIENTRYP GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); /* 655 */
+ void (GLAPIENTRYP GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params); /* 656 */
+ void (GLAPIENTRYP GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params); /* 657 */
+ void (GLAPIENTRYP GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params); /* 658 */
+ void (GLAPIENTRYP GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params); /* 659 */
+ void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 660 */
+ void (GLAPIENTRYP WindowPos2dMESA)(GLdouble x, GLdouble y); /* 661 */
+ void (GLAPIENTRYP WindowPos2dvMESA)(const GLdouble * v); /* 662 */
+ void (GLAPIENTRYP WindowPos2fMESA)(GLfloat x, GLfloat y); /* 663 */
+ void (GLAPIENTRYP WindowPos2fvMESA)(const GLfloat * v); /* 664 */
+ void (GLAPIENTRYP WindowPos2iMESA)(GLint x, GLint y); /* 665 */
+ void (GLAPIENTRYP WindowPos2ivMESA)(const GLint * v); /* 666 */
+ void (GLAPIENTRYP WindowPos2sMESA)(GLshort x, GLshort y); /* 667 */
+ void (GLAPIENTRYP WindowPos2svMESA)(const GLshort * v); /* 668 */
+ void (GLAPIENTRYP WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); /* 669 */
+ void (GLAPIENTRYP WindowPos3dvMESA)(const GLdouble * v); /* 670 */
+ void (GLAPIENTRYP WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); /* 671 */
+ void (GLAPIENTRYP WindowPos3fvMESA)(const GLfloat * v); /* 672 */
+ void (GLAPIENTRYP WindowPos3iMESA)(GLint x, GLint y, GLint z); /* 673 */
+ void (GLAPIENTRYP WindowPos3ivMESA)(const GLint * v); /* 674 */
+ void (GLAPIENTRYP WindowPos3sMESA)(GLshort x, GLshort y, GLshort z); /* 675 */
+ void (GLAPIENTRYP WindowPos3svMESA)(const GLshort * v); /* 676 */
+ void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 677 */
+ void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 678 */
+ void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 679 */
+ void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 680 */
+ void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 681 */
+ void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 682 */
+ void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 683 */
+ void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 684 */
+ void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 685 */
+ void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 686 */
+ void (GLAPIENTRYP DeleteFencesNV)(GLsizei n, const GLuint * fences); /* 687 */
+ void (GLAPIENTRYP FinishFenceNV)(GLuint fence); /* 688 */
+ void (GLAPIENTRYP GenFencesNV)(GLsizei n, GLuint * fences); /* 689 */
+ void (GLAPIENTRYP GetFenceivNV)(GLuint fence, GLenum pname, GLint * params); /* 690 */
+ GLboolean (GLAPIENTRYP IsFenceNV)(GLuint fence); /* 691 */
+ void (GLAPIENTRYP SetFenceNV)(GLuint fence, GLenum condition); /* 692 */
+ GLboolean (GLAPIENTRYP TestFenceNV)(GLuint fence); /* 693 */
+ GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 694 */
+ void (GLAPIENTRYP BindProgramNV)(GLenum target, GLuint program); /* 695 */
+ void (GLAPIENTRYP DeleteProgramsNV)(GLsizei n, const GLuint * programs); /* 696 */
+ void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 697 */
+ void (GLAPIENTRYP GenProgramsNV)(GLsizei n, GLuint * programs); /* 698 */
+ void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 699 */
+ void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 700 */
+ void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 701 */
+ void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 702 */
+ void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 703 */
+ void (GLAPIENTRYP GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer); /* 704 */
+ void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 705 */
+ void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 706 */
+ void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 707 */
+ GLboolean (GLAPIENTRYP IsProgramNV)(GLuint program); /* 708 */
+ void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 709 */
+ void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble * params); /* 710 */
+ void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat * params); /* 711 */
+ void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 712 */
+ void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 713 */
+ void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 714 */
+ void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 715 */
+ void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 716 */
+ void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 717 */
+ void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 718 */
+ void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 719 */
+ void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 720 */
+ void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 721 */
+ void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 722 */
+ void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 723 */
+ void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 724 */
+ void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 725 */
+ void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 726 */
+ void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 727 */
+ void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 728 */
+ void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 729 */
+ void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 730 */
+ void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 731 */
+ void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 732 */
+ void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 733 */
+ void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 734 */
+ void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 735 */
+ void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 736 */
+ void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 737 */
+ void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 738 */
+ void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 739 */
+ void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 740 */
+ void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 741 */
+ void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 742 */
+ void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 743 */
+ void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 744 */
+ void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 745 */
+ void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 746 */
+ void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 747 */
+ void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 748 */
+ void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 749 */
+ void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 750 */
+ void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 751 */
+ void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 752 */
+ void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 753 */
+ void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 754 */
+ void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 755 */
+ void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 756 */
+ void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 757 */
+ void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 758 */
+ void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 759 */
+ 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); /* 760 */
+ void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 761 */
+ void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 762 */
+ void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 763 */
+ void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 764 */
+ 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); /* 765 */
+ void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 766 */
+ void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 767 */
+ GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 768 */
+ void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 769 */
+ void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 770 */
+ void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 771 */
+ void (GLAPIENTRYP PointParameteriNV)(GLenum pname, GLint param); /* 772 */
+ void (GLAPIENTRYP PointParameterivNV)(GLenum pname, const GLint * params); /* 773 */
+ void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 774 */
+ void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 775 */
+ void (GLAPIENTRYP DeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays); /* 776 */
+ void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 777 */
+ GLboolean (GLAPIENTRYP IsVertexArrayAPPLE)(GLuint array); /* 778 */
+ void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 779 */
+ void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 780 */
+ void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 781 */
+ void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 782 */
+ void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 783 */
+ void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 784 */
+ void (GLAPIENTRYP PrimitiveRestartIndexNV)(GLuint index); /* 785 */
+ void (GLAPIENTRYP PrimitiveRestartNV)(void); /* 786 */
+ void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 787 */
+ void (GLAPIENTRYP BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA); /* 788 */
+ void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 789 */
+ void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 790 */
+ GLenum (GLAPIENTRYP CheckFramebufferStatusEXT)(GLenum target); /* 791 */
+ void (GLAPIENTRYP DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers); /* 792 */
+ void (GLAPIENTRYP DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers); /* 793 */
+ void (GLAPIENTRYP FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 794 */
+ void (GLAPIENTRYP FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 795 */
+ void (GLAPIENTRYP FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 796 */
+ void (GLAPIENTRYP FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 797 */
+ void (GLAPIENTRYP GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers); /* 798 */
+ void (GLAPIENTRYP GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers); /* 799 */
+ void (GLAPIENTRYP GenerateMipmapEXT)(GLenum target); /* 800 */
+ void (GLAPIENTRYP GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params); /* 801 */
+ void (GLAPIENTRYP GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 802 */
+ GLboolean (GLAPIENTRYP IsFramebufferEXT)(GLuint framebuffer); /* 803 */
+ GLboolean (GLAPIENTRYP IsRenderbufferEXT)(GLuint renderbuffer); /* 804 */
+ void (GLAPIENTRYP RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 805 */
+ void (GLAPIENTRYP BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 806 */
+ void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 807 */
+ void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 808 */
+ void (GLAPIENTRYP BindFragDataLocationEXT)(GLuint program, GLuint colorNumber, const GLchar * name); /* 809 */
+ GLint (GLAPIENTRYP GetFragDataLocationEXT)(GLuint program, const GLchar * name); /* 810 */
+ void (GLAPIENTRYP GetUniformuivEXT)(GLuint program, GLint location, GLuint * params); /* 811 */
+ void (GLAPIENTRYP GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint * params); /* 812 */
+ void (GLAPIENTRYP GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint * params); /* 813 */
+ void (GLAPIENTRYP Uniform1uiEXT)(GLint location, GLuint x); /* 814 */
+ void (GLAPIENTRYP Uniform1uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 815 */
+ void (GLAPIENTRYP Uniform2uiEXT)(GLint location, GLuint x, GLuint y); /* 816 */
+ void (GLAPIENTRYP Uniform2uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 817 */
+ void (GLAPIENTRYP Uniform3uiEXT)(GLint location, GLuint x, GLuint y, GLuint z); /* 818 */
+ void (GLAPIENTRYP Uniform3uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 819 */
+ void (GLAPIENTRYP Uniform4uiEXT)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w); /* 820 */
+ void (GLAPIENTRYP Uniform4uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 821 */
+ void (GLAPIENTRYP VertexAttribI1iEXT)(GLuint index, GLint x); /* 822 */
+ void (GLAPIENTRYP VertexAttribI1ivEXT)(GLuint index, const GLint * v); /* 823 */
+ void (GLAPIENTRYP VertexAttribI1uiEXT)(GLuint index, GLuint x); /* 824 */
+ void (GLAPIENTRYP VertexAttribI1uivEXT)(GLuint index, const GLuint * v); /* 825 */
+ void (GLAPIENTRYP VertexAttribI2iEXT)(GLuint index, GLint x, GLint y); /* 826 */
+ void (GLAPIENTRYP VertexAttribI2ivEXT)(GLuint index, const GLint * v); /* 827 */
+ void (GLAPIENTRYP VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y); /* 828 */
+ void (GLAPIENTRYP VertexAttribI2uivEXT)(GLuint index, const GLuint * v); /* 829 */
+ void (GLAPIENTRYP VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z); /* 830 */
+ void (GLAPIENTRYP VertexAttribI3ivEXT)(GLuint index, const GLint * v); /* 831 */
+ void (GLAPIENTRYP VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z); /* 832 */
+ void (GLAPIENTRYP VertexAttribI3uivEXT)(GLuint index, const GLuint * v); /* 833 */
+ void (GLAPIENTRYP VertexAttribI4bvEXT)(GLuint index, const GLbyte * v); /* 834 */
+ void (GLAPIENTRYP VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 835 */
+ void (GLAPIENTRYP VertexAttribI4ivEXT)(GLuint index, const GLint * v); /* 836 */
+ void (GLAPIENTRYP VertexAttribI4svEXT)(GLuint index, const GLshort * v); /* 837 */
+ void (GLAPIENTRYP VertexAttribI4ubvEXT)(GLuint index, const GLubyte * v); /* 838 */
+ void (GLAPIENTRYP VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 839 */
+ void (GLAPIENTRYP VertexAttribI4uivEXT)(GLuint index, const GLuint * v); /* 840 */
+ void (GLAPIENTRYP VertexAttribI4usvEXT)(GLuint index, const GLushort * v); /* 841 */
+ void (GLAPIENTRYP VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 842 */
+ void (GLAPIENTRYP FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 843 */
+ void (GLAPIENTRYP ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); /* 844 */
+ void (GLAPIENTRYP DisableIndexedEXT)(GLenum target, GLuint index); /* 845 */
+ void (GLAPIENTRYP EnableIndexedEXT)(GLenum target, GLuint index); /* 846 */
+ void (GLAPIENTRYP GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data); /* 847 */
+ void (GLAPIENTRYP GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data); /* 848 */
+ GLboolean (GLAPIENTRYP IsEnabledIndexedEXT)(GLenum target, GLuint index); /* 849 */
+ void (GLAPIENTRYP ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a); /* 850 */
+ void (GLAPIENTRYP ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a); /* 851 */
+ void (GLAPIENTRYP GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint * params); /* 852 */
+ void (GLAPIENTRYP GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint * params); /* 853 */
+ void (GLAPIENTRYP TexParameterIivEXT)(GLenum target, GLenum pname, const GLint * params); /* 854 */
+ void (GLAPIENTRYP TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint * params); /* 855 */
+ void (GLAPIENTRYP BeginConditionalRenderNV)(GLuint query, GLenum mode); /* 856 */
+ void (GLAPIENTRYP EndConditionalRenderNV)(void); /* 857 */
+ void (GLAPIENTRYP BeginTransformFeedbackEXT)(GLenum mode); /* 858 */
+ void (GLAPIENTRYP BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer); /* 859 */
+ void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 860 */
+ void (GLAPIENTRYP BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 861 */
+ void (GLAPIENTRYP EndTransformFeedbackEXT)(void); /* 862 */
+ void (GLAPIENTRYP GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); /* 863 */
+ void (GLAPIENTRYP TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); /* 864 */
+ void (GLAPIENTRYP ProvokingVertexEXT)(GLenum mode); /* 865 */
+ void (GLAPIENTRYP GetTexParameterPointervAPPLE)(GLenum target, GLenum pname, GLvoid ** params); /* 866 */
+ void (GLAPIENTRYP TextureRangeAPPLE)(GLenum target, GLsizei length, GLvoid * pointer); /* 867 */
+ void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 868 */
+ GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 869 */
+ GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 870 */
+ void (GLAPIENTRYP ActiveProgramEXT)(GLuint program); /* 871 */
+ GLuint (GLAPIENTRYP CreateShaderProgramEXT)(GLenum type, const GLchar * string); /* 872 */
+ void (GLAPIENTRYP UseShaderProgramEXT)(GLenum type, GLuint program); /* 873 */
+ void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 874 */
+ void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 875 */
+ void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 876 */
+ void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 877 */
+ void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 878 */
+ void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 879 */
+ void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 880 */
};
#endif /* !defined( _GLAPI_TABLE_H_ ) */
diff --git a/src/mapi/glapi/glapitemp.h b/src/mapi/glapi/glapitemp.h
index ac8cf9ec97..cf844dc90c 100644
--- a/src/mapi/glapi/glapitemp.h
+++ b/src/mapi/glapi/glapitemp.h
@@ -2632,34 +2632,59 @@ KEYWORD1 void KEYWORD2 NAME(UniformMatrix4x3fv)(GLint location, GLsizei count, G
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)
+KEYWORD1 void KEYWORD2 NAME(ClampColor)(GLenum target, GLenum clamp)
{
- DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstanced(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
+ DISPATCH(ClampColor, (target, clamp), (F, "glClampColor(0x%x, 0x%x);\n", target, clamp));
}
-KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+KEYWORD1 void KEYWORD2 NAME(ClearBufferfi)(GLenum buffer, GLint drawbuffer, const GLfloat depth, const GLint stencil)
{
- DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstancedARB(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
+ DISPATCH(ClearBufferfi, (buffer, drawbuffer, depth, stencil), (F, "glClearBufferfi(0x%x, %d, %f, %d);\n", buffer, drawbuffer, depth, stencil));
}
-KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+KEYWORD1 void KEYWORD2 NAME(ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat * value)
{
- DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstancedEXT(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
+ DISPATCH(ClearBufferfv, (buffer, drawbuffer, value), (F, "glClearBufferfv(0x%x, %d, %p);\n", buffer, drawbuffer, (const void *) value));
}
-KEYWORD1 void KEYWORD2 NAME(DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
+KEYWORD1 void KEYWORD2 NAME(ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint * value)
{
- DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstanced(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
+ DISPATCH(ClearBufferiv, (buffer, drawbuffer, value), (F, "glClearBufferiv(0x%x, %d, %p);\n", buffer, drawbuffer, (const void *) value));
}
-KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
+KEYWORD1 void KEYWORD2 NAME(ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint * value)
{
- DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedARB(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
+ DISPATCH(ClearBufferuiv, (buffer, drawbuffer, value), (F, "glClearBufferuiv(0x%x, %d, %p);\n", buffer, drawbuffer, (const void *) value));
}
-KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
+KEYWORD1 const GLubyte * KEYWORD2 NAME(GetStringi)(GLenum name, GLuint index)
+{
+ RETURN_DISPATCH(GetStringi, (name, index), (F, "glGetStringi(0x%x, %d);\n", name, index));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexBuffer)(GLenum target, GLenum internalFormat, GLuint buffer)
+{
+ DISPATCH(TexBuffer, (target, internalFormat, buffer), (F, "glTexBuffer(0x%x, 0x%x, %d);\n", target, internalFormat, buffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level)
+{
+ DISPATCH(FramebufferTexture, (target, attachment, texture, level), (F, "glFramebufferTexture(0x%x, 0x%x, %d, %d);\n", target, attachment, texture, level));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 * params)
+{
+ DISPATCH(GetBufferParameteri64v, (target, pname, params), (F, "glGetBufferParameteri64v(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetInteger64i_v)(GLenum cap, GLuint index, GLint64 * data)
+{
+ DISPATCH(GetInteger64i_v, (cap, index, data), (F, "glGetInteger64i_v(0x%x, %d, %p);\n", cap, index, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribDivisor)(GLuint index, GLuint divisor)
{
- DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedEXT(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
+ DISPATCH(VertexAttribDivisor, (index, divisor), (F, "glVertexAttribDivisor(%d, %d);\n", index, divisor));
}
KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixd)(const GLdouble * m)
@@ -3872,6 +3897,36 @@ 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(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+{
+ DISPATCH(DrawArraysInstancedARB, (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(DrawArraysInstancedARB, (mode, first, count, primcount), (F, "glDrawArraysInstancedEXT(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+{
+ DISPATCH(DrawArraysInstancedARB, (mode, first, count, primcount), (F, "glDrawArraysInstanced(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
+{
+ DISPATCH(DrawElementsInstancedARB, (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(DrawElementsInstancedARB, (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(DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
+{
+ DISPATCH(DrawElementsInstancedARB, (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(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));
@@ -4012,58 +4067,58 @@ 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_590)(GLenum pname, GLfloat * params);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_601)(GLenum pname, GLfloat * params);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_590)(GLenum pname, GLfloat * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_601)(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_591)(GLenum pname, GLint * params);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_602)(GLenum pname, GLint * params);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_591)(GLenum pname, GLint * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_602)(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_592)(GLenum pname, GLfloat param);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_603)(GLenum pname, GLfloat param);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_592)(GLenum pname, GLfloat param)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_603)(GLenum pname, GLfloat param)
{
DISPATCH(PixelTexGenParameterfSGIS, (pname, param), (F, "glPixelTexGenParameterfSGIS(0x%x, %f);\n", pname, param));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_593)(GLenum pname, const GLfloat * params);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_604)(GLenum pname, const GLfloat * params);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_593)(GLenum pname, const GLfloat * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_604)(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_594)(GLenum pname, GLint param);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_605)(GLenum pname, GLint param);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_594)(GLenum pname, GLint param)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_605)(GLenum pname, GLint param)
{
DISPATCH(PixelTexGenParameteriSGIS, (pname, param), (F, "glPixelTexGenParameteriSGIS(0x%x, %d);\n", pname, param));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_595)(GLenum pname, const GLint * params);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_606)(GLenum pname, const GLint * params);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_595)(GLenum pname, const GLint * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_606)(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_596)(GLclampf value, GLboolean invert);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_607)(GLclampf value, GLboolean invert);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_596)(GLclampf value, GLboolean invert)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_607)(GLclampf value, GLboolean invert)
{
DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskSGIS(%f, %d);\n", value, invert));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_597)(GLenum pattern);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_608)(GLenum pattern);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_597)(GLenum pattern)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_608)(GLenum pattern)
{
DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternSGIS(0x%x);\n", pattern));
}
@@ -4113,9 +4168,9 @@ 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_604)(GLenum pname, GLfloat param);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_615)(GLenum pname, GLfloat param);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_604)(GLenum pname, GLfloat param)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_615)(GLenum pname, GLfloat param)
{
DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);\n", pname, param));
}
@@ -4135,9 +4190,9 @@ KEYWORD1 void KEYWORD2 NAME(PointParameterfvEXT)(GLenum pname, const GLfloat * p
DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvEXT(0x%x, %p);\n", pname, (const void *) params));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_605)(GLenum pname, const GLfloat * params);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_616)(GLenum pname, const GLfloat * params);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_605)(GLenum pname, const GLfloat * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_616)(GLenum pname, const GLfloat * params)
{
DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
}
@@ -4392,9 +4447,9 @@ 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_632)(GLenum mode);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_643)(GLenum mode);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_632)(GLenum mode)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_643)(GLenum mode)
{
DISPATCH(PixelTexGenSGIX, (mode), (F, "glPixelTexGenSGIX(0x%x);\n", mode));
}
@@ -4409,9 +4464,9 @@ KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfac
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_633)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_644)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_633)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_644)(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));
}
@@ -4776,65 +4831,65 @@ 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_674)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_685)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_674)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_685)(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_675)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_686)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_675)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_686)(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_676)(GLsizei n, const GLuint * fences);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_687)(GLsizei n, const GLuint * fences);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_676)(GLsizei n, const GLuint * fences)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_687)(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_677)(GLuint fence);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_688)(GLuint fence);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_677)(GLuint fence)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_688)(GLuint fence)
{
DISPATCH(FinishFenceNV, (fence), (F, "glFinishFenceNV(%d);\n", fence));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_678)(GLsizei n, GLuint * fences);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_689)(GLsizei n, GLuint * fences);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_678)(GLsizei n, GLuint * fences)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_689)(GLsizei n, GLuint * fences)
{
DISPATCH(GenFencesNV, (n, fences), (F, "glGenFencesNV(%d, %p);\n", n, (const void *) fences));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_679)(GLuint fence, GLenum pname, GLint * params);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_690)(GLuint fence, GLenum pname, GLint * params);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_679)(GLuint fence, GLenum pname, GLint * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_690)(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_680)(GLuint fence);
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_691)(GLuint fence);
-KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_680)(GLuint fence)
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_691)(GLuint fence)
{
RETURN_DISPATCH(IsFenceNV, (fence), (F, "glIsFenceNV(%d);\n", fence));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_681)(GLuint fence, GLenum condition);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_692)(GLuint fence, GLenum condition);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_681)(GLuint fence, GLenum condition)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_692)(GLuint fence, GLenum condition)
{
DISPATCH(SetFenceNV, (fence, condition), (F, "glSetFenceNV(%d, 0x%x);\n", fence, condition));
}
-KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_682)(GLuint fence);
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_693)(GLuint fence);
-KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_682)(GLuint fence)
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_693)(GLuint fence)
{
RETURN_DISPATCH(TestFenceNV, (fence), (F, "glTestFenceNV(%d);\n", fence));
}
@@ -4949,12 +5004,12 @@ KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len
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)
+KEYWORD1 void KEYWORD2 NAME(ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei 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)
+KEYWORD1 void KEYWORD2 NAME(ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat * params)
{
DISPATCH(ProgramParameters4fvNV, (target, index, num, params), (F, "glProgramParameters4fvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params));
}
@@ -5279,16 +5334,16 @@ KEYWORD1 void KEYWORD2 NAME(PointParameterivNV)(GLenum pname, const GLint * para
DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameterivNV(0x%x, %p);\n", pname, (const void *) params));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_763)(GLenum face);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_774)(GLenum face);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_763)(GLenum face)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_774)(GLenum face)
{
DISPATCH(ActiveStencilFaceEXT, (face), (F, "glActiveStencilFaceEXT(0x%x);\n", face));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_764)(GLuint array);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_775)(GLuint array);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_764)(GLuint array)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_775)(GLuint array)
{
DISPATCH(BindVertexArrayAPPLE, (array), (F, "glBindVertexArrayAPPLE(%d);\n", array));
}
@@ -5298,16 +5353,16 @@ 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_765)(GLsizei n, const GLuint * arrays);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_776)(GLsizei n, const GLuint * arrays);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_765)(GLsizei n, const GLuint * arrays)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_776)(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_766)(GLsizei n, GLuint * arrays);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_777)(GLsizei n, GLuint * arrays);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_766)(GLsizei n, GLuint * arrays)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_777)(GLsizei n, GLuint * arrays)
{
DISPATCH(GenVertexArraysAPPLE, (n, arrays), (F, "glGenVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays));
}
@@ -5317,9 +5372,9 @@ KEYWORD1 GLboolean KEYWORD2 NAME(IsVertexArray)(GLuint array)
RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArray(%d);\n", array));
}
-KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_767)(GLuint array);
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_778)(GLuint array);
-KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_767)(GLuint array)
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_778)(GLuint array)
{
RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArrayAPPLE(%d);\n", array));
}
@@ -5359,14 +5414,19 @@ KEYWORD1 void KEYWORD2 NAME(PrimitiveRestartIndexNV)(GLuint index)
DISPATCH(PrimitiveRestartIndexNV, (index), (F, "glPrimitiveRestartIndexNV(%d);\n", index));
}
+KEYWORD1 void KEYWORD2 NAME(PrimitiveRestartIndex)(GLuint index)
+{
+ DISPATCH(PrimitiveRestartIndexNV, (index), (F, "glPrimitiveRestartIndex(%d);\n", index));
+}
+
KEYWORD1 void KEYWORD2 NAME(PrimitiveRestartNV)(void)
{
DISPATCH(PrimitiveRestartNV, (), (F, "glPrimitiveRestartNV();\n"));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_776)(GLclampd zmin, GLclampd zmax);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_787)(GLclampd zmin, GLclampd zmax);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_776)(GLclampd zmin, GLclampd zmax)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_787)(GLclampd zmin, GLclampd zmax)
{
DISPATCH(DepthBoundsEXT, (zmin, zmax), (F, "glDepthBoundsEXT(%f, %f);\n", zmin, zmax));
}
@@ -5376,9 +5436,9 @@ 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_777)(GLenum modeRGB, GLenum modeA);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_788)(GLenum modeRGB, GLenum modeA);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_777)(GLenum modeRGB, GLenum modeA)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_788)(GLenum modeRGB, GLenum modeA)
{
DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateEXT(0x%x, 0x%x);\n", modeRGB, modeA));
}
@@ -5558,27 +5618,367 @@ KEYWORD1 void KEYWORD2 NAME(BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint src
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_795)(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_806)(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_795)(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_806)(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_796)(GLenum target, GLenum pname, GLint param);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_807)(GLenum target, GLenum pname, GLint param);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_796)(GLenum target, GLenum pname, GLint param)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_807)(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_797)(GLenum target, GLintptr offset, GLsizeiptr size);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_808)(GLenum target, GLintptr offset, GLsizeiptr size);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_797)(GLenum target, GLintptr offset, GLsizeiptr size)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_808)(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(BindFragDataLocationEXT)(GLuint program, GLuint colorNumber, const GLchar * name)
+{
+ DISPATCH(BindFragDataLocationEXT, (program, colorNumber, name), (F, "glBindFragDataLocationEXT(%d, %d, %p);\n", program, colorNumber, (const void *) name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindFragDataLocation)(GLuint program, GLuint colorNumber, const GLchar * name)
+{
+ DISPATCH(BindFragDataLocationEXT, (program, colorNumber, name), (F, "glBindFragDataLocation(%d, %d, %p);\n", program, colorNumber, (const void *) name));
+}
+
+KEYWORD1 GLint KEYWORD2 NAME(GetFragDataLocationEXT)(GLuint program, const GLchar * name)
+{
+ RETURN_DISPATCH(GetFragDataLocationEXT, (program, name), (F, "glGetFragDataLocationEXT(%d, %p);\n", program, (const void *) name));
+}
+
+KEYWORD1 GLint KEYWORD2 NAME(GetFragDataLocation)(GLuint program, const GLchar * name)
+{
+ RETURN_DISPATCH(GetFragDataLocationEXT, (program, name), (F, "glGetFragDataLocation(%d, %p);\n", program, (const void *) name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetUniformuivEXT)(GLuint program, GLint location, GLuint * params)
+{
+ DISPATCH(GetUniformuivEXT, (program, location, params), (F, "glGetUniformuivEXT(%d, %d, %p);\n", program, location, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetUniformuiv)(GLuint program, GLint location, GLuint * params)
+{
+ DISPATCH(GetUniformuivEXT, (program, location, params), (F, "glGetUniformuiv(%d, %d, %p);\n", program, location, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint * params)
+{
+ DISPATCH(GetVertexAttribIivEXT, (index, pname, params), (F, "glGetVertexAttribIivEXT(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIiv)(GLuint index, GLenum pname, GLint * params)
+{
+ DISPATCH(GetVertexAttribIivEXT, (index, pname, params), (F, "glGetVertexAttribIiv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint * params)
+{
+ DISPATCH(GetVertexAttribIuivEXT, (index, pname, params), (F, "glGetVertexAttribIuivEXT(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint * params)
+{
+ DISPATCH(GetVertexAttribIuivEXT, (index, pname, params), (F, "glGetVertexAttribIuiv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1uiEXT)(GLint location, GLuint x)
+{
+ DISPATCH(Uniform1uiEXT, (location, x), (F, "glUniform1uiEXT(%d, %d);\n", location, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1ui)(GLint location, GLuint x)
+{
+ DISPATCH(Uniform1uiEXT, (location, x), (F, "glUniform1ui(%d, %d);\n", location, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1uivEXT)(GLint location, GLsizei count, const GLuint * value)
+{
+ DISPATCH(Uniform1uivEXT, (location, count, value), (F, "glUniform1uivEXT(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1uiv)(GLint location, GLsizei count, const GLuint * value)
+{
+ DISPATCH(Uniform1uivEXT, (location, count, value), (F, "glUniform1uiv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2uiEXT)(GLint location, GLuint x, GLuint y)
+{
+ DISPATCH(Uniform2uiEXT, (location, x, y), (F, "glUniform2uiEXT(%d, %d, %d);\n", location, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2ui)(GLint location, GLuint x, GLuint y)
+{
+ DISPATCH(Uniform2uiEXT, (location, x, y), (F, "glUniform2ui(%d, %d, %d);\n", location, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2uivEXT)(GLint location, GLsizei count, const GLuint * value)
+{
+ DISPATCH(Uniform2uivEXT, (location, count, value), (F, "glUniform2uivEXT(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2uiv)(GLint location, GLsizei count, const GLuint * value)
+{
+ DISPATCH(Uniform2uivEXT, (location, count, value), (F, "glUniform2uiv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3uiEXT)(GLint location, GLuint x, GLuint y, GLuint z)
+{
+ DISPATCH(Uniform3uiEXT, (location, x, y, z), (F, "glUniform3uiEXT(%d, %d, %d, %d);\n", location, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3ui)(GLint location, GLuint x, GLuint y, GLuint z)
+{
+ DISPATCH(Uniform3uiEXT, (location, x, y, z), (F, "glUniform3ui(%d, %d, %d, %d);\n", location, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3uivEXT)(GLint location, GLsizei count, const GLuint * value)
+{
+ DISPATCH(Uniform3uivEXT, (location, count, value), (F, "glUniform3uivEXT(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3uiv)(GLint location, GLsizei count, const GLuint * value)
+{
+ DISPATCH(Uniform3uivEXT, (location, count, value), (F, "glUniform3uiv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4uiEXT)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w)
+{
+ DISPATCH(Uniform4uiEXT, (location, x, y, z, w), (F, "glUniform4uiEXT(%d, %d, %d, %d, %d);\n", location, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4ui)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w)
+{
+ DISPATCH(Uniform4uiEXT, (location, x, y, z, w), (F, "glUniform4ui(%d, %d, %d, %d, %d);\n", location, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4uivEXT)(GLint location, GLsizei count, const GLuint * value)
+{
+ DISPATCH(Uniform4uivEXT, (location, count, value), (F, "glUniform4uivEXT(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4uiv)(GLint location, GLsizei count, const GLuint * value)
+{
+ DISPATCH(Uniform4uivEXT, (location, count, value), (F, "glUniform4uiv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI1iEXT)(GLuint index, GLint x)
+{
+ DISPATCH(VertexAttribI1iEXT, (index, x), (F, "glVertexAttribI1iEXT(%d, %d);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI1i)(GLuint index, GLint x)
+{
+ DISPATCH(VertexAttribI1iEXT, (index, x), (F, "glVertexAttribI1i(%d, %d);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI1ivEXT)(GLuint index, const GLint * v)
+{
+ DISPATCH(VertexAttribI1ivEXT, (index, v), (F, "glVertexAttribI1ivEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI1iv)(GLuint index, const GLint * v)
+{
+ DISPATCH(VertexAttribI1ivEXT, (index, v), (F, "glVertexAttribI1iv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI1uiEXT)(GLuint index, GLuint x)
+{
+ DISPATCH(VertexAttribI1uiEXT, (index, x), (F, "glVertexAttribI1uiEXT(%d, %d);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI1ui)(GLuint index, GLuint x)
+{
+ DISPATCH(VertexAttribI1uiEXT, (index, x), (F, "glVertexAttribI1ui(%d, %d);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI1uivEXT)(GLuint index, const GLuint * v)
+{
+ DISPATCH(VertexAttribI1uivEXT, (index, v), (F, "glVertexAttribI1uivEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI1uiv)(GLuint index, const GLuint * v)
+{
+ DISPATCH(VertexAttribI1uivEXT, (index, v), (F, "glVertexAttribI1uiv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI2iEXT)(GLuint index, GLint x, GLint y)
+{
+ DISPATCH(VertexAttribI2iEXT, (index, x, y), (F, "glVertexAttribI2iEXT(%d, %d, %d);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI2i)(GLuint index, GLint x, GLint y)
+{
+ DISPATCH(VertexAttribI2iEXT, (index, x, y), (F, "glVertexAttribI2i(%d, %d, %d);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI2ivEXT)(GLuint index, const GLint * v)
+{
+ DISPATCH(VertexAttribI2ivEXT, (index, v), (F, "glVertexAttribI2ivEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI2iv)(GLuint index, const GLint * v)
+{
+ DISPATCH(VertexAttribI2ivEXT, (index, v), (F, "glVertexAttribI2iv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y)
+{
+ DISPATCH(VertexAttribI2uiEXT, (index, x, y), (F, "glVertexAttribI2uiEXT(%d, %d, %d);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI2ui)(GLuint index, GLuint x, GLuint y)
+{
+ DISPATCH(VertexAttribI2uiEXT, (index, x, y), (F, "glVertexAttribI2ui(%d, %d, %d);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI2uivEXT)(GLuint index, const GLuint * v)
+{
+ DISPATCH(VertexAttribI2uivEXT, (index, v), (F, "glVertexAttribI2uivEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI2uiv)(GLuint index, const GLuint * v)
+{
+ DISPATCH(VertexAttribI2uivEXT, (index, v), (F, "glVertexAttribI2uiv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z)
+{
+ DISPATCH(VertexAttribI3iEXT, (index, x, y, z), (F, "glVertexAttribI3iEXT(%d, %d, %d, %d);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z)
+{
+ DISPATCH(VertexAttribI3iEXT, (index, x, y, z), (F, "glVertexAttribI3i(%d, %d, %d, %d);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI3ivEXT)(GLuint index, const GLint * v)
+{
+ DISPATCH(VertexAttribI3ivEXT, (index, v), (F, "glVertexAttribI3ivEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI3iv)(GLuint index, const GLint * v)
+{
+ DISPATCH(VertexAttribI3ivEXT, (index, v), (F, "glVertexAttribI3iv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z)
+{
+ DISPATCH(VertexAttribI3uiEXT, (index, x, y, z), (F, "glVertexAttribI3uiEXT(%d, %d, %d, %d);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z)
+{
+ DISPATCH(VertexAttribI3uiEXT, (index, x, y, z), (F, "glVertexAttribI3ui(%d, %d, %d, %d);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI3uivEXT)(GLuint index, const GLuint * v)
+{
+ DISPATCH(VertexAttribI3uivEXT, (index, v), (F, "glVertexAttribI3uivEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI3uiv)(GLuint index, const GLuint * v)
+{
+ DISPATCH(VertexAttribI3uivEXT, (index, v), (F, "glVertexAttribI3uiv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4bvEXT)(GLuint index, const GLbyte * v)
+{
+ DISPATCH(VertexAttribI4bvEXT, (index, v), (F, "glVertexAttribI4bvEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4bv)(GLuint index, const GLbyte * v)
+{
+ DISPATCH(VertexAttribI4bvEXT, (index, v), (F, "glVertexAttribI4bv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w)
+{
+ DISPATCH(VertexAttribI4iEXT, (index, x, y, z, w), (F, "glVertexAttribI4iEXT(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w)
+{
+ DISPATCH(VertexAttribI4iEXT, (index, x, y, z, w), (F, "glVertexAttribI4i(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ivEXT)(GLuint index, const GLint * v)
+{
+ DISPATCH(VertexAttribI4ivEXT, (index, v), (F, "glVertexAttribI4ivEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4iv)(GLuint index, const GLint * v)
+{
+ DISPATCH(VertexAttribI4ivEXT, (index, v), (F, "glVertexAttribI4iv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4svEXT)(GLuint index, const GLshort * v)
+{
+ DISPATCH(VertexAttribI4svEXT, (index, v), (F, "glVertexAttribI4svEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4sv)(GLuint index, const GLshort * v)
+{
+ DISPATCH(VertexAttribI4svEXT, (index, v), (F, "glVertexAttribI4sv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ubvEXT)(GLuint index, const GLubyte * v)
+{
+ DISPATCH(VertexAttribI4ubvEXT, (index, v), (F, "glVertexAttribI4ubvEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ubv)(GLuint index, const GLubyte * v)
+{
+ DISPATCH(VertexAttribI4ubvEXT, (index, v), (F, "glVertexAttribI4ubv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+{
+ DISPATCH(VertexAttribI4uiEXT, (index, x, y, z, w), (F, "glVertexAttribI4uiEXT(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+{
+ DISPATCH(VertexAttribI4uiEXT, (index, x, y, z, w), (F, "glVertexAttribI4ui(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4uivEXT)(GLuint index, const GLuint * v)
+{
+ DISPATCH(VertexAttribI4uivEXT, (index, v), (F, "glVertexAttribI4uivEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4uiv)(GLuint index, const GLuint * v)
+{
+ DISPATCH(VertexAttribI4uivEXT, (index, v), (F, "glVertexAttribI4uiv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4usvEXT)(GLuint index, const GLushort * v)
+{
+ DISPATCH(VertexAttribI4usvEXT, (index, v), (F, "glVertexAttribI4usvEXT(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribI4usv)(GLuint index, const GLushort * v)
+{
+ DISPATCH(VertexAttribI4usvEXT, (index, v), (F, "glVertexAttribI4usv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+ DISPATCH(VertexAttribIPointerEXT, (index, size, type, stride, pointer), (F, "glVertexAttribIPointerEXT(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+ DISPATCH(VertexAttribIPointerEXT, (index, size, type, stride, pointer), (F, "glVertexAttribIPointer(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer));
+}
+
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));
@@ -5594,41 +5994,131 @@ KEYWORD1 void KEYWORD2 NAME(ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLbool
DISPATCH(ColorMaskIndexedEXT, (buf, r, g, b, a), (F, "glColorMaskIndexedEXT(%d, %d, %d, %d, %d);\n", buf, r, g, b, a));
}
+KEYWORD1 void KEYWORD2 NAME(ColorMaski)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
+{
+ DISPATCH(ColorMaskIndexedEXT, (buf, r, g, b, a), (F, "glColorMaski(%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(Disablei)(GLenum target, GLuint index)
+{
+ DISPATCH(DisableIndexedEXT, (target, index), (F, "glDisablei(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(Enablei)(GLenum target, GLuint index)
+{
+ DISPATCH(EnableIndexedEXT, (target, index), (F, "glEnablei(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(GetBooleani_v)(GLenum value, GLuint index, GLboolean * data)
+{
+ DISPATCH(GetBooleanIndexedvEXT, (value, index, data), (F, "glGetBooleani_v(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 void KEYWORD2 NAME(GetIntegeri_v)(GLenum value, GLuint index, GLint * data)
+{
+ DISPATCH(GetIntegerIndexedvEXT, (value, index, data), (F, "glGetIntegeri_v(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 GLboolean KEYWORD2 NAME(IsEnabledi)(GLenum target, GLuint index)
+{
+ RETURN_DISPATCH(IsEnabledIndexedEXT, (target, index), (F, "glIsEnabledi(0x%x, %d);\n", target, index));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a)
+{
+ DISPATCH(ClearColorIiEXT, (r, g, b, a), (F, "glClearColorIiEXT(%d, %d, %d, %d);\n", r, g, b, a));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a)
+{
+ DISPATCH(ClearColorIuiEXT, (r, g, b, a), (F, "glClearColorIuiEXT(%d, %d, %d, %d);\n", r, g, b, a));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint * params)
+{
+ DISPATCH(GetTexParameterIivEXT, (target, pname, params), (F, "glGetTexParameterIivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexParameterIiv)(GLenum target, GLenum pname, GLint * params)
+{
+ DISPATCH(GetTexParameterIivEXT, (target, pname, params), (F, "glGetTexParameterIiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint * params)
+{
+ DISPATCH(GetTexParameterIuivEXT, (target, pname, params), (F, "glGetTexParameterIuivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexParameterIuiv)(GLenum target, GLenum pname, GLuint * params)
+{
+ DISPATCH(GetTexParameterIuivEXT, (target, pname, params), (F, "glGetTexParameterIuiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexParameterIivEXT)(GLenum target, GLenum pname, const GLint * params)
+{
+ DISPATCH(TexParameterIivEXT, (target, pname, params), (F, "glTexParameterIivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexParameterIiv)(GLenum target, GLenum pname, const GLint * params)
+{
+ DISPATCH(TexParameterIivEXT, (target, pname, params), (F, "glTexParameterIiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint * params)
+{
+ DISPATCH(TexParameterIuivEXT, (target, pname, params), (F, "glTexParameterIuivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexParameterIuiv)(GLenum target, GLenum pname, const GLuint * params)
+{
+ DISPATCH(TexParameterIuivEXT, (target, pname, params), (F, "glTexParameterIuiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
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(BeginConditionalRender)(GLuint query, GLenum mode)
+{
+ DISPATCH(BeginConditionalRenderNV, (query, mode), (F, "glBeginConditionalRender(%d, 0x%x);\n", query, mode));
+}
+
KEYWORD1 void KEYWORD2 NAME(EndConditionalRenderNV)(void)
{
DISPATCH(EndConditionalRenderNV, (), (F, "glEndConditionalRenderNV();\n"));
}
+KEYWORD1 void KEYWORD2 NAME(EndConditionalRender)(void)
+{
+ DISPATCH(EndConditionalRenderNV, (), (F, "glEndConditionalRender();\n"));
+}
+
KEYWORD1 void KEYWORD2 NAME(BeginTransformFeedbackEXT)(GLenum mode)
{
DISPATCH(BeginTransformFeedbackEXT, (mode), (F, "glBeginTransformFeedbackEXT(0x%x);\n", mode));
@@ -5689,7 +6179,7 @@ KEYWORD1 void KEYWORD2 NAME(TransformFeedbackVaryingsEXT)(GLuint program, GLsize
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)
+KEYWORD1 void KEYWORD2 NAME(TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar* * varyings, GLenum bufferMode)
{
DISPATCH(TransformFeedbackVaryingsEXT, (program, count, varyings, bufferMode), (F, "glTransformFeedbackVaryings(%d, %d, %p, 0x%x);\n", program, count, (const void *) varyings, bufferMode));
}
@@ -5704,16 +6194,16 @@ KEYWORD1 void KEYWORD2 NAME(ProvokingVertex)(GLenum mode)
DISPATCH(ProvokingVertexEXT, (mode), (F, "glProvokingVertex(0x%x);\n", mode));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_815)(GLenum target, GLenum pname, GLvoid ** params);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_866)(GLenum target, GLenum pname, GLvoid ** params);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_815)(GLenum target, GLenum pname, GLvoid ** params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_866)(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_816)(GLenum target, GLsizei length, GLvoid * pointer);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_867)(GLenum target, GLsizei length, GLvoid * pointer);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_816)(GLenum target, GLsizei length, GLvoid * pointer)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_867)(GLenum target, GLsizei length, GLvoid * pointer)
{
DISPATCH(TextureRangeAPPLE, (target, length, pointer), (F, "glTextureRangeAPPLE(0x%x, %d, %p);\n", target, length, (const void *) pointer));
}
@@ -5733,37 +6223,52 @@ KEYWORD1 GLenum KEYWORD2 NAME(ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint
RETURN_DISPATCH(ObjectUnpurgeableAPPLE, (objectType, name, option), (F, "glObjectUnpurgeableAPPLE(0x%x, %d, 0x%x);\n", objectType, name, option));
}
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_820)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+KEYWORD1 void KEYWORD2 NAME(ActiveProgramEXT)(GLuint program)
+{
+ DISPATCH(ActiveProgramEXT, (program), (F, "glActiveProgramEXT(%d);\n", program));
+}
+
+KEYWORD1 GLuint KEYWORD2 NAME(CreateShaderProgramEXT)(GLenum type, const GLchar * string)
+{
+ RETURN_DISPATCH(CreateShaderProgramEXT, (type, string), (F, "glCreateShaderProgramEXT(0x%x, %p);\n", type, (const void *) string));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UseShaderProgramEXT)(GLenum type, GLuint program)
+{
+ DISPATCH(UseShaderProgramEXT, (type, program), (F, "glUseShaderProgramEXT(0x%x, %d);\n", type, program));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_874)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_820)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_874)(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_821)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_875)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_821)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_875)(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_822)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_876)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_822)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_876)(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_823)(GLuint id, GLenum pname, GLint64EXT * params);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_877)(GLuint id, GLenum pname, GLint64EXT * params);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_823)(GLuint id, GLenum pname, GLint64EXT * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_877)(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_824)(GLuint id, GLenum pname, GLuint64EXT * params);
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_878)(GLuint id, GLenum pname, GLuint64EXT * params);
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_824)(GLuint id, GLenum pname, GLuint64EXT * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_878)(GLuint id, GLenum pname, GLuint64EXT * params)
{
DISPATCH(GetQueryObjectui64vEXT, (id, pname, params), (F, "glGetQueryObjectui64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params));
}
@@ -6361,8 +6866,17 @@ _glapi_proc DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(UniformMatrix3x4fv),
TABLE_ENTRY(UniformMatrix4x2fv),
TABLE_ENTRY(UniformMatrix4x3fv),
- TABLE_ENTRY(DrawArraysInstanced),
- TABLE_ENTRY(DrawElementsInstanced),
+ TABLE_ENTRY(ClampColor),
+ TABLE_ENTRY(ClearBufferfi),
+ TABLE_ENTRY(ClearBufferfv),
+ TABLE_ENTRY(ClearBufferiv),
+ TABLE_ENTRY(ClearBufferuiv),
+ TABLE_ENTRY(GetStringi),
+ TABLE_ENTRY(TexBuffer),
+ TABLE_ENTRY(FramebufferTexture),
+ TABLE_ENTRY(GetBufferParameteri64v),
+ TABLE_ENTRY(GetInteger64i_v),
+ TABLE_ENTRY(VertexAttribDivisor),
TABLE_ENTRY(LoadTransposeMatrixdARB),
TABLE_ENTRY(LoadTransposeMatrixfARB),
TABLE_ENTRY(MultTransposeMatrixdARB),
@@ -6494,6 +7008,8 @@ _glapi_proc DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(GetActiveAttribARB),
TABLE_ENTRY(GetAttribLocationARB),
TABLE_ENTRY(DrawBuffersARB),
+ TABLE_ENTRY(DrawArraysInstancedARB),
+ TABLE_ENTRY(DrawElementsInstancedARB),
TABLE_ENTRY(RenderbufferStorageMultisample),
TABLE_ENTRY(FramebufferTextureARB),
TABLE_ENTRY(FramebufferTextureFaceARB),
@@ -6521,14 +7037,14 @@ _glapi_proc DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(PauseTransformFeedback),
TABLE_ENTRY(ResumeTransformFeedback),
TABLE_ENTRY(PolygonOffsetEXT),
- TABLE_ENTRY(_dispatch_stub_590),
- TABLE_ENTRY(_dispatch_stub_591),
- TABLE_ENTRY(_dispatch_stub_592),
- TABLE_ENTRY(_dispatch_stub_593),
- TABLE_ENTRY(_dispatch_stub_594),
- TABLE_ENTRY(_dispatch_stub_595),
- TABLE_ENTRY(_dispatch_stub_596),
- TABLE_ENTRY(_dispatch_stub_597),
+ TABLE_ENTRY(_dispatch_stub_601),
+ TABLE_ENTRY(_dispatch_stub_602),
+ TABLE_ENTRY(_dispatch_stub_603),
+ TABLE_ENTRY(_dispatch_stub_604),
+ TABLE_ENTRY(_dispatch_stub_605),
+ TABLE_ENTRY(_dispatch_stub_606),
+ TABLE_ENTRY(_dispatch_stub_607),
+ TABLE_ENTRY(_dispatch_stub_608),
TABLE_ENTRY(ColorPointerEXT),
TABLE_ENTRY(EdgeFlagPointerEXT),
TABLE_ENTRY(IndexPointerEXT),
@@ -6563,7 +7079,7 @@ _glapi_proc DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(FogCoorddvEXT),
TABLE_ENTRY(FogCoordfEXT),
TABLE_ENTRY(FogCoordfvEXT),
- TABLE_ENTRY(_dispatch_stub_632),
+ TABLE_ENTRY(_dispatch_stub_643),
TABLE_ENTRY(BlendFuncSeparateEXT),
TABLE_ENTRY(FlushVertexArrayRangeNV),
TABLE_ENTRY(VertexArrayRangeNV),
@@ -6605,15 +7121,15 @@ _glapi_proc DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(WindowPos4ivMESA),
TABLE_ENTRY(WindowPos4sMESA),
TABLE_ENTRY(WindowPos4svMESA),
- TABLE_ENTRY(_dispatch_stub_674),
- TABLE_ENTRY(_dispatch_stub_675),
- TABLE_ENTRY(_dispatch_stub_676),
- TABLE_ENTRY(_dispatch_stub_677),
- TABLE_ENTRY(_dispatch_stub_678),
- TABLE_ENTRY(_dispatch_stub_679),
- TABLE_ENTRY(_dispatch_stub_680),
- TABLE_ENTRY(_dispatch_stub_681),
- TABLE_ENTRY(_dispatch_stub_682),
+ TABLE_ENTRY(_dispatch_stub_685),
+ TABLE_ENTRY(_dispatch_stub_686),
+ TABLE_ENTRY(_dispatch_stub_687),
+ TABLE_ENTRY(_dispatch_stub_688),
+ TABLE_ENTRY(_dispatch_stub_689),
+ TABLE_ENTRY(_dispatch_stub_690),
+ TABLE_ENTRY(_dispatch_stub_691),
+ TABLE_ENTRY(_dispatch_stub_692),
+ TABLE_ENTRY(_dispatch_stub_693),
TABLE_ENTRY(AreProgramsResidentNV),
TABLE_ENTRY(BindProgramNV),
TABLE_ENTRY(DeleteProgramsNV),
@@ -6694,11 +7210,11 @@ _glapi_proc DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(SetFragmentShaderConstantATI),
TABLE_ENTRY(PointParameteriNV),
TABLE_ENTRY(PointParameterivNV),
- TABLE_ENTRY(_dispatch_stub_763),
- TABLE_ENTRY(_dispatch_stub_764),
- TABLE_ENTRY(_dispatch_stub_765),
- TABLE_ENTRY(_dispatch_stub_766),
- TABLE_ENTRY(_dispatch_stub_767),
+ TABLE_ENTRY(_dispatch_stub_774),
+ TABLE_ENTRY(_dispatch_stub_775),
+ TABLE_ENTRY(_dispatch_stub_776),
+ TABLE_ENTRY(_dispatch_stub_777),
+ TABLE_ENTRY(_dispatch_stub_778),
TABLE_ENTRY(GetProgramNamedParameterdvNV),
TABLE_ENTRY(GetProgramNamedParameterfvNV),
TABLE_ENTRY(ProgramNamedParameter4dNV),
@@ -6707,8 +7223,8 @@ _glapi_proc DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(ProgramNamedParameter4fvNV),
TABLE_ENTRY(PrimitiveRestartIndexNV),
TABLE_ENTRY(PrimitiveRestartNV),
- TABLE_ENTRY(_dispatch_stub_776),
- TABLE_ENTRY(_dispatch_stub_777),
+ TABLE_ENTRY(_dispatch_stub_787),
+ TABLE_ENTRY(_dispatch_stub_788),
TABLE_ENTRY(BindFramebufferEXT),
TABLE_ENTRY(BindRenderbufferEXT),
TABLE_ENTRY(CheckFramebufferStatusEXT),
@@ -6726,9 +7242,43 @@ _glapi_proc DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(IsFramebufferEXT),
TABLE_ENTRY(IsRenderbufferEXT),
TABLE_ENTRY(RenderbufferStorageEXT),
- TABLE_ENTRY(_dispatch_stub_795),
- TABLE_ENTRY(_dispatch_stub_796),
- TABLE_ENTRY(_dispatch_stub_797),
+ TABLE_ENTRY(_dispatch_stub_806),
+ TABLE_ENTRY(_dispatch_stub_807),
+ TABLE_ENTRY(_dispatch_stub_808),
+ TABLE_ENTRY(BindFragDataLocationEXT),
+ TABLE_ENTRY(GetFragDataLocationEXT),
+ TABLE_ENTRY(GetUniformuivEXT),
+ TABLE_ENTRY(GetVertexAttribIivEXT),
+ TABLE_ENTRY(GetVertexAttribIuivEXT),
+ TABLE_ENTRY(Uniform1uiEXT),
+ TABLE_ENTRY(Uniform1uivEXT),
+ TABLE_ENTRY(Uniform2uiEXT),
+ TABLE_ENTRY(Uniform2uivEXT),
+ TABLE_ENTRY(Uniform3uiEXT),
+ TABLE_ENTRY(Uniform3uivEXT),
+ TABLE_ENTRY(Uniform4uiEXT),
+ TABLE_ENTRY(Uniform4uivEXT),
+ TABLE_ENTRY(VertexAttribI1iEXT),
+ TABLE_ENTRY(VertexAttribI1ivEXT),
+ TABLE_ENTRY(VertexAttribI1uiEXT),
+ TABLE_ENTRY(VertexAttribI1uivEXT),
+ TABLE_ENTRY(VertexAttribI2iEXT),
+ TABLE_ENTRY(VertexAttribI2ivEXT),
+ TABLE_ENTRY(VertexAttribI2uiEXT),
+ TABLE_ENTRY(VertexAttribI2uivEXT),
+ TABLE_ENTRY(VertexAttribI3iEXT),
+ TABLE_ENTRY(VertexAttribI3ivEXT),
+ TABLE_ENTRY(VertexAttribI3uiEXT),
+ TABLE_ENTRY(VertexAttribI3uivEXT),
+ TABLE_ENTRY(VertexAttribI4bvEXT),
+ TABLE_ENTRY(VertexAttribI4iEXT),
+ TABLE_ENTRY(VertexAttribI4ivEXT),
+ TABLE_ENTRY(VertexAttribI4svEXT),
+ TABLE_ENTRY(VertexAttribI4ubvEXT),
+ TABLE_ENTRY(VertexAttribI4uiEXT),
+ TABLE_ENTRY(VertexAttribI4uivEXT),
+ TABLE_ENTRY(VertexAttribI4usvEXT),
+ TABLE_ENTRY(VertexAttribIPointerEXT),
TABLE_ENTRY(FramebufferTextureLayerEXT),
TABLE_ENTRY(ColorMaskIndexedEXT),
TABLE_ENTRY(DisableIndexedEXT),
@@ -6736,6 +7286,12 @@ _glapi_proc DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(GetBooleanIndexedvEXT),
TABLE_ENTRY(GetIntegerIndexedvEXT),
TABLE_ENTRY(IsEnabledIndexedEXT),
+ TABLE_ENTRY(ClearColorIiEXT),
+ TABLE_ENTRY(ClearColorIuiEXT),
+ TABLE_ENTRY(GetTexParameterIivEXT),
+ TABLE_ENTRY(GetTexParameterIuivEXT),
+ TABLE_ENTRY(TexParameterIivEXT),
+ TABLE_ENTRY(TexParameterIuivEXT),
TABLE_ENTRY(BeginConditionalRenderNV),
TABLE_ENTRY(EndConditionalRenderNV),
TABLE_ENTRY(BeginTransformFeedbackEXT),
@@ -6746,16 +7302,19 @@ _glapi_proc DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(GetTransformFeedbackVaryingEXT),
TABLE_ENTRY(TransformFeedbackVaryingsEXT),
TABLE_ENTRY(ProvokingVertexEXT),
- TABLE_ENTRY(_dispatch_stub_815),
- TABLE_ENTRY(_dispatch_stub_816),
+ TABLE_ENTRY(_dispatch_stub_866),
+ TABLE_ENTRY(_dispatch_stub_867),
TABLE_ENTRY(GetObjectParameterivAPPLE),
TABLE_ENTRY(ObjectPurgeableAPPLE),
TABLE_ENTRY(ObjectUnpurgeableAPPLE),
- TABLE_ENTRY(_dispatch_stub_820),
- TABLE_ENTRY(_dispatch_stub_821),
- TABLE_ENTRY(_dispatch_stub_822),
- TABLE_ENTRY(_dispatch_stub_823),
- TABLE_ENTRY(_dispatch_stub_824),
+ TABLE_ENTRY(ActiveProgramEXT),
+ TABLE_ENTRY(CreateShaderProgramEXT),
+ TABLE_ENTRY(UseShaderProgramEXT),
+ TABLE_ENTRY(_dispatch_stub_874),
+ TABLE_ENTRY(_dispatch_stub_875),
+ TABLE_ENTRY(_dispatch_stub_876),
+ TABLE_ENTRY(_dispatch_stub_877),
+ TABLE_ENTRY(_dispatch_stub_878),
TABLE_ENTRY(EGLImageTargetRenderbufferStorageOES),
TABLE_ENTRY(EGLImageTargetTexture2DOES),
/* A whole bunch of no-op functions. These might be called
@@ -6944,10 +7503,6 @@ _glapi_proc UNUSED_TABLE_NAME[] = {
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),
@@ -7059,13 +7614,17 @@ _glapi_proc UNUSED_TABLE_NAME[] = {
TABLE_ENTRY(GetAttribLocation),
TABLE_ENTRY(DrawBuffers),
TABLE_ENTRY(DrawBuffersATI),
+ TABLE_ENTRY(DrawArraysInstancedEXT),
+ TABLE_ENTRY(DrawArraysInstanced),
+ TABLE_ENTRY(DrawElementsInstancedEXT),
+ TABLE_ENTRY(DrawElementsInstanced),
TABLE_ENTRY(RenderbufferStorageMultisampleEXT),
TABLE_ENTRY(PointParameterf),
TABLE_ENTRY(PointParameterfARB),
- TABLE_ENTRY(_dispatch_stub_604),
+ TABLE_ENTRY(_dispatch_stub_615),
TABLE_ENTRY(PointParameterfv),
TABLE_ENTRY(PointParameterfvARB),
- TABLE_ENTRY(_dispatch_stub_605),
+ TABLE_ENTRY(_dispatch_stub_616),
TABLE_ENTRY(SecondaryColor3b),
TABLE_ENTRY(SecondaryColor3bv),
TABLE_ENTRY(SecondaryColor3d),
@@ -7091,7 +7650,7 @@ _glapi_proc UNUSED_TABLE_NAME[] = {
TABLE_ENTRY(FogCoordf),
TABLE_ENTRY(FogCoordfv),
TABLE_ENTRY(BlendFuncSeparate),
- TABLE_ENTRY(_dispatch_stub_633),
+ TABLE_ENTRY(_dispatch_stub_644),
TABLE_ENTRY(WindowPos2d),
TABLE_ENTRY(WindowPos2dARB),
TABLE_ENTRY(WindowPos2dv),
@@ -7134,6 +7693,7 @@ _glapi_proc UNUSED_TABLE_NAME[] = {
TABLE_ENTRY(PointParameteriv),
TABLE_ENTRY(DeleteVertexArrays),
TABLE_ENTRY(IsVertexArray),
+ TABLE_ENTRY(PrimitiveRestartIndex),
TABLE_ENTRY(BlendEquationSeparate),
TABLE_ENTRY(BindFramebuffer),
TABLE_ENTRY(BindRenderbuffer),
@@ -7153,7 +7713,53 @@ _glapi_proc UNUSED_TABLE_NAME[] = {
TABLE_ENTRY(IsRenderbuffer),
TABLE_ENTRY(RenderbufferStorage),
TABLE_ENTRY(BlitFramebuffer),
+ TABLE_ENTRY(BindFragDataLocation),
+ TABLE_ENTRY(GetFragDataLocation),
+ TABLE_ENTRY(GetUniformuiv),
+ TABLE_ENTRY(GetVertexAttribIiv),
+ TABLE_ENTRY(GetVertexAttribIuiv),
+ TABLE_ENTRY(Uniform1ui),
+ TABLE_ENTRY(Uniform1uiv),
+ TABLE_ENTRY(Uniform2ui),
+ TABLE_ENTRY(Uniform2uiv),
+ TABLE_ENTRY(Uniform3ui),
+ TABLE_ENTRY(Uniform3uiv),
+ TABLE_ENTRY(Uniform4ui),
+ TABLE_ENTRY(Uniform4uiv),
+ TABLE_ENTRY(VertexAttribI1i),
+ TABLE_ENTRY(VertexAttribI1iv),
+ TABLE_ENTRY(VertexAttribI1ui),
+ TABLE_ENTRY(VertexAttribI1uiv),
+ TABLE_ENTRY(VertexAttribI2i),
+ TABLE_ENTRY(VertexAttribI2iv),
+ TABLE_ENTRY(VertexAttribI2ui),
+ TABLE_ENTRY(VertexAttribI2uiv),
+ TABLE_ENTRY(VertexAttribI3i),
+ TABLE_ENTRY(VertexAttribI3iv),
+ TABLE_ENTRY(VertexAttribI3ui),
+ TABLE_ENTRY(VertexAttribI3uiv),
+ TABLE_ENTRY(VertexAttribI4bv),
+ TABLE_ENTRY(VertexAttribI4i),
+ TABLE_ENTRY(VertexAttribI4iv),
+ TABLE_ENTRY(VertexAttribI4sv),
+ TABLE_ENTRY(VertexAttribI4ubv),
+ TABLE_ENTRY(VertexAttribI4ui),
+ TABLE_ENTRY(VertexAttribI4uiv),
+ TABLE_ENTRY(VertexAttribI4usv),
+ TABLE_ENTRY(VertexAttribIPointer),
TABLE_ENTRY(FramebufferTextureLayer),
+ TABLE_ENTRY(ColorMaski),
+ TABLE_ENTRY(Disablei),
+ TABLE_ENTRY(Enablei),
+ TABLE_ENTRY(GetBooleani_v),
+ TABLE_ENTRY(GetIntegeri_v),
+ TABLE_ENTRY(IsEnabledi),
+ TABLE_ENTRY(GetTexParameterIiv),
+ TABLE_ENTRY(GetTexParameterIuiv),
+ TABLE_ENTRY(TexParameterIiv),
+ TABLE_ENTRY(TexParameterIuiv),
+ TABLE_ENTRY(BeginConditionalRender),
+ TABLE_ENTRY(EndConditionalRender),
TABLE_ENTRY(BeginTransformFeedback),
TABLE_ENTRY(BindBufferBase),
TABLE_ENTRY(BindBufferRange),
diff --git a/src/mapi/glapi/glprocs.h b/src/mapi/glapi/glprocs.h
index fd42c0a743..c0a98e622a 100644
--- a/src/mapi/glapi/glprocs.h
+++ b/src/mapi/glapi/glprocs.h
@@ -482,8 +482,17 @@ static const char gl_string_table[] =
"glUniformMatrix3x4fv\0"
"glUniformMatrix4x2fv\0"
"glUniformMatrix4x3fv\0"
- "glDrawArraysInstanced\0"
- "glDrawElementsInstanced\0"
+ "glClampColor\0"
+ "glClearBufferfi\0"
+ "glClearBufferfv\0"
+ "glClearBufferiv\0"
+ "glClearBufferuiv\0"
+ "glGetStringi\0"
+ "glTexBuffer\0"
+ "glFramebufferTexture\0"
+ "glGetBufferParameteri64v\0"
+ "glGetInteger64i_v\0"
+ "glVertexAttribDivisor\0"
"glLoadTransposeMatrixdARB\0"
"glLoadTransposeMatrixfARB\0"
"glMultTransposeMatrixdARB\0"
@@ -615,6 +624,8 @@ static const char gl_string_table[] =
"glGetActiveAttribARB\0"
"glGetAttribLocationARB\0"
"glDrawBuffersARB\0"
+ "glDrawArraysInstancedARB\0"
+ "glDrawElementsInstancedARB\0"
"glRenderbufferStorageMultisample\0"
"glFramebufferTextureARB\0"
"glFramebufferTextureFaceARB\0"
@@ -850,6 +861,40 @@ static const char gl_string_table[] =
"glBlitFramebufferEXT\0"
"glBufferParameteriAPPLE\0"
"glFlushMappedBufferRangeAPPLE\0"
+ "glBindFragDataLocationEXT\0"
+ "glGetFragDataLocationEXT\0"
+ "glGetUniformuivEXT\0"
+ "glGetVertexAttribIivEXT\0"
+ "glGetVertexAttribIuivEXT\0"
+ "glUniform1uiEXT\0"
+ "glUniform1uivEXT\0"
+ "glUniform2uiEXT\0"
+ "glUniform2uivEXT\0"
+ "glUniform3uiEXT\0"
+ "glUniform3uivEXT\0"
+ "glUniform4uiEXT\0"
+ "glUniform4uivEXT\0"
+ "glVertexAttribI1iEXT\0"
+ "glVertexAttribI1ivEXT\0"
+ "glVertexAttribI1uiEXT\0"
+ "glVertexAttribI1uivEXT\0"
+ "glVertexAttribI2iEXT\0"
+ "glVertexAttribI2ivEXT\0"
+ "glVertexAttribI2uiEXT\0"
+ "glVertexAttribI2uivEXT\0"
+ "glVertexAttribI3iEXT\0"
+ "glVertexAttribI3ivEXT\0"
+ "glVertexAttribI3uiEXT\0"
+ "glVertexAttribI3uivEXT\0"
+ "glVertexAttribI4bvEXT\0"
+ "glVertexAttribI4iEXT\0"
+ "glVertexAttribI4ivEXT\0"
+ "glVertexAttribI4svEXT\0"
+ "glVertexAttribI4ubvEXT\0"
+ "glVertexAttribI4uiEXT\0"
+ "glVertexAttribI4uivEXT\0"
+ "glVertexAttribI4usvEXT\0"
+ "glVertexAttribIPointerEXT\0"
"glFramebufferTextureLayerEXT\0"
"glColorMaskIndexedEXT\0"
"glDisableIndexedEXT\0"
@@ -857,6 +902,12 @@ static const char gl_string_table[] =
"glGetBooleanIndexedvEXT\0"
"glGetIntegerIndexedvEXT\0"
"glIsEnabledIndexedEXT\0"
+ "glClearColorIiEXT\0"
+ "glClearColorIuiEXT\0"
+ "glGetTexParameterIivEXT\0"
+ "glGetTexParameterIuivEXT\0"
+ "glTexParameterIivEXT\0"
+ "glTexParameterIuivEXT\0"
"glBeginConditionalRenderNV\0"
"glEndConditionalRenderNV\0"
"glBeginTransformFeedbackEXT\0"
@@ -872,6 +923,9 @@ static const char gl_string_table[] =
"glGetObjectParameterivAPPLE\0"
"glObjectPurgeableAPPLE\0"
"glObjectUnpurgeableAPPLE\0"
+ "glActiveProgramEXT\0"
+ "glCreateShaderProgramEXT\0"
+ "glUseShaderProgramEXT\0"
"glStencilFuncSeparateATI\0"
"glProgramEnvParameters4fvEXT\0"
"glProgramLocalParameters4fvEXT\0"
@@ -971,10 +1025,6 @@ static const char gl_string_table[] =
"glMultiTexCoord4s\0"
"glMultiTexCoord4sv\0"
"glStencilOpSeparateATI\0"
- "glDrawArraysInstancedARB\0"
- "glDrawArraysInstancedEXT\0"
- "glDrawElementsInstancedARB\0"
- "glDrawElementsInstancedEXT\0"
"glLoadTransposeMatrixd\0"
"glLoadTransposeMatrixf\0"
"glMultTransposeMatrixd\0"
@@ -1086,6 +1136,10 @@ static const char gl_string_table[] =
"glGetAttribLocation\0"
"glDrawBuffers\0"
"glDrawBuffersATI\0"
+ "glDrawArraysInstancedEXT\0"
+ "glDrawArraysInstanced\0"
+ "glDrawElementsInstancedEXT\0"
+ "glDrawElementsInstanced\0"
"glRenderbufferStorageMultisampleEXT\0"
"glSampleMaskEXT\0"
"glSamplePatternEXT\0"
@@ -1163,6 +1217,7 @@ static const char gl_string_table[] =
"glPointParameteriv\0"
"glDeleteVertexArrays\0"
"glIsVertexArray\0"
+ "glPrimitiveRestartIndex\0"
"glBlendEquationSeparate\0"
"glBlendEquationSeparateATI\0"
"glBindFramebuffer\0"
@@ -1183,7 +1238,53 @@ static const char gl_string_table[] =
"glIsRenderbuffer\0"
"glRenderbufferStorage\0"
"glBlitFramebuffer\0"
+ "glBindFragDataLocation\0"
+ "glGetFragDataLocation\0"
+ "glGetUniformuiv\0"
+ "glGetVertexAttribIiv\0"
+ "glGetVertexAttribIuiv\0"
+ "glUniform1ui\0"
+ "glUniform1uiv\0"
+ "glUniform2ui\0"
+ "glUniform2uiv\0"
+ "glUniform3ui\0"
+ "glUniform3uiv\0"
+ "glUniform4ui\0"
+ "glUniform4uiv\0"
+ "glVertexAttribI1i\0"
+ "glVertexAttribI1iv\0"
+ "glVertexAttribI1ui\0"
+ "glVertexAttribI1uiv\0"
+ "glVertexAttribI2i\0"
+ "glVertexAttribI2iv\0"
+ "glVertexAttribI2ui\0"
+ "glVertexAttribI2uiv\0"
+ "glVertexAttribI3i\0"
+ "glVertexAttribI3iv\0"
+ "glVertexAttribI3ui\0"
+ "glVertexAttribI3uiv\0"
+ "glVertexAttribI4bv\0"
+ "glVertexAttribI4i\0"
+ "glVertexAttribI4iv\0"
+ "glVertexAttribI4sv\0"
+ "glVertexAttribI4ubv\0"
+ "glVertexAttribI4ui\0"
+ "glVertexAttribI4uiv\0"
+ "glVertexAttribI4usv\0"
+ "glVertexAttribIPointer\0"
"glFramebufferTextureLayer\0"
+ "glColorMaski\0"
+ "glDisablei\0"
+ "glEnablei\0"
+ "glGetBooleani_v\0"
+ "glGetIntegeri_v\0"
+ "glIsEnabledi\0"
+ "glGetTexParameterIiv\0"
+ "glGetTexParameterIuiv\0"
+ "glTexParameterIiv\0"
+ "glTexParameterIuiv\0"
+ "glBeginConditionalRender\0"
+ "glEndConditionalRender\0"
"glBeginTransformFeedback\0"
"glBindBufferBase\0"
"glBindBufferRange\0"
@@ -1208,41 +1309,41 @@ static const char gl_string_table[] =
#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_590 mgl_dispatch_stub_590
-#define gl_dispatch_stub_591 mgl_dispatch_stub_591
-#define gl_dispatch_stub_592 mgl_dispatch_stub_592
-#define gl_dispatch_stub_593 mgl_dispatch_stub_593
-#define gl_dispatch_stub_594 mgl_dispatch_stub_594
-#define gl_dispatch_stub_595 mgl_dispatch_stub_595
-#define gl_dispatch_stub_596 mgl_dispatch_stub_596
-#define gl_dispatch_stub_597 mgl_dispatch_stub_597
-#define gl_dispatch_stub_632 mgl_dispatch_stub_632
-#define gl_dispatch_stub_674 mgl_dispatch_stub_674
-#define gl_dispatch_stub_675 mgl_dispatch_stub_675
-#define gl_dispatch_stub_676 mgl_dispatch_stub_676
-#define gl_dispatch_stub_677 mgl_dispatch_stub_677
-#define gl_dispatch_stub_678 mgl_dispatch_stub_678
-#define gl_dispatch_stub_679 mgl_dispatch_stub_679
-#define gl_dispatch_stub_680 mgl_dispatch_stub_680
-#define gl_dispatch_stub_681 mgl_dispatch_stub_681
-#define gl_dispatch_stub_682 mgl_dispatch_stub_682
-#define gl_dispatch_stub_763 mgl_dispatch_stub_763
-#define gl_dispatch_stub_764 mgl_dispatch_stub_764
-#define gl_dispatch_stub_765 mgl_dispatch_stub_765
-#define gl_dispatch_stub_766 mgl_dispatch_stub_766
-#define gl_dispatch_stub_767 mgl_dispatch_stub_767
+#define gl_dispatch_stub_601 mgl_dispatch_stub_601
+#define gl_dispatch_stub_602 mgl_dispatch_stub_602
+#define gl_dispatch_stub_603 mgl_dispatch_stub_603
+#define gl_dispatch_stub_604 mgl_dispatch_stub_604
+#define gl_dispatch_stub_605 mgl_dispatch_stub_605
+#define gl_dispatch_stub_606 mgl_dispatch_stub_606
+#define gl_dispatch_stub_607 mgl_dispatch_stub_607
+#define gl_dispatch_stub_608 mgl_dispatch_stub_608
+#define gl_dispatch_stub_643 mgl_dispatch_stub_643
+#define gl_dispatch_stub_685 mgl_dispatch_stub_685
+#define gl_dispatch_stub_686 mgl_dispatch_stub_686
+#define gl_dispatch_stub_687 mgl_dispatch_stub_687
+#define gl_dispatch_stub_688 mgl_dispatch_stub_688
+#define gl_dispatch_stub_689 mgl_dispatch_stub_689
+#define gl_dispatch_stub_690 mgl_dispatch_stub_690
+#define gl_dispatch_stub_691 mgl_dispatch_stub_691
+#define gl_dispatch_stub_692 mgl_dispatch_stub_692
+#define gl_dispatch_stub_693 mgl_dispatch_stub_693
+#define gl_dispatch_stub_774 mgl_dispatch_stub_774
+#define gl_dispatch_stub_775 mgl_dispatch_stub_775
#define gl_dispatch_stub_776 mgl_dispatch_stub_776
#define gl_dispatch_stub_777 mgl_dispatch_stub_777
-#define gl_dispatch_stub_795 mgl_dispatch_stub_795
-#define gl_dispatch_stub_796 mgl_dispatch_stub_796
-#define gl_dispatch_stub_797 mgl_dispatch_stub_797
-#define gl_dispatch_stub_815 mgl_dispatch_stub_815
-#define gl_dispatch_stub_816 mgl_dispatch_stub_816
-#define gl_dispatch_stub_820 mgl_dispatch_stub_820
-#define gl_dispatch_stub_821 mgl_dispatch_stub_821
-#define gl_dispatch_stub_822 mgl_dispatch_stub_822
-#define gl_dispatch_stub_823 mgl_dispatch_stub_823
-#define gl_dispatch_stub_824 mgl_dispatch_stub_824
+#define gl_dispatch_stub_778 mgl_dispatch_stub_778
+#define gl_dispatch_stub_787 mgl_dispatch_stub_787
+#define gl_dispatch_stub_788 mgl_dispatch_stub_788
+#define gl_dispatch_stub_806 mgl_dispatch_stub_806
+#define gl_dispatch_stub_807 mgl_dispatch_stub_807
+#define gl_dispatch_stub_808 mgl_dispatch_stub_808
+#define gl_dispatch_stub_866 mgl_dispatch_stub_866
+#define gl_dispatch_stub_867 mgl_dispatch_stub_867
+#define gl_dispatch_stub_874 mgl_dispatch_stub_874
+#define gl_dispatch_stub_875 mgl_dispatch_stub_875
+#define gl_dispatch_stub_876 mgl_dispatch_stub_876
+#define gl_dispatch_stub_877 mgl_dispatch_stub_877
+#define gl_dispatch_stub_878 mgl_dispatch_stub_878
#endif /* USE_MGL_NAMESPACE */
@@ -1260,1183 +1361,1284 @@ 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_590(GLenum pname, GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_591(GLenum pname, GLint * params);
-void GLAPIENTRY gl_dispatch_stub_592(GLenum pname, GLfloat param);
-void GLAPIENTRY gl_dispatch_stub_593(GLenum pname, const GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_594(GLenum pname, GLint param);
-void GLAPIENTRY gl_dispatch_stub_595(GLenum pname, const GLint * params);
-void GLAPIENTRY gl_dispatch_stub_596(GLclampf value, GLboolean invert);
-void GLAPIENTRY gl_dispatch_stub_597(GLenum pattern);
-void GLAPIENTRY gl_dispatch_stub_632(GLenum mode);
-void GLAPIENTRY gl_dispatch_stub_674(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
-void GLAPIENTRY gl_dispatch_stub_675(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride);
-void GLAPIENTRY gl_dispatch_stub_676(GLsizei n, const GLuint * fences);
-void GLAPIENTRY gl_dispatch_stub_677(GLuint fence);
-void GLAPIENTRY gl_dispatch_stub_678(GLsizei n, GLuint * fences);
-void GLAPIENTRY gl_dispatch_stub_679(GLuint fence, GLenum pname, GLint * params);
-GLboolean GLAPIENTRY gl_dispatch_stub_680(GLuint fence);
-void GLAPIENTRY gl_dispatch_stub_681(GLuint fence, GLenum condition);
-GLboolean GLAPIENTRY gl_dispatch_stub_682(GLuint fence);
-void GLAPIENTRY gl_dispatch_stub_763(GLenum face);
-void GLAPIENTRY gl_dispatch_stub_764(GLuint array);
-void GLAPIENTRY gl_dispatch_stub_765(GLsizei n, const GLuint * arrays);
-void GLAPIENTRY gl_dispatch_stub_766(GLsizei n, GLuint * arrays);
-GLboolean GLAPIENTRY gl_dispatch_stub_767(GLuint array);
-void GLAPIENTRY gl_dispatch_stub_776(GLclampd zmin, GLclampd zmax);
-void GLAPIENTRY gl_dispatch_stub_777(GLenum modeRGB, GLenum modeA);
-void GLAPIENTRY gl_dispatch_stub_795(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_796(GLenum target, GLenum pname, GLint param);
-void GLAPIENTRY gl_dispatch_stub_797(GLenum target, GLintptr offset, GLsizeiptr size);
-void GLAPIENTRY gl_dispatch_stub_815(GLenum target, GLenum pname, GLvoid ** params);
-void GLAPIENTRY gl_dispatch_stub_816(GLenum target, GLsizei length, GLvoid * pointer);
-void GLAPIENTRY gl_dispatch_stub_820(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-void GLAPIENTRY gl_dispatch_stub_821(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_822(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_823(GLuint id, GLenum pname, GLint64EXT * params);
-void GLAPIENTRY gl_dispatch_stub_824(GLuint id, GLenum pname, GLuint64EXT * params);
+void GLAPIENTRY gl_dispatch_stub_601(GLenum pname, GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_602(GLenum pname, GLint * params);
+void GLAPIENTRY gl_dispatch_stub_603(GLenum pname, GLfloat param);
+void GLAPIENTRY gl_dispatch_stub_604(GLenum pname, const GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_605(GLenum pname, GLint param);
+void GLAPIENTRY gl_dispatch_stub_606(GLenum pname, const GLint * params);
+void GLAPIENTRY gl_dispatch_stub_607(GLclampf value, GLboolean invert);
+void GLAPIENTRY gl_dispatch_stub_608(GLenum pattern);
+void GLAPIENTRY gl_dispatch_stub_643(GLenum mode);
+void GLAPIENTRY gl_dispatch_stub_685(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
+void GLAPIENTRY gl_dispatch_stub_686(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride);
+void GLAPIENTRY gl_dispatch_stub_687(GLsizei n, const GLuint * fences);
+void GLAPIENTRY gl_dispatch_stub_688(GLuint fence);
+void GLAPIENTRY gl_dispatch_stub_689(GLsizei n, GLuint * fences);
+void GLAPIENTRY gl_dispatch_stub_690(GLuint fence, GLenum pname, GLint * params);
+GLboolean GLAPIENTRY gl_dispatch_stub_691(GLuint fence);
+void GLAPIENTRY gl_dispatch_stub_692(GLuint fence, GLenum condition);
+GLboolean GLAPIENTRY gl_dispatch_stub_693(GLuint fence);
+void GLAPIENTRY gl_dispatch_stub_774(GLenum face);
+void GLAPIENTRY gl_dispatch_stub_775(GLuint array);
+void GLAPIENTRY gl_dispatch_stub_776(GLsizei n, const GLuint * arrays);
+void GLAPIENTRY gl_dispatch_stub_777(GLsizei n, GLuint * arrays);
+GLboolean GLAPIENTRY gl_dispatch_stub_778(GLuint array);
+void GLAPIENTRY gl_dispatch_stub_787(GLclampd zmin, GLclampd zmax);
+void GLAPIENTRY gl_dispatch_stub_788(GLenum modeRGB, GLenum modeA);
+void GLAPIENTRY gl_dispatch_stub_806(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_807(GLenum target, GLenum pname, GLint param);
+void GLAPIENTRY gl_dispatch_stub_808(GLenum target, GLintptr offset, GLsizeiptr size);
+void GLAPIENTRY gl_dispatch_stub_866(GLenum target, GLenum pname, GLvoid ** params);
+void GLAPIENTRY gl_dispatch_stub_867(GLenum target, GLsizei length, GLvoid * pointer);
+void GLAPIENTRY gl_dispatch_stub_874(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+void GLAPIENTRY gl_dispatch_stub_875(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_876(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_877(GLuint id, GLenum pname, GLint64EXT * params);
+void GLAPIENTRY gl_dispatch_stub_878(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, glFramebufferTextureARB, glFramebufferTextureARB, NULL, _gloffset_FramebufferTextureARB),
- NAME_FUNC_OFFSET( 9054, glFramebufferTextureFaceARB, glFramebufferTextureFaceARB, NULL, _gloffset_FramebufferTextureFaceARB),
- NAME_FUNC_OFFSET( 9082, glProgramParameteriARB, glProgramParameteriARB, NULL, _gloffset_ProgramParameteriARB),
- NAME_FUNC_OFFSET( 9105, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, _gloffset_FlushMappedBufferRange),
- NAME_FUNC_OFFSET( 9130, glMapBufferRange, glMapBufferRange, NULL, _gloffset_MapBufferRange),
- NAME_FUNC_OFFSET( 9147, glBindVertexArray, glBindVertexArray, NULL, _gloffset_BindVertexArray),
- NAME_FUNC_OFFSET( 9165, glGenVertexArrays, glGenVertexArrays, NULL, _gloffset_GenVertexArrays),
- NAME_FUNC_OFFSET( 9183, glCopyBufferSubData, glCopyBufferSubData, NULL, _gloffset_CopyBufferSubData),
- NAME_FUNC_OFFSET( 9203, glClientWaitSync, glClientWaitSync, NULL, _gloffset_ClientWaitSync),
- NAME_FUNC_OFFSET( 9220, glDeleteSync, glDeleteSync, NULL, _gloffset_DeleteSync),
- NAME_FUNC_OFFSET( 9233, glFenceSync, glFenceSync, NULL, _gloffset_FenceSync),
- NAME_FUNC_OFFSET( 9245, glGetInteger64v, glGetInteger64v, NULL, _gloffset_GetInteger64v),
- NAME_FUNC_OFFSET( 9261, glGetSynciv, glGetSynciv, NULL, _gloffset_GetSynciv),
- NAME_FUNC_OFFSET( 9273, glIsSync, glIsSync, NULL, _gloffset_IsSync),
- NAME_FUNC_OFFSET( 9282, glWaitSync, glWaitSync, NULL, _gloffset_WaitSync),
- NAME_FUNC_OFFSET( 9293, glDrawElementsBaseVertex, glDrawElementsBaseVertex, NULL, _gloffset_DrawElementsBaseVertex),
- NAME_FUNC_OFFSET( 9318, glDrawRangeElementsBaseVertex, glDrawRangeElementsBaseVertex, NULL, _gloffset_DrawRangeElementsBaseVertex),
- NAME_FUNC_OFFSET( 9348, glMultiDrawElementsBaseVertex, glMultiDrawElementsBaseVertex, NULL, _gloffset_MultiDrawElementsBaseVertex),
- NAME_FUNC_OFFSET( 9378, glBindTransformFeedback, glBindTransformFeedback, NULL, _gloffset_BindTransformFeedback),
- NAME_FUNC_OFFSET( 9402, glDeleteTransformFeedbacks, glDeleteTransformFeedbacks, NULL, _gloffset_DeleteTransformFeedbacks),
- NAME_FUNC_OFFSET( 9429, glDrawTransformFeedback, glDrawTransformFeedback, NULL, _gloffset_DrawTransformFeedback),
- NAME_FUNC_OFFSET( 9453, glGenTransformFeedbacks, glGenTransformFeedbacks, NULL, _gloffset_GenTransformFeedbacks),
- NAME_FUNC_OFFSET( 9477, glIsTransformFeedback, glIsTransformFeedback, NULL, _gloffset_IsTransformFeedback),
- NAME_FUNC_OFFSET( 9499, glPauseTransformFeedback, glPauseTransformFeedback, NULL, _gloffset_PauseTransformFeedback),
- NAME_FUNC_OFFSET( 9524, glResumeTransformFeedback, glResumeTransformFeedback, NULL, _gloffset_ResumeTransformFeedback),
- NAME_FUNC_OFFSET( 9550, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, _gloffset_PolygonOffsetEXT),
- NAME_FUNC_OFFSET( 9569, gl_dispatch_stub_590, gl_dispatch_stub_590, NULL, _gloffset_GetPixelTexGenParameterfvSGIS),
- NAME_FUNC_OFFSET( 9601, gl_dispatch_stub_591, gl_dispatch_stub_591, NULL, _gloffset_GetPixelTexGenParameterivSGIS),
- NAME_FUNC_OFFSET( 9633, gl_dispatch_stub_592, gl_dispatch_stub_592, NULL, _gloffset_PixelTexGenParameterfSGIS),
- NAME_FUNC_OFFSET( 9661, gl_dispatch_stub_593, gl_dispatch_stub_593, NULL, _gloffset_PixelTexGenParameterfvSGIS),
- NAME_FUNC_OFFSET( 9690, gl_dispatch_stub_594, gl_dispatch_stub_594, NULL, _gloffset_PixelTexGenParameteriSGIS),
- NAME_FUNC_OFFSET( 9718, gl_dispatch_stub_595, gl_dispatch_stub_595, NULL, _gloffset_PixelTexGenParameterivSGIS),
- NAME_FUNC_OFFSET( 9747, gl_dispatch_stub_596, gl_dispatch_stub_596, NULL, _gloffset_SampleMaskSGIS),
- NAME_FUNC_OFFSET( 9764, gl_dispatch_stub_597, gl_dispatch_stub_597, NULL, _gloffset_SamplePatternSGIS),
- NAME_FUNC_OFFSET( 9784, glColorPointerEXT, glColorPointerEXT, NULL, _gloffset_ColorPointerEXT),
- NAME_FUNC_OFFSET( 9802, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, _gloffset_EdgeFlagPointerEXT),
- NAME_FUNC_OFFSET( 9823, glIndexPointerEXT, glIndexPointerEXT, NULL, _gloffset_IndexPointerEXT),
- NAME_FUNC_OFFSET( 9841, glNormalPointerEXT, glNormalPointerEXT, NULL, _gloffset_NormalPointerEXT),
- NAME_FUNC_OFFSET( 9860, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, _gloffset_TexCoordPointerEXT),
- NAME_FUNC_OFFSET( 9881, glVertexPointerEXT, glVertexPointerEXT, NULL, _gloffset_VertexPointerEXT),
- NAME_FUNC_OFFSET( 9900, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
- NAME_FUNC_OFFSET( 9921, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
- NAME_FUNC_OFFSET( 9943, glLockArraysEXT, glLockArraysEXT, NULL, _gloffset_LockArraysEXT),
- NAME_FUNC_OFFSET( 9959, glUnlockArraysEXT, glUnlockArraysEXT, NULL, _gloffset_UnlockArraysEXT),
- NAME_FUNC_OFFSET( 9977, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT),
- NAME_FUNC_OFFSET( 9999, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT),
- NAME_FUNC_OFFSET(10022, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT),
- NAME_FUNC_OFFSET(10044, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT),
- NAME_FUNC_OFFSET(10067, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT),
- NAME_FUNC_OFFSET(10089, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT),
- NAME_FUNC_OFFSET(10112, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT),
- NAME_FUNC_OFFSET(10134, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT),
- NAME_FUNC_OFFSET(10157, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT),
- NAME_FUNC_OFFSET(10179, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT),
- NAME_FUNC_OFFSET(10202, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT),
- NAME_FUNC_OFFSET(10225, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT),
- NAME_FUNC_OFFSET(10249, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT),
- NAME_FUNC_OFFSET(10272, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT),
- NAME_FUNC_OFFSET(10296, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT),
- NAME_FUNC_OFFSET(10319, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT),
- NAME_FUNC_OFFSET(10343, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT),
- NAME_FUNC_OFFSET(10370, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT),
- NAME_FUNC_OFFSET(10391, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT),
- NAME_FUNC_OFFSET(10414, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT),
- NAME_FUNC_OFFSET(10435, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT),
- NAME_FUNC_OFFSET(10450, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT),
- NAME_FUNC_OFFSET(10466, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT),
- NAME_FUNC_OFFSET(10481, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT),
- NAME_FUNC_OFFSET(10497, gl_dispatch_stub_632, gl_dispatch_stub_632, NULL, _gloffset_PixelTexGenSGIX),
- NAME_FUNC_OFFSET(10515, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
- NAME_FUNC_OFFSET(10538, glFlushVertexArrayRangeNV, glFlushVertexArrayRangeNV, NULL, _gloffset_FlushVertexArrayRangeNV),
- NAME_FUNC_OFFSET(10564, glVertexArrayRangeNV, glVertexArrayRangeNV, NULL, _gloffset_VertexArrayRangeNV),
- NAME_FUNC_OFFSET(10585, glCombinerInputNV, glCombinerInputNV, NULL, _gloffset_CombinerInputNV),
- NAME_FUNC_OFFSET(10603, glCombinerOutputNV, glCombinerOutputNV, NULL, _gloffset_CombinerOutputNV),
- NAME_FUNC_OFFSET(10622, glCombinerParameterfNV, glCombinerParameterfNV, NULL, _gloffset_CombinerParameterfNV),
- NAME_FUNC_OFFSET(10645, glCombinerParameterfvNV, glCombinerParameterfvNV, NULL, _gloffset_CombinerParameterfvNV),
- NAME_FUNC_OFFSET(10669, glCombinerParameteriNV, glCombinerParameteriNV, NULL, _gloffset_CombinerParameteriNV),
- NAME_FUNC_OFFSET(10692, glCombinerParameterivNV, glCombinerParameterivNV, NULL, _gloffset_CombinerParameterivNV),
- NAME_FUNC_OFFSET(10716, glFinalCombinerInputNV, glFinalCombinerInputNV, NULL, _gloffset_FinalCombinerInputNV),
- NAME_FUNC_OFFSET(10739, glGetCombinerInputParameterfvNV, glGetCombinerInputParameterfvNV, NULL, _gloffset_GetCombinerInputParameterfvNV),
- NAME_FUNC_OFFSET(10771, glGetCombinerInputParameterivNV, glGetCombinerInputParameterivNV, NULL, _gloffset_GetCombinerInputParameterivNV),
- NAME_FUNC_OFFSET(10803, glGetCombinerOutputParameterfvNV, glGetCombinerOutputParameterfvNV, NULL, _gloffset_GetCombinerOutputParameterfvNV),
- NAME_FUNC_OFFSET(10836, glGetCombinerOutputParameterivNV, glGetCombinerOutputParameterivNV, NULL, _gloffset_GetCombinerOutputParameterivNV),
- NAME_FUNC_OFFSET(10869, glGetFinalCombinerInputParameterfvNV, glGetFinalCombinerInputParameterfvNV, NULL, _gloffset_GetFinalCombinerInputParameterfvNV),
- NAME_FUNC_OFFSET(10906, glGetFinalCombinerInputParameterivNV, glGetFinalCombinerInputParameterivNV, NULL, _gloffset_GetFinalCombinerInputParameterivNV),
- NAME_FUNC_OFFSET(10943, glResizeBuffersMESA, glResizeBuffersMESA, NULL, _gloffset_ResizeBuffersMESA),
- NAME_FUNC_OFFSET(10963, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
- NAME_FUNC_OFFSET(10981, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
- NAME_FUNC_OFFSET(11000, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
- NAME_FUNC_OFFSET(11018, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
- NAME_FUNC_OFFSET(11037, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
- NAME_FUNC_OFFSET(11055, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
- NAME_FUNC_OFFSET(11074, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
- NAME_FUNC_OFFSET(11092, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
- NAME_FUNC_OFFSET(11111, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
- NAME_FUNC_OFFSET(11129, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
- NAME_FUNC_OFFSET(11148, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
- NAME_FUNC_OFFSET(11166, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
- NAME_FUNC_OFFSET(11185, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
- NAME_FUNC_OFFSET(11203, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
- NAME_FUNC_OFFSET(11222, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
- NAME_FUNC_OFFSET(11240, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
- NAME_FUNC_OFFSET(11259, glWindowPos4dMESA, glWindowPos4dMESA, NULL, _gloffset_WindowPos4dMESA),
- NAME_FUNC_OFFSET(11277, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, _gloffset_WindowPos4dvMESA),
- NAME_FUNC_OFFSET(11296, glWindowPos4fMESA, glWindowPos4fMESA, NULL, _gloffset_WindowPos4fMESA),
- NAME_FUNC_OFFSET(11314, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, _gloffset_WindowPos4fvMESA),
- NAME_FUNC_OFFSET(11333, glWindowPos4iMESA, glWindowPos4iMESA, NULL, _gloffset_WindowPos4iMESA),
- NAME_FUNC_OFFSET(11351, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, _gloffset_WindowPos4ivMESA),
- NAME_FUNC_OFFSET(11370, glWindowPos4sMESA, glWindowPos4sMESA, NULL, _gloffset_WindowPos4sMESA),
- NAME_FUNC_OFFSET(11388, glWindowPos4svMESA, glWindowPos4svMESA, NULL, _gloffset_WindowPos4svMESA),
- NAME_FUNC_OFFSET(11407, gl_dispatch_stub_674, gl_dispatch_stub_674, NULL, _gloffset_MultiModeDrawArraysIBM),
- NAME_FUNC_OFFSET(11432, gl_dispatch_stub_675, gl_dispatch_stub_675, NULL, _gloffset_MultiModeDrawElementsIBM),
- NAME_FUNC_OFFSET(11459, gl_dispatch_stub_676, gl_dispatch_stub_676, NULL, _gloffset_DeleteFencesNV),
- NAME_FUNC_OFFSET(11476, gl_dispatch_stub_677, gl_dispatch_stub_677, NULL, _gloffset_FinishFenceNV),
- NAME_FUNC_OFFSET(11492, gl_dispatch_stub_678, gl_dispatch_stub_678, NULL, _gloffset_GenFencesNV),
- NAME_FUNC_OFFSET(11506, gl_dispatch_stub_679, gl_dispatch_stub_679, NULL, _gloffset_GetFenceivNV),
- NAME_FUNC_OFFSET(11521, gl_dispatch_stub_680, gl_dispatch_stub_680, NULL, _gloffset_IsFenceNV),
- NAME_FUNC_OFFSET(11533, gl_dispatch_stub_681, gl_dispatch_stub_681, NULL, _gloffset_SetFenceNV),
- NAME_FUNC_OFFSET(11546, gl_dispatch_stub_682, gl_dispatch_stub_682, NULL, _gloffset_TestFenceNV),
- NAME_FUNC_OFFSET(11560, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, _gloffset_AreProgramsResidentNV),
- NAME_FUNC_OFFSET(11584, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV),
- NAME_FUNC_OFFSET(11600, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV),
- NAME_FUNC_OFFSET(11619, glExecuteProgramNV, glExecuteProgramNV, NULL, _gloffset_ExecuteProgramNV),
- NAME_FUNC_OFFSET(11638, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV),
- NAME_FUNC_OFFSET(11654, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, _gloffset_GetProgramParameterdvNV),
- NAME_FUNC_OFFSET(11680, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, _gloffset_GetProgramParameterfvNV),
- NAME_FUNC_OFFSET(11706, glGetProgramStringNV, glGetProgramStringNV, NULL, _gloffset_GetProgramStringNV),
- NAME_FUNC_OFFSET(11727, glGetProgramivNV, glGetProgramivNV, NULL, _gloffset_GetProgramivNV),
- NAME_FUNC_OFFSET(11744, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, _gloffset_GetTrackMatrixivNV),
- NAME_FUNC_OFFSET(11765, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
- NAME_FUNC_OFFSET(11793, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, _gloffset_GetVertexAttribdvNV),
- NAME_FUNC_OFFSET(11815, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, _gloffset_GetVertexAttribfvNV),
- NAME_FUNC_OFFSET(11837, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, _gloffset_GetVertexAttribivNV),
- NAME_FUNC_OFFSET(11859, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV),
- NAME_FUNC_OFFSET(11873, glLoadProgramNV, glLoadProgramNV, NULL, _gloffset_LoadProgramNV),
- NAME_FUNC_OFFSET(11889, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, _gloffset_ProgramParameters4dvNV),
- NAME_FUNC_OFFSET(11914, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, _gloffset_ProgramParameters4fvNV),
- NAME_FUNC_OFFSET(11939, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, _gloffset_RequestResidentProgramsNV),
- NAME_FUNC_OFFSET(11967, glTrackMatrixNV, glTrackMatrixNV, NULL, _gloffset_TrackMatrixNV),
- NAME_FUNC_OFFSET(11983, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, _gloffset_VertexAttrib1dNV),
- NAME_FUNC_OFFSET(12002, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, _gloffset_VertexAttrib1dvNV),
- NAME_FUNC_OFFSET(12022, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, _gloffset_VertexAttrib1fNV),
- NAME_FUNC_OFFSET(12041, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, _gloffset_VertexAttrib1fvNV),
- NAME_FUNC_OFFSET(12061, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, _gloffset_VertexAttrib1sNV),
- NAME_FUNC_OFFSET(12080, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, _gloffset_VertexAttrib1svNV),
- NAME_FUNC_OFFSET(12100, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, _gloffset_VertexAttrib2dNV),
- NAME_FUNC_OFFSET(12119, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, _gloffset_VertexAttrib2dvNV),
- NAME_FUNC_OFFSET(12139, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, _gloffset_VertexAttrib2fNV),
- NAME_FUNC_OFFSET(12158, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, _gloffset_VertexAttrib2fvNV),
- NAME_FUNC_OFFSET(12178, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, _gloffset_VertexAttrib2sNV),
- NAME_FUNC_OFFSET(12197, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, _gloffset_VertexAttrib2svNV),
- NAME_FUNC_OFFSET(12217, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, _gloffset_VertexAttrib3dNV),
- NAME_FUNC_OFFSET(12236, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, _gloffset_VertexAttrib3dvNV),
- NAME_FUNC_OFFSET(12256, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, _gloffset_VertexAttrib3fNV),
- NAME_FUNC_OFFSET(12275, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, _gloffset_VertexAttrib3fvNV),
- NAME_FUNC_OFFSET(12295, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, _gloffset_VertexAttrib3sNV),
- NAME_FUNC_OFFSET(12314, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, _gloffset_VertexAttrib3svNV),
- NAME_FUNC_OFFSET(12334, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, _gloffset_VertexAttrib4dNV),
- NAME_FUNC_OFFSET(12353, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, _gloffset_VertexAttrib4dvNV),
- NAME_FUNC_OFFSET(12373, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, _gloffset_VertexAttrib4fNV),
- NAME_FUNC_OFFSET(12392, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, _gloffset_VertexAttrib4fvNV),
- NAME_FUNC_OFFSET(12412, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, _gloffset_VertexAttrib4sNV),
- NAME_FUNC_OFFSET(12431, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, _gloffset_VertexAttrib4svNV),
- NAME_FUNC_OFFSET(12451, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, _gloffset_VertexAttrib4ubNV),
- NAME_FUNC_OFFSET(12471, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, _gloffset_VertexAttrib4ubvNV),
- NAME_FUNC_OFFSET(12492, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, _gloffset_VertexAttribPointerNV),
- NAME_FUNC_OFFSET(12516, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, _gloffset_VertexAttribs1dvNV),
- NAME_FUNC_OFFSET(12537, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, _gloffset_VertexAttribs1fvNV),
- NAME_FUNC_OFFSET(12558, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, _gloffset_VertexAttribs1svNV),
- NAME_FUNC_OFFSET(12579, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, _gloffset_VertexAttribs2dvNV),
- NAME_FUNC_OFFSET(12600, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, _gloffset_VertexAttribs2fvNV),
- NAME_FUNC_OFFSET(12621, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, _gloffset_VertexAttribs2svNV),
- NAME_FUNC_OFFSET(12642, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, _gloffset_VertexAttribs3dvNV),
- NAME_FUNC_OFFSET(12663, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, _gloffset_VertexAttribs3fvNV),
- NAME_FUNC_OFFSET(12684, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, _gloffset_VertexAttribs3svNV),
- NAME_FUNC_OFFSET(12705, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, _gloffset_VertexAttribs4dvNV),
- NAME_FUNC_OFFSET(12726, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, _gloffset_VertexAttribs4fvNV),
- NAME_FUNC_OFFSET(12747, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, _gloffset_VertexAttribs4svNV),
- NAME_FUNC_OFFSET(12768, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, _gloffset_VertexAttribs4ubvNV),
- NAME_FUNC_OFFSET(12790, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, _gloffset_GetTexBumpParameterfvATI),
- NAME_FUNC_OFFSET(12817, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, _gloffset_GetTexBumpParameterivATI),
- NAME_FUNC_OFFSET(12844, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, _gloffset_TexBumpParameterfvATI),
- NAME_FUNC_OFFSET(12868, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, _gloffset_TexBumpParameterivATI),
- NAME_FUNC_OFFSET(12892, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, _gloffset_AlphaFragmentOp1ATI),
- NAME_FUNC_OFFSET(12914, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, _gloffset_AlphaFragmentOp2ATI),
- NAME_FUNC_OFFSET(12936, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, _gloffset_AlphaFragmentOp3ATI),
- NAME_FUNC_OFFSET(12958, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, _gloffset_BeginFragmentShaderATI),
- NAME_FUNC_OFFSET(12983, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, _gloffset_BindFragmentShaderATI),
- NAME_FUNC_OFFSET(13007, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, _gloffset_ColorFragmentOp1ATI),
- NAME_FUNC_OFFSET(13029, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, _gloffset_ColorFragmentOp2ATI),
- NAME_FUNC_OFFSET(13051, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, _gloffset_ColorFragmentOp3ATI),
- NAME_FUNC_OFFSET(13073, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, _gloffset_DeleteFragmentShaderATI),
- NAME_FUNC_OFFSET(13099, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, _gloffset_EndFragmentShaderATI),
- NAME_FUNC_OFFSET(13122, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, _gloffset_GenFragmentShadersATI),
- NAME_FUNC_OFFSET(13146, glPassTexCoordATI, glPassTexCoordATI, NULL, _gloffset_PassTexCoordATI),
- NAME_FUNC_OFFSET(13164, glSampleMapATI, glSampleMapATI, NULL, _gloffset_SampleMapATI),
- NAME_FUNC_OFFSET(13179, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, _gloffset_SetFragmentShaderConstantATI),
- NAME_FUNC_OFFSET(13210, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV),
- NAME_FUNC_OFFSET(13230, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV),
- NAME_FUNC_OFFSET(13251, gl_dispatch_stub_763, gl_dispatch_stub_763, NULL, _gloffset_ActiveStencilFaceEXT),
- NAME_FUNC_OFFSET(13274, gl_dispatch_stub_764, gl_dispatch_stub_764, NULL, _gloffset_BindVertexArrayAPPLE),
- NAME_FUNC_OFFSET(13297, gl_dispatch_stub_765, gl_dispatch_stub_765, NULL, _gloffset_DeleteVertexArraysAPPLE),
- NAME_FUNC_OFFSET(13323, gl_dispatch_stub_766, gl_dispatch_stub_766, NULL, _gloffset_GenVertexArraysAPPLE),
- NAME_FUNC_OFFSET(13346, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_IsVertexArrayAPPLE),
- NAME_FUNC_OFFSET(13367, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, _gloffset_GetProgramNamedParameterdvNV),
- NAME_FUNC_OFFSET(13398, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, _gloffset_GetProgramNamedParameterfvNV),
- NAME_FUNC_OFFSET(13429, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, _gloffset_ProgramNamedParameter4dNV),
- NAME_FUNC_OFFSET(13457, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, _gloffset_ProgramNamedParameter4dvNV),
- NAME_FUNC_OFFSET(13486, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, _gloffset_ProgramNamedParameter4fNV),
- NAME_FUNC_OFFSET(13514, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, _gloffset_ProgramNamedParameter4fvNV),
- NAME_FUNC_OFFSET(13543, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, _gloffset_PrimitiveRestartIndexNV),
- NAME_FUNC_OFFSET(13569, glPrimitiveRestartNV, glPrimitiveRestartNV, NULL, _gloffset_PrimitiveRestartNV),
- NAME_FUNC_OFFSET(13590, gl_dispatch_stub_776, gl_dispatch_stub_776, NULL, _gloffset_DepthBoundsEXT),
- NAME_FUNC_OFFSET(13607, gl_dispatch_stub_777, gl_dispatch_stub_777, NULL, _gloffset_BlendEquationSeparateEXT),
- NAME_FUNC_OFFSET(13634, glBindFramebufferEXT, glBindFramebufferEXT, NULL, _gloffset_BindFramebufferEXT),
- NAME_FUNC_OFFSET(13655, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, _gloffset_BindRenderbufferEXT),
- NAME_FUNC_OFFSET(13677, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, _gloffset_CheckFramebufferStatusEXT),
- NAME_FUNC_OFFSET(13705, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, _gloffset_DeleteFramebuffersEXT),
- NAME_FUNC_OFFSET(13729, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, _gloffset_DeleteRenderbuffersEXT),
- NAME_FUNC_OFFSET(13754, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, _gloffset_FramebufferRenderbufferEXT),
- NAME_FUNC_OFFSET(13783, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, _gloffset_FramebufferTexture1DEXT),
- NAME_FUNC_OFFSET(13809, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, _gloffset_FramebufferTexture2DEXT),
- NAME_FUNC_OFFSET(13835, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, _gloffset_FramebufferTexture3DEXT),
- NAME_FUNC_OFFSET(13861, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, _gloffset_GenFramebuffersEXT),
- NAME_FUNC_OFFSET(13882, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, _gloffset_GenRenderbuffersEXT),
- NAME_FUNC_OFFSET(13904, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, _gloffset_GenerateMipmapEXT),
- NAME_FUNC_OFFSET(13924, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, _gloffset_GetFramebufferAttachmentParameterivEXT),
- NAME_FUNC_OFFSET(13965, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, _gloffset_GetRenderbufferParameterivEXT),
- NAME_FUNC_OFFSET(13997, glIsFramebufferEXT, glIsFramebufferEXT, NULL, _gloffset_IsFramebufferEXT),
- NAME_FUNC_OFFSET(14016, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, _gloffset_IsRenderbufferEXT),
- NAME_FUNC_OFFSET(14036, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, _gloffset_RenderbufferStorageEXT),
- NAME_FUNC_OFFSET(14061, gl_dispatch_stub_795, gl_dispatch_stub_795, NULL, _gloffset_BlitFramebufferEXT),
- NAME_FUNC_OFFSET(14082, gl_dispatch_stub_796, gl_dispatch_stub_796, NULL, _gloffset_BufferParameteriAPPLE),
- NAME_FUNC_OFFSET(14106, gl_dispatch_stub_797, gl_dispatch_stub_797, NULL, _gloffset_FlushMappedBufferRangeAPPLE),
- NAME_FUNC_OFFSET(14136, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, _gloffset_FramebufferTextureLayerEXT),
- NAME_FUNC_OFFSET(14165, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, _gloffset_ColorMaskIndexedEXT),
- NAME_FUNC_OFFSET(14187, glDisableIndexedEXT, glDisableIndexedEXT, NULL, _gloffset_DisableIndexedEXT),
- NAME_FUNC_OFFSET(14207, glEnableIndexedEXT, glEnableIndexedEXT, NULL, _gloffset_EnableIndexedEXT),
- NAME_FUNC_OFFSET(14226, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, _gloffset_GetBooleanIndexedvEXT),
- NAME_FUNC_OFFSET(14250, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, _gloffset_GetIntegerIndexedvEXT),
- NAME_FUNC_OFFSET(14274, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, _gloffset_IsEnabledIndexedEXT),
- NAME_FUNC_OFFSET(14296, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, _gloffset_BeginConditionalRenderNV),
- NAME_FUNC_OFFSET(14323, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, _gloffset_EndConditionalRenderNV),
- NAME_FUNC_OFFSET(14348, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, _gloffset_BeginTransformFeedbackEXT),
- NAME_FUNC_OFFSET(14376, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, _gloffset_BindBufferBaseEXT),
- NAME_FUNC_OFFSET(14396, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, _gloffset_BindBufferOffsetEXT),
- NAME_FUNC_OFFSET(14418, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, _gloffset_BindBufferRangeEXT),
- NAME_FUNC_OFFSET(14439, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, _gloffset_EndTransformFeedbackEXT),
- NAME_FUNC_OFFSET(14465, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, _gloffset_GetTransformFeedbackVaryingEXT),
- NAME_FUNC_OFFSET(14498, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, _gloffset_TransformFeedbackVaryingsEXT),
- NAME_FUNC_OFFSET(14529, glProvokingVertexEXT, glProvokingVertexEXT, NULL, _gloffset_ProvokingVertexEXT),
- NAME_FUNC_OFFSET(14550, gl_dispatch_stub_815, gl_dispatch_stub_815, NULL, _gloffset_GetTexParameterPointervAPPLE),
- NAME_FUNC_OFFSET(14581, gl_dispatch_stub_816, gl_dispatch_stub_816, NULL, _gloffset_TextureRangeAPPLE),
- NAME_FUNC_OFFSET(14601, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, _gloffset_GetObjectParameterivAPPLE),
- NAME_FUNC_OFFSET(14629, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, _gloffset_ObjectPurgeableAPPLE),
- NAME_FUNC_OFFSET(14652, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, _gloffset_ObjectUnpurgeableAPPLE),
- NAME_FUNC_OFFSET(14677, gl_dispatch_stub_820, gl_dispatch_stub_820, NULL, _gloffset_StencilFuncSeparateATI),
- NAME_FUNC_OFFSET(14702, gl_dispatch_stub_821, gl_dispatch_stub_821, NULL, _gloffset_ProgramEnvParameters4fvEXT),
- NAME_FUNC_OFFSET(14731, gl_dispatch_stub_822, gl_dispatch_stub_822, NULL, _gloffset_ProgramLocalParameters4fvEXT),
- NAME_FUNC_OFFSET(14762, gl_dispatch_stub_823, gl_dispatch_stub_823, NULL, _gloffset_GetQueryObjecti64vEXT),
- NAME_FUNC_OFFSET(14786, gl_dispatch_stub_824, gl_dispatch_stub_824, NULL, _gloffset_GetQueryObjectui64vEXT),
- NAME_FUNC_OFFSET(14811, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, _gloffset_EGLImageTargetRenderbufferStorageOES),
- NAME_FUNC_OFFSET(14850, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, _gloffset_EGLImageTargetTexture2DOES),
- NAME_FUNC_OFFSET(14879, glArrayElement, glArrayElement, NULL, _gloffset_ArrayElement),
- NAME_FUNC_OFFSET(14897, glBindTexture, glBindTexture, NULL, _gloffset_BindTexture),
- NAME_FUNC_OFFSET(14914, glDrawArrays, glDrawArrays, NULL, _gloffset_DrawArrays),
- NAME_FUNC_OFFSET(14930, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, _gloffset_AreTexturesResident),
- NAME_FUNC_OFFSET(14955, glCopyTexImage1D, glCopyTexImage1D, NULL, _gloffset_CopyTexImage1D),
- NAME_FUNC_OFFSET(14975, glCopyTexImage2D, glCopyTexImage2D, NULL, _gloffset_CopyTexImage2D),
- NAME_FUNC_OFFSET(14995, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, _gloffset_CopyTexSubImage1D),
- NAME_FUNC_OFFSET(15018, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, _gloffset_CopyTexSubImage2D),
- NAME_FUNC_OFFSET(15041, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, _gloffset_DeleteTextures),
- NAME_FUNC_OFFSET(15061, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, _gloffset_GenTextures),
- NAME_FUNC_OFFSET(15078, glGetPointerv, glGetPointerv, NULL, _gloffset_GetPointerv),
- NAME_FUNC_OFFSET(15095, glIsTexture, glIsTextureEXT, glIsTextureEXT, _gloffset_IsTexture),
- NAME_FUNC_OFFSET(15110, glPrioritizeTextures, glPrioritizeTextures, NULL, _gloffset_PrioritizeTextures),
- NAME_FUNC_OFFSET(15134, glTexSubImage1D, glTexSubImage1D, NULL, _gloffset_TexSubImage1D),
- NAME_FUNC_OFFSET(15153, glTexSubImage2D, glTexSubImage2D, NULL, _gloffset_TexSubImage2D),
- NAME_FUNC_OFFSET(15172, glBlendColor, glBlendColor, NULL, _gloffset_BlendColor),
- NAME_FUNC_OFFSET(15188, glBlendEquation, glBlendEquation, NULL, _gloffset_BlendEquation),
- NAME_FUNC_OFFSET(15207, glDrawRangeElements, glDrawRangeElements, NULL, _gloffset_DrawRangeElements),
- NAME_FUNC_OFFSET(15230, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
- NAME_FUNC_OFFSET(15246, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
- NAME_FUNC_OFFSET(15262, glColorTableParameterfv, glColorTableParameterfv, NULL, _gloffset_ColorTableParameterfv),
- NAME_FUNC_OFFSET(15289, glColorTableParameteriv, glColorTableParameteriv, NULL, _gloffset_ColorTableParameteriv),
- NAME_FUNC_OFFSET(15316, glCopyColorTable, glCopyColorTable, NULL, _gloffset_CopyColorTable),
- NAME_FUNC_OFFSET(15336, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable),
- NAME_FUNC_OFFSET(15355, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable),
- NAME_FUNC_OFFSET(15374, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv),
- NAME_FUNC_OFFSET(15404, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv),
- NAME_FUNC_OFFSET(15434, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv),
- NAME_FUNC_OFFSET(15464, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv),
- NAME_FUNC_OFFSET(15494, glColorSubTable, glColorSubTable, NULL, _gloffset_ColorSubTable),
- NAME_FUNC_OFFSET(15513, glCopyColorSubTable, glCopyColorSubTable, NULL, _gloffset_CopyColorSubTable),
- NAME_FUNC_OFFSET(15536, glConvolutionFilter1D, glConvolutionFilter1D, NULL, _gloffset_ConvolutionFilter1D),
- NAME_FUNC_OFFSET(15561, glConvolutionFilter2D, glConvolutionFilter2D, NULL, _gloffset_ConvolutionFilter2D),
- NAME_FUNC_OFFSET(15586, glConvolutionParameterf, glConvolutionParameterf, NULL, _gloffset_ConvolutionParameterf),
- NAME_FUNC_OFFSET(15613, glConvolutionParameterfv, glConvolutionParameterfv, NULL, _gloffset_ConvolutionParameterfv),
- NAME_FUNC_OFFSET(15641, glConvolutionParameteri, glConvolutionParameteri, NULL, _gloffset_ConvolutionParameteri),
- NAME_FUNC_OFFSET(15668, glConvolutionParameteriv, glConvolutionParameteriv, NULL, _gloffset_ConvolutionParameteriv),
- NAME_FUNC_OFFSET(15696, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, _gloffset_CopyConvolutionFilter1D),
- NAME_FUNC_OFFSET(15725, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, _gloffset_CopyConvolutionFilter2D),
- NAME_FUNC_OFFSET(15754, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, _gloffset_GetConvolutionFilter),
- NAME_FUNC_OFFSET(15780, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, _gloffset_GetConvolutionParameterfv),
- NAME_FUNC_OFFSET(15811, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, _gloffset_GetConvolutionParameteriv),
- NAME_FUNC_OFFSET(15842, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, _gloffset_GetSeparableFilter),
- NAME_FUNC_OFFSET(15866, glSeparableFilter2D, glSeparableFilter2D, NULL, _gloffset_SeparableFilter2D),
- NAME_FUNC_OFFSET(15889, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, _gloffset_GetHistogram),
- NAME_FUNC_OFFSET(15907, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, _gloffset_GetHistogramParameterfv),
- NAME_FUNC_OFFSET(15936, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, _gloffset_GetHistogramParameteriv),
- NAME_FUNC_OFFSET(15965, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, _gloffset_GetMinmax),
- NAME_FUNC_OFFSET(15980, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, _gloffset_GetMinmaxParameterfv),
- NAME_FUNC_OFFSET(16006, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, _gloffset_GetMinmaxParameteriv),
- NAME_FUNC_OFFSET(16032, glHistogram, glHistogram, NULL, _gloffset_Histogram),
- NAME_FUNC_OFFSET(16047, glMinmax, glMinmax, NULL, _gloffset_Minmax),
- NAME_FUNC_OFFSET(16059, glResetHistogram, glResetHistogram, NULL, _gloffset_ResetHistogram),
- NAME_FUNC_OFFSET(16079, glResetMinmax, glResetMinmax, NULL, _gloffset_ResetMinmax),
- NAME_FUNC_OFFSET(16096, glTexImage3D, glTexImage3D, NULL, _gloffset_TexImage3D),
- NAME_FUNC_OFFSET(16112, glTexSubImage3D, glTexSubImage3D, NULL, _gloffset_TexSubImage3D),
- NAME_FUNC_OFFSET(16131, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, _gloffset_CopyTexSubImage3D),
- NAME_FUNC_OFFSET(16154, glActiveTextureARB, glActiveTextureARB, NULL, _gloffset_ActiveTextureARB),
- NAME_FUNC_OFFSET(16170, glClientActiveTextureARB, glClientActiveTextureARB, NULL, _gloffset_ClientActiveTextureARB),
- NAME_FUNC_OFFSET(16192, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, _gloffset_MultiTexCoord1dARB),
- NAME_FUNC_OFFSET(16210, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, _gloffset_MultiTexCoord1dvARB),
- NAME_FUNC_OFFSET(16229, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, _gloffset_MultiTexCoord1fARB),
- NAME_FUNC_OFFSET(16247, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, _gloffset_MultiTexCoord1fvARB),
- NAME_FUNC_OFFSET(16266, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, _gloffset_MultiTexCoord1iARB),
- NAME_FUNC_OFFSET(16284, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, _gloffset_MultiTexCoord1ivARB),
- NAME_FUNC_OFFSET(16303, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, _gloffset_MultiTexCoord1sARB),
- NAME_FUNC_OFFSET(16321, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, _gloffset_MultiTexCoord1svARB),
- NAME_FUNC_OFFSET(16340, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, _gloffset_MultiTexCoord2dARB),
- NAME_FUNC_OFFSET(16358, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, _gloffset_MultiTexCoord2dvARB),
- NAME_FUNC_OFFSET(16377, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, _gloffset_MultiTexCoord2fARB),
- NAME_FUNC_OFFSET(16395, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, _gloffset_MultiTexCoord2fvARB),
- NAME_FUNC_OFFSET(16414, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, _gloffset_MultiTexCoord2iARB),
- NAME_FUNC_OFFSET(16432, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, _gloffset_MultiTexCoord2ivARB),
- NAME_FUNC_OFFSET(16451, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, _gloffset_MultiTexCoord2sARB),
- NAME_FUNC_OFFSET(16469, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, _gloffset_MultiTexCoord2svARB),
- NAME_FUNC_OFFSET(16488, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, _gloffset_MultiTexCoord3dARB),
- NAME_FUNC_OFFSET(16506, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, _gloffset_MultiTexCoord3dvARB),
- NAME_FUNC_OFFSET(16525, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, _gloffset_MultiTexCoord3fARB),
- NAME_FUNC_OFFSET(16543, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, _gloffset_MultiTexCoord3fvARB),
- NAME_FUNC_OFFSET(16562, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, _gloffset_MultiTexCoord3iARB),
- NAME_FUNC_OFFSET(16580, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, _gloffset_MultiTexCoord3ivARB),
- NAME_FUNC_OFFSET(16599, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, _gloffset_MultiTexCoord3sARB),
- NAME_FUNC_OFFSET(16617, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, _gloffset_MultiTexCoord3svARB),
- NAME_FUNC_OFFSET(16636, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, _gloffset_MultiTexCoord4dARB),
- NAME_FUNC_OFFSET(16654, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, _gloffset_MultiTexCoord4dvARB),
- NAME_FUNC_OFFSET(16673, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, _gloffset_MultiTexCoord4fARB),
- NAME_FUNC_OFFSET(16691, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, _gloffset_MultiTexCoord4fvARB),
- NAME_FUNC_OFFSET(16710, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, _gloffset_MultiTexCoord4iARB),
- NAME_FUNC_OFFSET(16728, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, _gloffset_MultiTexCoord4ivARB),
- NAME_FUNC_OFFSET(16747, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, _gloffset_MultiTexCoord4sARB),
- NAME_FUNC_OFFSET(16765, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, _gloffset_MultiTexCoord4svARB),
- NAME_FUNC_OFFSET(16784, glStencilOpSeparate, glStencilOpSeparate, NULL, _gloffset_StencilOpSeparate),
- NAME_FUNC_OFFSET(16807, glDrawArraysInstanced, glDrawArraysInstanced, NULL, _gloffset_DrawArraysInstanced),
- NAME_FUNC_OFFSET(16832, glDrawArraysInstanced, glDrawArraysInstanced, NULL, _gloffset_DrawArraysInstanced),
- NAME_FUNC_OFFSET(16857, glDrawElementsInstanced, glDrawElementsInstanced, NULL, _gloffset_DrawElementsInstanced),
- NAME_FUNC_OFFSET(16884, glDrawElementsInstanced, glDrawElementsInstanced, NULL, _gloffset_DrawElementsInstanced),
- NAME_FUNC_OFFSET(16911, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, _gloffset_LoadTransposeMatrixdARB),
- NAME_FUNC_OFFSET(16934, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, _gloffset_LoadTransposeMatrixfARB),
- NAME_FUNC_OFFSET(16957, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, _gloffset_MultTransposeMatrixdARB),
- NAME_FUNC_OFFSET(16980, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, _gloffset_MultTransposeMatrixfARB),
- NAME_FUNC_OFFSET(17003, glSampleCoverageARB, glSampleCoverageARB, NULL, _gloffset_SampleCoverageARB),
- NAME_FUNC_OFFSET(17020, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, _gloffset_CompressedTexImage1DARB),
- NAME_FUNC_OFFSET(17043, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, _gloffset_CompressedTexImage2DARB),
- NAME_FUNC_OFFSET(17066, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, _gloffset_CompressedTexImage3DARB),
- NAME_FUNC_OFFSET(17089, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, _gloffset_CompressedTexSubImage1DARB),
- NAME_FUNC_OFFSET(17115, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, _gloffset_CompressedTexSubImage2DARB),
- NAME_FUNC_OFFSET(17141, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, _gloffset_CompressedTexSubImage3DARB),
- NAME_FUNC_OFFSET(17167, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, _gloffset_GetCompressedTexImageARB),
- NAME_FUNC_OFFSET(17191, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, _gloffset_DisableVertexAttribArrayARB),
- NAME_FUNC_OFFSET(17218, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, _gloffset_EnableVertexAttribArrayARB),
- NAME_FUNC_OFFSET(17244, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, _gloffset_GetVertexAttribdvARB),
- NAME_FUNC_OFFSET(17264, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, _gloffset_GetVertexAttribfvARB),
- NAME_FUNC_OFFSET(17284, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, _gloffset_GetVertexAttribivARB),
- NAME_FUNC_OFFSET(17304, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, _gloffset_ProgramEnvParameter4dARB),
- NAME_FUNC_OFFSET(17327, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, _gloffset_ProgramEnvParameter4dvARB),
- NAME_FUNC_OFFSET(17351, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, _gloffset_ProgramEnvParameter4fARB),
- NAME_FUNC_OFFSET(17374, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, _gloffset_ProgramEnvParameter4fvARB),
- NAME_FUNC_OFFSET(17398, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, _gloffset_VertexAttrib1dARB),
- NAME_FUNC_OFFSET(17415, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, _gloffset_VertexAttrib1dvARB),
- NAME_FUNC_OFFSET(17433, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, _gloffset_VertexAttrib1fARB),
- NAME_FUNC_OFFSET(17450, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, _gloffset_VertexAttrib1fvARB),
- NAME_FUNC_OFFSET(17468, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, _gloffset_VertexAttrib1sARB),
- NAME_FUNC_OFFSET(17485, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, _gloffset_VertexAttrib1svARB),
- NAME_FUNC_OFFSET(17503, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, _gloffset_VertexAttrib2dARB),
- NAME_FUNC_OFFSET(17520, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, _gloffset_VertexAttrib2dvARB),
- NAME_FUNC_OFFSET(17538, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, _gloffset_VertexAttrib2fARB),
- NAME_FUNC_OFFSET(17555, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, _gloffset_VertexAttrib2fvARB),
- NAME_FUNC_OFFSET(17573, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, _gloffset_VertexAttrib2sARB),
- NAME_FUNC_OFFSET(17590, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, _gloffset_VertexAttrib2svARB),
- NAME_FUNC_OFFSET(17608, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, _gloffset_VertexAttrib3dARB),
- NAME_FUNC_OFFSET(17625, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, _gloffset_VertexAttrib3dvARB),
- NAME_FUNC_OFFSET(17643, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, _gloffset_VertexAttrib3fARB),
- NAME_FUNC_OFFSET(17660, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, _gloffset_VertexAttrib3fvARB),
- NAME_FUNC_OFFSET(17678, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, _gloffset_VertexAttrib3sARB),
- NAME_FUNC_OFFSET(17695, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, _gloffset_VertexAttrib3svARB),
- NAME_FUNC_OFFSET(17713, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, _gloffset_VertexAttrib4NbvARB),
- NAME_FUNC_OFFSET(17732, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, _gloffset_VertexAttrib4NivARB),
- NAME_FUNC_OFFSET(17751, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, _gloffset_VertexAttrib4NsvARB),
- NAME_FUNC_OFFSET(17770, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, _gloffset_VertexAttrib4NubARB),
- NAME_FUNC_OFFSET(17789, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, _gloffset_VertexAttrib4NubvARB),
- NAME_FUNC_OFFSET(17809, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, _gloffset_VertexAttrib4NuivARB),
- NAME_FUNC_OFFSET(17829, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, _gloffset_VertexAttrib4NusvARB),
- NAME_FUNC_OFFSET(17849, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, _gloffset_VertexAttrib4bvARB),
- NAME_FUNC_OFFSET(17867, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, _gloffset_VertexAttrib4dARB),
- NAME_FUNC_OFFSET(17884, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, _gloffset_VertexAttrib4dvARB),
- NAME_FUNC_OFFSET(17902, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, _gloffset_VertexAttrib4fARB),
- NAME_FUNC_OFFSET(17919, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, _gloffset_VertexAttrib4fvARB),
- NAME_FUNC_OFFSET(17937, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, _gloffset_VertexAttrib4ivARB),
- NAME_FUNC_OFFSET(17955, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, _gloffset_VertexAttrib4sARB),
- NAME_FUNC_OFFSET(17972, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, _gloffset_VertexAttrib4svARB),
- NAME_FUNC_OFFSET(17990, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, _gloffset_VertexAttrib4ubvARB),
- NAME_FUNC_OFFSET(18009, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, _gloffset_VertexAttrib4uivARB),
- NAME_FUNC_OFFSET(18028, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, _gloffset_VertexAttrib4usvARB),
- NAME_FUNC_OFFSET(18047, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, _gloffset_VertexAttribPointerARB),
- NAME_FUNC_OFFSET(18069, glBindBufferARB, glBindBufferARB, NULL, _gloffset_BindBufferARB),
- NAME_FUNC_OFFSET(18082, glBufferDataARB, glBufferDataARB, NULL, _gloffset_BufferDataARB),
- NAME_FUNC_OFFSET(18095, glBufferSubDataARB, glBufferSubDataARB, NULL, _gloffset_BufferSubDataARB),
- NAME_FUNC_OFFSET(18111, glDeleteBuffersARB, glDeleteBuffersARB, NULL, _gloffset_DeleteBuffersARB),
- NAME_FUNC_OFFSET(18127, glGenBuffersARB, glGenBuffersARB, NULL, _gloffset_GenBuffersARB),
- NAME_FUNC_OFFSET(18140, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, _gloffset_GetBufferParameterivARB),
- NAME_FUNC_OFFSET(18163, glGetBufferPointervARB, glGetBufferPointervARB, NULL, _gloffset_GetBufferPointervARB),
- NAME_FUNC_OFFSET(18183, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, _gloffset_GetBufferSubDataARB),
- NAME_FUNC_OFFSET(18202, glIsBufferARB, glIsBufferARB, NULL, _gloffset_IsBufferARB),
- NAME_FUNC_OFFSET(18213, glMapBufferARB, glMapBufferARB, NULL, _gloffset_MapBufferARB),
- NAME_FUNC_OFFSET(18225, glUnmapBufferARB, glUnmapBufferARB, NULL, _gloffset_UnmapBufferARB),
- NAME_FUNC_OFFSET(18239, glBeginQueryARB, glBeginQueryARB, NULL, _gloffset_BeginQueryARB),
- NAME_FUNC_OFFSET(18252, glDeleteQueriesARB, glDeleteQueriesARB, NULL, _gloffset_DeleteQueriesARB),
- NAME_FUNC_OFFSET(18268, glEndQueryARB, glEndQueryARB, NULL, _gloffset_EndQueryARB),
- NAME_FUNC_OFFSET(18279, glGenQueriesARB, glGenQueriesARB, NULL, _gloffset_GenQueriesARB),
- NAME_FUNC_OFFSET(18292, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, _gloffset_GetQueryObjectivARB),
- NAME_FUNC_OFFSET(18311, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, _gloffset_GetQueryObjectuivARB),
- NAME_FUNC_OFFSET(18331, glGetQueryivARB, glGetQueryivARB, NULL, _gloffset_GetQueryivARB),
- NAME_FUNC_OFFSET(18344, glIsQueryARB, glIsQueryARB, NULL, _gloffset_IsQueryARB),
- NAME_FUNC_OFFSET(18354, glCompileShaderARB, glCompileShaderARB, NULL, _gloffset_CompileShaderARB),
- NAME_FUNC_OFFSET(18370, glGetActiveUniformARB, glGetActiveUniformARB, NULL, _gloffset_GetActiveUniformARB),
- NAME_FUNC_OFFSET(18389, glGetShaderSourceARB, glGetShaderSourceARB, NULL, _gloffset_GetShaderSourceARB),
- NAME_FUNC_OFFSET(18407, glGetUniformLocationARB, glGetUniformLocationARB, NULL, _gloffset_GetUniformLocationARB),
- NAME_FUNC_OFFSET(18428, glGetUniformfvARB, glGetUniformfvARB, NULL, _gloffset_GetUniformfvARB),
- NAME_FUNC_OFFSET(18443, glGetUniformivARB, glGetUniformivARB, NULL, _gloffset_GetUniformivARB),
- NAME_FUNC_OFFSET(18458, glLinkProgramARB, glLinkProgramARB, NULL, _gloffset_LinkProgramARB),
- NAME_FUNC_OFFSET(18472, glShaderSourceARB, glShaderSourceARB, NULL, _gloffset_ShaderSourceARB),
- NAME_FUNC_OFFSET(18487, glUniform1fARB, glUniform1fARB, NULL, _gloffset_Uniform1fARB),
- NAME_FUNC_OFFSET(18499, glUniform1fvARB, glUniform1fvARB, NULL, _gloffset_Uniform1fvARB),
- NAME_FUNC_OFFSET(18512, glUniform1iARB, glUniform1iARB, NULL, _gloffset_Uniform1iARB),
- NAME_FUNC_OFFSET(18524, glUniform1ivARB, glUniform1ivARB, NULL, _gloffset_Uniform1ivARB),
- NAME_FUNC_OFFSET(18537, glUniform2fARB, glUniform2fARB, NULL, _gloffset_Uniform2fARB),
- NAME_FUNC_OFFSET(18549, glUniform2fvARB, glUniform2fvARB, NULL, _gloffset_Uniform2fvARB),
- NAME_FUNC_OFFSET(18562, glUniform2iARB, glUniform2iARB, NULL, _gloffset_Uniform2iARB),
- NAME_FUNC_OFFSET(18574, glUniform2ivARB, glUniform2ivARB, NULL, _gloffset_Uniform2ivARB),
- NAME_FUNC_OFFSET(18587, glUniform3fARB, glUniform3fARB, NULL, _gloffset_Uniform3fARB),
- NAME_FUNC_OFFSET(18599, glUniform3fvARB, glUniform3fvARB, NULL, _gloffset_Uniform3fvARB),
- NAME_FUNC_OFFSET(18612, glUniform3iARB, glUniform3iARB, NULL, _gloffset_Uniform3iARB),
- NAME_FUNC_OFFSET(18624, glUniform3ivARB, glUniform3ivARB, NULL, _gloffset_Uniform3ivARB),
- NAME_FUNC_OFFSET(18637, glUniform4fARB, glUniform4fARB, NULL, _gloffset_Uniform4fARB),
- NAME_FUNC_OFFSET(18649, glUniform4fvARB, glUniform4fvARB, NULL, _gloffset_Uniform4fvARB),
- NAME_FUNC_OFFSET(18662, glUniform4iARB, glUniform4iARB, NULL, _gloffset_Uniform4iARB),
- NAME_FUNC_OFFSET(18674, glUniform4ivARB, glUniform4ivARB, NULL, _gloffset_Uniform4ivARB),
- NAME_FUNC_OFFSET(18687, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, _gloffset_UniformMatrix2fvARB),
- NAME_FUNC_OFFSET(18706, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, _gloffset_UniformMatrix3fvARB),
- NAME_FUNC_OFFSET(18725, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, _gloffset_UniformMatrix4fvARB),
- NAME_FUNC_OFFSET(18744, glUseProgramObjectARB, glUseProgramObjectARB, NULL, _gloffset_UseProgramObjectARB),
- NAME_FUNC_OFFSET(18757, glValidateProgramARB, glValidateProgramARB, NULL, _gloffset_ValidateProgramARB),
- NAME_FUNC_OFFSET(18775, glBindAttribLocationARB, glBindAttribLocationARB, NULL, _gloffset_BindAttribLocationARB),
- NAME_FUNC_OFFSET(18796, glGetActiveAttribARB, glGetActiveAttribARB, NULL, _gloffset_GetActiveAttribARB),
- NAME_FUNC_OFFSET(18814, glGetAttribLocationARB, glGetAttribLocationARB, NULL, _gloffset_GetAttribLocationARB),
- NAME_FUNC_OFFSET(18834, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
- NAME_FUNC_OFFSET(18848, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
- NAME_FUNC_OFFSET(18865, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, _gloffset_RenderbufferStorageMultisample),
- NAME_FUNC_OFFSET(18901, gl_dispatch_stub_596, gl_dispatch_stub_596, NULL, _gloffset_SampleMaskSGIS),
- NAME_FUNC_OFFSET(18917, gl_dispatch_stub_597, gl_dispatch_stub_597, NULL, _gloffset_SamplePatternSGIS),
- NAME_FUNC_OFFSET(18936, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
- NAME_FUNC_OFFSET(18954, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
- NAME_FUNC_OFFSET(18975, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
- NAME_FUNC_OFFSET(18997, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
- NAME_FUNC_OFFSET(19016, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
- NAME_FUNC_OFFSET(19038, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
- NAME_FUNC_OFFSET(19061, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT),
- NAME_FUNC_OFFSET(19080, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT),
- NAME_FUNC_OFFSET(19100, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT),
- NAME_FUNC_OFFSET(19119, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT),
- NAME_FUNC_OFFSET(19139, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT),
- NAME_FUNC_OFFSET(19158, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT),
- NAME_FUNC_OFFSET(19178, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT),
- NAME_FUNC_OFFSET(19197, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT),
- NAME_FUNC_OFFSET(19217, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT),
- NAME_FUNC_OFFSET(19236, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT),
- NAME_FUNC_OFFSET(19256, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT),
- NAME_FUNC_OFFSET(19276, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT),
- NAME_FUNC_OFFSET(19297, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT),
- NAME_FUNC_OFFSET(19317, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT),
- NAME_FUNC_OFFSET(19338, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT),
- NAME_FUNC_OFFSET(19358, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT),
- NAME_FUNC_OFFSET(19379, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT),
- NAME_FUNC_OFFSET(19403, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT),
- NAME_FUNC_OFFSET(19421, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT),
- NAME_FUNC_OFFSET(19441, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT),
- NAME_FUNC_OFFSET(19459, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT),
- NAME_FUNC_OFFSET(19471, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT),
- NAME_FUNC_OFFSET(19484, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT),
- NAME_FUNC_OFFSET(19496, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT),
- NAME_FUNC_OFFSET(19509, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
- NAME_FUNC_OFFSET(19529, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
- NAME_FUNC_OFFSET(19553, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
- NAME_FUNC_OFFSET(19567, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
- NAME_FUNC_OFFSET(19584, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
- NAME_FUNC_OFFSET(19599, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
- NAME_FUNC_OFFSET(19617, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
- NAME_FUNC_OFFSET(19631, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
- NAME_FUNC_OFFSET(19648, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
- NAME_FUNC_OFFSET(19663, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
- NAME_FUNC_OFFSET(19681, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
- NAME_FUNC_OFFSET(19695, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
- NAME_FUNC_OFFSET(19712, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
- NAME_FUNC_OFFSET(19727, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
- NAME_FUNC_OFFSET(19745, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
- NAME_FUNC_OFFSET(19759, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
- NAME_FUNC_OFFSET(19776, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
- NAME_FUNC_OFFSET(19791, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
- NAME_FUNC_OFFSET(19809, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
- NAME_FUNC_OFFSET(19823, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
- NAME_FUNC_OFFSET(19840, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
- NAME_FUNC_OFFSET(19855, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
- NAME_FUNC_OFFSET(19873, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
- NAME_FUNC_OFFSET(19887, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
- NAME_FUNC_OFFSET(19904, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
- NAME_FUNC_OFFSET(19919, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
- NAME_FUNC_OFFSET(19937, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
- NAME_FUNC_OFFSET(19951, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
- NAME_FUNC_OFFSET(19968, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
- NAME_FUNC_OFFSET(19983, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
- NAME_FUNC_OFFSET(20001, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
- NAME_FUNC_OFFSET(20015, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
- NAME_FUNC_OFFSET(20032, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
- NAME_FUNC_OFFSET(20047, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
- NAME_FUNC_OFFSET(20065, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV),
- NAME_FUNC_OFFSET(20082, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV),
- NAME_FUNC_OFFSET(20102, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV),
- NAME_FUNC_OFFSET(20119, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
- NAME_FUNC_OFFSET(20145, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
- NAME_FUNC_OFFSET(20174, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV),
- NAME_FUNC_OFFSET(20189, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV),
- NAME_FUNC_OFFSET(20207, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV),
- NAME_FUNC_OFFSET(20226, gl_dispatch_stub_765, gl_dispatch_stub_765, NULL, _gloffset_DeleteVertexArraysAPPLE),
- NAME_FUNC_OFFSET(20247, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_IsVertexArrayAPPLE),
- NAME_FUNC_OFFSET(20263, gl_dispatch_stub_777, gl_dispatch_stub_777, NULL, _gloffset_BlendEquationSeparateEXT),
- NAME_FUNC_OFFSET(20287, gl_dispatch_stub_777, gl_dispatch_stub_777, NULL, _gloffset_BlendEquationSeparateEXT),
- NAME_FUNC_OFFSET(20314, glBindFramebufferEXT, glBindFramebufferEXT, NULL, _gloffset_BindFramebufferEXT),
- NAME_FUNC_OFFSET(20332, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, _gloffset_BindRenderbufferEXT),
- NAME_FUNC_OFFSET(20351, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, _gloffset_CheckFramebufferStatusEXT),
- NAME_FUNC_OFFSET(20376, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, _gloffset_DeleteFramebuffersEXT),
- NAME_FUNC_OFFSET(20397, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, _gloffset_DeleteRenderbuffersEXT),
- NAME_FUNC_OFFSET(20419, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, _gloffset_FramebufferRenderbufferEXT),
- NAME_FUNC_OFFSET(20445, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, _gloffset_FramebufferTexture1DEXT),
- NAME_FUNC_OFFSET(20468, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, _gloffset_FramebufferTexture2DEXT),
- NAME_FUNC_OFFSET(20491, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, _gloffset_FramebufferTexture3DEXT),
- NAME_FUNC_OFFSET(20514, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, _gloffset_GenFramebuffersEXT),
- NAME_FUNC_OFFSET(20532, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, _gloffset_GenRenderbuffersEXT),
- NAME_FUNC_OFFSET(20551, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, _gloffset_GenerateMipmapEXT),
- NAME_FUNC_OFFSET(20568, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, _gloffset_GetFramebufferAttachmentParameterivEXT),
- NAME_FUNC_OFFSET(20606, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, _gloffset_GetRenderbufferParameterivEXT),
- NAME_FUNC_OFFSET(20635, glIsFramebufferEXT, glIsFramebufferEXT, NULL, _gloffset_IsFramebufferEXT),
- NAME_FUNC_OFFSET(20651, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, _gloffset_IsRenderbufferEXT),
- NAME_FUNC_OFFSET(20668, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, _gloffset_RenderbufferStorageEXT),
- NAME_FUNC_OFFSET(20690, gl_dispatch_stub_795, gl_dispatch_stub_795, NULL, _gloffset_BlitFramebufferEXT),
- NAME_FUNC_OFFSET(20708, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, _gloffset_FramebufferTextureLayerEXT),
- NAME_FUNC_OFFSET(20734, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, _gloffset_BeginTransformFeedbackEXT),
- NAME_FUNC_OFFSET(20759, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, _gloffset_BindBufferBaseEXT),
- NAME_FUNC_OFFSET(20776, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, _gloffset_BindBufferRangeEXT),
- NAME_FUNC_OFFSET(20794, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, _gloffset_EndTransformFeedbackEXT),
- NAME_FUNC_OFFSET(20817, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, _gloffset_GetTransformFeedbackVaryingEXT),
- NAME_FUNC_OFFSET(20847, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, _gloffset_TransformFeedbackVaryingsEXT),
- NAME_FUNC_OFFSET(20875, glProvokingVertexEXT, glProvokingVertexEXT, NULL, _gloffset_ProvokingVertexEXT),
+ NAME_FUNC_OFFSET( 0, glNewList, glNewList, NULL, 0),
+ NAME_FUNC_OFFSET( 10, glEndList, glEndList, NULL, 1),
+ NAME_FUNC_OFFSET( 20, glCallList, glCallList, NULL, 2),
+ NAME_FUNC_OFFSET( 31, glCallLists, glCallLists, NULL, 3),
+ NAME_FUNC_OFFSET( 43, glDeleteLists, glDeleteLists, NULL, 4),
+ NAME_FUNC_OFFSET( 57, glGenLists, glGenLists, NULL, 5),
+ NAME_FUNC_OFFSET( 68, glListBase, glListBase, NULL, 6),
+ NAME_FUNC_OFFSET( 79, glBegin, glBegin, NULL, 7),
+ NAME_FUNC_OFFSET( 87, glBitmap, glBitmap, NULL, 8),
+ NAME_FUNC_OFFSET( 96, glColor3b, glColor3b, NULL, 9),
+ NAME_FUNC_OFFSET( 106, glColor3bv, glColor3bv, NULL, 10),
+ NAME_FUNC_OFFSET( 117, glColor3d, glColor3d, NULL, 11),
+ NAME_FUNC_OFFSET( 127, glColor3dv, glColor3dv, NULL, 12),
+ NAME_FUNC_OFFSET( 138, glColor3f, glColor3f, NULL, 13),
+ NAME_FUNC_OFFSET( 148, glColor3fv, glColor3fv, NULL, 14),
+ NAME_FUNC_OFFSET( 159, glColor3i, glColor3i, NULL, 15),
+ NAME_FUNC_OFFSET( 169, glColor3iv, glColor3iv, NULL, 16),
+ NAME_FUNC_OFFSET( 180, glColor3s, glColor3s, NULL, 17),
+ NAME_FUNC_OFFSET( 190, glColor3sv, glColor3sv, NULL, 18),
+ NAME_FUNC_OFFSET( 201, glColor3ub, glColor3ub, NULL, 19),
+ NAME_FUNC_OFFSET( 212, glColor3ubv, glColor3ubv, NULL, 20),
+ NAME_FUNC_OFFSET( 224, glColor3ui, glColor3ui, NULL, 21),
+ NAME_FUNC_OFFSET( 235, glColor3uiv, glColor3uiv, NULL, 22),
+ NAME_FUNC_OFFSET( 247, glColor3us, glColor3us, NULL, 23),
+ NAME_FUNC_OFFSET( 258, glColor3usv, glColor3usv, NULL, 24),
+ NAME_FUNC_OFFSET( 270, glColor4b, glColor4b, NULL, 25),
+ NAME_FUNC_OFFSET( 280, glColor4bv, glColor4bv, NULL, 26),
+ NAME_FUNC_OFFSET( 291, glColor4d, glColor4d, NULL, 27),
+ NAME_FUNC_OFFSET( 301, glColor4dv, glColor4dv, NULL, 28),
+ NAME_FUNC_OFFSET( 312, glColor4f, glColor4f, NULL, 29),
+ NAME_FUNC_OFFSET( 322, glColor4fv, glColor4fv, NULL, 30),
+ NAME_FUNC_OFFSET( 333, glColor4i, glColor4i, NULL, 31),
+ NAME_FUNC_OFFSET( 343, glColor4iv, glColor4iv, NULL, 32),
+ NAME_FUNC_OFFSET( 354, glColor4s, glColor4s, NULL, 33),
+ NAME_FUNC_OFFSET( 364, glColor4sv, glColor4sv, NULL, 34),
+ NAME_FUNC_OFFSET( 375, glColor4ub, glColor4ub, NULL, 35),
+ NAME_FUNC_OFFSET( 386, glColor4ubv, glColor4ubv, NULL, 36),
+ NAME_FUNC_OFFSET( 398, glColor4ui, glColor4ui, NULL, 37),
+ NAME_FUNC_OFFSET( 409, glColor4uiv, glColor4uiv, NULL, 38),
+ NAME_FUNC_OFFSET( 421, glColor4us, glColor4us, NULL, 39),
+ NAME_FUNC_OFFSET( 432, glColor4usv, glColor4usv, NULL, 40),
+ NAME_FUNC_OFFSET( 444, glEdgeFlag, glEdgeFlag, NULL, 41),
+ NAME_FUNC_OFFSET( 455, glEdgeFlagv, glEdgeFlagv, NULL, 42),
+ NAME_FUNC_OFFSET( 467, glEnd, glEnd, NULL, 43),
+ NAME_FUNC_OFFSET( 473, glIndexd, glIndexd, NULL, 44),
+ NAME_FUNC_OFFSET( 482, glIndexdv, glIndexdv, NULL, 45),
+ NAME_FUNC_OFFSET( 492, glIndexf, glIndexf, NULL, 46),
+ NAME_FUNC_OFFSET( 501, glIndexfv, glIndexfv, NULL, 47),
+ NAME_FUNC_OFFSET( 511, glIndexi, glIndexi, NULL, 48),
+ NAME_FUNC_OFFSET( 520, glIndexiv, glIndexiv, NULL, 49),
+ NAME_FUNC_OFFSET( 530, glIndexs, glIndexs, NULL, 50),
+ NAME_FUNC_OFFSET( 539, glIndexsv, glIndexsv, NULL, 51),
+ NAME_FUNC_OFFSET( 549, glNormal3b, glNormal3b, NULL, 52),
+ NAME_FUNC_OFFSET( 560, glNormal3bv, glNormal3bv, NULL, 53),
+ NAME_FUNC_OFFSET( 572, glNormal3d, glNormal3d, NULL, 54),
+ NAME_FUNC_OFFSET( 583, glNormal3dv, glNormal3dv, NULL, 55),
+ NAME_FUNC_OFFSET( 595, glNormal3f, glNormal3f, NULL, 56),
+ NAME_FUNC_OFFSET( 606, glNormal3fv, glNormal3fv, NULL, 57),
+ NAME_FUNC_OFFSET( 618, glNormal3i, glNormal3i, NULL, 58),
+ NAME_FUNC_OFFSET( 629, glNormal3iv, glNormal3iv, NULL, 59),
+ NAME_FUNC_OFFSET( 641, glNormal3s, glNormal3s, NULL, 60),
+ NAME_FUNC_OFFSET( 652, glNormal3sv, glNormal3sv, NULL, 61),
+ NAME_FUNC_OFFSET( 664, glRasterPos2d, glRasterPos2d, NULL, 62),
+ NAME_FUNC_OFFSET( 678, glRasterPos2dv, glRasterPos2dv, NULL, 63),
+ NAME_FUNC_OFFSET( 693, glRasterPos2f, glRasterPos2f, NULL, 64),
+ NAME_FUNC_OFFSET( 707, glRasterPos2fv, glRasterPos2fv, NULL, 65),
+ NAME_FUNC_OFFSET( 722, glRasterPos2i, glRasterPos2i, NULL, 66),
+ NAME_FUNC_OFFSET( 736, glRasterPos2iv, glRasterPos2iv, NULL, 67),
+ NAME_FUNC_OFFSET( 751, glRasterPos2s, glRasterPos2s, NULL, 68),
+ NAME_FUNC_OFFSET( 765, glRasterPos2sv, glRasterPos2sv, NULL, 69),
+ NAME_FUNC_OFFSET( 780, glRasterPos3d, glRasterPos3d, NULL, 70),
+ NAME_FUNC_OFFSET( 794, glRasterPos3dv, glRasterPos3dv, NULL, 71),
+ NAME_FUNC_OFFSET( 809, glRasterPos3f, glRasterPos3f, NULL, 72),
+ NAME_FUNC_OFFSET( 823, glRasterPos3fv, glRasterPos3fv, NULL, 73),
+ NAME_FUNC_OFFSET( 838, glRasterPos3i, glRasterPos3i, NULL, 74),
+ NAME_FUNC_OFFSET( 852, glRasterPos3iv, glRasterPos3iv, NULL, 75),
+ NAME_FUNC_OFFSET( 867, glRasterPos3s, glRasterPos3s, NULL, 76),
+ NAME_FUNC_OFFSET( 881, glRasterPos3sv, glRasterPos3sv, NULL, 77),
+ NAME_FUNC_OFFSET( 896, glRasterPos4d, glRasterPos4d, NULL, 78),
+ NAME_FUNC_OFFSET( 910, glRasterPos4dv, glRasterPos4dv, NULL, 79),
+ NAME_FUNC_OFFSET( 925, glRasterPos4f, glRasterPos4f, NULL, 80),
+ NAME_FUNC_OFFSET( 939, glRasterPos4fv, glRasterPos4fv, NULL, 81),
+ NAME_FUNC_OFFSET( 954, glRasterPos4i, glRasterPos4i, NULL, 82),
+ NAME_FUNC_OFFSET( 968, glRasterPos4iv, glRasterPos4iv, NULL, 83),
+ NAME_FUNC_OFFSET( 983, glRasterPos4s, glRasterPos4s, NULL, 84),
+ NAME_FUNC_OFFSET( 997, glRasterPos4sv, glRasterPos4sv, NULL, 85),
+ NAME_FUNC_OFFSET( 1012, glRectd, glRectd, NULL, 86),
+ NAME_FUNC_OFFSET( 1020, glRectdv, glRectdv, NULL, 87),
+ NAME_FUNC_OFFSET( 1029, glRectf, glRectf, NULL, 88),
+ NAME_FUNC_OFFSET( 1037, glRectfv, glRectfv, NULL, 89),
+ NAME_FUNC_OFFSET( 1046, glRecti, glRecti, NULL, 90),
+ NAME_FUNC_OFFSET( 1054, glRectiv, glRectiv, NULL, 91),
+ NAME_FUNC_OFFSET( 1063, glRects, glRects, NULL, 92),
+ NAME_FUNC_OFFSET( 1071, glRectsv, glRectsv, NULL, 93),
+ NAME_FUNC_OFFSET( 1080, glTexCoord1d, glTexCoord1d, NULL, 94),
+ NAME_FUNC_OFFSET( 1093, glTexCoord1dv, glTexCoord1dv, NULL, 95),
+ NAME_FUNC_OFFSET( 1107, glTexCoord1f, glTexCoord1f, NULL, 96),
+ NAME_FUNC_OFFSET( 1120, glTexCoord1fv, glTexCoord1fv, NULL, 97),
+ NAME_FUNC_OFFSET( 1134, glTexCoord1i, glTexCoord1i, NULL, 98),
+ NAME_FUNC_OFFSET( 1147, glTexCoord1iv, glTexCoord1iv, NULL, 99),
+ NAME_FUNC_OFFSET( 1161, glTexCoord1s, glTexCoord1s, NULL, 100),
+ NAME_FUNC_OFFSET( 1174, glTexCoord1sv, glTexCoord1sv, NULL, 101),
+ NAME_FUNC_OFFSET( 1188, glTexCoord2d, glTexCoord2d, NULL, 102),
+ NAME_FUNC_OFFSET( 1201, glTexCoord2dv, glTexCoord2dv, NULL, 103),
+ NAME_FUNC_OFFSET( 1215, glTexCoord2f, glTexCoord2f, NULL, 104),
+ NAME_FUNC_OFFSET( 1228, glTexCoord2fv, glTexCoord2fv, NULL, 105),
+ NAME_FUNC_OFFSET( 1242, glTexCoord2i, glTexCoord2i, NULL, 106),
+ NAME_FUNC_OFFSET( 1255, glTexCoord2iv, glTexCoord2iv, NULL, 107),
+ NAME_FUNC_OFFSET( 1269, glTexCoord2s, glTexCoord2s, NULL, 108),
+ NAME_FUNC_OFFSET( 1282, glTexCoord2sv, glTexCoord2sv, NULL, 109),
+ NAME_FUNC_OFFSET( 1296, glTexCoord3d, glTexCoord3d, NULL, 110),
+ NAME_FUNC_OFFSET( 1309, glTexCoord3dv, glTexCoord3dv, NULL, 111),
+ NAME_FUNC_OFFSET( 1323, glTexCoord3f, glTexCoord3f, NULL, 112),
+ NAME_FUNC_OFFSET( 1336, glTexCoord3fv, glTexCoord3fv, NULL, 113),
+ NAME_FUNC_OFFSET( 1350, glTexCoord3i, glTexCoord3i, NULL, 114),
+ NAME_FUNC_OFFSET( 1363, glTexCoord3iv, glTexCoord3iv, NULL, 115),
+ NAME_FUNC_OFFSET( 1377, glTexCoord3s, glTexCoord3s, NULL, 116),
+ NAME_FUNC_OFFSET( 1390, glTexCoord3sv, glTexCoord3sv, NULL, 117),
+ NAME_FUNC_OFFSET( 1404, glTexCoord4d, glTexCoord4d, NULL, 118),
+ NAME_FUNC_OFFSET( 1417, glTexCoord4dv, glTexCoord4dv, NULL, 119),
+ NAME_FUNC_OFFSET( 1431, glTexCoord4f, glTexCoord4f, NULL, 120),
+ NAME_FUNC_OFFSET( 1444, glTexCoord4fv, glTexCoord4fv, NULL, 121),
+ NAME_FUNC_OFFSET( 1458, glTexCoord4i, glTexCoord4i, NULL, 122),
+ NAME_FUNC_OFFSET( 1471, glTexCoord4iv, glTexCoord4iv, NULL, 123),
+ NAME_FUNC_OFFSET( 1485, glTexCoord4s, glTexCoord4s, NULL, 124),
+ NAME_FUNC_OFFSET( 1498, glTexCoord4sv, glTexCoord4sv, NULL, 125),
+ NAME_FUNC_OFFSET( 1512, glVertex2d, glVertex2d, NULL, 126),
+ NAME_FUNC_OFFSET( 1523, glVertex2dv, glVertex2dv, NULL, 127),
+ NAME_FUNC_OFFSET( 1535, glVertex2f, glVertex2f, NULL, 128),
+ NAME_FUNC_OFFSET( 1546, glVertex2fv, glVertex2fv, NULL, 129),
+ NAME_FUNC_OFFSET( 1558, glVertex2i, glVertex2i, NULL, 130),
+ NAME_FUNC_OFFSET( 1569, glVertex2iv, glVertex2iv, NULL, 131),
+ NAME_FUNC_OFFSET( 1581, glVertex2s, glVertex2s, NULL, 132),
+ NAME_FUNC_OFFSET( 1592, glVertex2sv, glVertex2sv, NULL, 133),
+ NAME_FUNC_OFFSET( 1604, glVertex3d, glVertex3d, NULL, 134),
+ NAME_FUNC_OFFSET( 1615, glVertex3dv, glVertex3dv, NULL, 135),
+ NAME_FUNC_OFFSET( 1627, glVertex3f, glVertex3f, NULL, 136),
+ NAME_FUNC_OFFSET( 1638, glVertex3fv, glVertex3fv, NULL, 137),
+ NAME_FUNC_OFFSET( 1650, glVertex3i, glVertex3i, NULL, 138),
+ NAME_FUNC_OFFSET( 1661, glVertex3iv, glVertex3iv, NULL, 139),
+ NAME_FUNC_OFFSET( 1673, glVertex3s, glVertex3s, NULL, 140),
+ NAME_FUNC_OFFSET( 1684, glVertex3sv, glVertex3sv, NULL, 141),
+ NAME_FUNC_OFFSET( 1696, glVertex4d, glVertex4d, NULL, 142),
+ NAME_FUNC_OFFSET( 1707, glVertex4dv, glVertex4dv, NULL, 143),
+ NAME_FUNC_OFFSET( 1719, glVertex4f, glVertex4f, NULL, 144),
+ NAME_FUNC_OFFSET( 1730, glVertex4fv, glVertex4fv, NULL, 145),
+ NAME_FUNC_OFFSET( 1742, glVertex4i, glVertex4i, NULL, 146),
+ NAME_FUNC_OFFSET( 1753, glVertex4iv, glVertex4iv, NULL, 147),
+ NAME_FUNC_OFFSET( 1765, glVertex4s, glVertex4s, NULL, 148),
+ NAME_FUNC_OFFSET( 1776, glVertex4sv, glVertex4sv, NULL, 149),
+ NAME_FUNC_OFFSET( 1788, glClipPlane, glClipPlane, NULL, 150),
+ NAME_FUNC_OFFSET( 1800, glColorMaterial, glColorMaterial, NULL, 151),
+ NAME_FUNC_OFFSET( 1816, glCullFace, glCullFace, NULL, 152),
+ NAME_FUNC_OFFSET( 1827, glFogf, glFogf, NULL, 153),
+ NAME_FUNC_OFFSET( 1834, glFogfv, glFogfv, NULL, 154),
+ NAME_FUNC_OFFSET( 1842, glFogi, glFogi, NULL, 155),
+ NAME_FUNC_OFFSET( 1849, glFogiv, glFogiv, NULL, 156),
+ NAME_FUNC_OFFSET( 1857, glFrontFace, glFrontFace, NULL, 157),
+ NAME_FUNC_OFFSET( 1869, glHint, glHint, NULL, 158),
+ NAME_FUNC_OFFSET( 1876, glLightf, glLightf, NULL, 159),
+ NAME_FUNC_OFFSET( 1885, glLightfv, glLightfv, NULL, 160),
+ NAME_FUNC_OFFSET( 1895, glLighti, glLighti, NULL, 161),
+ NAME_FUNC_OFFSET( 1904, glLightiv, glLightiv, NULL, 162),
+ NAME_FUNC_OFFSET( 1914, glLightModelf, glLightModelf, NULL, 163),
+ NAME_FUNC_OFFSET( 1928, glLightModelfv, glLightModelfv, NULL, 164),
+ NAME_FUNC_OFFSET( 1943, glLightModeli, glLightModeli, NULL, 165),
+ NAME_FUNC_OFFSET( 1957, glLightModeliv, glLightModeliv, NULL, 166),
+ NAME_FUNC_OFFSET( 1972, glLineStipple, glLineStipple, NULL, 167),
+ NAME_FUNC_OFFSET( 1986, glLineWidth, glLineWidth, NULL, 168),
+ NAME_FUNC_OFFSET( 1998, glMaterialf, glMaterialf, NULL, 169),
+ NAME_FUNC_OFFSET( 2010, glMaterialfv, glMaterialfv, NULL, 170),
+ NAME_FUNC_OFFSET( 2023, glMateriali, glMateriali, NULL, 171),
+ NAME_FUNC_OFFSET( 2035, glMaterialiv, glMaterialiv, NULL, 172),
+ NAME_FUNC_OFFSET( 2048, glPointSize, glPointSize, NULL, 173),
+ NAME_FUNC_OFFSET( 2060, glPolygonMode, glPolygonMode, NULL, 174),
+ NAME_FUNC_OFFSET( 2074, glPolygonStipple, glPolygonStipple, NULL, 175),
+ NAME_FUNC_OFFSET( 2091, glScissor, glScissor, NULL, 176),
+ NAME_FUNC_OFFSET( 2101, glShadeModel, glShadeModel, NULL, 177),
+ NAME_FUNC_OFFSET( 2114, glTexParameterf, glTexParameterf, NULL, 178),
+ NAME_FUNC_OFFSET( 2130, glTexParameterfv, glTexParameterfv, NULL, 179),
+ NAME_FUNC_OFFSET( 2147, glTexParameteri, glTexParameteri, NULL, 180),
+ NAME_FUNC_OFFSET( 2163, glTexParameteriv, glTexParameteriv, NULL, 181),
+ NAME_FUNC_OFFSET( 2180, glTexImage1D, glTexImage1D, NULL, 182),
+ NAME_FUNC_OFFSET( 2193, glTexImage2D, glTexImage2D, NULL, 183),
+ NAME_FUNC_OFFSET( 2206, glTexEnvf, glTexEnvf, NULL, 184),
+ NAME_FUNC_OFFSET( 2216, glTexEnvfv, glTexEnvfv, NULL, 185),
+ NAME_FUNC_OFFSET( 2227, glTexEnvi, glTexEnvi, NULL, 186),
+ NAME_FUNC_OFFSET( 2237, glTexEnviv, glTexEnviv, NULL, 187),
+ NAME_FUNC_OFFSET( 2248, glTexGend, glTexGend, NULL, 188),
+ NAME_FUNC_OFFSET( 2258, glTexGendv, glTexGendv, NULL, 189),
+ NAME_FUNC_OFFSET( 2269, glTexGenf, glTexGenf, NULL, 190),
+ NAME_FUNC_OFFSET( 2279, glTexGenfv, glTexGenfv, NULL, 191),
+ NAME_FUNC_OFFSET( 2290, glTexGeni, glTexGeni, NULL, 192),
+ NAME_FUNC_OFFSET( 2300, glTexGeniv, glTexGeniv, NULL, 193),
+ NAME_FUNC_OFFSET( 2311, glFeedbackBuffer, glFeedbackBuffer, NULL, 194),
+ NAME_FUNC_OFFSET( 2328, glSelectBuffer, glSelectBuffer, NULL, 195),
+ NAME_FUNC_OFFSET( 2343, glRenderMode, glRenderMode, NULL, 196),
+ NAME_FUNC_OFFSET( 2356, glInitNames, glInitNames, NULL, 197),
+ NAME_FUNC_OFFSET( 2368, glLoadName, glLoadName, NULL, 198),
+ NAME_FUNC_OFFSET( 2379, glPassThrough, glPassThrough, NULL, 199),
+ NAME_FUNC_OFFSET( 2393, glPopName, glPopName, NULL, 200),
+ NAME_FUNC_OFFSET( 2403, glPushName, glPushName, NULL, 201),
+ NAME_FUNC_OFFSET( 2414, glDrawBuffer, glDrawBuffer, NULL, 202),
+ NAME_FUNC_OFFSET( 2427, glClear, glClear, NULL, 203),
+ NAME_FUNC_OFFSET( 2435, glClearAccum, glClearAccum, NULL, 204),
+ NAME_FUNC_OFFSET( 2448, glClearIndex, glClearIndex, NULL, 205),
+ NAME_FUNC_OFFSET( 2461, glClearColor, glClearColor, NULL, 206),
+ NAME_FUNC_OFFSET( 2474, glClearStencil, glClearStencil, NULL, 207),
+ NAME_FUNC_OFFSET( 2489, glClearDepth, glClearDepth, NULL, 208),
+ NAME_FUNC_OFFSET( 2502, glStencilMask, glStencilMask, NULL, 209),
+ NAME_FUNC_OFFSET( 2516, glColorMask, glColorMask, NULL, 210),
+ NAME_FUNC_OFFSET( 2528, glDepthMask, glDepthMask, NULL, 211),
+ NAME_FUNC_OFFSET( 2540, glIndexMask, glIndexMask, NULL, 212),
+ NAME_FUNC_OFFSET( 2552, glAccum, glAccum, NULL, 213),
+ NAME_FUNC_OFFSET( 2560, glDisable, glDisable, NULL, 214),
+ NAME_FUNC_OFFSET( 2570, glEnable, glEnable, NULL, 215),
+ NAME_FUNC_OFFSET( 2579, glFinish, glFinish, NULL, 216),
+ NAME_FUNC_OFFSET( 2588, glFlush, glFlush, NULL, 217),
+ NAME_FUNC_OFFSET( 2596, glPopAttrib, glPopAttrib, NULL, 218),
+ NAME_FUNC_OFFSET( 2608, glPushAttrib, glPushAttrib, NULL, 219),
+ NAME_FUNC_OFFSET( 2621, glMap1d, glMap1d, NULL, 220),
+ NAME_FUNC_OFFSET( 2629, glMap1f, glMap1f, NULL, 221),
+ NAME_FUNC_OFFSET( 2637, glMap2d, glMap2d, NULL, 222),
+ NAME_FUNC_OFFSET( 2645, glMap2f, glMap2f, NULL, 223),
+ NAME_FUNC_OFFSET( 2653, glMapGrid1d, glMapGrid1d, NULL, 224),
+ NAME_FUNC_OFFSET( 2665, glMapGrid1f, glMapGrid1f, NULL, 225),
+ NAME_FUNC_OFFSET( 2677, glMapGrid2d, glMapGrid2d, NULL, 226),
+ NAME_FUNC_OFFSET( 2689, glMapGrid2f, glMapGrid2f, NULL, 227),
+ NAME_FUNC_OFFSET( 2701, glEvalCoord1d, glEvalCoord1d, NULL, 228),
+ NAME_FUNC_OFFSET( 2715, glEvalCoord1dv, glEvalCoord1dv, NULL, 229),
+ NAME_FUNC_OFFSET( 2730, glEvalCoord1f, glEvalCoord1f, NULL, 230),
+ NAME_FUNC_OFFSET( 2744, glEvalCoord1fv, glEvalCoord1fv, NULL, 231),
+ NAME_FUNC_OFFSET( 2759, glEvalCoord2d, glEvalCoord2d, NULL, 232),
+ NAME_FUNC_OFFSET( 2773, glEvalCoord2dv, glEvalCoord2dv, NULL, 233),
+ NAME_FUNC_OFFSET( 2788, glEvalCoord2f, glEvalCoord2f, NULL, 234),
+ NAME_FUNC_OFFSET( 2802, glEvalCoord2fv, glEvalCoord2fv, NULL, 235),
+ NAME_FUNC_OFFSET( 2817, glEvalMesh1, glEvalMesh1, NULL, 236),
+ NAME_FUNC_OFFSET( 2829, glEvalPoint1, glEvalPoint1, NULL, 237),
+ NAME_FUNC_OFFSET( 2842, glEvalMesh2, glEvalMesh2, NULL, 238),
+ NAME_FUNC_OFFSET( 2854, glEvalPoint2, glEvalPoint2, NULL, 239),
+ NAME_FUNC_OFFSET( 2867, glAlphaFunc, glAlphaFunc, NULL, 240),
+ NAME_FUNC_OFFSET( 2879, glBlendFunc, glBlendFunc, NULL, 241),
+ NAME_FUNC_OFFSET( 2891, glLogicOp, glLogicOp, NULL, 242),
+ NAME_FUNC_OFFSET( 2901, glStencilFunc, glStencilFunc, NULL, 243),
+ NAME_FUNC_OFFSET( 2915, glStencilOp, glStencilOp, NULL, 244),
+ NAME_FUNC_OFFSET( 2927, glDepthFunc, glDepthFunc, NULL, 245),
+ NAME_FUNC_OFFSET( 2939, glPixelZoom, glPixelZoom, NULL, 246),
+ NAME_FUNC_OFFSET( 2951, glPixelTransferf, glPixelTransferf, NULL, 247),
+ NAME_FUNC_OFFSET( 2968, glPixelTransferi, glPixelTransferi, NULL, 248),
+ NAME_FUNC_OFFSET( 2985, glPixelStoref, glPixelStoref, NULL, 249),
+ NAME_FUNC_OFFSET( 2999, glPixelStorei, glPixelStorei, NULL, 250),
+ NAME_FUNC_OFFSET( 3013, glPixelMapfv, glPixelMapfv, NULL, 251),
+ NAME_FUNC_OFFSET( 3026, glPixelMapuiv, glPixelMapuiv, NULL, 252),
+ NAME_FUNC_OFFSET( 3040, glPixelMapusv, glPixelMapusv, NULL, 253),
+ NAME_FUNC_OFFSET( 3054, glReadBuffer, glReadBuffer, NULL, 254),
+ NAME_FUNC_OFFSET( 3067, glCopyPixels, glCopyPixels, NULL, 255),
+ NAME_FUNC_OFFSET( 3080, glReadPixels, glReadPixels, NULL, 256),
+ NAME_FUNC_OFFSET( 3093, glDrawPixels, glDrawPixels, NULL, 257),
+ NAME_FUNC_OFFSET( 3106, glGetBooleanv, glGetBooleanv, NULL, 258),
+ NAME_FUNC_OFFSET( 3120, glGetClipPlane, glGetClipPlane, NULL, 259),
+ NAME_FUNC_OFFSET( 3135, glGetDoublev, glGetDoublev, NULL, 260),
+ NAME_FUNC_OFFSET( 3148, glGetError, glGetError, NULL, 261),
+ NAME_FUNC_OFFSET( 3159, glGetFloatv, glGetFloatv, NULL, 262),
+ NAME_FUNC_OFFSET( 3171, glGetIntegerv, glGetIntegerv, NULL, 263),
+ NAME_FUNC_OFFSET( 3185, glGetLightfv, glGetLightfv, NULL, 264),
+ NAME_FUNC_OFFSET( 3198, glGetLightiv, glGetLightiv, NULL, 265),
+ NAME_FUNC_OFFSET( 3211, glGetMapdv, glGetMapdv, NULL, 266),
+ NAME_FUNC_OFFSET( 3222, glGetMapfv, glGetMapfv, NULL, 267),
+ NAME_FUNC_OFFSET( 3233, glGetMapiv, glGetMapiv, NULL, 268),
+ NAME_FUNC_OFFSET( 3244, glGetMaterialfv, glGetMaterialfv, NULL, 269),
+ NAME_FUNC_OFFSET( 3260, glGetMaterialiv, glGetMaterialiv, NULL, 270),
+ NAME_FUNC_OFFSET( 3276, glGetPixelMapfv, glGetPixelMapfv, NULL, 271),
+ NAME_FUNC_OFFSET( 3292, glGetPixelMapuiv, glGetPixelMapuiv, NULL, 272),
+ NAME_FUNC_OFFSET( 3309, glGetPixelMapusv, glGetPixelMapusv, NULL, 273),
+ NAME_FUNC_OFFSET( 3326, glGetPolygonStipple, glGetPolygonStipple, NULL, 274),
+ NAME_FUNC_OFFSET( 3346, glGetString, glGetString, NULL, 275),
+ NAME_FUNC_OFFSET( 3358, glGetTexEnvfv, glGetTexEnvfv, NULL, 276),
+ NAME_FUNC_OFFSET( 3372, glGetTexEnviv, glGetTexEnviv, NULL, 277),
+ NAME_FUNC_OFFSET( 3386, glGetTexGendv, glGetTexGendv, NULL, 278),
+ NAME_FUNC_OFFSET( 3400, glGetTexGenfv, glGetTexGenfv, NULL, 279),
+ NAME_FUNC_OFFSET( 3414, glGetTexGeniv, glGetTexGeniv, NULL, 280),
+ NAME_FUNC_OFFSET( 3428, glGetTexImage, glGetTexImage, NULL, 281),
+ NAME_FUNC_OFFSET( 3442, glGetTexParameterfv, glGetTexParameterfv, NULL, 282),
+ NAME_FUNC_OFFSET( 3462, glGetTexParameteriv, glGetTexParameteriv, NULL, 283),
+ NAME_FUNC_OFFSET( 3482, glGetTexLevelParameterfv, glGetTexLevelParameterfv, NULL, 284),
+ NAME_FUNC_OFFSET( 3507, glGetTexLevelParameteriv, glGetTexLevelParameteriv, NULL, 285),
+ NAME_FUNC_OFFSET( 3532, glIsEnabled, glIsEnabled, NULL, 286),
+ NAME_FUNC_OFFSET( 3544, glIsList, glIsList, NULL, 287),
+ NAME_FUNC_OFFSET( 3553, glDepthRange, glDepthRange, NULL, 288),
+ NAME_FUNC_OFFSET( 3566, glFrustum, glFrustum, NULL, 289),
+ NAME_FUNC_OFFSET( 3576, glLoadIdentity, glLoadIdentity, NULL, 290),
+ NAME_FUNC_OFFSET( 3591, glLoadMatrixf, glLoadMatrixf, NULL, 291),
+ NAME_FUNC_OFFSET( 3605, glLoadMatrixd, glLoadMatrixd, NULL, 292),
+ NAME_FUNC_OFFSET( 3619, glMatrixMode, glMatrixMode, NULL, 293),
+ NAME_FUNC_OFFSET( 3632, glMultMatrixf, glMultMatrixf, NULL, 294),
+ NAME_FUNC_OFFSET( 3646, glMultMatrixd, glMultMatrixd, NULL, 295),
+ NAME_FUNC_OFFSET( 3660, glOrtho, glOrtho, NULL, 296),
+ NAME_FUNC_OFFSET( 3668, glPopMatrix, glPopMatrix, NULL, 297),
+ NAME_FUNC_OFFSET( 3680, glPushMatrix, glPushMatrix, NULL, 298),
+ NAME_FUNC_OFFSET( 3693, glRotated, glRotated, NULL, 299),
+ NAME_FUNC_OFFSET( 3703, glRotatef, glRotatef, NULL, 300),
+ NAME_FUNC_OFFSET( 3713, glScaled, glScaled, NULL, 301),
+ NAME_FUNC_OFFSET( 3722, glScalef, glScalef, NULL, 302),
+ NAME_FUNC_OFFSET( 3731, glTranslated, glTranslated, NULL, 303),
+ NAME_FUNC_OFFSET( 3744, glTranslatef, glTranslatef, NULL, 304),
+ NAME_FUNC_OFFSET( 3757, glViewport, glViewport, NULL, 305),
+ NAME_FUNC_OFFSET( 3768, glArrayElement, glArrayElement, NULL, 306),
+ NAME_FUNC_OFFSET( 3783, glBindTexture, glBindTexture, NULL, 307),
+ NAME_FUNC_OFFSET( 3797, glColorPointer, glColorPointer, NULL, 308),
+ NAME_FUNC_OFFSET( 3812, glDisableClientState, glDisableClientState, NULL, 309),
+ NAME_FUNC_OFFSET( 3833, glDrawArrays, glDrawArrays, NULL, 310),
+ NAME_FUNC_OFFSET( 3846, glDrawElements, glDrawElements, NULL, 311),
+ NAME_FUNC_OFFSET( 3861, glEdgeFlagPointer, glEdgeFlagPointer, NULL, 312),
+ NAME_FUNC_OFFSET( 3879, glEnableClientState, glEnableClientState, NULL, 313),
+ NAME_FUNC_OFFSET( 3899, glIndexPointer, glIndexPointer, NULL, 314),
+ NAME_FUNC_OFFSET( 3914, glIndexub, glIndexub, NULL, 315),
+ NAME_FUNC_OFFSET( 3924, glIndexubv, glIndexubv, NULL, 316),
+ NAME_FUNC_OFFSET( 3935, glInterleavedArrays, glInterleavedArrays, NULL, 317),
+ NAME_FUNC_OFFSET( 3955, glNormalPointer, glNormalPointer, NULL, 318),
+ NAME_FUNC_OFFSET( 3971, glPolygonOffset, glPolygonOffset, NULL, 319),
+ NAME_FUNC_OFFSET( 3987, glTexCoordPointer, glTexCoordPointer, NULL, 320),
+ NAME_FUNC_OFFSET( 4005, glVertexPointer, glVertexPointer, NULL, 321),
+ NAME_FUNC_OFFSET( 4021, glAreTexturesResident, glAreTexturesResident, NULL, 322),
+ NAME_FUNC_OFFSET( 4043, glCopyTexImage1D, glCopyTexImage1D, NULL, 323),
+ NAME_FUNC_OFFSET( 4060, glCopyTexImage2D, glCopyTexImage2D, NULL, 324),
+ NAME_FUNC_OFFSET( 4077, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, 325),
+ NAME_FUNC_OFFSET( 4097, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, 326),
+ NAME_FUNC_OFFSET( 4117, glDeleteTextures, glDeleteTextures, NULL, 327),
+ NAME_FUNC_OFFSET( 4134, glGenTextures, glGenTextures, NULL, 328),
+ NAME_FUNC_OFFSET( 4148, glGetPointerv, glGetPointerv, NULL, 329),
+ NAME_FUNC_OFFSET( 4162, glIsTexture, glIsTexture, NULL, 330),
+ NAME_FUNC_OFFSET( 4174, glPrioritizeTextures, glPrioritizeTextures, NULL, 331),
+ NAME_FUNC_OFFSET( 4195, glTexSubImage1D, glTexSubImage1D, NULL, 332),
+ NAME_FUNC_OFFSET( 4211, glTexSubImage2D, glTexSubImage2D, NULL, 333),
+ NAME_FUNC_OFFSET( 4227, glPopClientAttrib, glPopClientAttrib, NULL, 334),
+ NAME_FUNC_OFFSET( 4245, glPushClientAttrib, glPushClientAttrib, NULL, 335),
+ NAME_FUNC_OFFSET( 4264, glBlendColor, glBlendColor, NULL, 336),
+ NAME_FUNC_OFFSET( 4277, glBlendEquation, glBlendEquation, NULL, 337),
+ NAME_FUNC_OFFSET( 4293, glDrawRangeElements, glDrawRangeElements, NULL, 338),
+ NAME_FUNC_OFFSET( 4313, glColorTable, glColorTable, NULL, 339),
+ NAME_FUNC_OFFSET( 4326, glColorTableParameterfv, glColorTableParameterfv, NULL, 340),
+ NAME_FUNC_OFFSET( 4350, glColorTableParameteriv, glColorTableParameteriv, NULL, 341),
+ NAME_FUNC_OFFSET( 4374, glCopyColorTable, glCopyColorTable, NULL, 342),
+ NAME_FUNC_OFFSET( 4391, glGetColorTable, glGetColorTable, NULL, 343),
+ NAME_FUNC_OFFSET( 4407, glGetColorTableParameterfv, glGetColorTableParameterfv, NULL, 344),
+ NAME_FUNC_OFFSET( 4434, glGetColorTableParameteriv, glGetColorTableParameteriv, NULL, 345),
+ NAME_FUNC_OFFSET( 4461, glColorSubTable, glColorSubTable, NULL, 346),
+ NAME_FUNC_OFFSET( 4477, glCopyColorSubTable, glCopyColorSubTable, NULL, 347),
+ NAME_FUNC_OFFSET( 4497, glConvolutionFilter1D, glConvolutionFilter1D, NULL, 348),
+ NAME_FUNC_OFFSET( 4519, glConvolutionFilter2D, glConvolutionFilter2D, NULL, 349),
+ NAME_FUNC_OFFSET( 4541, glConvolutionParameterf, glConvolutionParameterf, NULL, 350),
+ NAME_FUNC_OFFSET( 4565, glConvolutionParameterfv, glConvolutionParameterfv, NULL, 351),
+ NAME_FUNC_OFFSET( 4590, glConvolutionParameteri, glConvolutionParameteri, NULL, 352),
+ NAME_FUNC_OFFSET( 4614, glConvolutionParameteriv, glConvolutionParameteriv, NULL, 353),
+ NAME_FUNC_OFFSET( 4639, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, 354),
+ NAME_FUNC_OFFSET( 4665, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, 355),
+ NAME_FUNC_OFFSET( 4691, glGetConvolutionFilter, glGetConvolutionFilter, NULL, 356),
+ NAME_FUNC_OFFSET( 4714, glGetConvolutionParameterfv, glGetConvolutionParameterfv, NULL, 357),
+ NAME_FUNC_OFFSET( 4742, glGetConvolutionParameteriv, glGetConvolutionParameteriv, NULL, 358),
+ NAME_FUNC_OFFSET( 4770, glGetSeparableFilter, glGetSeparableFilter, NULL, 359),
+ NAME_FUNC_OFFSET( 4791, glSeparableFilter2D, glSeparableFilter2D, NULL, 360),
+ NAME_FUNC_OFFSET( 4811, glGetHistogram, glGetHistogram, NULL, 361),
+ NAME_FUNC_OFFSET( 4826, glGetHistogramParameterfv, glGetHistogramParameterfv, NULL, 362),
+ NAME_FUNC_OFFSET( 4852, glGetHistogramParameteriv, glGetHistogramParameteriv, NULL, 363),
+ NAME_FUNC_OFFSET( 4878, glGetMinmax, glGetMinmax, NULL, 364),
+ NAME_FUNC_OFFSET( 4890, glGetMinmaxParameterfv, glGetMinmaxParameterfv, NULL, 365),
+ NAME_FUNC_OFFSET( 4913, glGetMinmaxParameteriv, glGetMinmaxParameteriv, NULL, 366),
+ NAME_FUNC_OFFSET( 4936, glHistogram, glHistogram, NULL, 367),
+ NAME_FUNC_OFFSET( 4948, glMinmax, glMinmax, NULL, 368),
+ NAME_FUNC_OFFSET( 4957, glResetHistogram, glResetHistogram, NULL, 369),
+ NAME_FUNC_OFFSET( 4974, glResetMinmax, glResetMinmax, NULL, 370),
+ NAME_FUNC_OFFSET( 4988, glTexImage3D, glTexImage3D, NULL, 371),
+ NAME_FUNC_OFFSET( 5001, glTexSubImage3D, glTexSubImage3D, NULL, 372),
+ NAME_FUNC_OFFSET( 5017, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373),
+ NAME_FUNC_OFFSET( 5037, glActiveTextureARB, glActiveTextureARB, NULL, 374),
+ NAME_FUNC_OFFSET( 5056, glClientActiveTextureARB, glClientActiveTextureARB, NULL, 375),
+ NAME_FUNC_OFFSET( 5081, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, 376),
+ NAME_FUNC_OFFSET( 5102, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, 377),
+ NAME_FUNC_OFFSET( 5124, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, 378),
+ NAME_FUNC_OFFSET( 5145, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, 379),
+ NAME_FUNC_OFFSET( 5167, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, 380),
+ NAME_FUNC_OFFSET( 5188, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, 381),
+ NAME_FUNC_OFFSET( 5210, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, 382),
+ NAME_FUNC_OFFSET( 5231, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, 383),
+ NAME_FUNC_OFFSET( 5253, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, 384),
+ NAME_FUNC_OFFSET( 5274, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, 385),
+ NAME_FUNC_OFFSET( 5296, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, 386),
+ NAME_FUNC_OFFSET( 5317, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, 387),
+ NAME_FUNC_OFFSET( 5339, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, 388),
+ NAME_FUNC_OFFSET( 5360, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, 389),
+ NAME_FUNC_OFFSET( 5382, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, 390),
+ NAME_FUNC_OFFSET( 5403, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, 391),
+ NAME_FUNC_OFFSET( 5425, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, 392),
+ NAME_FUNC_OFFSET( 5446, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, 393),
+ NAME_FUNC_OFFSET( 5468, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, 394),
+ NAME_FUNC_OFFSET( 5489, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, 395),
+ NAME_FUNC_OFFSET( 5511, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, 396),
+ NAME_FUNC_OFFSET( 5532, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, 397),
+ NAME_FUNC_OFFSET( 5554, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, 398),
+ NAME_FUNC_OFFSET( 5575, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, 399),
+ NAME_FUNC_OFFSET( 5597, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, 400),
+ NAME_FUNC_OFFSET( 5618, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, 401),
+ NAME_FUNC_OFFSET( 5640, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, 402),
+ NAME_FUNC_OFFSET( 5661, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, 403),
+ NAME_FUNC_OFFSET( 5683, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, 404),
+ NAME_FUNC_OFFSET( 5704, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, 405),
+ NAME_FUNC_OFFSET( 5726, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, 406),
+ NAME_FUNC_OFFSET( 5747, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, 407),
+ NAME_FUNC_OFFSET( 5769, glAttachShader, glAttachShader, NULL, 408),
+ NAME_FUNC_OFFSET( 5784, glCreateProgram, glCreateProgram, NULL, 409),
+ NAME_FUNC_OFFSET( 5800, glCreateShader, glCreateShader, NULL, 410),
+ NAME_FUNC_OFFSET( 5815, glDeleteProgram, glDeleteProgram, NULL, 411),
+ NAME_FUNC_OFFSET( 5831, glDeleteShader, glDeleteShader, NULL, 412),
+ NAME_FUNC_OFFSET( 5846, glDetachShader, glDetachShader, NULL, 413),
+ NAME_FUNC_OFFSET( 5861, glGetAttachedShaders, glGetAttachedShaders, NULL, 414),
+ NAME_FUNC_OFFSET( 5882, glGetProgramInfoLog, glGetProgramInfoLog, NULL, 415),
+ NAME_FUNC_OFFSET( 5902, glGetProgramiv, glGetProgramiv, NULL, 416),
+ NAME_FUNC_OFFSET( 5917, glGetShaderInfoLog, glGetShaderInfoLog, NULL, 417),
+ NAME_FUNC_OFFSET( 5936, glGetShaderiv, glGetShaderiv, NULL, 418),
+ NAME_FUNC_OFFSET( 5950, glIsProgram, glIsProgram, NULL, 419),
+ NAME_FUNC_OFFSET( 5962, glIsShader, glIsShader, NULL, 420),
+ NAME_FUNC_OFFSET( 5973, glStencilFuncSeparate, glStencilFuncSeparate, NULL, 421),
+ NAME_FUNC_OFFSET( 5995, glStencilMaskSeparate, glStencilMaskSeparate, NULL, 422),
+ NAME_FUNC_OFFSET( 6017, glStencilOpSeparate, glStencilOpSeparate, NULL, 423),
+ NAME_FUNC_OFFSET( 6037, glUniformMatrix2x3fv, glUniformMatrix2x3fv, NULL, 424),
+ NAME_FUNC_OFFSET( 6058, glUniformMatrix2x4fv, glUniformMatrix2x4fv, NULL, 425),
+ NAME_FUNC_OFFSET( 6079, glUniformMatrix3x2fv, glUniformMatrix3x2fv, NULL, 426),
+ NAME_FUNC_OFFSET( 6100, glUniformMatrix3x4fv, glUniformMatrix3x4fv, NULL, 427),
+ NAME_FUNC_OFFSET( 6121, glUniformMatrix4x2fv, glUniformMatrix4x2fv, NULL, 428),
+ NAME_FUNC_OFFSET( 6142, glUniformMatrix4x3fv, glUniformMatrix4x3fv, NULL, 429),
+ NAME_FUNC_OFFSET( 6163, glClampColor, glClampColor, NULL, 430),
+ NAME_FUNC_OFFSET( 6176, glClearBufferfi, glClearBufferfi, NULL, 431),
+ NAME_FUNC_OFFSET( 6192, glClearBufferfv, glClearBufferfv, NULL, 432),
+ NAME_FUNC_OFFSET( 6208, glClearBufferiv, glClearBufferiv, NULL, 433),
+ NAME_FUNC_OFFSET( 6224, glClearBufferuiv, glClearBufferuiv, NULL, 434),
+ NAME_FUNC_OFFSET( 6241, glGetStringi, glGetStringi, NULL, 435),
+ NAME_FUNC_OFFSET( 6254, glTexBuffer, glTexBuffer, NULL, 436),
+ NAME_FUNC_OFFSET( 6266, glFramebufferTexture, glFramebufferTexture, NULL, 437),
+ NAME_FUNC_OFFSET( 6287, glGetBufferParameteri64v, glGetBufferParameteri64v, NULL, 438),
+ NAME_FUNC_OFFSET( 6312, glGetInteger64i_v, glGetInteger64i_v, NULL, 439),
+ NAME_FUNC_OFFSET( 6330, glVertexAttribDivisor, glVertexAttribDivisor, NULL, 440),
+ NAME_FUNC_OFFSET( 6352, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, 441),
+ NAME_FUNC_OFFSET( 6378, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, 442),
+ NAME_FUNC_OFFSET( 6404, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, 443),
+ NAME_FUNC_OFFSET( 6430, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, 444),
+ NAME_FUNC_OFFSET( 6456, glSampleCoverageARB, glSampleCoverageARB, NULL, 445),
+ NAME_FUNC_OFFSET( 6476, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, 446),
+ NAME_FUNC_OFFSET( 6502, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, 447),
+ NAME_FUNC_OFFSET( 6528, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, 448),
+ NAME_FUNC_OFFSET( 6554, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, 449),
+ NAME_FUNC_OFFSET( 6583, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, 450),
+ NAME_FUNC_OFFSET( 6612, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, 451),
+ NAME_FUNC_OFFSET( 6641, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, 452),
+ NAME_FUNC_OFFSET( 6668, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, 453),
+ NAME_FUNC_OFFSET( 6698, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, 454),
+ NAME_FUNC_OFFSET( 6727, glGetProgramEnvParameterdvARB, glGetProgramEnvParameterdvARB, NULL, 455),
+ NAME_FUNC_OFFSET( 6757, glGetProgramEnvParameterfvARB, glGetProgramEnvParameterfvARB, NULL, 456),
+ NAME_FUNC_OFFSET( 6787, glGetProgramLocalParameterdvARB, glGetProgramLocalParameterdvARB, NULL, 457),
+ NAME_FUNC_OFFSET( 6819, glGetProgramLocalParameterfvARB, glGetProgramLocalParameterfvARB, NULL, 458),
+ NAME_FUNC_OFFSET( 6851, glGetProgramStringARB, glGetProgramStringARB, NULL, 459),
+ NAME_FUNC_OFFSET( 6873, glGetProgramivARB, glGetProgramivARB, NULL, 460),
+ NAME_FUNC_OFFSET( 6891, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, 461),
+ NAME_FUNC_OFFSET( 6914, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, 462),
+ NAME_FUNC_OFFSET( 6937, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, 463),
+ NAME_FUNC_OFFSET( 6960, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, 464),
+ NAME_FUNC_OFFSET( 6987, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, 465),
+ NAME_FUNC_OFFSET( 7015, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, 466),
+ NAME_FUNC_OFFSET( 7042, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, 467),
+ NAME_FUNC_OFFSET( 7070, glProgramLocalParameter4dARB, glProgramLocalParameter4dARB, NULL, 468),
+ NAME_FUNC_OFFSET( 7099, glProgramLocalParameter4dvARB, glProgramLocalParameter4dvARB, NULL, 469),
+ NAME_FUNC_OFFSET( 7129, glProgramLocalParameter4fARB, glProgramLocalParameter4fARB, NULL, 470),
+ NAME_FUNC_OFFSET( 7158, glProgramLocalParameter4fvARB, glProgramLocalParameter4fvARB, NULL, 471),
+ NAME_FUNC_OFFSET( 7188, glProgramStringARB, glProgramStringARB, NULL, 472),
+ NAME_FUNC_OFFSET( 7207, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, 473),
+ NAME_FUNC_OFFSET( 7227, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, 474),
+ NAME_FUNC_OFFSET( 7248, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, 475),
+ NAME_FUNC_OFFSET( 7268, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, 476),
+ NAME_FUNC_OFFSET( 7289, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, 477),
+ NAME_FUNC_OFFSET( 7309, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, 478),
+ NAME_FUNC_OFFSET( 7330, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, 479),
+ NAME_FUNC_OFFSET( 7350, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, 480),
+ NAME_FUNC_OFFSET( 7371, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, 481),
+ NAME_FUNC_OFFSET( 7391, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, 482),
+ NAME_FUNC_OFFSET( 7412, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, 483),
+ NAME_FUNC_OFFSET( 7432, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, 484),
+ NAME_FUNC_OFFSET( 7453, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, 485),
+ NAME_FUNC_OFFSET( 7473, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, 486),
+ NAME_FUNC_OFFSET( 7494, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, 487),
+ NAME_FUNC_OFFSET( 7514, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, 488),
+ NAME_FUNC_OFFSET( 7535, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, 489),
+ NAME_FUNC_OFFSET( 7555, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, 490),
+ NAME_FUNC_OFFSET( 7576, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, 491),
+ NAME_FUNC_OFFSET( 7598, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, 492),
+ NAME_FUNC_OFFSET( 7620, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, 493),
+ NAME_FUNC_OFFSET( 7642, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, 494),
+ NAME_FUNC_OFFSET( 7664, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, 495),
+ NAME_FUNC_OFFSET( 7687, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, 496),
+ NAME_FUNC_OFFSET( 7710, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, 497),
+ NAME_FUNC_OFFSET( 7733, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, 498),
+ NAME_FUNC_OFFSET( 7754, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, 499),
+ NAME_FUNC_OFFSET( 7774, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, 500),
+ NAME_FUNC_OFFSET( 7795, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, 501),
+ NAME_FUNC_OFFSET( 7815, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, 502),
+ NAME_FUNC_OFFSET( 7836, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, 503),
+ NAME_FUNC_OFFSET( 7857, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, 504),
+ NAME_FUNC_OFFSET( 7877, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, 505),
+ NAME_FUNC_OFFSET( 7898, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, 506),
+ NAME_FUNC_OFFSET( 7920, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, 507),
+ NAME_FUNC_OFFSET( 7942, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, 508),
+ NAME_FUNC_OFFSET( 7964, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, 509),
+ NAME_FUNC_OFFSET( 7989, glBindBufferARB, glBindBufferARB, NULL, 510),
+ NAME_FUNC_OFFSET( 8005, glBufferDataARB, glBufferDataARB, NULL, 511),
+ NAME_FUNC_OFFSET( 8021, glBufferSubDataARB, glBufferSubDataARB, NULL, 512),
+ NAME_FUNC_OFFSET( 8040, glDeleteBuffersARB, glDeleteBuffersARB, NULL, 513),
+ NAME_FUNC_OFFSET( 8059, glGenBuffersARB, glGenBuffersARB, NULL, 514),
+ NAME_FUNC_OFFSET( 8075, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, 515),
+ NAME_FUNC_OFFSET( 8101, glGetBufferPointervARB, glGetBufferPointervARB, NULL, 516),
+ NAME_FUNC_OFFSET( 8124, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, 517),
+ NAME_FUNC_OFFSET( 8146, glIsBufferARB, glIsBufferARB, NULL, 518),
+ NAME_FUNC_OFFSET( 8160, glMapBufferARB, glMapBufferARB, NULL, 519),
+ NAME_FUNC_OFFSET( 8175, glUnmapBufferARB, glUnmapBufferARB, NULL, 520),
+ NAME_FUNC_OFFSET( 8192, glBeginQueryARB, glBeginQueryARB, NULL, 521),
+ NAME_FUNC_OFFSET( 8208, glDeleteQueriesARB, glDeleteQueriesARB, NULL, 522),
+ NAME_FUNC_OFFSET( 8227, glEndQueryARB, glEndQueryARB, NULL, 523),
+ NAME_FUNC_OFFSET( 8241, glGenQueriesARB, glGenQueriesARB, NULL, 524),
+ NAME_FUNC_OFFSET( 8257, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, 525),
+ NAME_FUNC_OFFSET( 8279, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, 526),
+ NAME_FUNC_OFFSET( 8302, glGetQueryivARB, glGetQueryivARB, NULL, 527),
+ NAME_FUNC_OFFSET( 8318, glIsQueryARB, glIsQueryARB, NULL, 528),
+ NAME_FUNC_OFFSET( 8331, glAttachObjectARB, glAttachObjectARB, NULL, 529),
+ NAME_FUNC_OFFSET( 8349, glCompileShaderARB, glCompileShaderARB, NULL, 530),
+ NAME_FUNC_OFFSET( 8368, glCreateProgramObjectARB, glCreateProgramObjectARB, NULL, 531),
+ NAME_FUNC_OFFSET( 8393, glCreateShaderObjectARB, glCreateShaderObjectARB, NULL, 532),
+ NAME_FUNC_OFFSET( 8417, glDeleteObjectARB, glDeleteObjectARB, NULL, 533),
+ NAME_FUNC_OFFSET( 8435, glDetachObjectARB, glDetachObjectARB, NULL, 534),
+ NAME_FUNC_OFFSET( 8453, glGetActiveUniformARB, glGetActiveUniformARB, NULL, 535),
+ NAME_FUNC_OFFSET( 8475, glGetAttachedObjectsARB, glGetAttachedObjectsARB, NULL, 536),
+ NAME_FUNC_OFFSET( 8499, glGetHandleARB, glGetHandleARB, NULL, 537),
+ NAME_FUNC_OFFSET( 8514, glGetInfoLogARB, glGetInfoLogARB, NULL, 538),
+ NAME_FUNC_OFFSET( 8530, glGetObjectParameterfvARB, glGetObjectParameterfvARB, NULL, 539),
+ NAME_FUNC_OFFSET( 8556, glGetObjectParameterivARB, glGetObjectParameterivARB, NULL, 540),
+ NAME_FUNC_OFFSET( 8582, glGetShaderSourceARB, glGetShaderSourceARB, NULL, 541),
+ NAME_FUNC_OFFSET( 8603, glGetUniformLocationARB, glGetUniformLocationARB, NULL, 542),
+ NAME_FUNC_OFFSET( 8627, glGetUniformfvARB, glGetUniformfvARB, NULL, 543),
+ NAME_FUNC_OFFSET( 8645, glGetUniformivARB, glGetUniformivARB, NULL, 544),
+ NAME_FUNC_OFFSET( 8663, glLinkProgramARB, glLinkProgramARB, NULL, 545),
+ NAME_FUNC_OFFSET( 8680, glShaderSourceARB, glShaderSourceARB, NULL, 546),
+ NAME_FUNC_OFFSET( 8698, glUniform1fARB, glUniform1fARB, NULL, 547),
+ NAME_FUNC_OFFSET( 8713, glUniform1fvARB, glUniform1fvARB, NULL, 548),
+ NAME_FUNC_OFFSET( 8729, glUniform1iARB, glUniform1iARB, NULL, 549),
+ NAME_FUNC_OFFSET( 8744, glUniform1ivARB, glUniform1ivARB, NULL, 550),
+ NAME_FUNC_OFFSET( 8760, glUniform2fARB, glUniform2fARB, NULL, 551),
+ NAME_FUNC_OFFSET( 8775, glUniform2fvARB, glUniform2fvARB, NULL, 552),
+ NAME_FUNC_OFFSET( 8791, glUniform2iARB, glUniform2iARB, NULL, 553),
+ NAME_FUNC_OFFSET( 8806, glUniform2ivARB, glUniform2ivARB, NULL, 554),
+ NAME_FUNC_OFFSET( 8822, glUniform3fARB, glUniform3fARB, NULL, 555),
+ NAME_FUNC_OFFSET( 8837, glUniform3fvARB, glUniform3fvARB, NULL, 556),
+ NAME_FUNC_OFFSET( 8853, glUniform3iARB, glUniform3iARB, NULL, 557),
+ NAME_FUNC_OFFSET( 8868, glUniform3ivARB, glUniform3ivARB, NULL, 558),
+ NAME_FUNC_OFFSET( 8884, glUniform4fARB, glUniform4fARB, NULL, 559),
+ NAME_FUNC_OFFSET( 8899, glUniform4fvARB, glUniform4fvARB, NULL, 560),
+ NAME_FUNC_OFFSET( 8915, glUniform4iARB, glUniform4iARB, NULL, 561),
+ NAME_FUNC_OFFSET( 8930, glUniform4ivARB, glUniform4ivARB, NULL, 562),
+ NAME_FUNC_OFFSET( 8946, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, 563),
+ NAME_FUNC_OFFSET( 8968, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, 564),
+ NAME_FUNC_OFFSET( 8990, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, 565),
+ NAME_FUNC_OFFSET( 9012, glUseProgramObjectARB, glUseProgramObjectARB, NULL, 566),
+ NAME_FUNC_OFFSET( 9034, glValidateProgramARB, glValidateProgramARB, NULL, 567),
+ NAME_FUNC_OFFSET( 9055, glBindAttribLocationARB, glBindAttribLocationARB, NULL, 568),
+ NAME_FUNC_OFFSET( 9079, glGetActiveAttribARB, glGetActiveAttribARB, NULL, 569),
+ NAME_FUNC_OFFSET( 9100, glGetAttribLocationARB, glGetAttribLocationARB, NULL, 570),
+ NAME_FUNC_OFFSET( 9123, glDrawBuffersARB, glDrawBuffersARB, NULL, 571),
+ NAME_FUNC_OFFSET( 9140, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 572),
+ NAME_FUNC_OFFSET( 9165, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 573),
+ NAME_FUNC_OFFSET( 9192, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 574),
+ NAME_FUNC_OFFSET( 9225, glFramebufferTextureARB, glFramebufferTextureARB, NULL, 575),
+ NAME_FUNC_OFFSET( 9249, glFramebufferTextureFaceARB, glFramebufferTextureFaceARB, NULL, 576),
+ NAME_FUNC_OFFSET( 9277, glProgramParameteriARB, glProgramParameteriARB, NULL, 577),
+ NAME_FUNC_OFFSET( 9300, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, 578),
+ NAME_FUNC_OFFSET( 9325, glMapBufferRange, glMapBufferRange, NULL, 579),
+ NAME_FUNC_OFFSET( 9342, glBindVertexArray, glBindVertexArray, NULL, 580),
+ NAME_FUNC_OFFSET( 9360, glGenVertexArrays, glGenVertexArrays, NULL, 581),
+ NAME_FUNC_OFFSET( 9378, glCopyBufferSubData, glCopyBufferSubData, NULL, 582),
+ NAME_FUNC_OFFSET( 9398, glClientWaitSync, glClientWaitSync, NULL, 583),
+ NAME_FUNC_OFFSET( 9415, glDeleteSync, glDeleteSync, NULL, 584),
+ NAME_FUNC_OFFSET( 9428, glFenceSync, glFenceSync, NULL, 585),
+ NAME_FUNC_OFFSET( 9440, glGetInteger64v, glGetInteger64v, NULL, 586),
+ NAME_FUNC_OFFSET( 9456, glGetSynciv, glGetSynciv, NULL, 587),
+ NAME_FUNC_OFFSET( 9468, glIsSync, glIsSync, NULL, 588),
+ NAME_FUNC_OFFSET( 9477, glWaitSync, glWaitSync, NULL, 589),
+ NAME_FUNC_OFFSET( 9488, glDrawElementsBaseVertex, glDrawElementsBaseVertex, NULL, 590),
+ NAME_FUNC_OFFSET( 9513, glDrawRangeElementsBaseVertex, glDrawRangeElementsBaseVertex, NULL, 591),
+ NAME_FUNC_OFFSET( 9543, glMultiDrawElementsBaseVertex, glMultiDrawElementsBaseVertex, NULL, 592),
+ NAME_FUNC_OFFSET( 9573, glBindTransformFeedback, glBindTransformFeedback, NULL, 593),
+ NAME_FUNC_OFFSET( 9597, glDeleteTransformFeedbacks, glDeleteTransformFeedbacks, NULL, 594),
+ NAME_FUNC_OFFSET( 9624, glDrawTransformFeedback, glDrawTransformFeedback, NULL, 595),
+ NAME_FUNC_OFFSET( 9648, glGenTransformFeedbacks, glGenTransformFeedbacks, NULL, 596),
+ NAME_FUNC_OFFSET( 9672, glIsTransformFeedback, glIsTransformFeedback, NULL, 597),
+ NAME_FUNC_OFFSET( 9694, glPauseTransformFeedback, glPauseTransformFeedback, NULL, 598),
+ NAME_FUNC_OFFSET( 9719, glResumeTransformFeedback, glResumeTransformFeedback, NULL, 599),
+ NAME_FUNC_OFFSET( 9745, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, 600),
+ NAME_FUNC_OFFSET( 9764, gl_dispatch_stub_601, gl_dispatch_stub_601, NULL, 601),
+ NAME_FUNC_OFFSET( 9796, gl_dispatch_stub_602, gl_dispatch_stub_602, NULL, 602),
+ NAME_FUNC_OFFSET( 9828, gl_dispatch_stub_603, gl_dispatch_stub_603, NULL, 603),
+ NAME_FUNC_OFFSET( 9856, gl_dispatch_stub_604, gl_dispatch_stub_604, NULL, 604),
+ NAME_FUNC_OFFSET( 9885, gl_dispatch_stub_605, gl_dispatch_stub_605, NULL, 605),
+ NAME_FUNC_OFFSET( 9913, gl_dispatch_stub_606, gl_dispatch_stub_606, NULL, 606),
+ NAME_FUNC_OFFSET( 9942, gl_dispatch_stub_607, gl_dispatch_stub_607, NULL, 607),
+ NAME_FUNC_OFFSET( 9959, gl_dispatch_stub_608, gl_dispatch_stub_608, NULL, 608),
+ NAME_FUNC_OFFSET( 9979, glColorPointerEXT, glColorPointerEXT, NULL, 609),
+ NAME_FUNC_OFFSET( 9997, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, 610),
+ NAME_FUNC_OFFSET(10018, glIndexPointerEXT, glIndexPointerEXT, NULL, 611),
+ NAME_FUNC_OFFSET(10036, glNormalPointerEXT, glNormalPointerEXT, NULL, 612),
+ NAME_FUNC_OFFSET(10055, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, 613),
+ NAME_FUNC_OFFSET(10076, glVertexPointerEXT, glVertexPointerEXT, NULL, 614),
+ NAME_FUNC_OFFSET(10095, glPointParameterfEXT, glPointParameterfEXT, NULL, 615),
+ NAME_FUNC_OFFSET(10116, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 616),
+ NAME_FUNC_OFFSET(10138, glLockArraysEXT, glLockArraysEXT, NULL, 617),
+ NAME_FUNC_OFFSET(10154, glUnlockArraysEXT, glUnlockArraysEXT, NULL, 618),
+ NAME_FUNC_OFFSET(10172, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, 619),
+ NAME_FUNC_OFFSET(10194, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, 620),
+ NAME_FUNC_OFFSET(10217, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, 621),
+ NAME_FUNC_OFFSET(10239, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, 622),
+ NAME_FUNC_OFFSET(10262, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 623),
+ NAME_FUNC_OFFSET(10284, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 624),
+ NAME_FUNC_OFFSET(10307, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, 625),
+ NAME_FUNC_OFFSET(10329, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, 626),
+ NAME_FUNC_OFFSET(10352, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, 627),
+ NAME_FUNC_OFFSET(10374, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, 628),
+ NAME_FUNC_OFFSET(10397, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, 629),
+ NAME_FUNC_OFFSET(10420, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, 630),
+ NAME_FUNC_OFFSET(10444, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, 631),
+ NAME_FUNC_OFFSET(10467, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, 632),
+ NAME_FUNC_OFFSET(10491, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, 633),
+ NAME_FUNC_OFFSET(10514, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, 634),
+ NAME_FUNC_OFFSET(10538, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, 635),
+ NAME_FUNC_OFFSET(10565, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, 636),
+ NAME_FUNC_OFFSET(10586, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 637),
+ NAME_FUNC_OFFSET(10609, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, 638),
+ NAME_FUNC_OFFSET(10630, glFogCoorddEXT, glFogCoorddEXT, NULL, 639),
+ NAME_FUNC_OFFSET(10645, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 640),
+ NAME_FUNC_OFFSET(10661, glFogCoordfEXT, glFogCoordfEXT, NULL, 641),
+ NAME_FUNC_OFFSET(10676, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 642),
+ NAME_FUNC_OFFSET(10692, gl_dispatch_stub_643, gl_dispatch_stub_643, NULL, 643),
+ NAME_FUNC_OFFSET(10710, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 644),
+ NAME_FUNC_OFFSET(10733, glFlushVertexArrayRangeNV, glFlushVertexArrayRangeNV, NULL, 645),
+ NAME_FUNC_OFFSET(10759, glVertexArrayRangeNV, glVertexArrayRangeNV, NULL, 646),
+ NAME_FUNC_OFFSET(10780, glCombinerInputNV, glCombinerInputNV, NULL, 647),
+ NAME_FUNC_OFFSET(10798, glCombinerOutputNV, glCombinerOutputNV, NULL, 648),
+ NAME_FUNC_OFFSET(10817, glCombinerParameterfNV, glCombinerParameterfNV, NULL, 649),
+ NAME_FUNC_OFFSET(10840, glCombinerParameterfvNV, glCombinerParameterfvNV, NULL, 650),
+ NAME_FUNC_OFFSET(10864, glCombinerParameteriNV, glCombinerParameteriNV, NULL, 651),
+ NAME_FUNC_OFFSET(10887, glCombinerParameterivNV, glCombinerParameterivNV, NULL, 652),
+ NAME_FUNC_OFFSET(10911, glFinalCombinerInputNV, glFinalCombinerInputNV, NULL, 653),
+ NAME_FUNC_OFFSET(10934, glGetCombinerInputParameterfvNV, glGetCombinerInputParameterfvNV, NULL, 654),
+ NAME_FUNC_OFFSET(10966, glGetCombinerInputParameterivNV, glGetCombinerInputParameterivNV, NULL, 655),
+ NAME_FUNC_OFFSET(10998, glGetCombinerOutputParameterfvNV, glGetCombinerOutputParameterfvNV, NULL, 656),
+ NAME_FUNC_OFFSET(11031, glGetCombinerOutputParameterivNV, glGetCombinerOutputParameterivNV, NULL, 657),
+ NAME_FUNC_OFFSET(11064, glGetFinalCombinerInputParameterfvNV, glGetFinalCombinerInputParameterfvNV, NULL, 658),
+ NAME_FUNC_OFFSET(11101, glGetFinalCombinerInputParameterivNV, glGetFinalCombinerInputParameterivNV, NULL, 659),
+ NAME_FUNC_OFFSET(11138, glResizeBuffersMESA, glResizeBuffersMESA, NULL, 660),
+ NAME_FUNC_OFFSET(11158, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 661),
+ NAME_FUNC_OFFSET(11176, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 662),
+ NAME_FUNC_OFFSET(11195, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 663),
+ NAME_FUNC_OFFSET(11213, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 664),
+ NAME_FUNC_OFFSET(11232, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 665),
+ NAME_FUNC_OFFSET(11250, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 666),
+ NAME_FUNC_OFFSET(11269, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 667),
+ NAME_FUNC_OFFSET(11287, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 668),
+ NAME_FUNC_OFFSET(11306, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 669),
+ NAME_FUNC_OFFSET(11324, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 670),
+ NAME_FUNC_OFFSET(11343, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 671),
+ NAME_FUNC_OFFSET(11361, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 672),
+ NAME_FUNC_OFFSET(11380, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 673),
+ NAME_FUNC_OFFSET(11398, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 674),
+ NAME_FUNC_OFFSET(11417, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 675),
+ NAME_FUNC_OFFSET(11435, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 676),
+ NAME_FUNC_OFFSET(11454, glWindowPos4dMESA, glWindowPos4dMESA, NULL, 677),
+ NAME_FUNC_OFFSET(11472, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, 678),
+ NAME_FUNC_OFFSET(11491, glWindowPos4fMESA, glWindowPos4fMESA, NULL, 679),
+ NAME_FUNC_OFFSET(11509, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, 680),
+ NAME_FUNC_OFFSET(11528, glWindowPos4iMESA, glWindowPos4iMESA, NULL, 681),
+ NAME_FUNC_OFFSET(11546, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, 682),
+ NAME_FUNC_OFFSET(11565, glWindowPos4sMESA, glWindowPos4sMESA, NULL, 683),
+ NAME_FUNC_OFFSET(11583, glWindowPos4svMESA, glWindowPos4svMESA, NULL, 684),
+ NAME_FUNC_OFFSET(11602, gl_dispatch_stub_685, gl_dispatch_stub_685, NULL, 685),
+ NAME_FUNC_OFFSET(11627, gl_dispatch_stub_686, gl_dispatch_stub_686, NULL, 686),
+ NAME_FUNC_OFFSET(11654, gl_dispatch_stub_687, gl_dispatch_stub_687, NULL, 687),
+ NAME_FUNC_OFFSET(11671, gl_dispatch_stub_688, gl_dispatch_stub_688, NULL, 688),
+ NAME_FUNC_OFFSET(11687, gl_dispatch_stub_689, gl_dispatch_stub_689, NULL, 689),
+ NAME_FUNC_OFFSET(11701, gl_dispatch_stub_690, gl_dispatch_stub_690, NULL, 690),
+ NAME_FUNC_OFFSET(11716, gl_dispatch_stub_691, gl_dispatch_stub_691, NULL, 691),
+ NAME_FUNC_OFFSET(11728, gl_dispatch_stub_692, gl_dispatch_stub_692, NULL, 692),
+ NAME_FUNC_OFFSET(11741, gl_dispatch_stub_693, gl_dispatch_stub_693, NULL, 693),
+ NAME_FUNC_OFFSET(11755, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, 694),
+ NAME_FUNC_OFFSET(11779, glBindProgramNV, glBindProgramNV, NULL, 695),
+ NAME_FUNC_OFFSET(11795, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 696),
+ NAME_FUNC_OFFSET(11814, glExecuteProgramNV, glExecuteProgramNV, NULL, 697),
+ NAME_FUNC_OFFSET(11833, glGenProgramsNV, glGenProgramsNV, NULL, 698),
+ NAME_FUNC_OFFSET(11849, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, 699),
+ NAME_FUNC_OFFSET(11875, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, 700),
+ NAME_FUNC_OFFSET(11901, glGetProgramStringNV, glGetProgramStringNV, NULL, 701),
+ NAME_FUNC_OFFSET(11922, glGetProgramivNV, glGetProgramivNV, NULL, 702),
+ NAME_FUNC_OFFSET(11939, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, 703),
+ NAME_FUNC_OFFSET(11960, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 704),
+ NAME_FUNC_OFFSET(11988, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, 705),
+ NAME_FUNC_OFFSET(12010, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, 706),
+ NAME_FUNC_OFFSET(12032, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, 707),
+ NAME_FUNC_OFFSET(12054, glIsProgramNV, glIsProgramNV, NULL, 708),
+ NAME_FUNC_OFFSET(12068, glLoadProgramNV, glLoadProgramNV, NULL, 709),
+ NAME_FUNC_OFFSET(12084, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, 710),
+ NAME_FUNC_OFFSET(12109, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, 711),
+ NAME_FUNC_OFFSET(12134, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, 712),
+ NAME_FUNC_OFFSET(12162, glTrackMatrixNV, glTrackMatrixNV, NULL, 713),
+ NAME_FUNC_OFFSET(12178, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, 714),
+ NAME_FUNC_OFFSET(12197, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, 715),
+ NAME_FUNC_OFFSET(12217, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, 716),
+ NAME_FUNC_OFFSET(12236, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, 717),
+ NAME_FUNC_OFFSET(12256, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, 718),
+ NAME_FUNC_OFFSET(12275, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, 719),
+ NAME_FUNC_OFFSET(12295, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, 720),
+ NAME_FUNC_OFFSET(12314, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, 721),
+ NAME_FUNC_OFFSET(12334, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, 722),
+ NAME_FUNC_OFFSET(12353, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, 723),
+ NAME_FUNC_OFFSET(12373, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, 724),
+ NAME_FUNC_OFFSET(12392, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, 725),
+ NAME_FUNC_OFFSET(12412, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, 726),
+ NAME_FUNC_OFFSET(12431, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, 727),
+ NAME_FUNC_OFFSET(12451, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, 728),
+ NAME_FUNC_OFFSET(12470, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, 729),
+ NAME_FUNC_OFFSET(12490, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, 730),
+ NAME_FUNC_OFFSET(12509, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, 731),
+ NAME_FUNC_OFFSET(12529, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, 732),
+ NAME_FUNC_OFFSET(12548, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, 733),
+ NAME_FUNC_OFFSET(12568, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, 734),
+ NAME_FUNC_OFFSET(12587, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, 735),
+ NAME_FUNC_OFFSET(12607, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, 736),
+ NAME_FUNC_OFFSET(12626, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, 737),
+ NAME_FUNC_OFFSET(12646, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, 738),
+ NAME_FUNC_OFFSET(12666, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, 739),
+ NAME_FUNC_OFFSET(12687, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, 740),
+ NAME_FUNC_OFFSET(12711, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, 741),
+ NAME_FUNC_OFFSET(12732, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, 742),
+ NAME_FUNC_OFFSET(12753, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, 743),
+ NAME_FUNC_OFFSET(12774, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, 744),
+ NAME_FUNC_OFFSET(12795, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, 745),
+ NAME_FUNC_OFFSET(12816, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, 746),
+ NAME_FUNC_OFFSET(12837, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, 747),
+ NAME_FUNC_OFFSET(12858, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, 748),
+ NAME_FUNC_OFFSET(12879, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, 749),
+ NAME_FUNC_OFFSET(12900, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, 750),
+ NAME_FUNC_OFFSET(12921, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, 751),
+ NAME_FUNC_OFFSET(12942, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, 752),
+ NAME_FUNC_OFFSET(12963, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, 753),
+ NAME_FUNC_OFFSET(12985, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, 754),
+ NAME_FUNC_OFFSET(13012, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, 755),
+ NAME_FUNC_OFFSET(13039, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, 756),
+ NAME_FUNC_OFFSET(13063, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, 757),
+ NAME_FUNC_OFFSET(13087, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, 758),
+ NAME_FUNC_OFFSET(13109, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, 759),
+ NAME_FUNC_OFFSET(13131, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, 760),
+ NAME_FUNC_OFFSET(13153, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, 761),
+ NAME_FUNC_OFFSET(13178, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, 762),
+ NAME_FUNC_OFFSET(13202, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, 763),
+ NAME_FUNC_OFFSET(13224, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, 764),
+ NAME_FUNC_OFFSET(13246, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, 765),
+ NAME_FUNC_OFFSET(13268, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, 766),
+ NAME_FUNC_OFFSET(13294, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, 767),
+ NAME_FUNC_OFFSET(13317, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, 768),
+ NAME_FUNC_OFFSET(13341, glPassTexCoordATI, glPassTexCoordATI, NULL, 769),
+ NAME_FUNC_OFFSET(13359, glSampleMapATI, glSampleMapATI, NULL, 770),
+ NAME_FUNC_OFFSET(13374, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, 771),
+ NAME_FUNC_OFFSET(13405, glPointParameteriNV, glPointParameteriNV, NULL, 772),
+ NAME_FUNC_OFFSET(13425, glPointParameterivNV, glPointParameterivNV, NULL, 773),
+ NAME_FUNC_OFFSET(13446, gl_dispatch_stub_774, gl_dispatch_stub_774, NULL, 774),
+ NAME_FUNC_OFFSET(13469, gl_dispatch_stub_775, gl_dispatch_stub_775, NULL, 775),
+ NAME_FUNC_OFFSET(13492, gl_dispatch_stub_776, gl_dispatch_stub_776, NULL, 776),
+ NAME_FUNC_OFFSET(13518, gl_dispatch_stub_777, gl_dispatch_stub_777, NULL, 777),
+ NAME_FUNC_OFFSET(13541, gl_dispatch_stub_778, gl_dispatch_stub_778, NULL, 778),
+ NAME_FUNC_OFFSET(13562, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, 779),
+ NAME_FUNC_OFFSET(13593, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, 780),
+ NAME_FUNC_OFFSET(13624, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, 781),
+ NAME_FUNC_OFFSET(13652, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, 782),
+ NAME_FUNC_OFFSET(13681, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, 783),
+ NAME_FUNC_OFFSET(13709, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, 784),
+ NAME_FUNC_OFFSET(13738, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, 785),
+ NAME_FUNC_OFFSET(13764, glPrimitiveRestartNV, glPrimitiveRestartNV, NULL, 786),
+ NAME_FUNC_OFFSET(13785, gl_dispatch_stub_787, gl_dispatch_stub_787, NULL, 787),
+ NAME_FUNC_OFFSET(13802, gl_dispatch_stub_788, gl_dispatch_stub_788, NULL, 788),
+ NAME_FUNC_OFFSET(13829, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 789),
+ NAME_FUNC_OFFSET(13850, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 790),
+ NAME_FUNC_OFFSET(13872, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, 791),
+ NAME_FUNC_OFFSET(13900, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, 792),
+ NAME_FUNC_OFFSET(13924, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, 793),
+ NAME_FUNC_OFFSET(13949, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, 794),
+ NAME_FUNC_OFFSET(13978, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, 795),
+ NAME_FUNC_OFFSET(14004, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, 796),
+ NAME_FUNC_OFFSET(14030, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, 797),
+ NAME_FUNC_OFFSET(14056, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, 798),
+ NAME_FUNC_OFFSET(14077, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, 799),
+ NAME_FUNC_OFFSET(14099, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, 800),
+ NAME_FUNC_OFFSET(14119, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, 801),
+ NAME_FUNC_OFFSET(14160, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, 802),
+ NAME_FUNC_OFFSET(14192, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 803),
+ NAME_FUNC_OFFSET(14211, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, 804),
+ NAME_FUNC_OFFSET(14231, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, 805),
+ NAME_FUNC_OFFSET(14256, gl_dispatch_stub_806, gl_dispatch_stub_806, NULL, 806),
+ NAME_FUNC_OFFSET(14277, gl_dispatch_stub_807, gl_dispatch_stub_807, NULL, 807),
+ NAME_FUNC_OFFSET(14301, gl_dispatch_stub_808, gl_dispatch_stub_808, NULL, 808),
+ NAME_FUNC_OFFSET(14331, glBindFragDataLocationEXT, glBindFragDataLocationEXT, NULL, 809),
+ NAME_FUNC_OFFSET(14357, glGetFragDataLocationEXT, glGetFragDataLocationEXT, NULL, 810),
+ NAME_FUNC_OFFSET(14382, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 811),
+ NAME_FUNC_OFFSET(14401, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT, NULL, 812),
+ NAME_FUNC_OFFSET(14425, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, NULL, 813),
+ NAME_FUNC_OFFSET(14450, glUniform1uiEXT, glUniform1uiEXT, NULL, 814),
+ NAME_FUNC_OFFSET(14466, glUniform1uivEXT, glUniform1uivEXT, NULL, 815),
+ NAME_FUNC_OFFSET(14483, glUniform2uiEXT, glUniform2uiEXT, NULL, 816),
+ NAME_FUNC_OFFSET(14499, glUniform2uivEXT, glUniform2uivEXT, NULL, 817),
+ NAME_FUNC_OFFSET(14516, glUniform3uiEXT, glUniform3uiEXT, NULL, 818),
+ NAME_FUNC_OFFSET(14532, glUniform3uivEXT, glUniform3uivEXT, NULL, 819),
+ NAME_FUNC_OFFSET(14549, glUniform4uiEXT, glUniform4uiEXT, NULL, 820),
+ NAME_FUNC_OFFSET(14565, glUniform4uivEXT, glUniform4uivEXT, NULL, 821),
+ NAME_FUNC_OFFSET(14582, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 822),
+ NAME_FUNC_OFFSET(14603, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL, 823),
+ NAME_FUNC_OFFSET(14625, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 824),
+ NAME_FUNC_OFFSET(14647, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT, NULL, 825),
+ NAME_FUNC_OFFSET(14670, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 826),
+ NAME_FUNC_OFFSET(14691, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 827),
+ NAME_FUNC_OFFSET(14713, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 828),
+ NAME_FUNC_OFFSET(14735, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 829),
+ NAME_FUNC_OFFSET(14758, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 830),
+ NAME_FUNC_OFFSET(14779, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 831),
+ NAME_FUNC_OFFSET(14801, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 832),
+ NAME_FUNC_OFFSET(14823, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 833),
+ NAME_FUNC_OFFSET(14846, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL, 834),
+ NAME_FUNC_OFFSET(14868, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 835),
+ NAME_FUNC_OFFSET(14889, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 836),
+ NAME_FUNC_OFFSET(14911, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL, 837),
+ NAME_FUNC_OFFSET(14933, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, NULL, 838),
+ NAME_FUNC_OFFSET(14956, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 839),
+ NAME_FUNC_OFFSET(14978, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 840),
+ NAME_FUNC_OFFSET(15001, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT, NULL, 841),
+ NAME_FUNC_OFFSET(15024, glVertexAttribIPointerEXT, glVertexAttribIPointerEXT, NULL, 842),
+ NAME_FUNC_OFFSET(15050, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 843),
+ NAME_FUNC_OFFSET(15079, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, 844),
+ NAME_FUNC_OFFSET(15101, glDisableIndexedEXT, glDisableIndexedEXT, NULL, 845),
+ NAME_FUNC_OFFSET(15121, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 846),
+ NAME_FUNC_OFFSET(15140, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, 847),
+ NAME_FUNC_OFFSET(15164, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, 848),
+ NAME_FUNC_OFFSET(15188, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, 849),
+ NAME_FUNC_OFFSET(15210, glClearColorIiEXT, glClearColorIiEXT, NULL, 850),
+ NAME_FUNC_OFFSET(15228, glClearColorIuiEXT, glClearColorIuiEXT, NULL, 851),
+ NAME_FUNC_OFFSET(15247, glGetTexParameterIivEXT, glGetTexParameterIivEXT, NULL, 852),
+ NAME_FUNC_OFFSET(15271, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT, NULL, 853),
+ NAME_FUNC_OFFSET(15296, glTexParameterIivEXT, glTexParameterIivEXT, NULL, 854),
+ NAME_FUNC_OFFSET(15317, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL, 855),
+ NAME_FUNC_OFFSET(15339, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, 856),
+ NAME_FUNC_OFFSET(15366, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, 857),
+ NAME_FUNC_OFFSET(15391, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, 858),
+ NAME_FUNC_OFFSET(15419, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, 859),
+ NAME_FUNC_OFFSET(15439, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, 860),
+ NAME_FUNC_OFFSET(15461, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, 861),
+ NAME_FUNC_OFFSET(15482, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, 862),
+ NAME_FUNC_OFFSET(15508, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, 863),
+ NAME_FUNC_OFFSET(15541, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, 864),
+ NAME_FUNC_OFFSET(15572, glProvokingVertexEXT, glProvokingVertexEXT, NULL, 865),
+ NAME_FUNC_OFFSET(15593, gl_dispatch_stub_866, gl_dispatch_stub_866, NULL, 866),
+ NAME_FUNC_OFFSET(15624, gl_dispatch_stub_867, gl_dispatch_stub_867, NULL, 867),
+ NAME_FUNC_OFFSET(15644, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, 868),
+ NAME_FUNC_OFFSET(15672, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, 869),
+ NAME_FUNC_OFFSET(15695, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, 870),
+ NAME_FUNC_OFFSET(15720, glActiveProgramEXT, glActiveProgramEXT, NULL, 871),
+ NAME_FUNC_OFFSET(15739, glCreateShaderProgramEXT, glCreateShaderProgramEXT, NULL, 872),
+ NAME_FUNC_OFFSET(15764, glUseShaderProgramEXT, glUseShaderProgramEXT, NULL, 873),
+ NAME_FUNC_OFFSET(15786, gl_dispatch_stub_874, gl_dispatch_stub_874, NULL, 874),
+ NAME_FUNC_OFFSET(15811, gl_dispatch_stub_875, gl_dispatch_stub_875, NULL, 875),
+ NAME_FUNC_OFFSET(15840, gl_dispatch_stub_876, gl_dispatch_stub_876, NULL, 876),
+ NAME_FUNC_OFFSET(15871, gl_dispatch_stub_877, gl_dispatch_stub_877, NULL, 877),
+ NAME_FUNC_OFFSET(15895, gl_dispatch_stub_878, gl_dispatch_stub_878, NULL, 878),
+ NAME_FUNC_OFFSET(15920, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, 879),
+ NAME_FUNC_OFFSET(15959, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, 880),
+ NAME_FUNC_OFFSET(15988, glArrayElement, glArrayElement, NULL, 306),
+ NAME_FUNC_OFFSET(16006, glBindTexture, glBindTexture, NULL, 307),
+ NAME_FUNC_OFFSET(16023, glDrawArrays, glDrawArrays, NULL, 310),
+ NAME_FUNC_OFFSET(16039, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, 322),
+ NAME_FUNC_OFFSET(16064, glCopyTexImage1D, glCopyTexImage1D, NULL, 323),
+ NAME_FUNC_OFFSET(16084, glCopyTexImage2D, glCopyTexImage2D, NULL, 324),
+ NAME_FUNC_OFFSET(16104, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, 325),
+ NAME_FUNC_OFFSET(16127, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, 326),
+ NAME_FUNC_OFFSET(16150, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, 327),
+ NAME_FUNC_OFFSET(16170, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, 328),
+ NAME_FUNC_OFFSET(16187, glGetPointerv, glGetPointerv, NULL, 329),
+ NAME_FUNC_OFFSET(16204, glIsTexture, glIsTextureEXT, glIsTextureEXT, 330),
+ NAME_FUNC_OFFSET(16219, glPrioritizeTextures, glPrioritizeTextures, NULL, 331),
+ NAME_FUNC_OFFSET(16243, glTexSubImage1D, glTexSubImage1D, NULL, 332),
+ NAME_FUNC_OFFSET(16262, glTexSubImage2D, glTexSubImage2D, NULL, 333),
+ NAME_FUNC_OFFSET(16281, glBlendColor, glBlendColor, NULL, 336),
+ NAME_FUNC_OFFSET(16297, glBlendEquation, glBlendEquation, NULL, 337),
+ NAME_FUNC_OFFSET(16316, glDrawRangeElements, glDrawRangeElements, NULL, 338),
+ NAME_FUNC_OFFSET(16339, glColorTable, glColorTable, NULL, 339),
+ NAME_FUNC_OFFSET(16355, glColorTable, glColorTable, NULL, 339),
+ NAME_FUNC_OFFSET(16371, glColorTableParameterfv, glColorTableParameterfv, NULL, 340),
+ NAME_FUNC_OFFSET(16398, glColorTableParameteriv, glColorTableParameteriv, NULL, 341),
+ NAME_FUNC_OFFSET(16425, glCopyColorTable, glCopyColorTable, NULL, 342),
+ NAME_FUNC_OFFSET(16445, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343),
+ NAME_FUNC_OFFSET(16464, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343),
+ NAME_FUNC_OFFSET(16483, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344),
+ NAME_FUNC_OFFSET(16513, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344),
+ NAME_FUNC_OFFSET(16543, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345),
+ NAME_FUNC_OFFSET(16573, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345),
+ NAME_FUNC_OFFSET(16603, glColorSubTable, glColorSubTable, NULL, 346),
+ NAME_FUNC_OFFSET(16622, glCopyColorSubTable, glCopyColorSubTable, NULL, 347),
+ NAME_FUNC_OFFSET(16645, glConvolutionFilter1D, glConvolutionFilter1D, NULL, 348),
+ NAME_FUNC_OFFSET(16670, glConvolutionFilter2D, glConvolutionFilter2D, NULL, 349),
+ NAME_FUNC_OFFSET(16695, glConvolutionParameterf, glConvolutionParameterf, NULL, 350),
+ NAME_FUNC_OFFSET(16722, glConvolutionParameterfv, glConvolutionParameterfv, NULL, 351),
+ NAME_FUNC_OFFSET(16750, glConvolutionParameteri, glConvolutionParameteri, NULL, 352),
+ NAME_FUNC_OFFSET(16777, glConvolutionParameteriv, glConvolutionParameteriv, NULL, 353),
+ NAME_FUNC_OFFSET(16805, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, 354),
+ NAME_FUNC_OFFSET(16834, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, 355),
+ NAME_FUNC_OFFSET(16863, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, 356),
+ NAME_FUNC_OFFSET(16889, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, 357),
+ NAME_FUNC_OFFSET(16920, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, 358),
+ NAME_FUNC_OFFSET(16951, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, 359),
+ NAME_FUNC_OFFSET(16975, glSeparableFilter2D, glSeparableFilter2D, NULL, 360),
+ NAME_FUNC_OFFSET(16998, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, 361),
+ NAME_FUNC_OFFSET(17016, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, 362),
+ NAME_FUNC_OFFSET(17045, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, 363),
+ NAME_FUNC_OFFSET(17074, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, 364),
+ NAME_FUNC_OFFSET(17089, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, 365),
+ NAME_FUNC_OFFSET(17115, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, 366),
+ NAME_FUNC_OFFSET(17141, glHistogram, glHistogram, NULL, 367),
+ NAME_FUNC_OFFSET(17156, glMinmax, glMinmax, NULL, 368),
+ NAME_FUNC_OFFSET(17168, glResetHistogram, glResetHistogram, NULL, 369),
+ NAME_FUNC_OFFSET(17188, glResetMinmax, glResetMinmax, NULL, 370),
+ NAME_FUNC_OFFSET(17205, glTexImage3D, glTexImage3D, NULL, 371),
+ NAME_FUNC_OFFSET(17221, glTexSubImage3D, glTexSubImage3D, NULL, 372),
+ NAME_FUNC_OFFSET(17240, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373),
+ NAME_FUNC_OFFSET(17263, glActiveTextureARB, glActiveTextureARB, NULL, 374),
+ NAME_FUNC_OFFSET(17279, glClientActiveTextureARB, glClientActiveTextureARB, NULL, 375),
+ NAME_FUNC_OFFSET(17301, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, 376),
+ NAME_FUNC_OFFSET(17319, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, 377),
+ NAME_FUNC_OFFSET(17338, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, 378),
+ NAME_FUNC_OFFSET(17356, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, 379),
+ NAME_FUNC_OFFSET(17375, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, 380),
+ NAME_FUNC_OFFSET(17393, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, 381),
+ NAME_FUNC_OFFSET(17412, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, 382),
+ NAME_FUNC_OFFSET(17430, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, 383),
+ NAME_FUNC_OFFSET(17449, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, 384),
+ NAME_FUNC_OFFSET(17467, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, 385),
+ NAME_FUNC_OFFSET(17486, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, 386),
+ NAME_FUNC_OFFSET(17504, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, 387),
+ NAME_FUNC_OFFSET(17523, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, 388),
+ NAME_FUNC_OFFSET(17541, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, 389),
+ NAME_FUNC_OFFSET(17560, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, 390),
+ NAME_FUNC_OFFSET(17578, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, 391),
+ NAME_FUNC_OFFSET(17597, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, 392),
+ NAME_FUNC_OFFSET(17615, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, 393),
+ NAME_FUNC_OFFSET(17634, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, 394),
+ NAME_FUNC_OFFSET(17652, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, 395),
+ NAME_FUNC_OFFSET(17671, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, 396),
+ NAME_FUNC_OFFSET(17689, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, 397),
+ NAME_FUNC_OFFSET(17708, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, 398),
+ NAME_FUNC_OFFSET(17726, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, 399),
+ NAME_FUNC_OFFSET(17745, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, 400),
+ NAME_FUNC_OFFSET(17763, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, 401),
+ NAME_FUNC_OFFSET(17782, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, 402),
+ NAME_FUNC_OFFSET(17800, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, 403),
+ NAME_FUNC_OFFSET(17819, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, 404),
+ NAME_FUNC_OFFSET(17837, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, 405),
+ NAME_FUNC_OFFSET(17856, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, 406),
+ NAME_FUNC_OFFSET(17874, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, 407),
+ NAME_FUNC_OFFSET(17893, glStencilOpSeparate, glStencilOpSeparate, NULL, 423),
+ NAME_FUNC_OFFSET(17916, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, 441),
+ NAME_FUNC_OFFSET(17939, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, 442),
+ NAME_FUNC_OFFSET(17962, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, 443),
+ NAME_FUNC_OFFSET(17985, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, 444),
+ NAME_FUNC_OFFSET(18008, glSampleCoverageARB, glSampleCoverageARB, NULL, 445),
+ NAME_FUNC_OFFSET(18025, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, 446),
+ NAME_FUNC_OFFSET(18048, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, 447),
+ NAME_FUNC_OFFSET(18071, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, 448),
+ NAME_FUNC_OFFSET(18094, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, 449),
+ NAME_FUNC_OFFSET(18120, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, 450),
+ NAME_FUNC_OFFSET(18146, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, 451),
+ NAME_FUNC_OFFSET(18172, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, 452),
+ NAME_FUNC_OFFSET(18196, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, 453),
+ NAME_FUNC_OFFSET(18223, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, 454),
+ NAME_FUNC_OFFSET(18249, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, 461),
+ NAME_FUNC_OFFSET(18269, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, 462),
+ NAME_FUNC_OFFSET(18289, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, 463),
+ NAME_FUNC_OFFSET(18309, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, 464),
+ NAME_FUNC_OFFSET(18332, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, 465),
+ NAME_FUNC_OFFSET(18356, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, 466),
+ NAME_FUNC_OFFSET(18379, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, 467),
+ NAME_FUNC_OFFSET(18403, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, 473),
+ NAME_FUNC_OFFSET(18420, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, 474),
+ NAME_FUNC_OFFSET(18438, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, 475),
+ NAME_FUNC_OFFSET(18455, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, 476),
+ NAME_FUNC_OFFSET(18473, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, 477),
+ NAME_FUNC_OFFSET(18490, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, 478),
+ NAME_FUNC_OFFSET(18508, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, 479),
+ NAME_FUNC_OFFSET(18525, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, 480),
+ NAME_FUNC_OFFSET(18543, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, 481),
+ NAME_FUNC_OFFSET(18560, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, 482),
+ NAME_FUNC_OFFSET(18578, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, 483),
+ NAME_FUNC_OFFSET(18595, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, 484),
+ NAME_FUNC_OFFSET(18613, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, 485),
+ NAME_FUNC_OFFSET(18630, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, 486),
+ NAME_FUNC_OFFSET(18648, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, 487),
+ NAME_FUNC_OFFSET(18665, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, 488),
+ NAME_FUNC_OFFSET(18683, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, 489),
+ NAME_FUNC_OFFSET(18700, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, 490),
+ NAME_FUNC_OFFSET(18718, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, 491),
+ NAME_FUNC_OFFSET(18737, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, 492),
+ NAME_FUNC_OFFSET(18756, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, 493),
+ NAME_FUNC_OFFSET(18775, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, 494),
+ NAME_FUNC_OFFSET(18794, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, 495),
+ NAME_FUNC_OFFSET(18814, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, 496),
+ NAME_FUNC_OFFSET(18834, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, 497),
+ NAME_FUNC_OFFSET(18854, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, 498),
+ NAME_FUNC_OFFSET(18872, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, 499),
+ NAME_FUNC_OFFSET(18889, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, 500),
+ NAME_FUNC_OFFSET(18907, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, 501),
+ NAME_FUNC_OFFSET(18924, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, 502),
+ NAME_FUNC_OFFSET(18942, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, 503),
+ NAME_FUNC_OFFSET(18960, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, 504),
+ NAME_FUNC_OFFSET(18977, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, 505),
+ NAME_FUNC_OFFSET(18995, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, 506),
+ NAME_FUNC_OFFSET(19014, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, 507),
+ NAME_FUNC_OFFSET(19033, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, 508),
+ NAME_FUNC_OFFSET(19052, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, 509),
+ NAME_FUNC_OFFSET(19074, glBindBufferARB, glBindBufferARB, NULL, 510),
+ NAME_FUNC_OFFSET(19087, glBufferDataARB, glBufferDataARB, NULL, 511),
+ NAME_FUNC_OFFSET(19100, glBufferSubDataARB, glBufferSubDataARB, NULL, 512),
+ NAME_FUNC_OFFSET(19116, glDeleteBuffersARB, glDeleteBuffersARB, NULL, 513),
+ NAME_FUNC_OFFSET(19132, glGenBuffersARB, glGenBuffersARB, NULL, 514),
+ NAME_FUNC_OFFSET(19145, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, 515),
+ NAME_FUNC_OFFSET(19168, glGetBufferPointervARB, glGetBufferPointervARB, NULL, 516),
+ NAME_FUNC_OFFSET(19188, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, 517),
+ NAME_FUNC_OFFSET(19207, glIsBufferARB, glIsBufferARB, NULL, 518),
+ NAME_FUNC_OFFSET(19218, glMapBufferARB, glMapBufferARB, NULL, 519),
+ NAME_FUNC_OFFSET(19230, glUnmapBufferARB, glUnmapBufferARB, NULL, 520),
+ NAME_FUNC_OFFSET(19244, glBeginQueryARB, glBeginQueryARB, NULL, 521),
+ NAME_FUNC_OFFSET(19257, glDeleteQueriesARB, glDeleteQueriesARB, NULL, 522),
+ NAME_FUNC_OFFSET(19273, glEndQueryARB, glEndQueryARB, NULL, 523),
+ NAME_FUNC_OFFSET(19284, glGenQueriesARB, glGenQueriesARB, NULL, 524),
+ NAME_FUNC_OFFSET(19297, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, 525),
+ NAME_FUNC_OFFSET(19316, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, 526),
+ NAME_FUNC_OFFSET(19336, glGetQueryivARB, glGetQueryivARB, NULL, 527),
+ NAME_FUNC_OFFSET(19349, glIsQueryARB, glIsQueryARB, NULL, 528),
+ NAME_FUNC_OFFSET(19359, glCompileShaderARB, glCompileShaderARB, NULL, 530),
+ NAME_FUNC_OFFSET(19375, glGetActiveUniformARB, glGetActiveUniformARB, NULL, 535),
+ NAME_FUNC_OFFSET(19394, glGetShaderSourceARB, glGetShaderSourceARB, NULL, 541),
+ NAME_FUNC_OFFSET(19412, glGetUniformLocationARB, glGetUniformLocationARB, NULL, 542),
+ NAME_FUNC_OFFSET(19433, glGetUniformfvARB, glGetUniformfvARB, NULL, 543),
+ NAME_FUNC_OFFSET(19448, glGetUniformivARB, glGetUniformivARB, NULL, 544),
+ NAME_FUNC_OFFSET(19463, glLinkProgramARB, glLinkProgramARB, NULL, 545),
+ NAME_FUNC_OFFSET(19477, glShaderSourceARB, glShaderSourceARB, NULL, 546),
+ NAME_FUNC_OFFSET(19492, glUniform1fARB, glUniform1fARB, NULL, 547),
+ NAME_FUNC_OFFSET(19504, glUniform1fvARB, glUniform1fvARB, NULL, 548),
+ NAME_FUNC_OFFSET(19517, glUniform1iARB, glUniform1iARB, NULL, 549),
+ NAME_FUNC_OFFSET(19529, glUniform1ivARB, glUniform1ivARB, NULL, 550),
+ NAME_FUNC_OFFSET(19542, glUniform2fARB, glUniform2fARB, NULL, 551),
+ NAME_FUNC_OFFSET(19554, glUniform2fvARB, glUniform2fvARB, NULL, 552),
+ NAME_FUNC_OFFSET(19567, glUniform2iARB, glUniform2iARB, NULL, 553),
+ NAME_FUNC_OFFSET(19579, glUniform2ivARB, glUniform2ivARB, NULL, 554),
+ NAME_FUNC_OFFSET(19592, glUniform3fARB, glUniform3fARB, NULL, 555),
+ NAME_FUNC_OFFSET(19604, glUniform3fvARB, glUniform3fvARB, NULL, 556),
+ NAME_FUNC_OFFSET(19617, glUniform3iARB, glUniform3iARB, NULL, 557),
+ NAME_FUNC_OFFSET(19629, glUniform3ivARB, glUniform3ivARB, NULL, 558),
+ NAME_FUNC_OFFSET(19642, glUniform4fARB, glUniform4fARB, NULL, 559),
+ NAME_FUNC_OFFSET(19654, glUniform4fvARB, glUniform4fvARB, NULL, 560),
+ NAME_FUNC_OFFSET(19667, glUniform4iARB, glUniform4iARB, NULL, 561),
+ NAME_FUNC_OFFSET(19679, glUniform4ivARB, glUniform4ivARB, NULL, 562),
+ NAME_FUNC_OFFSET(19692, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, 563),
+ NAME_FUNC_OFFSET(19711, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, 564),
+ NAME_FUNC_OFFSET(19730, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, 565),
+ NAME_FUNC_OFFSET(19749, glUseProgramObjectARB, glUseProgramObjectARB, NULL, 566),
+ NAME_FUNC_OFFSET(19762, glValidateProgramARB, glValidateProgramARB, NULL, 567),
+ NAME_FUNC_OFFSET(19780, glBindAttribLocationARB, glBindAttribLocationARB, NULL, 568),
+ NAME_FUNC_OFFSET(19801, glGetActiveAttribARB, glGetActiveAttribARB, NULL, 569),
+ NAME_FUNC_OFFSET(19819, glGetAttribLocationARB, glGetAttribLocationARB, NULL, 570),
+ NAME_FUNC_OFFSET(19839, glDrawBuffersARB, glDrawBuffersARB, NULL, 571),
+ NAME_FUNC_OFFSET(19853, glDrawBuffersARB, glDrawBuffersARB, NULL, 571),
+ NAME_FUNC_OFFSET(19870, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 572),
+ NAME_FUNC_OFFSET(19895, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 572),
+ NAME_FUNC_OFFSET(19917, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 573),
+ NAME_FUNC_OFFSET(19944, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 573),
+ NAME_FUNC_OFFSET(19968, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 574),
+ NAME_FUNC_OFFSET(20004, gl_dispatch_stub_607, gl_dispatch_stub_607, NULL, 607),
+ NAME_FUNC_OFFSET(20020, gl_dispatch_stub_608, gl_dispatch_stub_608, NULL, 608),
+ NAME_FUNC_OFFSET(20039, glPointParameterfEXT, glPointParameterfEXT, NULL, 615),
+ NAME_FUNC_OFFSET(20057, glPointParameterfEXT, glPointParameterfEXT, NULL, 615),
+ NAME_FUNC_OFFSET(20078, glPointParameterfEXT, glPointParameterfEXT, NULL, 615),
+ NAME_FUNC_OFFSET(20100, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 616),
+ NAME_FUNC_OFFSET(20119, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 616),
+ NAME_FUNC_OFFSET(20141, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 616),
+ NAME_FUNC_OFFSET(20164, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, 619),
+ NAME_FUNC_OFFSET(20183, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, 620),
+ NAME_FUNC_OFFSET(20203, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, 621),
+ NAME_FUNC_OFFSET(20222, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, 622),
+ NAME_FUNC_OFFSET(20242, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 623),
+ NAME_FUNC_OFFSET(20261, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 624),
+ NAME_FUNC_OFFSET(20281, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, 625),
+ NAME_FUNC_OFFSET(20300, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, 626),
+ NAME_FUNC_OFFSET(20320, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, 627),
+ NAME_FUNC_OFFSET(20339, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, 628),
+ NAME_FUNC_OFFSET(20359, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, 629),
+ NAME_FUNC_OFFSET(20379, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, 630),
+ NAME_FUNC_OFFSET(20400, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, 631),
+ NAME_FUNC_OFFSET(20420, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, 632),
+ NAME_FUNC_OFFSET(20441, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, 633),
+ NAME_FUNC_OFFSET(20461, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, 634),
+ NAME_FUNC_OFFSET(20482, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, 635),
+ NAME_FUNC_OFFSET(20506, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, 636),
+ NAME_FUNC_OFFSET(20524, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 637),
+ NAME_FUNC_OFFSET(20544, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, 638),
+ NAME_FUNC_OFFSET(20562, glFogCoorddEXT, glFogCoorddEXT, NULL, 639),
+ NAME_FUNC_OFFSET(20574, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 640),
+ NAME_FUNC_OFFSET(20587, glFogCoordfEXT, glFogCoordfEXT, NULL, 641),
+ NAME_FUNC_OFFSET(20599, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 642),
+ NAME_FUNC_OFFSET(20612, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 644),
+ NAME_FUNC_OFFSET(20632, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 644),
+ NAME_FUNC_OFFSET(20656, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 661),
+ NAME_FUNC_OFFSET(20670, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 661),
+ NAME_FUNC_OFFSET(20687, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 662),
+ NAME_FUNC_OFFSET(20702, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 662),
+ NAME_FUNC_OFFSET(20720, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 663),
+ NAME_FUNC_OFFSET(20734, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 663),
+ NAME_FUNC_OFFSET(20751, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 664),
+ NAME_FUNC_OFFSET(20766, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 664),
+ NAME_FUNC_OFFSET(20784, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 665),
+ NAME_FUNC_OFFSET(20798, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 665),
+ NAME_FUNC_OFFSET(20815, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 666),
+ NAME_FUNC_OFFSET(20830, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 666),
+ NAME_FUNC_OFFSET(20848, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 667),
+ NAME_FUNC_OFFSET(20862, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 667),
+ NAME_FUNC_OFFSET(20879, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 668),
+ NAME_FUNC_OFFSET(20894, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 668),
+ NAME_FUNC_OFFSET(20912, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 669),
+ NAME_FUNC_OFFSET(20926, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 669),
+ NAME_FUNC_OFFSET(20943, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 670),
+ NAME_FUNC_OFFSET(20958, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 670),
+ NAME_FUNC_OFFSET(20976, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 671),
+ NAME_FUNC_OFFSET(20990, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 671),
+ NAME_FUNC_OFFSET(21007, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 672),
+ NAME_FUNC_OFFSET(21022, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 672),
+ NAME_FUNC_OFFSET(21040, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 673),
+ NAME_FUNC_OFFSET(21054, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 673),
+ NAME_FUNC_OFFSET(21071, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 674),
+ NAME_FUNC_OFFSET(21086, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 674),
+ NAME_FUNC_OFFSET(21104, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 675),
+ NAME_FUNC_OFFSET(21118, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 675),
+ NAME_FUNC_OFFSET(21135, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 676),
+ NAME_FUNC_OFFSET(21150, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 676),
+ NAME_FUNC_OFFSET(21168, glBindProgramNV, glBindProgramNV, NULL, 695),
+ NAME_FUNC_OFFSET(21185, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 696),
+ NAME_FUNC_OFFSET(21205, glGenProgramsNV, glGenProgramsNV, NULL, 698),
+ NAME_FUNC_OFFSET(21222, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 704),
+ NAME_FUNC_OFFSET(21248, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 704),
+ NAME_FUNC_OFFSET(21277, glIsProgramNV, glIsProgramNV, NULL, 708),
+ NAME_FUNC_OFFSET(21292, glPointParameteriNV, glPointParameteriNV, NULL, 772),
+ NAME_FUNC_OFFSET(21310, glPointParameterivNV, glPointParameterivNV, NULL, 773),
+ NAME_FUNC_OFFSET(21329, gl_dispatch_stub_776, gl_dispatch_stub_776, NULL, 776),
+ NAME_FUNC_OFFSET(21350, gl_dispatch_stub_778, gl_dispatch_stub_778, NULL, 778),
+ NAME_FUNC_OFFSET(21366, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, 785),
+ NAME_FUNC_OFFSET(21390, gl_dispatch_stub_788, gl_dispatch_stub_788, NULL, 788),
+ NAME_FUNC_OFFSET(21414, gl_dispatch_stub_788, gl_dispatch_stub_788, NULL, 788),
+ NAME_FUNC_OFFSET(21441, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 789),
+ NAME_FUNC_OFFSET(21459, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 790),
+ NAME_FUNC_OFFSET(21478, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, 791),
+ NAME_FUNC_OFFSET(21503, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, 792),
+ NAME_FUNC_OFFSET(21524, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, 793),
+ NAME_FUNC_OFFSET(21546, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, 794),
+ NAME_FUNC_OFFSET(21572, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, 795),
+ NAME_FUNC_OFFSET(21595, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, 796),
+ NAME_FUNC_OFFSET(21618, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, 797),
+ NAME_FUNC_OFFSET(21641, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, 798),
+ NAME_FUNC_OFFSET(21659, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, 799),
+ NAME_FUNC_OFFSET(21678, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, 800),
+ NAME_FUNC_OFFSET(21695, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, 801),
+ NAME_FUNC_OFFSET(21733, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, 802),
+ NAME_FUNC_OFFSET(21762, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 803),
+ NAME_FUNC_OFFSET(21778, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, 804),
+ NAME_FUNC_OFFSET(21795, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, 805),
+ NAME_FUNC_OFFSET(21817, gl_dispatch_stub_806, gl_dispatch_stub_806, NULL, 806),
+ NAME_FUNC_OFFSET(21835, glBindFragDataLocationEXT, glBindFragDataLocationEXT, NULL, 809),
+ NAME_FUNC_OFFSET(21858, glGetFragDataLocationEXT, glGetFragDataLocationEXT, NULL, 810),
+ NAME_FUNC_OFFSET(21880, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 811),
+ NAME_FUNC_OFFSET(21896, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT, NULL, 812),
+ NAME_FUNC_OFFSET(21917, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, NULL, 813),
+ NAME_FUNC_OFFSET(21939, glUniform1uiEXT, glUniform1uiEXT, NULL, 814),
+ NAME_FUNC_OFFSET(21952, glUniform1uivEXT, glUniform1uivEXT, NULL, 815),
+ NAME_FUNC_OFFSET(21966, glUniform2uiEXT, glUniform2uiEXT, NULL, 816),
+ NAME_FUNC_OFFSET(21979, glUniform2uivEXT, glUniform2uivEXT, NULL, 817),
+ NAME_FUNC_OFFSET(21993, glUniform3uiEXT, glUniform3uiEXT, NULL, 818),
+ NAME_FUNC_OFFSET(22006, glUniform3uivEXT, glUniform3uivEXT, NULL, 819),
+ NAME_FUNC_OFFSET(22020, glUniform4uiEXT, glUniform4uiEXT, NULL, 820),
+ NAME_FUNC_OFFSET(22033, glUniform4uivEXT, glUniform4uivEXT, NULL, 821),
+ NAME_FUNC_OFFSET(22047, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 822),
+ NAME_FUNC_OFFSET(22065, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL, 823),
+ NAME_FUNC_OFFSET(22084, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 824),
+ NAME_FUNC_OFFSET(22103, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT, NULL, 825),
+ NAME_FUNC_OFFSET(22123, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 826),
+ NAME_FUNC_OFFSET(22141, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 827),
+ NAME_FUNC_OFFSET(22160, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 828),
+ NAME_FUNC_OFFSET(22179, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 829),
+ NAME_FUNC_OFFSET(22199, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 830),
+ NAME_FUNC_OFFSET(22217, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 831),
+ NAME_FUNC_OFFSET(22236, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 832),
+ NAME_FUNC_OFFSET(22255, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 833),
+ NAME_FUNC_OFFSET(22275, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL, 834),
+ NAME_FUNC_OFFSET(22294, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 835),
+ NAME_FUNC_OFFSET(22312, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 836),
+ NAME_FUNC_OFFSET(22331, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL, 837),
+ NAME_FUNC_OFFSET(22350, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, NULL, 838),
+ NAME_FUNC_OFFSET(22370, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 839),
+ NAME_FUNC_OFFSET(22389, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 840),
+ NAME_FUNC_OFFSET(22409, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT, NULL, 841),
+ NAME_FUNC_OFFSET(22429, glVertexAttribIPointerEXT, glVertexAttribIPointerEXT, NULL, 842),
+ NAME_FUNC_OFFSET(22452, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 843),
+ NAME_FUNC_OFFSET(22478, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, 844),
+ NAME_FUNC_OFFSET(22491, glDisableIndexedEXT, glDisableIndexedEXT, NULL, 845),
+ NAME_FUNC_OFFSET(22502, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 846),
+ NAME_FUNC_OFFSET(22512, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, 847),
+ NAME_FUNC_OFFSET(22528, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, 848),
+ NAME_FUNC_OFFSET(22544, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, 849),
+ NAME_FUNC_OFFSET(22557, glGetTexParameterIivEXT, glGetTexParameterIivEXT, NULL, 852),
+ NAME_FUNC_OFFSET(22578, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT, NULL, 853),
+ NAME_FUNC_OFFSET(22600, glTexParameterIivEXT, glTexParameterIivEXT, NULL, 854),
+ NAME_FUNC_OFFSET(22618, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL, 855),
+ NAME_FUNC_OFFSET(22637, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, 856),
+ NAME_FUNC_OFFSET(22662, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, 857),
+ NAME_FUNC_OFFSET(22685, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, 858),
+ NAME_FUNC_OFFSET(22710, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, 859),
+ NAME_FUNC_OFFSET(22727, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, 861),
+ NAME_FUNC_OFFSET(22745, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, 862),
+ NAME_FUNC_OFFSET(22768, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, 863),
+ NAME_FUNC_OFFSET(22798, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, 864),
+ NAME_FUNC_OFFSET(22826, glProvokingVertexEXT, glProvokingVertexEXT, NULL, 865),
NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)
};
diff --git a/src/mapi/vgapi/.gitignore b/src/mapi/vgapi/.gitignore
new file mode 100644
index 0000000000..5becb99386
--- /dev/null
+++ b/src/mapi/vgapi/.gitignore
@@ -0,0 +1 @@
+vgapi_tmp.h
diff --git a/src/mesa/Makefile b/src/mesa/Makefile
index 7a6936e210..8b0756b84e 100644
--- a/src/mesa/Makefile
+++ b/src/mesa/Makefile
@@ -35,8 +35,8 @@ ES2_CPPFLAGS := -DFEATURE_ES2=1 $(DEFINES)
# append include dirs
MESA_CPPFLAGS += $(INCLUDE_DIRS) $(TALLOC_CFLAGS)
-ES1_CPPFLAGS += -I$(TOP)/src/mapi/es1api $(INCLUDE_DIRS)
-ES2_CPPFLAGS += -I$(TOP)/src/mapi/es2api $(INCLUDE_DIRS)
+ES1_CPPFLAGS += -I$(TOP)/src/mapi/es1api $(INCLUDE_DIRS) $(TALLOC_CFLAGS)
+ES2_CPPFLAGS += -I$(TOP)/src/mapi/es2api $(INCLUDE_DIRS) $(TALLOC_CFLAGS)
# tidy compiler flags
CFLAGS := $(filter-out $(DEFINES), $(CFLAGS))
diff --git a/src/mesa/SConscript b/src/mesa/SConscript
index c89e635aab..08d731de2d 100644
--- a/src/mesa/SConscript
+++ b/src/mesa/SConscript
@@ -4,320 +4,328 @@
Import('*')
-if env['platform'] != 'winddk':
+env = env.Clone()
- env = env.Clone()
-
- env.Append(CPPPATH = [
- '#/src/mapi',
- '#/src/glsl',
- '#/src/mesa',
- ])
-
- if env['platform'] == 'windows':
- env.Append(CPPDEFINES = [
- '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers
- 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
- 'WIN32_THREADS', # use Win32 thread API
- ])
- env.Prepend(CPPPATH = ['#src/talloc'])
+env.Append(CPPPATH = [
+ '#/src/mapi',
+ '#/src/glsl',
+ '#/src/mesa',
+])
- #
- # Source files
- #
-
- main_sources = [
- 'main/api_arrayelt.c',
- 'main/api_exec.c',
- 'main/api_loopback.c',
- 'main/api_noop.c',
- 'main/api_validate.c',
- 'main/accum.c',
- 'main/arbprogram.c',
- 'main/atifragshader.c',
- 'main/attrib.c',
- 'main/arrayobj.c',
- 'main/blend.c',
- 'main/bufferobj.c',
- 'main/buffers.c',
- 'main/clear.c',
- 'main/clip.c',
- 'main/colortab.c',
- 'main/condrender.c',
- 'main/context.c',
- 'main/convolve.c',
- 'main/cpuinfo.c',
- 'main/debug.c',
- 'main/depth.c',
- 'main/depthstencil.c',
- 'main/dlist.c',
- 'main/dlopen.c',
- 'main/drawpix.c',
- 'main/drawtex.c',
- 'main/enable.c',
- 'main/enums.c',
- 'main/eval.c',
- 'main/execmem.c',
- 'main/extensions.c',
- 'main/fbobject.c',
- 'main/feedback.c',
- 'main/ffvertex_prog.c',
- 'main/fog.c',
- 'main/formats.c',
- 'main/framebuffer.c',
- 'main/get.c',
- 'main/getstring.c',
- 'main/hash.c',
- 'main/hint.c',
- 'main/histogram.c',
- 'main/image.c',
- 'main/imports.c',
- 'main/light.c',
- 'main/lines.c',
- 'main/matrix.c',
- 'main/mipmap.c',
- 'main/mm.c',
- 'main/multisample.c',
- 'main/nvprogram.c',
- 'main/pixel.c',
- 'main/pixelstore.c',
- 'main/points.c',
- 'main/polygon.c',
- 'main/querymatrix.c',
- 'main/queryobj.c',
- 'main/rastpos.c',
- 'main/readpix.c',
- 'main/remap.c',
- 'main/renderbuffer.c',
- 'main/scissor.c',
- 'main/shaderapi.c',
- 'main/shaderobj.c',
- 'main/shared.c',
- 'main/state.c',
- 'main/stencil.c',
- 'main/syncobj.c',
- 'main/texcompress.c',
- 'main/texcompress_s3tc.c',
- 'main/texcompress_fxt1.c',
- 'main/texenv.c',
- 'main/texenvprogram.c',
- 'main/texfetch.c',
- 'main/texformat.c',
- 'main/texgen.c',
- 'main/texgetimage.c',
- 'main/teximage.c',
- 'main/texobj.c',
- 'main/texpal.c',
- 'main/texparam.c',
- 'main/texrender.c',
- 'main/texstate.c',
- 'main/texstore.c',
- 'main/transformfeedback.c',
- 'main/uniforms.c',
- 'main/varray.c',
- 'main/version.c',
- 'main/viewport.c',
- 'main/vtxfmt.c',
- ]
-
- math_sources = [
- 'math/m_debug_clip.c',
- 'math/m_debug_norm.c',
- 'math/m_debug_xform.c',
- 'math/m_eval.c',
- 'math/m_matrix.c',
- 'math/m_translate.c',
- 'math/m_vector.c',
- 'math/m_xform.c',
- ]
-
- vbo_sources = [
- 'vbo/vbo_context.c',
- 'vbo/vbo_exec.c',
- 'vbo/vbo_exec_api.c',
- 'vbo/vbo_exec_array.c',
- 'vbo/vbo_exec_draw.c',
- 'vbo/vbo_exec_eval.c',
- 'vbo/vbo_rebase.c',
- 'vbo/vbo_split.c',
- 'vbo/vbo_split_copy.c',
- 'vbo/vbo_split_inplace.c',
- 'vbo/vbo_save.c',
- 'vbo/vbo_save_api.c',
- 'vbo/vbo_save_draw.c',
- 'vbo/vbo_save_loopback.c',
- ]
-
- vf_sources = [
- 'vf/vf.c',
- 'vf/vf_generic.c',
- 'vf/vf_sse.c',
- ]
-
- statetracker_sources = [
- 'state_tracker/st_atom.c',
- 'state_tracker/st_atom_blend.c',
- 'state_tracker/st_atom_clip.c',
- 'state_tracker/st_atom_constbuf.c',
- 'state_tracker/st_atom_depth.c',
- 'state_tracker/st_atom_framebuffer.c',
- 'state_tracker/st_atom_msaa.c',
- 'state_tracker/st_atom_pixeltransfer.c',
- 'state_tracker/st_atom_sampler.c',
- 'state_tracker/st_atom_scissor.c',
- 'state_tracker/st_atom_shader.c',
- 'state_tracker/st_atom_rasterizer.c',
- 'state_tracker/st_atom_stipple.c',
- 'state_tracker/st_atom_texture.c',
- 'state_tracker/st_atom_viewport.c',
- 'state_tracker/st_cb_accum.c',
- 'state_tracker/st_cb_bitmap.c',
- 'state_tracker/st_cb_blit.c',
- 'state_tracker/st_cb_bufferobjects.c',
- 'state_tracker/st_cb_clear.c',
- 'state_tracker/st_cb_condrender.c',
- 'state_tracker/st_cb_flush.c',
- 'state_tracker/st_cb_drawpixels.c',
- 'state_tracker/st_cb_drawtex.c',
- 'state_tracker/st_cb_eglimage.c',
- 'state_tracker/st_cb_fbo.c',
- 'state_tracker/st_cb_feedback.c',
- 'state_tracker/st_cb_program.c',
- 'state_tracker/st_cb_queryobj.c',
- 'state_tracker/st_cb_rasterpos.c',
- 'state_tracker/st_cb_readpixels.c',
- 'state_tracker/st_cb_strings.c',
- 'state_tracker/st_cb_texture.c',
- 'state_tracker/st_cb_viewport.c',
- 'state_tracker/st_cb_xformfb.c',
- 'state_tracker/st_context.c',
- 'state_tracker/st_debug.c',
- 'state_tracker/st_draw.c',
- 'state_tracker/st_draw_feedback.c',
- 'state_tracker/st_extensions.c',
- 'state_tracker/st_format.c',
- 'state_tracker/st_gen_mipmap.c',
- 'state_tracker/st_manager.c',
- 'state_tracker/st_mesa_to_tgsi.c',
- 'state_tracker/st_program.c',
- 'state_tracker/st_texture.c',
- ]
-
- program_sources = [
- 'program/arbprogparse.c',
- 'program/hash_table.c',
- 'program/ir_to_mesa.cpp',
- 'program/lex.yy.c',
- 'program/nvfragparse.c',
- 'program/nvvertparse.c',
- 'program/program.c',
- 'program/program_parse.tab.c',
- 'program/program_parse_extra.c',
- 'program/prog_cache.c',
- 'program/prog_execute.c',
- 'program/prog_instruction.c',
- 'program/prog_noise.c',
- 'program/prog_optimize.c',
- 'program/prog_parameter.c',
- 'program/prog_parameter_layout.c',
- 'program/prog_print.c',
- 'program/prog_statevars.c',
- 'program/prog_uniform.c',
- 'program/programopt.c',
- 'program/sampler.cpp',
- 'program/symbol_table.c',
- ]
-
- mesa_sources = (
- main_sources +
- math_sources +
- program_sources +
- vbo_sources +
- vf_sources +
- statetracker_sources
- )
+if env['platform'] == 'windows':
+ env.Append(CPPDEFINES = [
+ '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers
+ 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
+ 'WIN32_THREADS', # use Win32 thread API
+ ])
+ env.Prepend(CPPPATH = ['#src/talloc'])
+else:
+ env.Append(CPPDEFINES = [
+ 'IN_DRI_DRIVER', # enable the remap table (for DRI drivers)
+ ])
- #
- # Assembly sources
- #
- if gcc and env['machine'] == 'x86':
- env.Append(CPPDEFINES = [
- 'USE_X86_ASM',
- 'USE_MMX_ASM',
- 'USE_3DNOW_ASM',
- 'USE_SSE_ASM',
- ])
- mesa_sources += [
- 'x86/common_x86.c',
- 'x86/x86_xform.c',
- 'x86/3dnow.c',
- 'x86/sse.c',
- 'x86/common_x86_asm.S',
- 'x86/x86_xform2.S',
- 'x86/x86_xform3.S',
- 'x86/x86_xform4.S',
- 'x86/x86_cliptest.S',
- 'x86/mmx_blend.S',
- 'x86/3dnow_xform1.S',
- 'x86/3dnow_xform2.S',
- 'x86/3dnow_xform3.S',
- 'x86/3dnow_xform4.S',
- 'x86/3dnow_normal.S',
- 'x86/sse_xform1.S',
- 'x86/sse_xform2.S',
- 'x86/sse_xform3.S',
- 'x86/sse_xform4.S',
- 'x86/sse_normal.S',
- 'x86/read_rgba_span_x86.S',
- ]
- elif gcc and env['machine'] == 'x86_64':
- env.Append(CPPDEFINES = [
- 'USE_X86_64_ASM',
- ])
- mesa_sources += [
- 'x86-64/x86-64.c',
- 'x86-64/xform4.S',
- ]
- elif gcc and env['machine'] == 'ppc':
- env.Append(CPPDEFINES = [
- 'USE_PPC_ASM',
- 'USE_VMX_ASM',
- ])
- mesa_sources += [
- 'ppc/common_ppc.c',
- ]
- elif gcc and env['machine'] == 'sparc':
- mesa_sources += [
- 'sparc/sparc.c',
- 'sparc/clip.S',
- 'sparc/norm.S',
- 'sparc/xform.S',
- ]
- else:
- pass
-
- # Generate matypes.h
- if gcc and env['machine'] in ('x86', 'x86_64'):
- # See http://www.scons.org/wiki/UsingCodeGenerators
- gen_matypes = env.Program(
- target = 'gen_matypes',
- source = 'x86/gen_matypes.c',
- )
- matypes = env.Command(
- 'matypes.h',
- gen_matypes,
- gen_matypes[0].abspath + ' > $TARGET',
- )
- # Add the dir containing the generated header (somewhere inside the
- # build dir) to the include path
- env.Append(CPPPATH = [matypes[0].dir])
+#
+# Source files
+#
- #
- # Libraries
- #
+main_sources = [
+ 'main/api_arrayelt.c',
+ 'main/api_exec.c',
+ 'main/api_loopback.c',
+ 'main/api_noop.c',
+ 'main/api_validate.c',
+ 'main/accum.c',
+ 'main/arbprogram.c',
+ 'main/atifragshader.c',
+ 'main/attrib.c',
+ 'main/arrayobj.c',
+ 'main/blend.c',
+ 'main/bufferobj.c',
+ 'main/buffers.c',
+ 'main/clear.c',
+ 'main/clip.c',
+ 'main/colortab.c',
+ 'main/condrender.c',
+ 'main/context.c',
+ 'main/convolve.c',
+ 'main/cpuinfo.c',
+ 'main/debug.c',
+ 'main/depth.c',
+ 'main/depthstencil.c',
+ 'main/dlist.c',
+ 'main/dlopen.c',
+ 'main/drawpix.c',
+ 'main/drawtex.c',
+ 'main/enable.c',
+ 'main/enums.c',
+ 'main/eval.c',
+ 'main/execmem.c',
+ 'main/extensions.c',
+ 'main/fbobject.c',
+ 'main/feedback.c',
+ 'main/ffvertex_prog.c',
+ 'main/fog.c',
+ 'main/formats.c',
+ 'main/framebuffer.c',
+ 'main/get.c',
+ 'main/getstring.c',
+ 'main/hash.c',
+ 'main/hint.c',
+ 'main/histogram.c',
+ 'main/image.c',
+ 'main/imports.c',
+ 'main/light.c',
+ 'main/lines.c',
+ 'main/matrix.c',
+ 'main/mipmap.c',
+ 'main/mm.c',
+ 'main/multisample.c',
+ 'main/nvprogram.c',
+ 'main/pack.c',
+ 'main/pixel.c',
+ 'main/pixelstore.c',
+ 'main/pixeltransfer.c',
+ 'main/points.c',
+ 'main/polygon.c',
+ 'main/querymatrix.c',
+ 'main/queryobj.c',
+ 'main/rastpos.c',
+ 'main/readpix.c',
+ 'main/remap.c',
+ 'main/renderbuffer.c',
+ 'main/scissor.c',
+ 'main/shaderapi.c',
+ 'main/shaderobj.c',
+ 'main/shared.c',
+ 'main/state.c',
+ 'main/stencil.c',
+ 'main/syncobj.c',
+ 'main/texcompress.c',
+ 'main/texcompress_s3tc.c',
+ 'main/texcompress_fxt1.c',
+ 'main/texenv.c',
+ 'main/texenvprogram.c',
+ 'main/texfetch.c',
+ 'main/texformat.c',
+ 'main/texgen.c',
+ 'main/texgetimage.c',
+ 'main/teximage.c',
+ 'main/texobj.c',
+ 'main/texpal.c',
+ 'main/texparam.c',
+ 'main/texrender.c',
+ 'main/texstate.c',
+ 'main/texstore.c',
+ 'main/transformfeedback.c',
+ 'main/uniforms.c',
+ 'main/varray.c',
+ 'main/version.c',
+ 'main/viewport.c',
+ 'main/vtxfmt.c',
+]
- mesa = env.ConvenienceLibrary(
- target = 'mesa',
- source = mesa_sources,
- )
- Export('mesa')
+math_sources = [
+ 'math/m_debug_clip.c',
+ 'math/m_debug_norm.c',
+ 'math/m_debug_xform.c',
+ 'math/m_eval.c',
+ 'math/m_matrix.c',
+ 'math/m_translate.c',
+ 'math/m_vector.c',
+ 'math/m_xform.c',
+]
+
+vbo_sources = [
+ 'vbo/vbo_context.c',
+ 'vbo/vbo_exec.c',
+ 'vbo/vbo_exec_api.c',
+ 'vbo/vbo_exec_array.c',
+ 'vbo/vbo_exec_draw.c',
+ 'vbo/vbo_exec_eval.c',
+ 'vbo/vbo_rebase.c',
+ 'vbo/vbo_split.c',
+ 'vbo/vbo_split_copy.c',
+ 'vbo/vbo_split_inplace.c',
+ 'vbo/vbo_save.c',
+ 'vbo/vbo_save_api.c',
+ 'vbo/vbo_save_draw.c',
+ 'vbo/vbo_save_loopback.c',
+]
+
+vf_sources = [
+ 'vf/vf.c',
+ 'vf/vf_generic.c',
+ 'vf/vf_sse.c',
+]
+
+statetracker_sources = [
+ 'state_tracker/st_atom.c',
+ 'state_tracker/st_atom_blend.c',
+ 'state_tracker/st_atom_clip.c',
+ 'state_tracker/st_atom_constbuf.c',
+ 'state_tracker/st_atom_depth.c',
+ 'state_tracker/st_atom_framebuffer.c',
+ 'state_tracker/st_atom_msaa.c',
+ 'state_tracker/st_atom_pixeltransfer.c',
+ 'state_tracker/st_atom_sampler.c',
+ 'state_tracker/st_atom_scissor.c',
+ 'state_tracker/st_atom_shader.c',
+ 'state_tracker/st_atom_rasterizer.c',
+ 'state_tracker/st_atom_stipple.c',
+ 'state_tracker/st_atom_texture.c',
+ 'state_tracker/st_atom_viewport.c',
+ 'state_tracker/st_cb_accum.c',
+ 'state_tracker/st_cb_bitmap.c',
+ 'state_tracker/st_cb_blit.c',
+ 'state_tracker/st_cb_bufferobjects.c',
+ 'state_tracker/st_cb_clear.c',
+ 'state_tracker/st_cb_condrender.c',
+ 'state_tracker/st_cb_flush.c',
+ 'state_tracker/st_cb_drawpixels.c',
+ 'state_tracker/st_cb_drawtex.c',
+ 'state_tracker/st_cb_eglimage.c',
+ 'state_tracker/st_cb_fbo.c',
+ 'state_tracker/st_cb_feedback.c',
+ 'state_tracker/st_cb_program.c',
+ 'state_tracker/st_cb_queryobj.c',
+ 'state_tracker/st_cb_rasterpos.c',
+ 'state_tracker/st_cb_readpixels.c',
+ 'state_tracker/st_cb_strings.c',
+ 'state_tracker/st_cb_texture.c',
+ 'state_tracker/st_cb_viewport.c',
+ 'state_tracker/st_cb_xformfb.c',
+ 'state_tracker/st_context.c',
+ 'state_tracker/st_debug.c',
+ 'state_tracker/st_draw.c',
+ 'state_tracker/st_draw_feedback.c',
+ 'state_tracker/st_extensions.c',
+ 'state_tracker/st_format.c',
+ 'state_tracker/st_gen_mipmap.c',
+ 'state_tracker/st_manager.c',
+ 'state_tracker/st_mesa_to_tgsi.c',
+ 'state_tracker/st_program.c',
+ 'state_tracker/st_texture.c',
+]
+
+program_sources = [
+ 'program/arbprogparse.c',
+ 'program/hash_table.c',
+ 'program/ir_to_mesa.cpp',
+ 'program/lex.yy.c',
+ 'program/nvfragparse.c',
+ 'program/nvvertparse.c',
+ 'program/program.c',
+ 'program/program_parse.tab.c',
+ 'program/program_parse_extra.c',
+ 'program/prog_cache.c',
+ 'program/prog_execute.c',
+ 'program/prog_instruction.c',
+ 'program/prog_noise.c',
+ 'program/prog_optimize.c',
+ 'program/prog_parameter.c',
+ 'program/prog_parameter_layout.c',
+ 'program/prog_print.c',
+ 'program/prog_statevars.c',
+ 'program/prog_uniform.c',
+ 'program/programopt.c',
+ 'program/sampler.cpp',
+ 'program/symbol_table.c',
+]
+
+mesa_sources = (
+ main_sources +
+ math_sources +
+ program_sources +
+ vbo_sources +
+ vf_sources +
+ statetracker_sources
+)
+
+#
+# Assembly sources
+#
+if env['gcc'] and env['platform'] != 'windows':
+ if env['machine'] == 'x86':
+ env.Append(CPPDEFINES = [
+ 'USE_X86_ASM',
+ 'USE_MMX_ASM',
+ 'USE_3DNOW_ASM',
+ 'USE_SSE_ASM',
+ ])
+ mesa_sources += [
+ 'x86/common_x86.c',
+ 'x86/x86_xform.c',
+ 'x86/3dnow.c',
+ 'x86/sse.c',
+ 'x86/common_x86_asm.S',
+ 'x86/x86_xform2.S',
+ 'x86/x86_xform3.S',
+ 'x86/x86_xform4.S',
+ 'x86/x86_cliptest.S',
+ 'x86/mmx_blend.S',
+ 'x86/3dnow_xform1.S',
+ 'x86/3dnow_xform2.S',
+ 'x86/3dnow_xform3.S',
+ 'x86/3dnow_xform4.S',
+ 'x86/3dnow_normal.S',
+ 'x86/sse_xform1.S',
+ 'x86/sse_xform2.S',
+ 'x86/sse_xform3.S',
+ 'x86/sse_xform4.S',
+ 'x86/sse_normal.S',
+ 'x86/read_rgba_span_x86.S',
+ ]
+ elif env['machine'] == 'x86_64':
+ env.Append(CPPDEFINES = [
+ 'USE_X86_64_ASM',
+ ])
+ mesa_sources += [
+ 'x86-64/x86-64.c',
+ 'x86-64/xform4.S',
+ ]
+ elif env['machine'] == 'ppc':
+ env.Append(CPPDEFINES = [
+ 'USE_PPC_ASM',
+ 'USE_VMX_ASM',
+ ])
+ mesa_sources += [
+ 'ppc/common_ppc.c',
+ ]
+ elif env['machine'] == 'sparc':
+ mesa_sources += [
+ 'sparc/sparc.c',
+ 'sparc/clip.S',
+ 'sparc/norm.S',
+ 'sparc/xform.S',
+ ]
+ else:
+ pass
+
+ # Generate matypes.h
+ if env['machine'] in ('x86', 'x86_64'):
+ # See http://www.scons.org/wiki/UsingCodeGenerators
+ gen_matypes = env.Program(
+ target = 'gen_matypes',
+ source = 'x86/gen_matypes.c',
+ )
+ matypes = env.Command(
+ 'matypes.h',
+ gen_matypes,
+ gen_matypes[0].abspath + ' > $TARGET',
+ )
+ # Add the dir containing the generated header (somewhere inside the
+ # build dir) to the include path
+ env.Append(CPPPATH = [matypes[0].dir])
+
+#
+# Libraries
+#
+
+mesa = env.ConvenienceLibrary(
+ target = 'mesa',
+ source = mesa_sources,
+)
+
+env.Alias('mesa', mesa)
+
+Export('mesa')
diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
index 9946bf1990..ba8be12571 100644
--- a/src/mesa/drivers/common/meta.c
+++ b/src/mesa/drivers/common/meta.c
@@ -52,6 +52,7 @@
#include "main/readpix.h"
#include "main/scissor.h"
#include "main/shaderapi.h"
+#include "main/shaderobj.h"
#include "main/state.h"
#include "main/stencil.h"
#include "main/texobj.h"
@@ -103,6 +104,8 @@ struct save_state
/** META_ALPHA_TEST */
GLboolean AlphaEnabled;
+ GLenum AlphaFunc;
+ GLclampf AlphaRef;
/** META_BLEND */
GLbitfield BlendEnabled;
@@ -143,7 +146,10 @@ struct save_state
struct gl_vertex_program *VertexProgram;
GLboolean FragmentProgramEnabled;
struct gl_fragment_program *FragmentProgram;
- GLuint Shader;
+ struct gl_shader_program *VertexShader;
+ struct gl_shader_program *GeometryShader;
+ struct gl_shader_program *FragmentShader;
+ struct gl_shader_program *ActiveShader;
/** META_STENCIL_TEST */
struct gl_stencil_attrib Stencil;
@@ -324,6 +330,8 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
if (state & META_ALPHA_TEST) {
save->AlphaEnabled = ctx->Color.AlphaEnabled;
+ save->AlphaFunc = ctx->Color.AlphaFunc;
+ save->AlphaRef = ctx->Color.AlphaRef;
if (ctx->Color.AlphaEnabled)
_mesa_set_enable(ctx, GL_ALPHA_TEST, GL_FALSE);
}
@@ -433,8 +441,15 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
}
if (ctx->Extensions.ARB_shader_objects) {
- save->Shader = ctx->Shader.CurrentProgram ?
- ctx->Shader.CurrentProgram->Name : 0;
+ _mesa_reference_shader_program(ctx, &save->VertexShader,
+ ctx->Shader.CurrentVertexProgram);
+ _mesa_reference_shader_program(ctx, &save->GeometryShader,
+ ctx->Shader.CurrentGeometryProgram);
+ _mesa_reference_shader_program(ctx, &save->FragmentShader,
+ ctx->Shader.CurrentFragmentProgram);
+ _mesa_reference_shader_program(ctx, &save->ActiveShader,
+ ctx->Shader.CurrentFragmentProgram);
+
_mesa_UseProgramObjectARB(0);
}
}
@@ -463,7 +478,8 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
_mesa_set_enable(ctx, GL_TEXTURE_1D, GL_FALSE);
_mesa_set_enable(ctx, GL_TEXTURE_2D, GL_FALSE);
_mesa_set_enable(ctx, GL_TEXTURE_3D, GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE);
+ if (ctx->Extensions.ARB_texture_cube_map)
+ _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE);
_mesa_set_enable(ctx, GL_TEXTURE_RECTANGLE, GL_FALSE);
_mesa_set_enable(ctx, GL_TEXTURE_GEN_S, GL_FALSE);
_mesa_set_enable(ctx, GL_TEXTURE_GEN_T, GL_FALSE);
@@ -565,6 +581,7 @@ _mesa_meta_end(struct gl_context *ctx)
if (state & META_ALPHA_TEST) {
if (ctx->Color.AlphaEnabled != save->AlphaEnabled)
_mesa_set_enable(ctx, GL_ALPHA_TEST, save->AlphaEnabled);
+ _mesa_AlphaFunc(save->AlphaFunc, save->AlphaRef);
}
if (state & META_BLEND) {
@@ -664,9 +681,19 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_reference_fragprog(ctx, &save->FragmentProgram, NULL);
}
- if (ctx->Extensions.ARB_shader_objects) {
- _mesa_UseProgramObjectARB(save->Shader);
- }
+ if (ctx->Extensions.ARB_vertex_shader)
+ _mesa_use_shader_program(ctx, GL_VERTEX_SHADER, save->VertexShader);
+
+ if (ctx->Extensions.ARB_geometry_shader4)
+ _mesa_use_shader_program(ctx, GL_GEOMETRY_SHADER_ARB,
+ save->GeometryShader);
+
+ if (ctx->Extensions.ARB_fragment_shader)
+ _mesa_use_shader_program(ctx, GL_FRAGMENT_SHADER,
+ save->FragmentShader);
+
+ _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram,
+ save->ActiveShader);
}
if (state & META_STENCIL_TEST) {
@@ -1953,13 +1980,39 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
_mesa_meta_end(ctx);
}
+static GLboolean
+alpha_test_raster_color(struct gl_context *ctx)
+{
+ GLfloat alpha = ctx->Current.RasterColor[ACOMP];
+ GLfloat ref = ctx->Color.AlphaRef;
+
+ switch (ctx->Color.AlphaFunc) {
+ case GL_NEVER:
+ return GL_FALSE;
+ case GL_LESS:
+ return alpha < ref;
+ case GL_EQUAL:
+ return alpha == ref;
+ case GL_LEQUAL:
+ return alpha <= ref;
+ case GL_GREATER:
+ return alpha > ref;
+ case GL_NOTEQUAL:
+ return alpha != ref;
+ case GL_GEQUAL:
+ return alpha >= ref;
+ case GL_ALWAYS:
+ return GL_TRUE;
+ default:
+ assert(0);
+ return GL_FALSE;
+ }
+}
/**
- * Do glBitmap with a alpha texture quad. Use the alpha test to
- * cull the 'off' bits. If alpha test is already enabled, fall back
- * to swrast (should be a rare case).
- * A bitmap cache as in the gallium/mesa state tracker would
- * improve performance a lot.
+ * Do glBitmap with a alpha texture quad. Use the alpha test to cull
+ * the 'off' bits. A bitmap cache as in the gallium/mesa state
+ * tracker would improve performance a lot.
*/
void
_mesa_meta_Bitmap(struct gl_context *ctx,
@@ -1971,6 +2024,7 @@ _mesa_meta_Bitmap(struct gl_context *ctx,
struct temp_texture *tex = get_bitmap_temp_texture(ctx);
const GLenum texIntFormat = GL_ALPHA;
const struct gl_pixelstore_attrib unpackSave = *unpack;
+ GLubyte fg, bg;
struct vertex {
GLfloat x, y, z, s, t, r, g, b, a;
};
@@ -1982,7 +2036,7 @@ _mesa_meta_Bitmap(struct gl_context *ctx,
* Check if swrast fallback is needed.
*/
if (ctx->_ImageTransferState ||
- ctx->Color.AlphaEnabled ||
+ ctx->FragmentProgram._Enabled ||
ctx->Fog.Enabled ||
ctx->Texture._EnabledUnits ||
width > tex->MaxSize ||
@@ -1991,6 +2045,9 @@ _mesa_meta_Bitmap(struct gl_context *ctx,
return;
}
+ if (ctx->Color.AlphaEnabled && !alpha_test_raster_color(ctx))
+ return;
+
/* Most GL state applies to glBitmap (like blending, stencil, etc),
* but a there's a few things we need to override:
*/
@@ -2072,21 +2129,26 @@ _mesa_meta_Bitmap(struct gl_context *ctx,
_mesa_BufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
}
+ /* choose different foreground/background alpha values */
+ CLAMPED_FLOAT_TO_UBYTE(fg, ctx->Current.RasterColor[ACOMP]);
+ bg = (fg > 127 ? 0 : 255);
+
bitmap1 = _mesa_map_pbo_source(ctx, &unpackSave, bitmap1);
if (!bitmap1) {
_mesa_meta_end(ctx);
return;
}
- bitmap8 = (GLubyte *) calloc(1, width * height);
+ bitmap8 = (GLubyte *) malloc(width * height);
if (bitmap8) {
+ memset(bitmap8, bg, width * height);
_mesa_expand_bitmap(width, height, &unpackSave, bitmap1,
- bitmap8, width, 0xff);
+ bitmap8, width, fg);
_mesa_set_enable(ctx, tex->Target, GL_TRUE);
_mesa_set_enable(ctx, GL_ALPHA_TEST, GL_TRUE);
- _mesa_AlphaFunc(GL_GREATER, 0.0);
+ _mesa_AlphaFunc(GL_NOTEQUAL, UBYTE_TO_FLOAT(bg));
setup_drawpix_texture(ctx, tex, newTex, texIntFormat, width, height,
GL_ALPHA, GL_UNSIGNED_BYTE, bitmap8);
@@ -2531,7 +2593,6 @@ copy_tex_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level,
{
struct gl_texture_object *texObj;
struct gl_texture_image *texImage;
- GLsizei postConvWidth = width, postConvHeight = height;
GLenum format, type;
GLint bpp;
void *buf;
@@ -2539,6 +2600,7 @@ copy_tex_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level,
texObj = _mesa_get_current_tex_object(ctx, target);
texImage = _mesa_get_tex_image(ctx, texObj, target, level);
+ /* Choose format/type for temporary image buffer */
format = _mesa_base_tex_format(ctx, internalFormat);
type = get_temp_image_type(ctx, format);
bpp = _mesa_bytes_per_pixel(format, type);
@@ -2570,12 +2632,8 @@ copy_tex_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level,
ctx->Driver.FreeTexImageData(ctx, texImage);
}
- _mesa_init_teximage_fields(ctx, target, texImage,
- postConvWidth, postConvHeight, 1,
- border, internalFormat);
-
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, GL_NONE, GL_NONE);
+ /* The texture's format was already chosen in _mesa_CopyTexImage() */
+ ASSERT(texImage->TexFormat != MESA_FORMAT_NONE);
/*
* Store texture data (with pixel transfer ops)
@@ -2628,7 +2686,8 @@ _mesa_meta_CopyTexImage2D(struct gl_context *ctx, GLenum target, GLint level,
* Have to be careful with locking and meta state for pixel transfer.
*/
static void
-copy_tex_sub_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level,
+copy_tex_sub_image(struct gl_context *ctx,
+ GLuint dims, GLenum target, GLint level,
GLint xoffset, GLint yoffset, GLint zoffset,
GLint x, GLint y,
GLsizei width, GLsizei height)
@@ -2642,6 +2701,7 @@ copy_tex_sub_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint lev
texObj = _mesa_get_current_tex_object(ctx, target);
texImage = _mesa_select_tex_image(ctx, texObj, target, level);
+ /* Choose format/type for temporary image buffer */
format = _mesa_get_format_base_format(texImage->TexFormat);
type = get_temp_image_type(ctx, format);
bpp = _mesa_bytes_per_pixel(format, type);
diff --git a/src/mesa/drivers/dri/Makefile.template b/src/mesa/drivers/dri/Makefile.template
index a00018cafa..4ecddbc048 100644
--- a/src/mesa/drivers/dri/Makefile.template
+++ b/src/mesa/drivers/dri/Makefile.template
@@ -86,11 +86,12 @@ subdirs:
symlinks:
-depend: $(C_SOURCES) $(ASM_SOURCES) $(SYMLINKS)
+depend: $(C_SOURCES) $(CXX_SOURCES) $(ASM_SOURCES) $(SYMLINKS)
@ echo "running $(MKDEP)"
@ rm -f depend
@ touch depend
- @ $(MKDEP) $(MKDEP_OPTIONS) $(DRIVER_DEFINES) $(INCLUDES) $(C_SOURCES) \
+ @ $(MKDEP) $(MKDEP_OPTIONS) $(DRIVER_DEFINES) $(INCLUDES) \
+ $(C_SOURCES) $(CXX_SOURCES) \
$(ASM_SOURCES) > /dev/null 2>/dev/null
diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c
index c195c4fd8f..42be77fd7c 100644
--- a/src/mesa/drivers/dri/common/utils.c
+++ b/src/mesa/drivers/dri/common/utils.c
@@ -738,12 +738,18 @@ static const struct { unsigned int attrib, offset; } attribMap[] = {
#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
+
+/**
+ * Return the value of a configuration attribute. The attribute is
+ * indicated by the index.
+ */
static int
driGetConfigAttribIndex(const __DRIconfig *config,
unsigned int index, unsigned int *value)
{
switch (attribMap[index].attrib) {
case __DRI_ATTRIB_RENDER_TYPE:
+ /* no support for color index mode */
*value = __DRI_ATTRIB_RGBA_BIT;
break;
case __DRI_ATTRIB_CONFIG_CAVEAT:
@@ -755,13 +761,16 @@ driGetConfigAttribIndex(const __DRIconfig *config,
*value = 0;
break;
case __DRI_ATTRIB_SWAP_METHOD:
+ /* XXX no return value??? */
break;
case __DRI_ATTRIB_FLOAT_MODE:
+ /* this field is not int-sized */
*value = config->modes.floatMode;
break;
default:
+ /* any other int-sized field */
*value = *(unsigned int *)
((char *) &config->modes + attribMap[index].offset);
@@ -771,6 +780,13 @@ driGetConfigAttribIndex(const __DRIconfig *config,
return GL_TRUE;
}
+
+/**
+ * Get the value of a configuration attribute.
+ * \param attrib the attribute (one of the _DRI_ATTRIB_x tokens)
+ * \param value returns the attribute's value
+ * \return 1 for success, 0 for failure
+ */
int
driGetConfigAttrib(const __DRIconfig *config,
unsigned int attrib, unsigned int *value)
@@ -784,6 +800,14 @@ driGetConfigAttrib(const __DRIconfig *config,
return GL_FALSE;
}
+
+/**
+ * Get a configuration attribute name and value, given an index.
+ * \param index which field of the __DRIconfig to query
+ * \param attrib returns the attribute name (one of the _DRI_ATTRIB_x tokens)
+ * \param value returns the attribute's value
+ * \return 1 for success, 0 for failure
+ */
int
driIndexConfigAttrib(const __DRIconfig *config, int index,
unsigned int *attrib, unsigned int *value)
diff --git a/src/mesa/drivers/dri/common/xmlpool/Makefile b/src/mesa/drivers/dri/common/xmlpool/Makefile
index 62ec919ea6..b71629e9f1 100644
--- a/src/mesa/drivers/dri/common/xmlpool/Makefile
+++ b/src/mesa/drivers/dri/common/xmlpool/Makefile
@@ -62,7 +62,7 @@ clean:
# Default target options.h
options.h: t_options.h mo
- python gen_xmlpool.py $(LANGS) > options.h
+ $(PYTHON2) $(PYTHON_FLAGS) gen_xmlpool.py $(LANGS) > options.h
# Update .mo files from the corresponding .po files.
mo:
diff --git a/src/mesa/drivers/dri/i915/intel_structs.h b/src/mesa/drivers/dri/i915/intel_structs.h
deleted file mode 100644
index 522e3bd92c..0000000000
--- a/src/mesa/drivers/dri/i915/intel_structs.h
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef INTEL_STRUCTS_H
-#define INTEL_STRUCTS_H
-
-struct br0 {
- GLuint length:8;
- GLuint pad0:3;
- GLuint dst_tiled:1;
- GLuint pad1:8;
- GLuint write_rgb:1;
- GLuint write_alpha:1;
- GLuint opcode:7;
- GLuint client:3;
-};
-
-
-struct br13 {
- GLint dest_pitch:16;
- GLuint rop:8;
- GLuint color_depth:2;
- GLuint pad1:3;
- GLuint mono_source_transparency:1;
- GLuint clipping_enable:1;
- GLuint pad0:1;
-};
-
-
-
-/* This is an attempt to move some of the 2D interaction in this
- * driver to using structs for packets rather than a bunch of #defines
- * and dwords.
- */
-struct xy_color_blit {
- struct br0 br0;
- struct br13 br13;
-
- struct {
- GLuint dest_x1:16;
- GLuint dest_y1:16;
- } dw2;
-
- struct {
- GLuint dest_x2:16;
- GLuint dest_y2:16;
- } dw3;
-
- GLuint dest_base_addr;
- GLuint color;
-};
-
-struct xy_src_copy_blit {
- struct br0 br0;
- struct br13 br13;
-
- struct {
- GLuint dest_x1:16;
- GLuint dest_y1:16;
- } dw2;
-
- struct {
- GLuint dest_x2:16;
- GLuint dest_y2:16;
- } dw3;
-
- GLuint dest_base_addr;
-
- struct {
- GLuint src_x1:16;
- GLuint src_y1:16;
- } dw5;
-
- struct {
- GLint src_pitch:16;
- GLuint pad:16;
- } dw6;
-
- GLuint src_base_addr;
-};
-
-struct xy_setup_blit {
- struct br0 br0;
- struct br13 br13;
-
- struct {
- GLuint clip_x1:16;
- GLuint clip_y1:16;
- } dw2;
-
- struct {
- GLuint clip_x2:16;
- GLuint clip_y2:16;
- } dw3;
-
- GLuint dest_base_addr;
- GLuint background_color;
- GLuint foreground_color;
- GLuint pattern_base_addr;
-};
-
-
-struct xy_text_immediate_blit {
- struct {
- GLuint length:8;
- GLuint pad2:3;
- GLuint dst_tiled:1;
- GLuint pad1:4;
- GLuint byte_packed:1;
- GLuint pad0:5;
- GLuint opcode:7;
- GLuint client:3;
- } dw0;
-
- struct {
- GLuint dest_x1:16;
- GLuint dest_y1:16;
- } dw1;
-
- struct {
- GLuint dest_x2:16;
- GLuint dest_y2:16;
- } dw2;
-
- /* Src bitmap data follows as inline dwords.
- */
-};
-
-
-#define CLIENT_2D 0x2
-#define OPCODE_XY_SETUP_BLT 0x1
-#define OPCODE_XY_COLOR_BLT 0x50
-#define OPCODE_XY_TEXT_IMMEDIATE_BLT 0x31
-
-#endif
diff --git a/src/mesa/drivers/dri/i965/brw_cc.c b/src/mesa/drivers/dri/i965/brw_cc.c
index 00418760da..a8369b07c3 100644
--- a/src/mesa/drivers/dri/i965/brw_cc.c
+++ b/src/mesa/drivers/dri/i965/brw_cc.c
@@ -204,7 +204,7 @@ static void upload_cc_unit(struct brw_context *brw)
cc.cc2.depth_write_enable = ctx->Depth.Mask;
}
- if (intel->stats_wm || (INTEL_DEBUG & DEBUG_STATS))
+ if (intel->stats_wm || unlikely(INTEL_DEBUG & DEBUG_STATS))
cc.cc5.statistics_enable = 1;
/* CACHE_NEW_CC_VP */
diff --git a/src/mesa/drivers/dri/i965/brw_clip.c b/src/mesa/drivers/dri/i965/brw_clip.c
index 15e60bf3ce..1be165cc9a 100644
--- a/src/mesa/drivers/dri/i965/brw_clip.c
+++ b/src/mesa/drivers/dri/i965/brw_clip.c
@@ -133,13 +133,13 @@ static void compile_clip_prog( struct brw_context *brw,
*/
program = brw_get_program(&c.func, &program_size);
- if (INTEL_DEBUG & DEBUG_CLIP) {
+ if (unlikely(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
*/
diff --git a/src/mesa/drivers/dri/i965/brw_clip_state.c b/src/mesa/drivers/dri/i965/brw_clip_state.c
index 885167da90..60fd5fa7d9 100644
--- a/src/mesa/drivers/dri/i965/brw_clip_state.c
+++ b/src/mesa/drivers/dri/i965/brw_clip_state.c
@@ -114,10 +114,10 @@ clip_unit_create_from_key(struct brw_context *brw,
clip.thread4.max_threads = 1 - 1;
}
- if (INTEL_DEBUG & DEBUG_SINGLE_THREAD)
+ if (unlikely(INTEL_DEBUG & DEBUG_SINGLE_THREAD))
clip.thread4.max_threads = 0;
- if (INTEL_DEBUG & DEBUG_STATS)
+ if (unlikely(INTEL_DEBUG & DEBUG_STATS))
clip.thread4.stats_enable = 1;
clip.clip5.userclip_enable_flags = 0x7f;
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index 3c4ae8a7a4..cb0a8b96c9 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -124,7 +124,7 @@ GLboolean brwCreateContext( int api,
(i == MESA_SHADER_FRAGMENT);
if (intel->gen == 6)
- ctx->ShaderCompilerOptions[i].EmitNoIfs = GL_TRUE;
+ ctx->ShaderCompilerOptions[i].EmitNoIfs = (i == MESA_SHADER_VERTEX);
}
ctx->Const.VertexProgram.MaxNativeInstructions = (16 * 1024);
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index f205c07a72..335339515a 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -173,8 +173,6 @@ struct brw_fragment_program {
GLuint id; /**< serial no. to identify frag progs, never re-used */
GLboolean isGLSL; /**< really, any IF/LOOP/CONT/BREAK instructions */
- GLboolean use_const_buffer;
-
/** for debugging, which texture units are referenced */
GLbitfield tex_units_used;
};
@@ -190,6 +188,13 @@ struct brw_shader_program {
struct gl_shader_program base;
};
+enum param_conversion {
+ PARAM_NO_CONVERT,
+ PARAM_CONVERT_F2I,
+ PARAM_CONVERT_F2U,
+ PARAM_CONVERT_F2B,
+};
+
/* Data about a particular attempt to compile a program. Note that
* there can be many of these, each in a different GL state
* corresponding to a different brw_wm_prog_key struct, with different
@@ -204,12 +209,16 @@ struct brw_wm_prog_data {
GLuint total_scratch;
GLuint nr_params; /**< number of float params/constants */
+ GLuint nr_pull_params;
GLboolean error;
/* Pointer to tracked values (only valid once
* _mesa_load_state_parameters has been called at runtime).
*/
- const GLfloat *param[BRW_MAX_CURBE];
+ const float *param[MAX_UNIFORMS * 4]; /* should be: BRW_MAX_CURBE */
+ enum param_conversion param_convert[MAX_UNIFORMS * 4];
+ const float *pull_param[MAX_UNIFORMS * 4];
+ enum param_conversion pull_param_convert[MAX_UNIFORMS * 4];
};
struct brw_sf_prog_data {
@@ -800,6 +809,35 @@ brw_fragment_program_const(const struct gl_fragment_program *p)
return (const struct brw_fragment_program *) p;
}
+static inline
+float convert_param(enum param_conversion conversion, float param)
+{
+ union {
+ float f;
+ uint32_t u;
+ int32_t i;
+ } fi;
+
+ switch (conversion) {
+ case PARAM_NO_CONVERT:
+ return param;
+ case PARAM_CONVERT_F2I:
+ fi.i = param;
+ return fi.f;
+ case PARAM_CONVERT_F2U:
+ fi.u = param;
+ return fi.f;
+ case PARAM_CONVERT_F2B:
+ if (param != 0.0)
+ fi.i = 1;
+ else
+ fi.i = 0;
+ return fi.f;
+ default:
+ return param;
+ }
+}
+
GLboolean brw_do_cubemap_normalize(struct exec_list *instructions);
#endif
diff --git a/src/mesa/drivers/dri/i965/brw_curbe.c b/src/mesa/drivers/dri/i965/brw_curbe.c
index 9ce0d8decd..7b823eb201 100644
--- a/src/mesa/drivers/dri/i965/brw_curbe.c
+++ b/src/mesa/drivers/dri/i965/brw_curbe.c
@@ -199,8 +199,10 @@ static void prepare_constant_buffer(struct brw_context *brw)
GLuint offset = brw->curbe.wm_start * 16;
/* copy float constants */
- for (i = 0; i < brw->wm.prog_data->nr_params; i++)
- buf[offset + i] = *brw->wm.prog_data->param[i];
+ for (i = 0; i < brw->wm.prog_data->nr_params; i++) {
+ buf[offset + i] = convert_param(brw->wm.prog_data->param_convert[i],
+ *brw->wm.prog_data->param[i]);
+ }
}
diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h
index 9633c95ff5..239586a036 100644
--- a/src/mesa/drivers/dri/i965/brw_defines.h
+++ b/src/mesa/drivers/dri/i965/brw_defines.h
@@ -551,6 +551,7 @@
#define BRW_OPCODE_POP 47
#define BRW_OPCODE_WAIT 48
#define BRW_OPCODE_SEND 49
+#define BRW_OPCODE_SENDC 50
#define BRW_OPCODE_MATH 56
#define BRW_OPCODE_ADD 64
#define BRW_OPCODE_MUL 65
@@ -929,6 +930,11 @@
#define CMD_3D_CLIP_STATE 0x7812 /* GEN6+ */
/* DW1 */
# define GEN6_CLIP_STATISTICS_ENABLE (1 << 10)
+/**
+ * Just does cheap culling based on the clip distance. Bits must be
+ * disjoint with USER_CLIP_CLIP_DISTANCE bits.
+ */
+# define GEN6_USER_CLIP_CULL_DISTANCES_SHIFT 0
/* DW2 */
# define GEN6_CLIP_ENABLE (1 << 31)
# define GEN6_CLIP_API_OGL (0 << 30)
@@ -936,6 +942,8 @@
# define GEN6_CLIP_XY_TEST (1 << 28)
# define GEN6_CLIP_Z_TEST (1 << 27)
# define GEN6_CLIP_GB_TEST (1 << 26)
+/** 8-bit field of which user clip distances to clip aganist. */
+# define GEN6_USER_CLIP_CLIP_DISTANCES_SHIFT 16
# define GEN6_CLIP_MODE_NORMAL (0 << 13)
# define GEN6_CLIP_MODE_REJECT_ALL (3 << 13)
# define GEN6_CLIP_MODE_ACCEPT_ALL (4 << 13)
diff --git a/src/mesa/drivers/dri/i965/brw_disasm.c b/src/mesa/drivers/dri/i965/brw_disasm.c
index 12b8f2e467..962c04128b 100644
--- a/src/mesa/drivers/dri/i965/brw_disasm.c
+++ b/src/mesa/drivers/dri/i965/brw_disasm.c
@@ -72,6 +72,7 @@ struct {
[BRW_OPCODE_CMPN] = { .name = "cmpn", .nsrc = 2, .ndst = 1 },
[BRW_OPCODE_SEND] = { .name = "send", .nsrc = 1, .ndst = 1 },
+ [BRW_OPCODE_SENDC] = { .name = "sendc", .nsrc = 1, .ndst = 1 },
[BRW_OPCODE_NOP] = { .name = "nop", .nsrc = 0, .ndst = 0 },
[BRW_OPCODE_JMPI] = { .name = "jmpi", .nsrc = 1, .ndst = 0 },
[BRW_OPCODE_IF] = { .name = "if", .nsrc = 2, .ndst = 0 },
@@ -460,6 +461,9 @@ static int reg (FILE *file, GLuint _reg_file, GLuint _reg_nr)
case BRW_ARF_ACCUMULATOR:
format (file, "acc%d", _reg_nr & 0x0f);
break;
+ case BRW_ARF_FLAG:
+ format (file, "f%d", _reg_nr & 0x0f);
+ break;
case BRW_ARF_MASK:
format (file, "mask%d", _reg_nr & 0x0f);
break;
@@ -876,7 +880,8 @@ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen)
string (file, " ");
err |= control (file, "function", math_function,
inst->header.destreg__conditionalmod, NULL);
- } else if (inst->header.opcode != BRW_OPCODE_SEND)
+ } else if (inst->header.opcode != BRW_OPCODE_SEND &&
+ inst->header.opcode != BRW_OPCODE_SENDC)
err |= control (file, "conditional modifier", conditional_modifier,
inst->header.destreg__conditionalmod, NULL);
@@ -907,7 +912,8 @@ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen)
err |= src1 (file, inst);
}
- if (inst->header.opcode == BRW_OPCODE_SEND) {
+ if (inst->header.opcode == BRW_OPCODE_SEND ||
+ inst->header.opcode == BRW_OPCODE_SENDC) {
int target;
if (gen >= 6)
@@ -1070,7 +1076,8 @@ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen)
err |= control (file, "thread control", thread_ctrl, inst->header.thread_control, &space);
if (gen >= 6)
err |= control (file, "acc write control", accwr, inst->header.acc_wr_control, &space);
- if (inst->header.opcode == BRW_OPCODE_SEND)
+ if (inst->header.opcode == BRW_OPCODE_SEND ||
+ inst->header.opcode == BRW_OPCODE_SENDC)
err |= control (file, "end of thread", end_of_thread,
inst->bits3.generic.end_of_thread, &space);
if (space)
diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c
index 04bc8cb2db..a1f403ca4e 100644
--- a/src/mesa/drivers/dri/i965/brw_draw.c
+++ b/src/mesa/drivers/dri/i965/brw_draw.c
@@ -42,7 +42,7 @@
#include "intel_batchbuffer.h"
-#define FILE_DEBUG_FLAG DEBUG_BATCH
+#define FILE_DEBUG_FLAG DEBUG_PRIMS
static GLuint prim_to_hw_prim[GL_POLYGON+1] = {
_3DPRIM_POINTLIST,
@@ -83,8 +83,7 @@ static GLuint brw_set_prim(struct brw_context *brw,
struct gl_context *ctx = &brw->intel.ctx;
GLenum mode = prim->mode;
- if (INTEL_DEBUG & DEBUG_PRIMS)
- printf("PRIM: %s\n", _mesa_lookup_enum_by_nr(prim->mode));
+ DBG("PRIM: %s\n", _mesa_lookup_enum_by_nr(prim->mode));
/* Slight optimization to avoid the GS program when not needed:
*/
@@ -133,9 +132,8 @@ static void brw_emit_prim(struct brw_context *brw,
struct brw_3d_primitive prim_packet;
struct intel_context *intel = &brw->intel;
- if (INTEL_DEBUG & DEBUG_PRIMS)
- printf("PRIM: %s %d %d\n", _mesa_lookup_enum_by_nr(prim->mode),
- prim->start, prim->count);
+ DBG("PRIM: %s %d %d\n", _mesa_lookup_enum_by_nr(prim->mode),
+ prim->start, prim->count);
prim_packet.header.opcode = CMD_3D_PRIM;
prim_packet.header.length = sizeof(prim_packet)/4 - 2;
diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c
index c4654360d4..2cefe614dd 100644
--- a/src/mesa/drivers/dri/i965/brw_draw_upload.c
+++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c
@@ -168,7 +168,7 @@ static GLuint byte_types_scale[5] = {
static GLuint get_surface_type( GLenum type, GLuint size,
GLenum format, GLboolean normalized )
{
- if (INTEL_DEBUG & DEBUG_VERTS)
+ if (unlikely(INTEL_DEBUG & DEBUG_VERTS))
printf("type %s size %d normalized %d\n",
_mesa_lookup_enum_by_nr(type), size, normalized);
diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h
index 0e3ccfa46c..b4538e6e8a 100644
--- a/src/mesa/drivers/dri/i965/brw_eu.h
+++ b/src/mesa/drivers/dri/i965/brw_eu.h
@@ -900,14 +900,24 @@ void brw_math2(struct brw_compile *p,
void brw_oword_block_read(struct brw_compile *p,
struct brw_reg dest,
struct brw_reg mrf,
- int num_regs,
- GLuint offset);
+ uint32_t offset,
+ uint32_t bind_table_index);
-void brw_dp_READ_4( struct brw_compile *p,
- struct brw_reg dest,
- GLboolean relAddr,
- GLuint location,
- GLuint bind_table_index );
+void brw_oword_block_read_scratch(struct brw_compile *p,
+ struct brw_reg dest,
+ struct brw_reg mrf,
+ int num_regs,
+ GLuint offset);
+
+void brw_oword_block_write_scratch(struct brw_compile *p,
+ struct brw_reg mrf,
+ int num_regs,
+ GLuint offset);
+
+void brw_dword_scattered_read(struct brw_compile *p,
+ struct brw_reg dest,
+ struct brw_reg mrf,
+ uint32_t bind_table_index);
void brw_dp_READ_4_vs( struct brw_compile *p,
struct brw_reg dest,
@@ -920,11 +930,6 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p,
GLuint offset,
GLuint bind_table_index);
-void brw_oword_block_write(struct brw_compile *p,
- struct brw_reg mrf,
- int num_regs,
- GLuint offset);
-
/* If/else/endif. Works by manipulating the execution flags on each
* channel.
*/
diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c
index 6fbc39672f..9cb941dacf 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
@@ -496,20 +496,34 @@ static void brw_set_dp_write_message( struct brw_context *brw,
}
}
-static void brw_set_dp_read_message( struct brw_context *brw,
- struct brw_instruction *insn,
- GLuint binding_table_index,
- GLuint msg_control,
- GLuint msg_type,
- GLuint target_cache,
- GLuint msg_length,
- GLuint response_length,
- GLuint end_of_thread )
+static void
+brw_set_dp_read_message(struct brw_context *brw,
+ struct brw_instruction *insn,
+ GLuint binding_table_index,
+ GLuint msg_control,
+ GLuint msg_type,
+ GLuint target_cache,
+ GLuint msg_length,
+ GLuint response_length)
{
struct intel_context *intel = &brw->intel;
brw_set_src1(insn, brw_imm_d(0));
- if (intel->gen == 5) {
+ if (intel->gen >= 6) {
+ insn->bits3.dp_render_cache.binding_table_index = binding_table_index;
+ insn->bits3.dp_render_cache.msg_control = msg_control;
+ insn->bits3.dp_render_cache.pixel_scoreboard_clear = 0;
+ insn->bits3.dp_render_cache.msg_type = msg_type;
+ insn->bits3.dp_render_cache.send_commit_msg = 0;
+ insn->bits3.dp_render_cache.header_present = 1;
+ insn->bits3.dp_render_cache.response_length = response_length;
+ insn->bits3.dp_render_cache.msg_length = msg_length;
+ insn->bits3.dp_render_cache.end_of_thread = 0;
+ insn->header.destreg__conditionalmod = BRW_MESSAGE_TARGET_DATAPORT_READ;
+ /* XXX really need below? */
+ insn->bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_READ;
+ insn->bits2.send_gen5.end_of_thread = 0;
+ } else if (intel->gen == 5) {
insn->bits3.dp_read_gen5.binding_table_index = binding_table_index;
insn->bits3.dp_read_gen5.msg_control = msg_control;
insn->bits3.dp_read_gen5.msg_type = msg_type;
@@ -518,9 +532,9 @@ static void brw_set_dp_read_message( struct brw_context *brw,
insn->bits3.dp_read_gen5.response_length = response_length;
insn->bits3.dp_read_gen5.msg_length = msg_length;
insn->bits3.dp_read_gen5.pad1 = 0;
- insn->bits3.dp_read_gen5.end_of_thread = end_of_thread;
+ insn->bits3.dp_read_gen5.end_of_thread = 0;
insn->bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_READ;
- insn->bits2.send_gen5.end_of_thread = end_of_thread;
+ insn->bits2.send_gen5.end_of_thread = 0;
} else {
insn->bits3.dp_read.binding_table_index = binding_table_index; /*0:7*/
insn->bits3.dp_read.msg_control = msg_control; /*8:11*/
@@ -530,7 +544,7 @@ static void brw_set_dp_read_message( struct brw_context *brw,
insn->bits3.dp_read.msg_length = msg_length; /*20:23*/
insn->bits3.dp_read.msg_target = BRW_MESSAGE_TARGET_DATAPORT_READ; /*24:27*/
insn->bits3.dp_read.pad1 = 0; /*28:30*/
- insn->bits3.dp_read.end_of_thread = end_of_thread; /*31*/
+ insn->bits3.dp_read.end_of_thread = 0; /*31*/
}
}
@@ -955,7 +969,7 @@ void brw_ENDIF(struct brw_compile *p,
brw_set_src0(insn, retype(brw_vec4_grf(0,0), BRW_REGISTER_TYPE_UD));
brw_set_src1(insn, brw_imm_d(0x0));
} else {
- brw_set_dest(insn, retype(brw_vec4_grf(0,0), BRW_REGISTER_TYPE_W));
+ brw_set_dest(insn, brw_imm_w(0));
brw_set_src0(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D));
brw_set_src1(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D));
}
@@ -1359,10 +1373,10 @@ void brw_math_16( struct brw_compile *p,
* The offset must be aligned to oword size (16 bytes). Used for
* register spilling.
*/
-void brw_oword_block_write(struct brw_compile *p,
- struct brw_reg mrf,
- int num_regs,
- GLuint offset)
+void brw_oword_block_write_scratch(struct brw_compile *p,
+ struct brw_reg mrf,
+ int num_regs,
+ GLuint offset)
{
struct intel_context *intel = &p->brw->intel;
uint32_t msg_control;
@@ -1458,11 +1472,11 @@ void brw_oword_block_write(struct brw_compile *p,
* spilling.
*/
void
-brw_oword_block_read(struct brw_compile *p,
- struct brw_reg dest,
- struct brw_reg mrf,
- int num_regs,
- GLuint offset)
+brw_oword_block_read_scratch(struct brw_compile *p,
+ struct brw_reg dest,
+ struct brw_reg mrf,
+ int num_regs,
+ GLuint offset)
{
uint32_t msg_control;
int rlen;
@@ -1512,69 +1526,108 @@ brw_oword_block_read(struct brw_compile *p,
BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ, /* msg_type */
1, /* target cache (render/scratch) */
1, /* msg_length */
- rlen,
- 0); /* eot */
+ rlen);
}
}
-
/**
* Read a float[4] vector from the data port Data Cache (const buffer).
* Location (in buffer) should be a multiple of 16.
* Used for fetching shader constants.
- * If relAddr is true, we'll do an indirect fetch using the address register.
*/
-void brw_dp_READ_4( struct brw_compile *p,
- struct brw_reg dest,
- GLboolean relAddr,
- GLuint location,
- GLuint bind_table_index )
+void brw_oword_block_read(struct brw_compile *p,
+ struct brw_reg dest,
+ struct brw_reg mrf,
+ uint32_t offset,
+ uint32_t bind_table_index)
{
- /* XXX: relAddr not implemented */
- GLuint msg_reg_nr = 1;
- {
- struct brw_reg b;
- brw_push_insn_state(p);
- brw_set_predicate_control(p, BRW_PREDICATE_NONE);
- brw_set_compression_control(p, BRW_COMPRESSION_NONE);
- brw_set_mask_control(p, BRW_MASK_DISABLE);
+ struct intel_context *intel = &p->brw->intel;
- /* Setup MRF[1] with location/offset into const buffer */
- b = brw_message_reg(msg_reg_nr);
- b = retype(b, BRW_REGISTER_TYPE_UD);
- /* XXX I think we're setting all the dwords of MRF[1] to 'location'.
- * when the docs say only dword[2] should be set. Hmmm. But it works.
- */
- brw_MOV(p, b, brw_imm_ud(location));
- brw_pop_insn_state(p);
- }
+ /* On newer hardware, offset is in units of owords. */
+ if (intel->gen >= 6)
+ offset /= 16;
- {
- struct brw_instruction *insn = next_insn(p, BRW_OPCODE_SEND);
-
- insn->header.predicate_control = BRW_PREDICATE_NONE;
- insn->header.compression_control = BRW_COMPRESSION_NONE;
- insn->header.destreg__conditionalmod = msg_reg_nr;
- insn->header.mask_control = BRW_MASK_DISABLE;
-
- /* cast dest to a uword[8] vector */
- dest = retype(vec8(dest), BRW_REGISTER_TYPE_UW);
+ mrf = retype(mrf, BRW_REGISTER_TYPE_UD);
- brw_set_dest(insn, dest);
- brw_set_src0(insn, brw_null_reg());
+ brw_push_insn_state(p);
+ brw_set_predicate_control(p, BRW_PREDICATE_NONE);
+ brw_set_compression_control(p, BRW_COMPRESSION_NONE);
+ brw_set_mask_control(p, BRW_MASK_DISABLE);
- brw_set_dp_read_message(p->brw,
- insn,
- bind_table_index,
- 0, /* msg_control (0 means 1 Oword) */
- BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ, /* msg_type */
- 0, /* source cache = data cache */
- 1, /* msg_length */
- 1, /* response_length (1 Oword) */
- 0); /* eot */
+ brw_MOV(p, mrf, retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UD));
+
+ /* set message header global offset field (reg 0, element 2) */
+ brw_MOV(p,
+ retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE,
+ mrf.nr,
+ 2), BRW_REGISTER_TYPE_UD),
+ brw_imm_ud(offset));
+
+ struct brw_instruction *insn = next_insn(p, BRW_OPCODE_SEND);
+ insn->header.destreg__conditionalmod = mrf.nr;
+
+ /* cast dest to a uword[8] vector */
+ dest = retype(vec8(dest), BRW_REGISTER_TYPE_UW);
+
+ brw_set_dest(insn, dest);
+ if (intel->gen >= 6) {
+ brw_set_src0(insn, mrf);
+ } else {
+ brw_set_src0(insn, brw_null_reg());
}
+
+ brw_set_dp_read_message(p->brw,
+ insn,
+ bind_table_index,
+ BRW_DATAPORT_OWORD_BLOCK_1_OWORDLOW,
+ BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ,
+ 0, /* source cache = data cache */
+ 1, /* msg_length */
+ 1); /* response_length (1 reg, 2 owords!) */
+
+ brw_pop_insn_state(p);
}
+/**
+ * Read a set of dwords from the data port Data Cache (const buffer).
+ *
+ * Location (in buffer) appears as UD offsets in the register after
+ * the provided mrf header reg.
+ */
+void brw_dword_scattered_read(struct brw_compile *p,
+ struct brw_reg dest,
+ struct brw_reg mrf,
+ uint32_t bind_table_index)
+{
+ mrf = retype(mrf, BRW_REGISTER_TYPE_UD);
+
+ brw_push_insn_state(p);
+ brw_set_predicate_control(p, BRW_PREDICATE_NONE);
+ brw_set_compression_control(p, BRW_COMPRESSION_NONE);
+ brw_set_mask_control(p, BRW_MASK_DISABLE);
+ brw_MOV(p, mrf, retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UD));
+ brw_pop_insn_state(p);
+
+ struct brw_instruction *insn = next_insn(p, BRW_OPCODE_SEND);
+ insn->header.destreg__conditionalmod = mrf.nr;
+
+ /* cast dest to a uword[8] vector */
+ dest = retype(vec8(dest), BRW_REGISTER_TYPE_UW);
+
+ brw_set_dest(insn, dest);
+ brw_set_src0(insn, brw_null_reg());
+
+ brw_set_dp_read_message(p->brw,
+ insn,
+ bind_table_index,
+ BRW_DATAPORT_DWORD_SCATTERED_BLOCK_8DWORDS,
+ BRW_DATAPORT_READ_MESSAGE_DWORD_SCATTERED_READ,
+ 0, /* source cache = data cache */
+ 2, /* msg_length */
+ 1); /* response_length */
+}
+
+
/**
* Read float[4] constant(s) from VS constant buffer.
@@ -1628,8 +1681,7 @@ void brw_dp_READ_4_vs(struct brw_compile *p,
BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ, /* msg_type */
0, /* source cache = data cache */
1, /* msg_length */
- 1, /* response_length (1 Oword) */
- 0); /* eot */
+ 1); /* response_length (1 Oword) */
}
/**
@@ -1682,8 +1734,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p,
msg_type,
0, /* source cache = data cache */
2, /* msg_length */
- 1, /* response_length */
- 0); /* eot */
+ 1); /* response_length */
}
@@ -1703,8 +1754,13 @@ void brw_fb_WRITE(struct brw_compile *p,
GLuint msg_control, msg_type;
GLboolean header_present = GL_TRUE;
- insn = next_insn(p, BRW_OPCODE_SEND);
- insn->header.predicate_control = 0; /* XXX */
+ if (intel->gen >= 6 && binding_table_index == 0) {
+ insn = next_insn(p, BRW_OPCODE_SENDC);
+ } else {
+ insn = next_insn(p, BRW_OPCODE_SEND);
+ }
+ /* The execution mask is ignored for render target writes. */
+ insn->header.predicate_control = 0;
insn->header.compression_control = BRW_COMPRESSION_NONE;
if (intel->gen >= 6) {
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 174f622d59..edb02fabb2 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -89,8 +89,6 @@ brw_compile_shader(struct gl_context *ctx, struct gl_shader *shader)
GLboolean
brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
{
- struct intel_context *intel = intel_context(ctx);
-
struct brw_shader *shader =
(struct brw_shader *)prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
if (shader != NULL) {
@@ -103,10 +101,12 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
clone_ir_list(mem_ctx, shader->ir, shader->base.ir);
do_mat_op_to_vec(shader->ir);
- do_mod_to_fract(shader->ir);
- do_div_to_mul_rcp(shader->ir);
- do_sub_to_add_neg(shader->ir);
- do_explog_to_explog2(shader->ir);
+ lower_instructions(shader->ir,
+ MOD_TO_FRACT |
+ DIV_TO_MUL_RCP |
+ SUB_TO_ADD_NEG |
+ EXP_TO_EXP2 |
+ LOG_TO_LOG2);
do_lower_texture_projection(shader->ir);
brw_do_cubemap_normalize(shader->ir);
@@ -132,9 +132,7 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
GL_TRUE, /* temp */
GL_TRUE /* uniform */
) || progress;
- if (intel->gen == 6) {
- progress = do_if_to_cond_assign(shader->ir) || progress;
- }
+ progress = lower_quadop_vector(shader->ir, false) || progress;
} while (progress);
validate_ir_tree(shader->ir);
@@ -179,6 +177,46 @@ type_size(const struct glsl_type *type)
}
}
+/**
+ * Returns how many MRFs an FS opcode will write over.
+ *
+ * Note that this is not the 0 or 1 implied writes in an actual gen
+ * instruction -- the FS opcodes often generate MOVs in addition.
+ */
+int
+fs_visitor::implied_mrf_writes(fs_inst *inst)
+{
+ if (inst->mlen == 0)
+ return 0;
+
+ switch (inst->opcode) {
+ case FS_OPCODE_RCP:
+ case FS_OPCODE_RSQ:
+ case FS_OPCODE_SQRT:
+ case FS_OPCODE_EXP2:
+ case FS_OPCODE_LOG2:
+ case FS_OPCODE_SIN:
+ case FS_OPCODE_COS:
+ return 1;
+ case FS_OPCODE_POW:
+ return 2;
+ case FS_OPCODE_TEX:
+ case FS_OPCODE_TXB:
+ case FS_OPCODE_TXL:
+ return 1;
+ case FS_OPCODE_FB_WRITE:
+ return 2;
+ case FS_OPCODE_PULL_CONSTANT_LOAD:
+ case FS_OPCODE_UNSPILL:
+ return 1;
+ case FS_OPCODE_SPILL:
+ return 2;
+ default:
+ assert(!"not reached");
+ return inst->mlen;
+ }
+}
+
int
fs_visitor::virtual_grf_alloc(int size)
{
@@ -228,6 +266,7 @@ brw_type_for_base_type(const struct glsl_type *type)
return BRW_REGISTER_TYPE_UD;
case GLSL_TYPE_ARRAY:
case GLSL_TYPE_STRUCT:
+ case GLSL_TYPE_SAMPLER:
/* These should be overridden with the type of the member when
* dereferenced into. BRW_REGISTER_TYPE_UD seems like a likely
* way to trip up if we don't.
@@ -286,7 +325,30 @@ fs_visitor::setup_uniform_values(int loc, const glsl_type *type)
case GLSL_TYPE_BOOL:
vec_values = fp->Base.Parameters->ParameterValues[loc];
for (unsigned int i = 0; i < type->vector_elements; i++) {
- c->prog_data.param[c->prog_data.nr_params++] = &vec_values[i];
+ unsigned int param = c->prog_data.nr_params++;
+
+ assert(param < ARRAY_SIZE(c->prog_data.param));
+
+ switch (type->base_type) {
+ case GLSL_TYPE_FLOAT:
+ c->prog_data.param_convert[param] = PARAM_NO_CONVERT;
+ break;
+ case GLSL_TYPE_UINT:
+ c->prog_data.param_convert[param] = PARAM_CONVERT_F2U;
+ break;
+ case GLSL_TYPE_INT:
+ c->prog_data.param_convert[param] = PARAM_CONVERT_F2I;
+ break;
+ case GLSL_TYPE_BOOL:
+ c->prog_data.param_convert[param] = PARAM_CONVERT_F2B;
+ break;
+ default:
+ assert(!"not reached");
+ c->prog_data.param_convert[param] = PARAM_NO_CONVERT;
+ break;
+ }
+
+ c->prog_data.param[param] = &vec_values[i];
}
return 1;
@@ -370,6 +432,8 @@ fs_visitor::setup_builtin_uniform_values(ir_variable *ir)
break;
last_swiz = swiz;
+ c->prog_data.param_convert[c->prog_data.nr_params] =
+ PARAM_NO_CONVERT;
c->prog_data.param[c->prog_data.nr_params++] = &vec_values[swiz];
}
}
@@ -383,6 +447,7 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir)
fs_reg wpos = *reg;
fs_reg neg_y = this->pixel_y;
neg_y.negate = true;
+ bool flip = !ir->origin_upper_left ^ c->key.render_to_fbo;
/* gl_FragCoord.x */
if (ir->pixel_center_integer) {
@@ -393,13 +458,13 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir)
wpos.reg_offset++;
/* gl_FragCoord.y */
- if (ir->origin_upper_left && ir->pixel_center_integer) {
+ if (!flip && ir->pixel_center_integer) {
emit(fs_inst(BRW_OPCODE_MOV, wpos, this->pixel_y));
} else {
fs_reg pixel_y = this->pixel_y;
float offset = (ir->pixel_center_integer ? 0.0 : 0.5);
- if (!ir->origin_upper_left) {
+ if (flip) {
pixel_y.negate = true;
offset += c->key.drawable_height - 1.0;
}
@@ -624,6 +689,7 @@ fs_visitor::visit(ir_variable *ir)
}
reg = new(this->mem_ctx) fs_reg(UNIFORM, param_index);
+ reg->type = brw_type_for_base_type(ir->type);
}
if (!reg)
@@ -678,6 +744,27 @@ fs_visitor::visit(ir_dereference_array *ir)
}
}
+/* Instruction selection: Produce a MOV.sat instead of
+ * MIN(MAX(val, 0), 1) when possible.
+ */
+bool
+fs_visitor::try_emit_saturate(ir_expression *ir)
+{
+ ir_rvalue *sat_val = ir->as_rvalue_to_saturate();
+
+ if (!sat_val)
+ return false;
+
+ sat_val->accept(this);
+ fs_reg src = this->result;
+
+ this->result = fs_reg(this, ir->type);
+ fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, src));
+ inst->saturate = true;
+
+ return true;
+}
+
void
fs_visitor::visit(ir_expression *ir)
{
@@ -685,6 +772,11 @@ fs_visitor::visit(ir_expression *ir)
fs_reg op[2], temp;
fs_inst *inst;
+ assert(ir->get_num_operands() <= 2);
+
+ if (try_emit_saturate(ir))
+ return;
+
for (operand = 0; operand < ir->get_num_operands(); operand++) {
ir->operands[operand]->accept(this);
if (this->result.file == BAD_FILE) {
@@ -755,9 +847,11 @@ fs_visitor::visit(ir_expression *ir)
assert(!"not reached: should be handled by ir_explog_to_explog2");
break;
case ir_unop_sin:
+ case ir_unop_sin_reduced:
emit_math(FS_OPCODE_SIN, this->result, op[0]);
break;
case ir_unop_cos:
+ case ir_unop_cos_reduced:
emit_math(FS_OPCODE_COS, this->result, op[0]);
break;
@@ -831,7 +925,6 @@ fs_visitor::visit(ir_expression *ir)
break;
case ir_binop_dot:
- case ir_binop_cross:
case ir_unop_any:
assert(!"not reached: should be handled by brw_fs_channel_expressions");
break;
@@ -900,12 +993,21 @@ fs_visitor::visit(ir_expression *ir)
break;
case ir_unop_bit_not:
- case ir_unop_u2f:
- case ir_binop_lshift:
- case ir_binop_rshift:
+ inst = emit(fs_inst(BRW_OPCODE_NOT, this->result, op[0]));
+ break;
case ir_binop_bit_and:
+ inst = emit(fs_inst(BRW_OPCODE_AND, this->result, op[0], op[1]));
+ break;
case ir_binop_bit_xor:
+ inst = emit(fs_inst(BRW_OPCODE_XOR, this->result, op[0], op[1]));
+ break;
case ir_binop_bit_or:
+ inst = emit(fs_inst(BRW_OPCODE_OR, this->result, op[0], op[1]));
+ break;
+
+ case ir_unop_u2f:
+ case ir_binop_lshift:
+ case ir_binop_rshift:
assert(!"GLSL 1.30 features unsupported");
break;
}
@@ -1185,7 +1287,7 @@ fs_visitor::visit(ir_texture *ir)
assert(!ir->projector);
sampler = _mesa_get_sampler_uniform_value(ir->sampler,
- ctx->Shader.CurrentProgram,
+ ctx->Shader.CurrentFragmentProgram,
&brw->fragment_program->Base);
sampler = c->fp->program.Base.SamplerUnits[sampler];
@@ -1203,6 +1305,11 @@ fs_visitor::visit(ir_texture *ir)
0
};
+ c->prog_data.param_convert[c->prog_data.nr_params] =
+ PARAM_NO_CONVERT;
+ c->prog_data.param_convert[c->prog_data.nr_params + 1] =
+ PARAM_NO_CONVERT;
+
fs_reg scale_x = fs_reg(UNIFORM, c->prog_data.nr_params);
fs_reg scale_y = fs_reg(UNIFORM, c->prog_data.nr_params + 1);
GLuint index = _mesa_add_state_reference(params,
@@ -1349,6 +1456,7 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir)
fs_reg op[2];
fs_inst *inst;
+ assert(expr->get_num_operands() <= 2);
for (unsigned int i = 0; i < expr->get_num_operands(); i++) {
assert(expr->operands[i]->type->is_scalar());
@@ -1456,6 +1564,7 @@ fs_visitor::emit_if_gen6(ir_if *ir)
fs_inst *inst;
fs_reg temp;
+ assert(expr->get_num_operands() <= 2);
for (unsigned int i = 0; i < expr->get_num_operands(); i++) {
assert(expr->operands[i]->type->is_scalar());
@@ -1960,6 +2069,20 @@ fs_visitor::generate_fb_write(fs_inst *inst)
brw_MOV(p,
brw_message_reg(inst->base_mrf),
brw_vec8_grf(0, 0));
+
+ if (inst->target > 0) {
+ /* Set the render target index for choosing BLEND_STATE. */
+ brw_MOV(p, retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 0, 2),
+ BRW_REGISTER_TYPE_UD),
+ brw_imm_ud(inst->target));
+ }
+
+ /* Clear viewport index, render target array index. */
+ brw_AND(p, retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 0, 0),
+ BRW_REGISTER_TYPE_UD),
+ retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UD),
+ brw_imm_ud(0xf7ff));
+
implied_header = brw_null_reg();
} else {
implied_header = retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UW);
@@ -2204,22 +2327,53 @@ fs_visitor::generate_ddy(fs_inst *inst, struct brw_reg dst, struct brw_reg src)
void
fs_visitor::generate_discard_not(fs_inst *inst, struct brw_reg mask)
{
- brw_push_insn_state(p);
- brw_set_mask_control(p, BRW_MASK_DISABLE);
- brw_NOT(p, mask, brw_mask_reg(1)); /* IMASK */
- brw_pop_insn_state(p);
+ if (intel->gen >= 6) {
+ /* Gen6 no longer has the mask reg for us to just read the
+ * active channels from. However, cmp updates just the channels
+ * of the flag reg that are enabled, so we can get at the
+ * channel enables that way. In this step, make a reg of ones
+ * we'll compare to.
+ */
+ brw_MOV(p, mask, brw_imm_ud(1));
+ } else {
+ brw_push_insn_state(p);
+ brw_set_mask_control(p, BRW_MASK_DISABLE);
+ brw_NOT(p, mask, brw_mask_reg(1)); /* IMASK */
+ brw_pop_insn_state(p);
+ }
}
void
fs_visitor::generate_discard_and(fs_inst *inst, struct brw_reg mask)
{
- struct brw_reg g0 = retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UW);
- mask = brw_uw1_reg(mask.file, mask.nr, 0);
+ if (intel->gen >= 6) {
+ struct brw_reg f0 = brw_flag_reg();
+ struct brw_reg g1 = retype(brw_vec1_grf(1, 7), BRW_REGISTER_TYPE_UW);
+
+ brw_push_insn_state(p);
+ brw_set_mask_control(p, BRW_MASK_DISABLE);
+ brw_MOV(p, f0, brw_imm_uw(0xffff)); /* inactive channels undiscarded */
+ brw_pop_insn_state(p);
+
+ brw_CMP(p, retype(brw_null_reg(), BRW_REGISTER_TYPE_UD),
+ BRW_CONDITIONAL_Z, mask, brw_imm_ud(0)); /* active channels fail test */
+ /* Undo CMP's whacking of predication*/
+ brw_set_predicate_control(p, BRW_PREDICATE_NONE);
+
+ brw_push_insn_state(p);
+ brw_set_mask_control(p, BRW_MASK_DISABLE);
+ brw_AND(p, g1, f0, g1);
+ brw_pop_insn_state(p);
+ } else {
+ struct brw_reg g0 = retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UW);
- brw_push_insn_state(p);
- brw_set_mask_control(p, BRW_MASK_DISABLE);
- brw_AND(p, g0, mask, g0);
- brw_pop_insn_state(p);
+ mask = brw_uw1_reg(mask.file, mask.nr, 0);
+
+ brw_push_insn_state(p);
+ brw_set_mask_control(p, BRW_MASK_DISABLE);
+ brw_AND(p, g0, mask, g0);
+ brw_pop_insn_state(p);
+ }
}
void
@@ -2230,7 +2384,8 @@ fs_visitor::generate_spill(fs_inst *inst, struct brw_reg src)
brw_MOV(p,
retype(brw_message_reg(inst->base_mrf + 1), BRW_REGISTER_TYPE_UD),
retype(src, BRW_REGISTER_TYPE_UD));
- brw_oword_block_write(p, brw_message_reg(inst->base_mrf), 1, inst->offset);
+ brw_oword_block_write_scratch(p, brw_message_reg(inst->base_mrf), 1,
+ inst->offset);
}
void
@@ -2251,8 +2406,39 @@ fs_visitor::generate_unspill(fs_inst *inst, struct brw_reg dst)
if (intel->gen == 4 && !intel->is_g4x)
brw_MOV(p, brw_null_reg(), dst);
- brw_oword_block_read(p, dst, brw_message_reg(inst->base_mrf), 1,
- inst->offset);
+ brw_oword_block_read_scratch(p, dst, brw_message_reg(inst->base_mrf), 1,
+ inst->offset);
+
+ if (intel->gen == 4 && !intel->is_g4x) {
+ /* gen4 errata: destination from a send can't be used as a
+ * destination until it's been read. Just read it so we don't
+ * have to worry.
+ */
+ brw_MOV(p, brw_null_reg(), dst);
+ }
+}
+
+
+void
+fs_visitor::generate_pull_constant_load(fs_inst *inst, struct brw_reg dst)
+{
+ assert(inst->mlen != 0);
+
+ /* Clear any post destination dependencies that would be ignored by
+ * the block read. See the B-Spec for pre-gen5 send instruction.
+ *
+ * This could use a better solution, since texture sampling and
+ * math reads could potentially run into it as well -- anywhere
+ * that we have a SEND with a destination that is a register that
+ * was written but not read within the last N instructions (what's
+ * N? unsure). This is rare because of dead code elimination, but
+ * not impossible.
+ */
+ if (intel->gen == 4 && !intel->is_g4x)
+ brw_MOV(p, brw_null_reg(), dst);
+
+ brw_oword_block_read(p, dst, brw_message_reg(inst->base_mrf),
+ inst->offset, SURF_INDEX_FRAG_CONST_BUFFER);
if (intel->gen == 4 && !intel->is_g4x) {
/* gen4 errata: destination from a send can't be used as a
@@ -2281,7 +2467,7 @@ fs_visitor::assign_curb_setup()
constant_nr % 8);
inst->src[i].file = FIXED_HW_REG;
- inst->src[i].fixed_hw_reg = brw_reg;
+ inst->src[i].fixed_hw_reg = retype(brw_reg, inst->src[i].type);
}
}
}
@@ -2406,6 +2592,7 @@ fs_visitor::split_virtual_grfs()
for (int j = 2; j < this->virtual_grf_sizes[i]; j++) {
int reg = virtual_grf_alloc(1);
assert(reg == new_virtual_grf[i] + j - 1);
+ (void) reg;
}
this->virtual_grf_sizes[i] = 1;
}
@@ -2433,6 +2620,68 @@ fs_visitor::split_virtual_grfs()
}
}
+/**
+ * Choose accesses from the UNIFORM file to demote to using the pull
+ * constant buffer.
+ *
+ * We allow a fragment shader to have more than the specified minimum
+ * maximum number of fragment shader uniform components (64). If
+ * there are too many of these, they'd fill up all of register space.
+ * So, this will push some of them out to the pull constant buffer and
+ * update the program to load them.
+ */
+void
+fs_visitor::setup_pull_constants()
+{
+ /* Only allow 16 registers (128 uniform components) as push constants. */
+ unsigned int max_uniform_components = 16 * 8;
+ if (c->prog_data.nr_params <= max_uniform_components)
+ return;
+
+ /* Just demote the end of the list. We could probably do better
+ * here, demoting things that are rarely used in the program first.
+ */
+ int pull_uniform_base = max_uniform_components;
+ int pull_uniform_count = c->prog_data.nr_params - pull_uniform_base;
+
+ foreach_iter(exec_list_iterator, iter, this->instructions) {
+ fs_inst *inst = (fs_inst *)iter.get();
+
+ for (int i = 0; i < 3; i++) {
+ if (inst->src[i].file != UNIFORM)
+ continue;
+
+ int uniform_nr = inst->src[i].hw_reg + inst->src[i].reg_offset;
+ if (uniform_nr < pull_uniform_base)
+ continue;
+
+ fs_reg dst = fs_reg(this, glsl_type::float_type);
+ fs_inst *pull = new(mem_ctx) fs_inst(FS_OPCODE_PULL_CONSTANT_LOAD,
+ dst);
+ pull->offset = ((uniform_nr - pull_uniform_base) * 4) & ~15;
+ pull->ir = inst->ir;
+ pull->annotation = inst->annotation;
+ pull->base_mrf = 14;
+ pull->mlen = 1;
+
+ inst->insert_before(pull);
+
+ inst->src[i].file = GRF;
+ inst->src[i].reg = dst.reg;
+ inst->src[i].reg_offset = 0;
+ inst->src[i].smear = (uniform_nr - pull_uniform_base) & 3;
+ }
+ }
+
+ for (int i = 0; i < pull_uniform_count; i++) {
+ c->prog_data.pull_param[i] = c->prog_data.param[pull_uniform_base + i];
+ c->prog_data.pull_param_convert[i] =
+ c->prog_data.param_convert[pull_uniform_base + i];
+ }
+ c->prog_data.nr_params -= pull_uniform_count;
+ c->prog_data.nr_pull_params = pull_uniform_count;
+}
+
void
fs_visitor::calculate_live_intervals()
{
@@ -2597,6 +2846,7 @@ fs_visitor::propagate_constants()
}
break;
case BRW_OPCODE_CMP:
+ case BRW_OPCODE_SEL:
if (i == 1) {
scan_inst->src[i] = inst->src[0];
progress = true;
@@ -2625,26 +2875,17 @@ bool
fs_visitor::dead_code_eliminate()
{
bool progress = false;
- int num_vars = this->virtual_grf_next;
- bool dead[num_vars];
-
- for (int i = 0; i < num_vars; i++) {
- dead[i] = this->virtual_grf_def[i] >= this->virtual_grf_use[i];
-
- if (dead[i]) {
- /* Mark off its interval so it won't interfere with anything. */
- this->virtual_grf_def[i] = -1;
- this->virtual_grf_use[i] = -1;
- }
- }
+ int pc = 0;
foreach_iter(exec_list_iterator, iter, this->instructions) {
fs_inst *inst = (fs_inst *)iter.get();
- if (inst->dst.file == GRF && dead[inst->dst.reg]) {
+ if (inst->dst.file == GRF && this->virtual_grf_use[inst->dst.reg] <= pc) {
inst->remove();
progress = true;
}
+
+ pc++;
}
return progress;
@@ -2721,6 +2962,7 @@ fs_visitor::register_coalesce()
scan_inst->src[i].reg_offset = inst->src[0].reg_offset;
scan_inst->src[i].abs |= inst->src[0].abs;
scan_inst->src[i].negate ^= inst->src[0].negate;
+ scan_inst->src[i].smear = inst->src[0].smear;
}
}
}
@@ -2749,7 +2991,7 @@ fs_visitor::compute_to_mrf()
inst->predicated ||
inst->dst.file != MRF || inst->src[0].file != GRF ||
inst->dst.type != inst->src[0].type ||
- inst->src[0].abs || inst->src[0].negate)
+ inst->src[0].abs || inst->src[0].negate || inst->src[0].smear != -1)
continue;
/* Can't compute-to-MRF this GRF if someone else was going to
@@ -2761,11 +3003,60 @@ fs_visitor::compute_to_mrf()
/* Found a move of a GRF to a MRF. Let's see if we can go
* rewrite the thing that made this GRF to write into the MRF.
*/
- bool found = false;
fs_inst *scan_inst;
for (scan_inst = (fs_inst *)inst->prev;
scan_inst->prev != NULL;
scan_inst = (fs_inst *)scan_inst->prev) {
+ if (scan_inst->dst.file == GRF &&
+ scan_inst->dst.reg == inst->src[0].reg) {
+ /* Found the last thing to write our reg we want to turn
+ * into a compute-to-MRF.
+ */
+
+ if (scan_inst->opcode == FS_OPCODE_TEX) {
+ /* texturing writes several continuous regs, so we can't
+ * compute-to-mrf that.
+ */
+ break;
+ }
+
+ /* If it's predicated, it (probably) didn't populate all
+ * the channels.
+ */
+ if (scan_inst->predicated)
+ break;
+
+ /* SEND instructions can't have MRF as a destination. */
+ if (scan_inst->mlen)
+ break;
+
+ if (intel->gen >= 6) {
+ /* gen6 math instructions must have the destination be
+ * GRF, so no compute-to-MRF for them.
+ */
+ if (scan_inst->opcode == FS_OPCODE_RCP ||
+ scan_inst->opcode == FS_OPCODE_RSQ ||
+ scan_inst->opcode == FS_OPCODE_SQRT ||
+ scan_inst->opcode == FS_OPCODE_EXP2 ||
+ scan_inst->opcode == FS_OPCODE_LOG2 ||
+ scan_inst->opcode == FS_OPCODE_SIN ||
+ scan_inst->opcode == FS_OPCODE_COS ||
+ scan_inst->opcode == FS_OPCODE_POW) {
+ break;
+ }
+ }
+
+ if (scan_inst->dst.reg_offset == inst->src[0].reg_offset) {
+ /* Found the creator of our MRF's source value. */
+ scan_inst->dst.file = MRF;
+ scan_inst->dst.hw_reg = inst->dst.hw_reg;
+ scan_inst->saturate |= inst->saturate;
+ inst->remove();
+ progress = true;
+ }
+ break;
+ }
+
/* We don't handle flow control here. Most computation of
* values that end up in MRFs are shortly before the MRF
* write anyway.
@@ -2799,71 +3090,88 @@ fs_visitor::compute_to_mrf()
}
if (scan_inst->mlen > 0) {
- /* Found a SEND instruction, which will do some amount of
- * implied write that may overwrite our MRF that we were
- * hoping to compute-to-MRF somewhere above it. Nothing
- * we have implied-writes more than 2 MRFs from base_mrf,
- * though.
+ /* Found a SEND instruction, which means that there are
+ * live values in MRFs from base_mrf to base_mrf +
+ * scan_inst->mlen - 1. Don't go pushing our MRF write up
+ * above it.
*/
- int implied_write_len = MIN2(scan_inst->mlen, 2);
if (inst->dst.hw_reg >= scan_inst->base_mrf &&
- inst->dst.hw_reg < scan_inst->base_mrf + implied_write_len) {
+ inst->dst.hw_reg < scan_inst->base_mrf + scan_inst->mlen) {
break;
}
}
+ }
+ }
- if (scan_inst->dst.file == GRF &&
- scan_inst->dst.reg == inst->src[0].reg) {
- /* Found the last thing to write our reg we want to turn
- * into a compute-to-MRF.
- */
+ return progress;
+}
- if (scan_inst->opcode == FS_OPCODE_TEX) {
- /* texturing writes several continuous regs, so we can't
- * compute-to-mrf that.
- */
- break;
- }
+/**
+ * Walks through basic blocks, locking for repeated MRF writes and
+ * removing the later ones.
+ */
+bool
+fs_visitor::remove_duplicate_mrf_writes()
+{
+ fs_inst *last_mrf_move[16];
+ bool progress = false;
- /* If it's predicated, it (probably) didn't populate all
- * the channels.
- */
- if (scan_inst->predicated)
- break;
+ memset(last_mrf_move, 0, sizeof(last_mrf_move));
- /* SEND instructions can't have MRF as a destination. */
- if (scan_inst->mlen)
- break;
+ foreach_iter(exec_list_iterator, iter, this->instructions) {
+ fs_inst *inst = (fs_inst *)iter.get();
- if (intel->gen >= 6) {
- /* gen6 math instructions must have the destination be
- * GRF, so no compute-to-MRF for them.
- */
- if (scan_inst->opcode == FS_OPCODE_RCP ||
- scan_inst->opcode == FS_OPCODE_RSQ ||
- scan_inst->opcode == FS_OPCODE_SQRT ||
- scan_inst->opcode == FS_OPCODE_EXP2 ||
- scan_inst->opcode == FS_OPCODE_LOG2 ||
- scan_inst->opcode == FS_OPCODE_SIN ||
- scan_inst->opcode == FS_OPCODE_COS ||
- scan_inst->opcode == FS_OPCODE_POW) {
- break;
- }
- }
+ switch (inst->opcode) {
+ case BRW_OPCODE_DO:
+ case BRW_OPCODE_WHILE:
+ case BRW_OPCODE_IF:
+ case BRW_OPCODE_ELSE:
+ case BRW_OPCODE_ENDIF:
+ memset(last_mrf_move, 0, sizeof(last_mrf_move));
+ continue;
+ default:
+ break;
+ }
- if (scan_inst->dst.reg_offset == inst->src[0].reg_offset) {
- /* Found the creator of our MRF's source value. */
- found = true;
- break;
+ if (inst->opcode == BRW_OPCODE_MOV &&
+ inst->dst.file == MRF) {
+ fs_inst *prev_inst = last_mrf_move[inst->dst.hw_reg];
+ if (prev_inst && inst->equals(prev_inst)) {
+ inst->remove();
+ progress = true;
+ continue;
+ }
+ }
+
+ /* Clear out the last-write records for MRFs that were overwritten. */
+ if (inst->dst.file == MRF) {
+ last_mrf_move[inst->dst.hw_reg] = NULL;
+ }
+
+ if (inst->mlen > 0) {
+ /* Found a SEND instruction, which will include two of fewer
+ * implied MRF writes. We could do better here.
+ */
+ for (int i = 0; i < implied_mrf_writes(inst); i++) {
+ last_mrf_move[inst->base_mrf + i] = NULL;
+ }
+ }
+
+ /* Clear out any MRF move records whose sources got overwritten. */
+ if (inst->dst.file == GRF) {
+ for (unsigned int i = 0; i < Elements(last_mrf_move); i++) {
+ if (last_mrf_move[i] &&
+ last_mrf_move[i]->src[0].reg == inst->dst.reg) {
+ last_mrf_move[i] = NULL;
}
}
}
- if (found) {
- scan_inst->dst.file = MRF;
- scan_inst->dst.hw_reg = inst->dst.hw_reg;
- scan_inst->saturate |= inst->saturate;
- inst->remove();
- progress = true;
+
+ if (inst->opcode == BRW_OPCODE_MOV &&
+ inst->dst.file == MRF &&
+ inst->src[0].file == GRF &&
+ !inst->predicated) {
+ last_mrf_move[inst->dst.hw_reg] = inst;
}
}
@@ -2897,8 +3205,13 @@ static struct brw_reg brw_reg_from_fs_reg(fs_reg *reg)
case GRF:
case ARF:
case MRF:
- brw_reg = brw_vec8_reg(reg->file,
- reg->hw_reg, 0);
+ if (reg->smear == -1) {
+ brw_reg = brw_vec8_reg(reg->file,
+ reg->hw_reg, 0);
+ } else {
+ brw_reg = brw_vec1_reg(reg->file,
+ reg->hw_reg, reg->smear);
+ }
brw_reg = retype(brw_reg, reg->type);
break;
case IMM:
@@ -2940,11 +3253,17 @@ static struct brw_reg brw_reg_from_fs_reg(fs_reg *reg)
void
fs_visitor::generate_code()
{
- unsigned int annotation_len = 0;
int last_native_inst = 0;
struct brw_instruction *if_stack[16], *loop_stack[16];
int if_stack_depth = 0, loop_stack_depth = 0;
int if_depth_in_loop[16];
+ const char *last_annotation_string = NULL;
+ ir_instruction *last_annotation_ir = NULL;
+
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
+ printf("Native code for fragment shader %d:\n",
+ ctx->Shader.CurrentFragmentProgram->Name);
+ }
if_depth_in_loop[loop_stack_depth] = 0;
@@ -2953,6 +3272,22 @@ fs_visitor::generate_code()
fs_inst *inst = (fs_inst *)iter.get();
struct brw_reg src[3], dst;
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
+ if (last_annotation_ir != inst->ir) {
+ last_annotation_ir = inst->ir;
+ if (last_annotation_ir) {
+ printf(" ");
+ last_annotation_ir->print();
+ printf("\n");
+ }
+ }
+ if (last_annotation_string != inst->annotation) {
+ last_annotation_string = inst->annotation;
+ if (last_annotation_string)
+ printf(" %s\n", last_annotation_string);
+ }
+ }
+
for (unsigned int i = 0; i < 3; i++) {
src[i] = brw_reg_from_fs_reg(&inst->src[i]);
}
@@ -2960,6 +3295,7 @@ fs_visitor::generate_code()
brw_set_conditionalmod(p, inst->conditional_mod);
brw_set_predicate_control(p, inst->predicated);
+ brw_set_saturate(p, inst->saturate);
switch (inst->opcode) {
case BRW_OPCODE_MOV:
@@ -3037,6 +3373,10 @@ fs_visitor::generate_code()
break;
case BRW_OPCODE_DO:
+ /* FINISHME: We need to write the loop instruction support still. */
+ if (intel->gen >= 6)
+ this->fail = true;
+
loop_stack[loop_stack_depth++] = brw_DO(p, BRW_EXECUTE_8);
if_depth_in_loop[loop_stack_depth] = 0;
break;
@@ -3114,6 +3454,10 @@ fs_visitor::generate_code()
generate_unspill(inst, dst);
break;
+ case FS_OPCODE_PULL_CONSTANT_LOAD:
+ generate_pull_constant_load(inst, dst);
+ break;
+
case FS_OPCODE_FB_WRITE:
generate_fb_write(inst);
break;
@@ -3127,25 +3471,19 @@ fs_visitor::generate_code()
this->fail = true;
}
- if (annotation_len < p->nr_insn) {
- annotation_len *= 2;
- if (annotation_len < 16)
- annotation_len = 16;
-
- this->annotation_string = talloc_realloc(this->mem_ctx,
- annotation_string,
- const char *,
- annotation_len);
- this->annotation_ir = talloc_realloc(this->mem_ctx,
- annotation_ir,
- ir_instruction *,
- annotation_len);
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
+ for (unsigned int i = last_native_inst; i < p->nr_insn; i++) {
+ if (0) {
+ printf("0x%08x 0x%08x 0x%08x 0x%08x ",
+ ((uint32_t *)&p->store[i])[3],
+ ((uint32_t *)&p->store[i])[2],
+ ((uint32_t *)&p->store[i])[1],
+ ((uint32_t *)&p->store[i])[0]);
+ }
+ brw_disasm(stdout, &p->store[i], intel->gen);
+ }
}
- for (unsigned int i = last_native_inst; i < p->nr_insn; i++) {
- this->annotation_string[i] = inst->annotation;
- this->annotation_ir[i] = inst->ir;
- }
last_native_inst = p->nr_insn;
}
}
@@ -3153,10 +3491,9 @@ fs_visitor::generate_code()
GLboolean
brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c)
{
- struct brw_compile *p = &c->func;
struct intel_context *intel = &brw->intel;
struct gl_context *ctx = &intel->ctx;
- struct gl_shader_program *prog = ctx->Shader.CurrentProgram;
+ struct gl_shader_program *prog = ctx->Shader.CurrentFragmentProgram;
if (!prog)
return GL_FALSE;
@@ -3174,7 +3511,7 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c)
*/
c->dispatch_width = 8;
- if (INTEL_DEBUG & DEBUG_WM) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
printf("GLSL IR for native fragment shader %d:\n", prog->Name);
_mesa_print_ir(shader->ir, NULL);
printf("\n");
@@ -3205,6 +3542,7 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c)
v.emit_fb_writes();
v.split_virtual_grfs();
+ v.setup_pull_constants();
v.assign_curb_setup();
v.assign_urb_setup();
@@ -3212,6 +3550,9 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c)
bool progress;
do {
progress = false;
+
+ progress = v.remove_duplicate_mrf_writes() || progress;
+
v.calculate_live_intervals();
progress = v.propagate_constants() || progress;
progress = v.register_coalesce() || progress;
@@ -3248,37 +3589,6 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c)
if (v.fail)
return GL_FALSE;
- if (INTEL_DEBUG & DEBUG_WM) {
- const char *last_annotation_string = NULL;
- ir_instruction *last_annotation_ir = NULL;
-
- printf("Native code for fragment shader %d:\n", prog->Name);
- for (unsigned int i = 0; i < p->nr_insn; i++) {
- if (last_annotation_ir != v.annotation_ir[i]) {
- last_annotation_ir = v.annotation_ir[i];
- if (last_annotation_ir) {
- printf(" ");
- last_annotation_ir->print();
- printf("\n");
- }
- }
- if (last_annotation_string != v.annotation_string[i]) {
- last_annotation_string = v.annotation_string[i];
- if (last_annotation_string)
- printf(" %s\n", last_annotation_string);
- }
- if (0) {
- printf("0x%08x 0x%08x 0x%08x 0x%08x ",
- ((uint32_t *)&p->store[i])[3],
- ((uint32_t *)&p->store[i])[2],
- ((uint32_t *)&p->store[i])[1],
- ((uint32_t *)&p->store[i])[0]);
- }
- brw_disasm(stdout, &p->store[i], intel->gen);
- }
- printf("\n");
- }
-
c->prog_data.total_grf = v.grf_used;
return GL_TRUE;
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index de7137a7db..de7b15312a 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -76,6 +76,7 @@ enum fs_opcodes {
FS_OPCODE_DISCARD_AND,
FS_OPCODE_SPILL,
FS_OPCODE_UNSPILL,
+ FS_OPCODE_PULL_CONSTANT_LOAD,
};
@@ -95,11 +96,9 @@ public:
void init()
{
- this->reg = 0;
- this->reg_offset = 0;
- this->negate = 0;
- this->abs = 0;
+ memset(this, 0, sizeof(*this));
this->hw_reg = -1;
+ this->smear = -1;
}
/** Generic unset register constructor. */
@@ -149,6 +148,21 @@ public:
fs_reg(enum register_file file, int hw_reg, uint32_t type);
fs_reg(class fs_visitor *v, const struct glsl_type *type);
+ bool equals(fs_reg *r)
+ {
+ return (file == r->file &&
+ reg == r->reg &&
+ reg_offset == r->reg_offset &&
+ hw_reg == r->hw_reg &&
+ type == r->type &&
+ negate == r->negate &&
+ abs == r->abs &&
+ memcmp(&fixed_hw_reg, &r->fixed_hw_reg,
+ sizeof(fixed_hw_reg)) == 0 &&
+ smear == r->smear &&
+ imm.u == r->imm.u);
+ }
+
/** Register file: ARF, GRF, MRF, IMM. */
enum register_file file;
/** virtual register number. 0 = fixed hw reg */
@@ -162,6 +176,7 @@ public:
bool negate;
bool abs;
struct brw_reg fixed_hw_reg;
+ int smear; /* -1, or a channel of the reg to smear to all channels. */
/** Value for file == BRW_IMMMEDIATE_FILE */
union {
@@ -171,6 +186,10 @@ public:
} imm;
};
+static const fs_reg reg_undef;
+static const fs_reg reg_null_f(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_F);
+static const fs_reg reg_null_d(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_D);
+
class fs_inst : public exec_node {
public:
/* Callers of this talloc-based new need not call delete. It's
@@ -187,18 +206,14 @@ public:
void init()
{
+ memset(this, 0, sizeof(*this));
this->opcode = BRW_OPCODE_NOP;
- this->saturate = false;
this->conditional_mod = BRW_CONDITIONAL_NONE;
- this->predicated = false;
- this->sampler = 0;
- this->target = 0;
- this->eot = false;
- this->header_present = false;
- this->shadow_compare = false;
- this->mlen = 0;
- this->base_mrf = 0;
- this->offset = 0;
+
+ this->dst = reg_undef;
+ this->src[0] = reg_undef;
+ this->src[1] = reg_undef;
+ this->src[2] = reg_undef;
}
fs_inst()
@@ -270,6 +285,26 @@ public:
assert(src[2].reg_offset >= 0);
}
+ bool equals(fs_inst *inst)
+ {
+ return (opcode == inst->opcode &&
+ dst.equals(&inst->dst) &&
+ src[0].equals(&inst->src[0]) &&
+ src[1].equals(&inst->src[1]) &&
+ src[2].equals(&inst->src[2]) &&
+ saturate == inst->saturate &&
+ predicated == inst->predicated &&
+ conditional_mod == inst->conditional_mod &&
+ mlen == inst->mlen &&
+ base_mrf == inst->base_mrf &&
+ sampler == inst->sampler &&
+ target == inst->target &&
+ eot == inst->eot &&
+ header_present == inst->header_present &&
+ shadow_compare == inst->shadow_compare &&
+ offset == inst->offset);
+ }
+
int opcode; /* BRW_OPCODE_* or FS_OPCODE_* */
fs_reg dst;
fs_reg src[3];
@@ -319,8 +354,6 @@ public:
this->first_non_payload_grf = 0;
this->current_annotation = NULL;
- this->annotation_string = NULL;
- this->annotation_ir = NULL;
this->base_ir = NULL;
this->virtual_grf_sizes = NULL;
@@ -368,11 +401,13 @@ public:
int choose_spill_reg(struct ra_graph *g);
void spill_reg(int spill_reg);
void split_virtual_grfs();
+ void setup_pull_constants();
void calculate_live_intervals();
bool propagate_constants();
bool register_coalesce();
bool compute_to_mrf();
bool dead_code_eliminate();
+ bool remove_duplicate_mrf_writes();
bool virtual_grf_interferes(int a, int b);
void generate_code();
void generate_fb_write(fs_inst *inst);
@@ -386,6 +421,7 @@ public:
void generate_ddy(fs_inst *inst, struct brw_reg dst, struct brw_reg src);
void generate_spill(fs_inst *inst, struct brw_reg src);
void generate_unspill(fs_inst *inst, struct brw_reg dst);
+ void generate_pull_constant_load(fs_inst *inst, struct brw_reg dst);
void emit_dummy_fs();
fs_reg *emit_fragcoord_interpolation(ir_variable *ir);
@@ -397,6 +433,7 @@ public:
fs_inst *emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate);
fs_inst *emit_math(fs_opcodes op, fs_reg dst, fs_reg src0);
fs_inst *emit_math(fs_opcodes op, fs_reg dst, fs_reg src0, fs_reg src1);
+ bool try_emit_saturate(ir_expression *ir);
void emit_bool_to_cond_code(ir_rvalue *condition);
void emit_if_gen6(ir_if *ir);
void emit_unspill(fs_inst *inst, fs_reg reg, uint32_t spill_offset);
@@ -408,6 +445,7 @@ public:
struct brw_reg interp_reg(int location, int channel);
int setup_uniform_values(int loc, const glsl_type *type);
void setup_builtin_uniform_values(ir_variable *ir);
+ int implied_mrf_writes(fs_inst *inst);
struct brw_context *brw;
const struct gl_fragment_program *fp;
@@ -434,8 +472,6 @@ public:
/** @{ debug annotation info */
const char *current_annotation;
ir_instruction *base_ir;
- const char **annotation_string;
- ir_instruction **annotation_ir;
/** @} */
bool fail;
@@ -453,9 +489,5 @@ public:
int grf_used;
};
-static const fs_reg reg_undef;
-static const fs_reg reg_null_f(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_F);
-static const fs_reg reg_null_d(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_D);
-
GLboolean brw_do_channel_expressions(struct exec_list *instructions);
GLboolean brw_do_vector_splitting(struct exec_list *instructions);
diff --git a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
index 4aac1b5a05..3b7b03a05b 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
@@ -202,6 +202,7 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
case ir_unop_ceil:
case ir_unop_floor:
case ir_unop_fract:
+ case ir_unop_round_even:
case ir_unop_sin:
case ir_unop_cos:
case ir_unop_dFdx:
@@ -287,34 +288,6 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
break;
}
- case ir_binop_cross: {
- for (i = 0; i < vector_elements; i++) {
- int swiz0 = (i + 1) % 3;
- int swiz1 = (i + 2) % 3;
- ir_expression *temp1, *temp2;
-
- temp1 = new(mem_ctx) ir_expression(ir_binop_mul,
- element_type,
- get_element(op_var[0], swiz0),
- get_element(op_var[1], swiz1));
-
- temp2 = new(mem_ctx) ir_expression(ir_binop_mul,
- element_type,
- get_element(op_var[1], swiz0),
- get_element(op_var[0], swiz1));
-
- temp2 = new(mem_ctx) ir_expression(ir_unop_neg,
- element_type,
- temp2,
- NULL);
-
- assign(ir, i, new(mem_ctx) ir_expression(ir_binop_add,
- element_type,
- temp1, temp2));
- }
- break;
- }
-
case ir_binop_logic_and:
case ir_binop_logic_xor:
case ir_binop_logic_or:
diff --git a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
index b5bfd00d5f..bbb210cd44 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
@@ -225,7 +225,7 @@ fs_visitor::assign_regs()
* loop back into here to try again.
*/
int reg = choose_spill_reg(g);
- if (reg == -1) {
+ if (reg == -1 || intel->gen >= 6) {
this->fail = true;
} else {
spill_reg(reg);
@@ -401,6 +401,7 @@ fs_visitor::spill_reg(int spill_reg)
spill_src.reg_offset = 0;
spill_src.abs = false;
spill_src.negate = false;
+ spill_src.smear = -1;
for (int chan = 0; chan < size; chan++) {
fs_inst *spill_inst = new(mem_ctx) fs_inst(FS_OPCODE_SPILL,
diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c
index cfcc8ea4d6..b0c76f4094 100644
--- a/src/mesa/drivers/dri/i965/brw_gs.c
+++ b/src/mesa/drivers/dri/i965/brw_gs.c
@@ -127,8 +127,8 @@ static void compile_gs_prog( struct brw_context *brw,
*/
program = brw_get_program(&c.func, &program_size);
- if (INTEL_DEBUG & DEBUG_GS) {
- int i;
+ if (unlikely(INTEL_DEBUG & DEBUG_GS)) {
+ int i;
printf("gs:\n");
for (i = 0; i < program_size / sizeof(struct brw_instruction); i++)
diff --git a/src/mesa/drivers/dri/i965/brw_gs_state.c b/src/mesa/drivers/dri/i965/brw_gs_state.c
index 63562ebcfc..69a5f7a666 100644
--- a/src/mesa/drivers/dri/i965/brw_gs_state.c
+++ b/src/mesa/drivers/dri/i965/brw_gs_state.c
@@ -101,7 +101,7 @@ gs_unit_create_from_key(struct brw_context *brw, struct brw_gs_unit_key *key)
if (intel->gen == 5)
gs.thread4.rendering_enable = 1;
- if (INTEL_DEBUG & DEBUG_STATS)
+ if (unlikely(INTEL_DEBUG & DEBUG_STATS))
gs.thread4.stats_enable = 1;
bo = brw_upload_cache(&brw->cache, BRW_GS_UNIT,
diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c
index 24041e57b0..1d350bc041 100644
--- a/src/mesa/drivers/dri/i965/brw_misc_state.c
+++ b/src/mesa/drivers/dri/i965/brw_misc_state.c
@@ -555,7 +555,7 @@ static void upload_invarient_state( struct brw_context *brw )
memset(&vfs, 0, sizeof(vfs));
vfs.opcode = brw->CMD_VF_STATISTICS;
- if (INTEL_DEBUG & DEBUG_STATS)
+ if (unlikely(INTEL_DEBUG & DEBUG_STATS))
vfs.statistics_enable = 1;
BRW_BATCH_STRUCT(brw, &vfs);
diff --git a/src/mesa/drivers/dri/i965/brw_sf.c b/src/mesa/drivers/dri/i965/brw_sf.c
index 7dbd70daae..6da155b1a9 100644
--- a/src/mesa/drivers/dri/i965/brw_sf.c
+++ b/src/mesa/drivers/dri/i965/brw_sf.c
@@ -108,7 +108,7 @@ static void compile_sf_prog( struct brw_context *brw,
*/
program = brw_get_program(&c.func, &program_size);
- if (INTEL_DEBUG & DEBUG_SF) {
+ if (unlikely(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],
diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c
index 6ad9e1b48a..bd3a21ed9e 100644
--- a/src/mesa/drivers/dri/i965/brw_sf_state.c
+++ b/src/mesa/drivers/dri/i965/brw_sf_state.c
@@ -210,10 +210,10 @@ sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key,
sf.thread4.max_threads = MIN2(chipset_max_threads, key->nr_urb_entries) - 1;
- if (INTEL_DEBUG & DEBUG_SINGLE_THREAD)
+ if (unlikely(INTEL_DEBUG & DEBUG_SINGLE_THREAD))
sf.thread4.max_threads = 0;
- if (INTEL_DEBUG & DEBUG_STATS)
+ if (unlikely(INTEL_DEBUG & DEBUG_STATS))
sf.thread4.stats_enable = 1;
/* CACHE_NEW_SF_VP */
diff --git a/src/mesa/drivers/dri/i965/brw_state_cache.c b/src/mesa/drivers/dri/i965/brw_state_cache.c
index b31d84953a..58ff528d44 100644
--- a/src/mesa/drivers/dri/i965/brw_state_cache.c
+++ b/src/mesa/drivers/dri/i965/brw_state_cache.c
@@ -61,6 +61,7 @@
#include "intel_batchbuffer.h"
#include "brw_wm.h"
+#define FILE_DEBUG_FLAG DEBUG_STATE
static GLuint
hash_key(struct brw_cache_item *item)
@@ -265,10 +266,9 @@ brw_upload_cache_with_auxdata(struct brw_cache *cache,
*(void **)aux_return = (void *)((char *)item->key + item->key_size);
}
- if (INTEL_DEBUG & DEBUG_STATE)
- printf("upload %s: %d bytes to cache id %d\n",
- cache->name[cache_id],
- data_size, cache_id);
+ DBG("upload %s: %d bytes to cache id %d\n",
+ cache->name[cache_id],
+ data_size, cache_id);
/* Copy data to the buffer */
drm_intel_bo_subdata(bo, 0, data_size, data);
@@ -407,8 +407,7 @@ brw_clear_cache(struct brw_context *brw, struct brw_cache *cache)
struct brw_cache_item *c, *next;
GLuint i;
- if (INTEL_DEBUG & DEBUG_STATE)
- printf("%s\n", __FUNCTION__);
+ DBG("%s\n", __FUNCTION__);
for (i = 0; i < cache->size; i++) {
for (c = cache->items[i]; c; c = next) {
@@ -434,8 +433,7 @@ brw_clear_cache(struct brw_context *brw, struct brw_cache *cache)
void
brw_state_cache_check_size(struct brw_context *brw)
{
- if (INTEL_DEBUG & DEBUG_STATE)
- printf("%s (n_items=%d)\n", __FUNCTION__, brw->cache.n_items);
+ DBG("%s (n_items=%d)\n", __FUNCTION__, brw->cache.n_items);
/* un-tuned guess. Each object is generally a page, so 1000 of them is 4 MB of
* state cache.
@@ -450,8 +448,7 @@ brw_destroy_cache(struct brw_context *brw, struct brw_cache *cache)
{
GLuint i;
- if (INTEL_DEBUG & DEBUG_STATE)
- printf("%s\n", __FUNCTION__);
+ DBG("%s\n", __FUNCTION__);
brw_clear_cache(brw, cache);
for (i = 0; i < BRW_MAX_CACHE; i++) {
diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c
index b79b33c2e3..e262887471 100644
--- a/src/mesa/drivers/dri/i965/brw_state_dump.c
+++ b/src/mesa/drivers/dri/i965/brw_state_dump.c
@@ -107,14 +107,14 @@ static void dump_wm_surface_state(struct brw_context *brw)
char name[20];
if (surf_bo == NULL) {
- fprintf(stderr, " WM SS%d: NULL\n", i);
+ fprintf(stderr, "WM SURF%d: NULL\n", i);
continue;
}
drm_intel_bo_map(surf_bo, GL_FALSE);
surfoff = surf_bo->offset + brw->wm.surf_offset[i];
surf = (struct brw_surface_state *)(surf_bo->virtual + brw->wm.surf_offset[i]);
- sprintf(name, "WM SS%d", i);
+ sprintf(name, "WM SURF%d", i);
state_out(name, surf, surfoff, 0, "%s %s\n",
get_965_surfacetype(surf->ss0.surface_type),
get_965_surface_format(surf->ss0.surface_format));
@@ -132,6 +132,53 @@ static void dump_wm_surface_state(struct brw_context *brw)
}
}
+
+static void dump_wm_sampler_state(struct brw_context *brw)
+{
+ struct gl_context *ctx = &brw->intel.ctx;
+ int i;
+
+ if (!brw->wm.sampler_bo) {
+ fprintf(stderr, "WM_SAMPLER: NULL\n");
+ return;
+ }
+
+ drm_intel_bo_map(brw->wm.sampler_bo, GL_FALSE);
+ for (i = 0; i < BRW_MAX_TEX_UNIT; i++) {
+ unsigned int offset;
+ struct brw_sampler_state *samp;
+ struct brw_sampler_default_color *sdc;
+ char name[20];
+
+ if (!ctx->Texture.Unit[i]._ReallyEnabled) {
+ fprintf(stderr, "WM SAMP%d: disabled\n", i);
+ continue;
+ }
+
+ offset = brw->wm.sampler_bo->offset +
+ i * sizeof(struct brw_sampler_state);
+ samp = (struct brw_sampler_state *)(brw->wm.sampler_bo->virtual +
+ i * sizeof(struct brw_sampler_state));
+
+ sprintf(name, "WM SAMP%d", i);
+ state_out(name, samp, offset, 0, "filtering\n");
+ state_out(name, samp, offset, 1, "wrapping, lod\n");
+ state_out(name, samp, offset, 2, "default color pointer\n");
+ state_out(name, samp, offset, 3, "chroma key, aniso\n");
+
+ sprintf(name, " WM SDC%d", i);
+
+ drm_intel_bo_map(brw->wm.sdc_bo[i], GL_FALSE);
+ sdc = (struct brw_sampler_default_color *)(brw->wm.sdc_bo[i]->virtual);
+ state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 0, "r\n");
+ state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 1, "g\n");
+ state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 2, "b\n");
+ state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 3, "a\n");
+ drm_intel_bo_unmap(brw->wm.sdc_bo[i]);
+ }
+ drm_intel_bo_unmap(brw->wm.sampler_bo);
+}
+
static void dump_sf_viewport_state(struct brw_context *brw)
{
const char *name = "SF VP";
@@ -324,6 +371,7 @@ void brw_debug_batch(struct intel_context *intel)
state_struct_out("WM bind", brw->wm.bind_bo, 4 * brw->wm.nr_surfaces);
dump_wm_surface_state(brw);
+ dump_wm_sampler_state(brw);
if (intel->gen < 6)
state_struct_out("VS", brw->vs.state_bo, sizeof(struct brw_vs_unit_state));
diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c
index 73940a5156..338f3876b3 100644
--- a/src/mesa/drivers/dri/i965/brw_state_upload.c
+++ b/src/mesa/drivers/dri/i965/brw_state_upload.c
@@ -128,6 +128,7 @@ const struct brw_tracked_state *gen6_atoms[] =
&gen6_cc_state_pointers,
&brw_vs_constants, /* Before vs_surfaces and constant_buffer */
+ &brw_wm_constants, /* Before wm_surfaces and constant_buffer */
&gen6_wm_constants, /* Before wm_surfaces and constant_buffer */
&brw_vs_surfaces, /* must do before unit */
@@ -434,7 +435,7 @@ void brw_upload_state(struct brw_context *brw)
brw_clear_validated_bos(brw);
- if (INTEL_DEBUG) {
+ if (unlikely(INTEL_DEBUG)) {
/* Debug version which enforces various sanity checks on the
* state flags which are generated and checked to help ensure
* state atoms are ordered correctly in the list.
@@ -486,7 +487,7 @@ void brw_upload_state(struct brw_context *brw)
}
}
- if (INTEL_DEBUG & DEBUG_STATE) {
+ if (unlikely(INTEL_DEBUG & DEBUG_STATE)) {
brw_update_dirty_count(mesa_bits, state->mesa);
brw_update_dirty_count(brw_bits, state->brw);
brw_update_dirty_count(cache_bits, state->cache);
diff --git a/src/mesa/drivers/dri/i965/brw_urb.c b/src/mesa/drivers/dri/i965/brw_urb.c
index 0f597184b4..dfc1551aca 100644
--- a/src/mesa/drivers/dri/i965/brw_urb.c
+++ b/src/mesa/drivers/dri/i965/brw_urb.c
@@ -190,12 +190,12 @@ static void recalculate_urb_fence( struct brw_context *brw )
exit(1);
}
- if (INTEL_DEBUG & (DEBUG_URB|DEBUG_FALLBACKS))
+ if (unlikely(INTEL_DEBUG & (DEBUG_URB|DEBUG_FALLBACKS)))
printf("URB CONSTRAINED\n");
}
done:
- if (INTEL_DEBUG & DEBUG_URB)
+ if (unlikely(INTEL_DEBUG & DEBUG_URB))
printf("URB fence: %d ..VS.. %d ..GS.. %d ..CLP.. %d ..SF.. %d ..CS.. %d\n",
brw->urb.vs_start,
brw->urb.gs_start,
diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c
index ce33479996..7e43324a1f 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c
@@ -165,13 +165,20 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c )
/* User clip planes from curbe:
*/
if (c->key.nr_userclip) {
- for (i = 0; i < c->key.nr_userclip; i++) {
- c->userplane[i] = stride( brw_vec4_grf(reg+3+i/2, (i%2) * 4), 0, 4, 1);
- }
+ if (intel->gen >= 6) {
+ for (i = 0; i < c->key.nr_userclip; i++) {
+ c->userplane[i] = stride(brw_vec4_grf(reg + i / 2,
+ (i % 2) * 4), 0, 4, 1);
+ }
+ reg += ALIGN(c->key.nr_userclip, 2) / 2;
+ } else {
+ for (i = 0; i < c->key.nr_userclip; i++) {
+ c->userplane[i] = stride(brw_vec4_grf(reg + (6 + i) / 2,
+ (i % 2) * 4), 0, 4, 1);
+ }
+ reg += (ALIGN(6 + c->key.nr_userclip, 4) / 4) * 2;
+ }
- /* Deal with curbe alignment:
- */
- reg += ((6 + c->key.nr_userclip + 3) / 4) * 2;
}
/* Vertex program parameters from curbe:
@@ -253,9 +260,11 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c )
c->first_output = reg;
c->first_overflow_output = 0;
- if (intel->gen >= 6)
- mrf = 3; /* no more pos store in attribute */
- else if (intel->gen == 5)
+ if (intel->gen >= 6) {
+ mrf = 3;
+ if (c->key.nr_userclip)
+ mrf += 2;
+ } else if (intel->gen == 5)
mrf = 8;
else
mrf = 4;
@@ -372,16 +381,20 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c )
/* See emit_vertex_write() for where the VUE's overhead on top of the
* attributes comes from.
*/
- if (intel->gen >= 6)
- c->prog_data.urb_entry_size = (attributes_in_vue + 2 + 7) / 8;
- else if (intel->gen == 5)
+ if (intel->gen >= 6) {
+ int header_regs = 2;
+ if (c->key.nr_userclip)
+ header_regs += 2;
+
+ c->prog_data.urb_entry_size = (attributes_in_vue + header_regs + 7) / 8;
+ } else if (intel->gen == 5)
c->prog_data.urb_entry_size = (attributes_in_vue + 6 + 3) / 4;
else
c->prog_data.urb_entry_size = (attributes_in_vue + 2 + 3) / 4;
c->prog_data.total_grf = reg;
- if (INTEL_DEBUG & DEBUG_VS) {
+ if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
printf("%s NumAddrRegs %d\n", __FUNCTION__, c->vp->program.Base.NumAddressRegs);
printf("%s NumTemps %d\n", __FUNCTION__, c->vp->program.Base.NumTemporaries);
printf("%s reg = %d\n", __FUNCTION__, reg);
@@ -576,12 +589,11 @@ static void emit_min( struct brw_compile *p,
brw_set_predicate_control(p, BRW_PREDICATE_NONE);
}
-
-static void emit_math1( struct brw_vs_compile *c,
- GLuint function,
- struct brw_reg dst,
- struct brw_reg arg0,
- GLuint precision)
+static void emit_math1_gen4(struct brw_vs_compile *c,
+ GLuint function,
+ struct brw_reg dst,
+ struct brw_reg arg0,
+ GLuint precision)
{
/* There are various odd behaviours with SEND on the simulator. In
* addition there are documented issues with the fact that the GEN4
@@ -591,14 +603,11 @@ static void emit_math1( struct brw_vs_compile *c,
* whether that turns out to be a simulator bug or not:
*/
struct brw_compile *p = &c->func;
- struct intel_context *intel = &p->brw->intel;
struct brw_reg tmp = dst;
GLboolean need_tmp = GL_FALSE;
- if (dst.file != BRW_GENERAL_REGISTER_FILE)
- need_tmp = GL_TRUE;
-
- if (intel->gen < 6 && dst.dw1.bits.writemask != 0xf)
+ if (dst.file != BRW_GENERAL_REGISTER_FILE ||
+ dst.dw1.bits.writemask != 0xf)
need_tmp = GL_TRUE;
if (need_tmp)
@@ -619,6 +628,57 @@ static void emit_math1( struct brw_vs_compile *c,
}
}
+static void
+emit_math1_gen6(struct brw_vs_compile *c,
+ GLuint function,
+ struct brw_reg dst,
+ struct brw_reg arg0,
+ GLuint precision)
+{
+ struct brw_compile *p = &c->func;
+ struct brw_reg tmp_src, tmp_dst;
+
+ /* Something is strange on gen6 math in 16-wide mode, though the
+ * docs say it's supposed to work. Punt to using align1 mode,
+ * which doesn't do writemasking and swizzles.
+ */
+ tmp_src = get_tmp(c);
+ tmp_dst = get_tmp(c);
+
+ brw_MOV(p, tmp_src, arg0);
+
+ brw_set_access_mode(p, BRW_ALIGN_1);
+ brw_math(p,
+ tmp_dst,
+ function,
+ BRW_MATH_SATURATE_NONE,
+ 2,
+ tmp_src,
+ BRW_MATH_DATA_SCALAR,
+ precision);
+ brw_set_access_mode(p, BRW_ALIGN_16);
+
+ brw_MOV(p, dst, tmp_dst);
+
+ release_tmp(c, tmp_src);
+ release_tmp(c, tmp_dst);
+}
+
+static void
+emit_math1(struct brw_vs_compile *c,
+ GLuint function,
+ struct brw_reg dst,
+ struct brw_reg arg0,
+ GLuint precision)
+{
+ struct brw_compile *p = &c->func;
+ struct intel_context *intel = &p->brw->intel;
+
+ if (intel->gen >= 6)
+ emit_math1_gen6(c, function, dst, arg0, precision);
+ else
+ emit_math1_gen4(c, function, dst, arg0, precision);
+}
static void emit_math2( struct brw_vs_compile *c,
GLuint function,
@@ -1392,9 +1452,33 @@ static void emit_vertex_write( struct brw_vs_compile *c)
/* Update the header for point size, user clipping flags, and -ve rhw
* workaround.
*/
- if ((c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_PSIZ)) ||
- c->key.nr_userclip || brw->has_negative_rhw_bug)
- {
+ if (intel->gen >= 6) {
+ struct brw_reg m1 = brw_message_reg(1);
+
+ /* On gen6, m1 has each value in a separate dword, so we never
+ * need to mess with a temporary for computing the m1 value.
+ */
+ brw_MOV(p, retype(m1, BRW_REGISTER_TYPE_UD), brw_imm_ud(0));
+ if (c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_PSIZ)) {
+ brw_MOV(p, brw_writemask(m1, WRITEMASK_W),
+ brw_swizzle1(c->regs[PROGRAM_OUTPUT][VERT_RESULT_PSIZ], 0));
+ }
+
+ /* Set the user clip distances in dword 8-15. (m3-4)*/
+ if (c->key.nr_userclip) {
+ for (i = 0; i < c->key.nr_userclip; i++) {
+ struct brw_reg m;
+ if (i < 4)
+ m = brw_message_reg(3);
+ else
+ m = brw_message_reg(4);
+
+ brw_DP4(p, brw_writemask(m, (1 << (i & 7))),pos, c->userplane[i]);
+ }
+ }
+ } else if ((c->prog_data.outputs_written &
+ BITFIELD64_BIT(VERT_RESULT_PSIZ)) ||
+ c->key.nr_userclip || brw->has_negative_rhw_bug) {
struct brw_reg header1 = retype(get_tmp(c), BRW_REGISTER_TYPE_UD);
GLuint i;
@@ -1404,11 +1488,10 @@ static void emit_vertex_write( struct brw_vs_compile *c)
if (c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_PSIZ)) {
struct brw_reg psiz = c->regs[PROGRAM_OUTPUT][VERT_RESULT_PSIZ];
- if (intel->gen < 6) {
- brw_MUL(p, brw_writemask(header1, WRITEMASK_W), brw_swizzle1(psiz, 0), brw_imm_f(1<<11));
- brw_AND(p, brw_writemask(header1, WRITEMASK_W), header1, brw_imm_ud(0x7ff<<8));
- } else
- brw_MOV(p, brw_writemask(header1, WRITEMASK_W), brw_swizzle1(psiz, 0));
+ brw_MUL(p, brw_writemask(header1, WRITEMASK_W),
+ brw_swizzle1(psiz, 0), brw_imm_f(1<<11));
+ brw_AND(p, brw_writemask(header1, WRITEMASK_W),
+ header1, brw_imm_ud(0x7ff<<8));
}
for (i = 0; i < c->key.nr_userclip; i++) {
@@ -1461,12 +1544,14 @@ static void emit_vertex_write( struct brw_vs_compile *c)
* dword 0-3 (m1) of the header is indices, point width, clip flags.
* dword 4-7 (m2) is the 4D space position
* dword 8-15 (m3,m4) of the vertex header is the user clip distance if
- * enabled. We don't use it, so skip it.
- * m3 is the first vertex element data we fill, which is the vertex
- * position.
+ * enabled.
+ * m3 or 5 is the first vertex element data we fill, which is
+ * the vertex position.
*/
brw_MOV(p, brw_message_reg(2), pos);
len_vertex_header = 1;
+ if (c->key.nr_userclip > 0)
+ len_vertex_header += 2;
} else if (intel->gen == 5) {
/* There are 20 DWs (D0-D19) in VUE header on Ironlake:
* dword 0-3 (m1) of the header is indices, point width, clip flags.
@@ -1640,17 +1725,13 @@ void brw_vs_emit(struct brw_vs_compile *c )
GLuint index;
GLuint file;
- if (INTEL_DEBUG & DEBUG_VS) {
+ if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
printf("vs-mesa:\n");
_mesa_fprint_program_opt(stdout, &c->vp->program.Base, PROG_PRINT_DEBUG,
GL_TRUE);
printf("\n");
}
- /* FIXME Need to fix conditional instruction to remove this */
- if (intel->gen >= 6)
- p->single_program_flow = GL_TRUE;
-
brw_set_compression_control(p, BRW_COMPRESSION_NONE);
brw_set_access_mode(p, BRW_ALIGN_16);
if_depth_in_loop[loop_depth] = 0;
@@ -2010,7 +2091,7 @@ void brw_vs_emit(struct brw_vs_compile *c )
brw_optimize(p);
- if (INTEL_DEBUG & DEBUG_VS) {
+ if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
int i;
printf("vs-native:\n");
diff --git a/src/mesa/drivers/dri/i965/brw_vs_state.c b/src/mesa/drivers/dri/i965/brw_vs_state.c
index ebae94269f..be92313861 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_state.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_state.c
@@ -154,7 +154,7 @@ vs_unit_create_from_key(struct brw_context *brw, struct brw_vs_unit_key *key)
*/
vs.vs5.sampler_count = 0;
- if (INTEL_DEBUG & DEBUG_STATS)
+ if (unlikely(INTEL_DEBUG & DEBUG_STATS))
vs.thread4.stats_enable = 1;
/* Vertex program always enabled:
diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c
index 7f3ba5f058..ccdc18e0b8 100644
--- a/src/mesa/drivers/dri/i965/brw_wm.c
+++ b/src/mesa/drivers/dri/i965/brw_wm.c
@@ -198,7 +198,7 @@ static void do_wm_prog( struct brw_context *brw,
c->prog_data.total_scratch = 0;
}
- if (INTEL_DEBUG & DEBUG_WM)
+ if (unlikely(INTEL_DEBUG & DEBUG_WM))
fprintf(stderr, "\n");
/* get the program
@@ -423,6 +423,7 @@ static void brw_wm_populate_key( struct brw_context *brw,
*/
if (fp->program.Base.InputsRead & FRAG_BIT_WPOS) {
key->drawable_height = ctx->DrawBuffer->Height;
+ key->render_to_fbo = ctx->DrawBuffer->Name != 0;
}
key->nr_color_regions = brw->state.nr_color_regions;
diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h
index 99bd15c187..2ca685784f 100644
--- a/src/mesa/drivers/dri/i965/brw_wm.h
+++ b/src/mesa/drivers/dri/i965/brw_wm.h
@@ -70,7 +70,8 @@ struct brw_wm_prog_key {
GLuint linear_color:1; /**< linear interpolation vs perspective interp */
GLuint runtime_check_aads_emit:1;
GLuint nr_color_regions:5;
-
+ GLuint render_to_fbo:1;
+
GLbitfield proj_attrib_mask; /**< one bit per fragment program attribute */
GLuint shadowtex_mask:16;
GLuint yuvtex_mask:16;
diff --git a/src/mesa/drivers/dri/i965/brw_wm_emit.c b/src/mesa/drivers/dri/i965/brw_wm_emit.c
index 88bc64e5dd..96fecc97ee 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_emit.c
@@ -83,6 +83,7 @@ brw_wm_arg_can_be_immediate(enum prog_opcode opcode, int arg)
[OPCODE_SLE] = 2,
[OPCODE_SLT] = 2,
[OPCODE_SNE] = 2,
+ [OPCODE_SWZ] = 1,
[OPCODE_XPD] = 2,
};
@@ -895,11 +896,12 @@ void emit_math1(struct brw_wm_compile *c,
BRW_MATH_SATURATE_NONE);
struct brw_reg src;
- if (intel->gen >= 6 && arg0[0].hstride == BRW_HORIZONTAL_STRIDE_0) {
- /* Gen6 math requires that source and dst horizontal stride be 1.
- *
+ if (intel->gen >= 6 && (arg0[0].hstride == BRW_HORIZONTAL_STRIDE_0 ||
+ arg0[0].file != BRW_GENERAL_REGISTER_FILE)) {
+ /* Gen6 math requires that source and dst horizontal stride be 1,
+ * and that the argument be in the GRF.
*/
- src = *dst;
+ src = dst[dst_chan];
brw_MOV(p, src, arg0[0]);
} else {
src = arg0[0];
@@ -1576,7 +1578,7 @@ static void emit_spill( struct brw_wm_compile *c,
mov (1) r0.2<1>:d 0x00000080:d { Align1 NoMask }
send (16) null.0<1>:uw m1 r0.0<8;8,1>:uw 0x053003ff:ud { Align1 }
*/
- brw_oword_block_write(p, brw_message_reg(1), 2, slot);
+ brw_oword_block_write_scratch(p, brw_message_reg(1), 2, slot);
}
@@ -1920,7 +1922,7 @@ void brw_wm_emit( struct brw_wm_compile *c )
brw_remove_grf_to_mrf_moves(p);
}
- if (INTEL_DEBUG & DEBUG_WM) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
int i;
printf("wm-native:\n");
diff --git a/src/mesa/drivers/dri/i965/brw_wm_fp.c b/src/mesa/drivers/dri/i965/brw_wm_fp.c
index 15a238cda6..2cae698880 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_fp.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_fp.c
@@ -663,7 +663,7 @@ static void precalc_tex( struct brw_wm_compile *c,
const struct prog_instruction *inst )
{
struct prog_src_register coord;
- struct prog_dst_register tmpcoord;
+ struct prog_dst_register tmpcoord = { 0 };
const GLuint unit = c->fp->program.Base.SamplerUnits[inst->TexSrcUnit];
assert(unit < BRW_MAX_TEX_UNIT);
@@ -963,7 +963,7 @@ static void emit_render_target_writes( struct brw_wm_compile *c )
struct prog_src_register outcolor;
GLuint i;
- struct prog_instruction *inst, *last_inst;
+ struct prog_instruction *inst, *last_inst = NULL;
/* The inst->Aux field is used for FB write target and the EOT marker */
@@ -1058,7 +1058,7 @@ void brw_wm_pass_fp( struct brw_wm_compile *c )
struct brw_fragment_program *fp = c->fp;
GLuint insn;
- if (INTEL_DEBUG & DEBUG_WM) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
printf("pre-fp:\n");
_mesa_fprint_program_opt(stdout, &fp->program.Base, PROG_PRINT_DEBUG,
GL_TRUE);
@@ -1174,7 +1174,7 @@ void brw_wm_pass_fp( struct brw_wm_compile *c )
}
}
- if (INTEL_DEBUG & DEBUG_WM) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
printf("pass_fp:\n");
print_insns( c->prog_instructions, c->nr_fp_insns );
printf("\n");
diff --git a/src/mesa/drivers/dri/i965/brw_wm_glsl.c b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
index 55aceea9b5..7fe8ab1f33 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_glsl.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
@@ -19,7 +19,7 @@ GLboolean brw_wm_is_glsl(const struct gl_fragment_program *fp)
{
int i;
- if (INTEL_DEBUG & DEBUG_GLSL_FORCE)
+ if (unlikely(INTEL_DEBUG & DEBUG_GLSL_FORCE))
return GL_TRUE;
for (i = 0; i < fp->Base.NumInstructions; i++) {
@@ -307,21 +307,20 @@ static void prealloc_reg(struct brw_wm_compile *c)
/* use a real constant buffer, or just use a section of the GRF? */
/* XXX this heuristic may need adjustment... */
- if ((nr_params + nr_temps) * 4 + reg_index > 80)
- c->fp->use_const_buffer = GL_TRUE;
- else
- c->fp->use_const_buffer = GL_FALSE;
- /*printf("WM use_const_buffer = %d\n", c->fp->use_const_buffer);*/
+ if ((nr_params + nr_temps) * 4 + reg_index > 80) {
+ for (i = 0; i < nr_params; i++) {
+ float *pv = c->fp->program.Base.Parameters->ParameterValues[i];
+ for (j = 0; j < 4; j++) {
+ c->prog_data.pull_param[c->prog_data.nr_pull_params] = &pv[j];
+ c->prog_data.nr_pull_params++;
+ }
+ }
- if (c->fp->use_const_buffer) {
- /* We'll use a real constant buffer and fetch constants from
- * it with a dataport read message.
- */
+ c->prog_data.nr_params = 0;
+ }
+ /*printf("WM use_const_buffer = %d\n", c->fp->use_const_buffer);*/
- /* number of float constants in CURBE */
- c->prog_data.nr_params = 0;
- }
- else {
+ if (!c->prog_data.nr_pull_params) {
const struct gl_program_parameter_list *plist =
c->fp->program.Base.Parameters;
int index = 0;
@@ -463,7 +462,7 @@ static void prealloc_reg(struct brw_wm_compile *c)
* They'll be found in these registers.
* XXX alloc these on demand!
*/
- if (c->fp->use_const_buffer) {
+ if (c->prog_data.nr_pull_params) {
for (i = 0; i < 3; i++) {
c->current_const[i].index = -1;
c->current_const[i].reg = brw_vec8_grf(alloc_grf(c), 0);
@@ -501,12 +500,11 @@ static void fetch_constants(struct brw_wm_compile *c,
#endif
/* need to fetch the constant now */
- brw_dp_READ_4(p,
- c->current_const[i].reg, /* writeback dest */
- src->RelAddr, /* relative indexing? */
- 16 * src->Index, /* byte offset */
- SURF_INDEX_FRAG_CONST_BUFFER/* binding table index */
- );
+ brw_oword_block_read(p,
+ c->current_const[i].reg,
+ brw_message_reg(1),
+ 16 * src->Index,
+ SURF_INDEX_FRAG_CONST_BUFFER);
}
}
}
@@ -606,7 +604,7 @@ static struct brw_reg get_src_reg(struct brw_wm_compile *c,
}
}
- if (c->fp->use_const_buffer &&
+ if (c->prog_data.nr_pull_params &&
(src->File == PROGRAM_STATE_VAR ||
src->File == PROGRAM_CONSTANT ||
src->File == PROGRAM_UNIFORM)) {
@@ -729,7 +727,7 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c)
#endif
/* fetch any constants that this instruction needs */
- if (c->fp->use_const_buffer)
+ if (c->prog_data.nr_pull_params)
fetch_constants(c, inst);
if (inst->Opcode != OPCODE_ARL) {
@@ -1004,7 +1002,7 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c)
}
post_wm_emit(c);
- if (INTEL_DEBUG & DEBUG_WM) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
printf("wm-native:\n");
for (i = 0; i < p->nr_insn; i++)
brw_disasm(stdout, &p->store[i], intel->gen);
@@ -1018,7 +1016,7 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c)
*/
void brw_wm_glsl_emit(struct brw_context *brw, struct brw_wm_compile *c)
{
- if (INTEL_DEBUG & DEBUG_WM) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
printf("brw_wm_glsl_emit:\n");
}
@@ -1028,7 +1026,7 @@ void brw_wm_glsl_emit(struct brw_context *brw, struct brw_wm_compile *c)
/* actual code generation */
brw_wm_emit_glsl(brw, c);
- if (INTEL_DEBUG & DEBUG_WM) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
brw_wm_print_program(c, "brw_wm_glsl_emit done");
}
diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass0.c b/src/mesa/drivers/dri/i965/brw_wm_pass0.c
index 8fc960b445..83152526b3 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_pass0.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_pass0.c
@@ -113,6 +113,7 @@ static const struct brw_wm_ref *get_param_ref( struct brw_wm_compile *c,
struct brw_wm_ref *ref = get_ref(c);
c->prog_data.param[i] = param_ptr;
+ c->prog_data.param_convert[i] = PARAM_NO_CONVERT;
c->nr_creg = (i+16)/16;
/* Push the offsets into hw_reg. These will be added to the
@@ -439,7 +440,7 @@ void brw_wm_pass0( struct brw_wm_compile *c )
}
}
- if (INTEL_DEBUG & DEBUG_WM) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
brw_wm_print_program(c, "pass0");
}
}
diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass1.c b/src/mesa/drivers/dri/i965/brw_wm_pass1.c
index 962515a99e..3a2874b6dd 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_pass1.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_pass1.c
@@ -291,7 +291,7 @@ void brw_wm_pass1( struct brw_wm_compile *c )
track_arg(c, inst, 2, read2);
}
- if (INTEL_DEBUG & DEBUG_WM) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
brw_wm_print_program(c, "pass1");
}
}
diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass2.c b/src/mesa/drivers/dri/i965/brw_wm_pass2.c
index 54acb3038b..44e3953814 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_pass2.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_pass2.c
@@ -331,13 +331,13 @@ void brw_wm_pass2( struct brw_wm_compile *c )
}
}
- if (INTEL_DEBUG & DEBUG_WM) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
brw_wm_print_program(c, "pass2");
}
c->state = PASS2_DONE;
- if (INTEL_DEBUG & DEBUG_WM) {
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
brw_wm_print_program(c, "pass2/done");
}
}
diff --git a/src/mesa/drivers/dri/i965/brw_wm_state.c b/src/mesa/drivers/dri/i965/brw_wm_state.c
index 433ccc66f0..76de7b7b6f 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_state.c
@@ -137,9 +137,9 @@ wm_unit_populate_key(struct brw_context *brw, struct brw_wm_unit_key *key)
/* If using the fragment shader backend, the program is always
* 8-wide.
*/
- if (ctx->Shader.CurrentProgram) {
+ if (ctx->Shader.CurrentFragmentProgram) {
struct brw_shader *shader = (struct brw_shader *)
- ctx->Shader.CurrentProgram->_LinkedShaders[MESA_SHADER_FRAGMENT];
+ ctx->Shader.CurrentFragmentProgram->_LinkedShaders[MESA_SHADER_FRAGMENT];
if (shader != NULL && shader->ir != NULL) {
key->is_glsl = GL_TRUE;
@@ -249,7 +249,7 @@ wm_unit_create_from_key(struct brw_context *brw, struct brw_wm_unit_key *key,
wm.wm5.line_stipple = key->line_stipple;
- if (INTEL_DEBUG & DEBUG_STATS || key->stats_wm)
+ if (unlikely(INTEL_DEBUG & DEBUG_STATS) || key->stats_wm)
wm.wm4.stats_enable = 1;
bo = brw_upload_cache(&brw->cache, BRW_WM_UNIT,
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index 5588702afc..76fc94df1f 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -319,13 +319,14 @@ prepare_wm_constants(struct brw_context *brw)
struct intel_context *intel = &brw->intel;
struct brw_fragment_program *fp =
(struct brw_fragment_program *) brw->fragment_program;
- const struct gl_program_parameter_list *params = fp->program.Base.Parameters;
- const int size = params->NumParameters * 4 * sizeof(GLfloat);
+ const int size = brw->wm.prog_data->nr_pull_params * sizeof(float);
+ float *constants;
+ unsigned int i;
_mesa_load_state_parameters(ctx, fp->program.Base.Parameters);
/* BRW_NEW_FRAGMENT_PROGRAM */
- if (!fp->use_const_buffer) {
+ if (brw->wm.prog_data->nr_pull_params == 0) {
if (brw->wm.const_bo) {
drm_intel_bo_unreference(brw->wm.const_bo);
brw->wm.const_bo = NULL;
@@ -335,11 +336,19 @@ prepare_wm_constants(struct brw_context *brw)
}
drm_intel_bo_unreference(brw->wm.const_bo);
- brw->wm.const_bo = drm_intel_bo_alloc(intel->bufmgr, "vp_const_buffer",
+ brw->wm.const_bo = drm_intel_bo_alloc(intel->bufmgr, "WM const bo",
size, 64);
/* _NEW_PROGRAM_CONSTANTS */
- drm_intel_bo_subdata(brw->wm.const_bo, 0, size, params->ParameterValues);
+ drm_intel_gem_bo_map_gtt(brw->wm.const_bo);
+ constants = brw->wm.const_bo->virtual;
+ for (i = 0; i < brw->wm.prog_data->nr_pull_params; i++) {
+ constants[i] = convert_param(brw->wm.prog_data->pull_param_convert[i],
+ *brw->wm.prog_data->pull_param[i]);
+ }
+ drm_intel_gem_bo_unmap_gtt(brw->wm.const_bo);
+
+ brw->state.dirty.brw |= BRW_NEW_WM_CONSTBUF;
}
const struct brw_tracked_state brw_wm_constants = {
diff --git a/src/mesa/drivers/dri/i965/gen6_cc.c b/src/mesa/drivers/dri/i965/gen6_cc.c
index 0d6e923f73..800a255521 100644
--- a/src/mesa/drivers/dri/i965/gen6_cc.c
+++ b/src/mesa/drivers/dri/i965/gen6_cc.c
@@ -254,7 +254,7 @@ prepare_color_calc_state(struct brw_context *brw)
const struct brw_tracked_state gen6_color_calc_state = {
.dirty = {
- .mesa = _NEW_COLOR,
+ .mesa = _NEW_COLOR | _NEW_STENCIL,
.brw = 0,
.cache = 0,
},
diff --git a/src/mesa/drivers/dri/i965/gen6_clip_state.c b/src/mesa/drivers/dri/i965/gen6_clip_state.c
index cd2ac9d92f..c65b41e2b6 100644
--- a/src/mesa/drivers/dri/i965/gen6_clip_state.c
+++ b/src/mesa/drivers/dri/i965/gen6_clip_state.c
@@ -28,6 +28,7 @@
#include "brw_context.h"
#include "brw_state.h"
#include "brw_defines.h"
+#include "brw_util.h"
#include "intel_batchbuffer.h"
static void
@@ -36,7 +37,7 @@ upload_clip_state(struct brw_context *brw)
struct intel_context *intel = &brw->intel;
struct gl_context *ctx = &intel->ctx;
uint32_t depth_clamp = 0;
- uint32_t provoking;
+ uint32_t provoking, userclip;
if (!ctx->Transform.DepthClamp)
depth_clamp = GEN6_CLIP_Z_TEST;
@@ -50,6 +51,9 @@ upload_clip_state(struct brw_context *brw)
(1 << GEN6_CLIP_LINE_PROVOKE_SHIFT);
}
+ /* _NEW_TRANSFORM */
+ userclip = (1 << brw_count_bits(ctx->Transform.ClipPlanesEnabled)) - 1;
+
BEGIN_BATCH(4);
OUT_BATCH(CMD_3D_CLIP_STATE << 16 | (4 - 2));
OUT_BATCH(GEN6_CLIP_STATISTICS_ENABLE);
@@ -57,6 +61,7 @@ upload_clip_state(struct brw_context *brw)
GEN6_CLIP_API_OGL |
GEN6_CLIP_MODE_NORMAL |
GEN6_CLIP_XY_TEST |
+ userclip << GEN6_USER_CLIP_CLIP_DISTANCES_SHIFT |
depth_clamp |
provoking);
OUT_BATCH(GEN6_CLIP_FORCE_ZERO_RTAINDEX);
diff --git a/src/mesa/drivers/dri/i965/gen6_sf_state.c b/src/mesa/drivers/dri/i965/gen6_sf_state.c
index 55a70bea62..471067e8f0 100644
--- a/src/mesa/drivers/dri/i965/gen6_sf_state.c
+++ b/src/mesa/drivers/dri/i965/gen6_sf_state.c
@@ -73,12 +73,19 @@ upload_sf_state(struct brw_context *brw)
/* _NEW_BUFFER */
GLboolean render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0;
int attr = 0;
+ int urb_start;
+
+ /* _NEW_TRANSFORM */
+ if (ctx->Transform.ClipPlanesEnabled)
+ urb_start = 2;
+ else
+ urb_start = 1;
dw1 =
GEN6_SF_SWIZZLE_ENABLE |
num_outputs << GEN6_SF_NUM_OUTPUTS_SHIFT |
(num_inputs + 1) / 2 << GEN6_SF_URB_ENTRY_READ_LENGTH_SHIFT |
- 1 << GEN6_SF_URB_ENTRY_READ_OFFSET_SHIFT;
+ urb_start << GEN6_SF_URB_ENTRY_READ_OFFSET_SHIFT;
dw2 = GEN6_SF_VIEWPORT_TRANSFORM_ENABLE |
GEN6_SF_STATISTICS_ENABLE;
dw3 = 0;
@@ -195,7 +202,9 @@ const struct brw_tracked_state gen6_sf_state = {
_NEW_POLYGON |
_NEW_LINE |
_NEW_SCISSOR |
- _NEW_BUFFERS),
+ _NEW_BUFFERS |
+ _NEW_POINT |
+ _NEW_TRANSFORM),
.brw = BRW_NEW_CONTEXT,
.cache = CACHE_NEW_VS_PROG
},
diff --git a/src/mesa/drivers/dri/i965/gen6_urb.c b/src/mesa/drivers/dri/i965/gen6_urb.c
index 0a264fcd90..a34123478f 100644
--- a/src/mesa/drivers/dri/i965/gen6_urb.c
+++ b/src/mesa/drivers/dri/i965/gen6_urb.c
@@ -40,7 +40,7 @@ prepare_urb( struct brw_context *brw )
else
brw->urb.nr_gs_entries = 0;
/* CACHE_NEW_VS_PROG */
- brw->urb.vs_size = MIN2(brw->vs.prog_data->urb_entry_size, 1);
+ brw->urb.vs_size = MAX2(brw->vs.prog_data->urb_entry_size, 1);
/* Check that the number of URB rows (8 floats each) allocated is less
* than the URB space.
diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c
index 304eaddf40..e94d0c0ddb 100644
--- a/src/mesa/drivers/dri/i965/gen6_vs_state.c
+++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c
@@ -40,11 +40,11 @@ upload_vs_state(struct brw_context *brw)
struct gl_context *ctx = &intel->ctx;
const struct brw_vertex_program *vp =
brw_vertex_program_const(brw->vertex_program);
- unsigned int nr_params = vp->program.Base.Parameters->NumParameters;
+ unsigned int nr_params = brw->vs.prog_data->nr_params / 4;
drm_intel_bo *constant_bo;
int i;
- if (vp->use_const_buffer || nr_params == 0) {
+ if (brw->vs.prog_data->nr_params == 0 && !ctx->Transform.ClipPlanesEnabled) {
/* Disable the push constant buffers. */
BEGIN_BATCH(5);
OUT_BATCH(CMD_3D_CONSTANT_VS_STATE << 16 | (5 - 2));
@@ -54,6 +54,9 @@ upload_vs_state(struct brw_context *brw)
OUT_BATCH(0);
ADVANCE_BATCH();
} else {
+ int params_uploaded = 0;
+ float *param;
+
if (brw->vertex_program->IsNVProgram)
_mesa_load_tracked_matrices(ctx);
@@ -63,14 +66,55 @@ upload_vs_state(struct brw_context *brw)
_mesa_load_state_parameters(ctx, vp->program.Base.Parameters);
constant_bo = drm_intel_bo_alloc(intel->bufmgr, "VS constant_bo",
- nr_params * 4 * sizeof(float),
+ (MAX_CLIP_PLANES + nr_params) *
+ 4 * sizeof(float),
4096);
drm_intel_gem_bo_map_gtt(constant_bo);
- for (i = 0; i < nr_params; i++) {
- memcpy((char *)constant_bo->virtual + i * 4 * sizeof(float),
- vp->program.Base.Parameters->ParameterValues[i],
- 4 * sizeof(float));
+ param = constant_bo->virtual;
+
+ /* This should be loaded like any other param, but it's ad-hoc
+ * until we redo the VS backend.
+ */
+ for (i = 0; i < MAX_CLIP_PLANES; i++) {
+ if (ctx->Transform.ClipPlanesEnabled & (1 << i)) {
+ memcpy(param, ctx->Transform._ClipUserPlane[i], 4 * sizeof(float));
+ param += 4;
+ params_uploaded++;
+ }
}
+ /* Align to a reg for convenience for brw_vs_emit.c */
+ if (params_uploaded & 1) {
+ param += 4;
+ params_uploaded++;
+ }
+
+ if (vp->use_const_buffer) {
+ for (i = 0; i < vp->program.Base.Parameters->NumParameters; i++) {
+ if (brw->vs.constant_map[i] != -1) {
+ memcpy(param + brw->vs.constant_map[i] * 4,
+ vp->program.Base.Parameters->ParameterValues[i],
+ 4 * sizeof(float));
+ params_uploaded++;
+ }
+ }
+ } else {
+ for (i = 0; i < nr_params; i++) {
+ memcpy(param, vp->program.Base.Parameters->ParameterValues[i],
+ 4 * sizeof(float));
+ param += 4;
+ params_uploaded++;
+ }
+ }
+
+ if (0) {
+ printf("VS constant buffer:\n");
+ for (i = 0; i < params_uploaded; i++) {
+ float *buf = (float *)constant_bo->virtual + i * 4;
+ printf("%d: %f %f %f %f\n",
+ i, buf[0], buf[1], buf[2], buf[3]);
+ }
+ }
+
drm_intel_gem_bo_unmap_gtt(constant_bo);
BEGIN_BATCH(5);
@@ -79,7 +123,7 @@ upload_vs_state(struct brw_context *brw)
(5 - 2));
OUT_RELOC(constant_bo,
I915_GEM_DOMAIN_RENDER, 0, /* XXX: bad domain */
- ALIGN(nr_params, 2) / 2 - 1);
+ ALIGN(params_uploaded, 2) / 2 - 1);
OUT_BATCH(0);
OUT_BATCH(0);
OUT_BATCH(0);
@@ -91,7 +135,7 @@ upload_vs_state(struct brw_context *brw)
BEGIN_BATCH(6);
OUT_BATCH(CMD_3D_VS_STATE << 16 | (6 - 2));
OUT_RELOC(brw->vs.prog_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- OUT_BATCH(GEN6_VS_SPF_MODE | (0 << GEN6_VS_SAMPLER_COUNT_SHIFT) |
+ OUT_BATCH((0 << GEN6_VS_SAMPLER_COUNT_SHIFT) |
(brw->vs.nr_surfaces << GEN6_VS_BINDING_TABLE_ENTRY_COUNT_SHIFT));
OUT_BATCH(0); /* scratch space base offset */
OUT_BATCH((1 << GEN6_VS_DISPATCH_START_GRF_SHIFT) |
diff --git a/src/mesa/drivers/dri/i965/gen6_wm_state.c b/src/mesa/drivers/dri/i965/gen6_wm_state.c
index 21059be965..ea5418bacf 100644
--- a/src/mesa/drivers/dri/i965/gen6_wm_state.c
+++ b/src/mesa/drivers/dri/i965/gen6_wm_state.c
@@ -63,7 +63,8 @@ prepare_wm_constants(struct brw_context *brw)
drm_intel_gem_bo_map_gtt(brw->wm.push_const_bo);
constants = brw->wm.push_const_bo->virtual;
for (i = 0; i < brw->wm.prog_data->nr_params; i++) {
- constants[i] = *brw->wm.prog_data->param[i];
+ constants[i] = convert_param(brw->wm.prog_data->param_convert[i],
+ *brw->wm.prog_data->param[i]);
}
drm_intel_gem_bo_unmap_gtt(brw->wm.push_const_bo);
}
@@ -72,7 +73,7 @@ prepare_wm_constants(struct brw_context *brw)
const struct brw_tracked_state gen6_wm_constants = {
.dirty = {
.mesa = _NEW_PROGRAM_CONSTANTS,
- .brw = 0,
+ .brw = BRW_NEW_FRAGMENT_PROGRAM,
.cache = 0,
},
.prepare = prepare_wm_constants,
@@ -87,7 +88,7 @@ upload_wm_state(struct brw_context *brw)
brw_fragment_program_const(brw->fragment_program);
uint32_t dw2, dw4, dw5, dw6;
- if (fp->use_const_buffer || brw->wm.prog_data->nr_params == 0) {
+ if (brw->wm.prog_data->nr_params == 0) {
/* Disable the push constant buffers. */
BEGIN_BATCH(5);
OUT_BATCH(CMD_3D_CONSTANT_PS_STATE << 16 | (5 - 2));
@@ -115,7 +116,7 @@ upload_wm_state(struct brw_context *brw)
dw5 |= GEN6_WM_LINE_AA_WIDTH_1_0;
dw5 |= GEN6_WM_LINE_END_CAP_AA_WIDTH_0_5;
- /* BRW_NEW_NR_SURFACES */
+ /* BRW_NEW_NR_WM_SURFACES */
dw2 |= brw->wm.nr_surfaces << GEN6_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT;
/* CACHE_NEW_SAMPLER */
diff --git a/src/mesa/drivers/dri/i965/intel_structs.h b/src/mesa/drivers/dri/i965/intel_structs.h
deleted file mode 100644
index 522e3bd92c..0000000000
--- a/src/mesa/drivers/dri/i965/intel_structs.h
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef INTEL_STRUCTS_H
-#define INTEL_STRUCTS_H
-
-struct br0 {
- GLuint length:8;
- GLuint pad0:3;
- GLuint dst_tiled:1;
- GLuint pad1:8;
- GLuint write_rgb:1;
- GLuint write_alpha:1;
- GLuint opcode:7;
- GLuint client:3;
-};
-
-
-struct br13 {
- GLint dest_pitch:16;
- GLuint rop:8;
- GLuint color_depth:2;
- GLuint pad1:3;
- GLuint mono_source_transparency:1;
- GLuint clipping_enable:1;
- GLuint pad0:1;
-};
-
-
-
-/* This is an attempt to move some of the 2D interaction in this
- * driver to using structs for packets rather than a bunch of #defines
- * and dwords.
- */
-struct xy_color_blit {
- struct br0 br0;
- struct br13 br13;
-
- struct {
- GLuint dest_x1:16;
- GLuint dest_y1:16;
- } dw2;
-
- struct {
- GLuint dest_x2:16;
- GLuint dest_y2:16;
- } dw3;
-
- GLuint dest_base_addr;
- GLuint color;
-};
-
-struct xy_src_copy_blit {
- struct br0 br0;
- struct br13 br13;
-
- struct {
- GLuint dest_x1:16;
- GLuint dest_y1:16;
- } dw2;
-
- struct {
- GLuint dest_x2:16;
- GLuint dest_y2:16;
- } dw3;
-
- GLuint dest_base_addr;
-
- struct {
- GLuint src_x1:16;
- GLuint src_y1:16;
- } dw5;
-
- struct {
- GLint src_pitch:16;
- GLuint pad:16;
- } dw6;
-
- GLuint src_base_addr;
-};
-
-struct xy_setup_blit {
- struct br0 br0;
- struct br13 br13;
-
- struct {
- GLuint clip_x1:16;
- GLuint clip_y1:16;
- } dw2;
-
- struct {
- GLuint clip_x2:16;
- GLuint clip_y2:16;
- } dw3;
-
- GLuint dest_base_addr;
- GLuint background_color;
- GLuint foreground_color;
- GLuint pattern_base_addr;
-};
-
-
-struct xy_text_immediate_blit {
- struct {
- GLuint length:8;
- GLuint pad2:3;
- GLuint dst_tiled:1;
- GLuint pad1:4;
- GLuint byte_packed:1;
- GLuint pad0:5;
- GLuint opcode:7;
- GLuint client:3;
- } dw0;
-
- struct {
- GLuint dest_x1:16;
- GLuint dest_y1:16;
- } dw1;
-
- struct {
- GLuint dest_x2:16;
- GLuint dest_y2:16;
- } dw2;
-
- /* Src bitmap data follows as inline dwords.
- */
-};
-
-
-#define CLIENT_2D 0x2
-#define OPCODE_XY_SETUP_BLT 0x1
-#define OPCODE_XY_COLOR_BLT 0x50
-#define OPCODE_XY_TEXT_IMMEDIATE_BLT 0x31
-
-#endif
diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c b/src/mesa/drivers/dri/intel/intel_batchbuffer.c
index 9b39823917..4b498f8c5b 100644
--- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c
+++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c
@@ -44,7 +44,9 @@ intel_batchbuffer_reset(struct intel_batchbuffer *batch)
batch->buf = drm_intel_bo_alloc(intel->bufmgr, "batchbuffer",
intel->maxBatchSize, 4096);
- batch->map = batch->buffer;
+ drm_intel_gem_bo_map_gtt(batch->buf);
+ batch->map = batch->buf->virtual;
+
batch->size = intel->maxBatchSize;
batch->ptr = batch->map;
batch->reserved_space = BATCH_RESERVED;
@@ -58,7 +60,6 @@ intel_batchbuffer_alloc(struct intel_context *intel)
struct intel_batchbuffer *batch = calloc(sizeof(*batch), 1);
batch->intel = intel;
- batch->buffer = malloc(intel->maxBatchSize);
intel_batchbuffer_reset(batch);
return batch;
@@ -67,8 +68,11 @@ intel_batchbuffer_alloc(struct intel_context *intel)
void
intel_batchbuffer_free(struct intel_batchbuffer *batch)
{
- free (batch->buffer);
- drm_intel_bo_unreference(batch->buf);
+ if (batch->map) {
+ drm_intel_gem_bo_unmap_gtt(batch->buf);
+ batch->map = NULL;
+ }
+ dri_bo_unreference(batch->buf);
batch->buf = NULL;
free(batch);
}
@@ -84,13 +88,7 @@ do_flush_locked(struct intel_batchbuffer *batch, GLuint used)
int ret = 0;
int x_off = 0, y_off = 0;
- drm_intel_bo_subdata(batch->buf, 0, used, batch->buffer);
- if (batch->state_batch_offset != batch->size) {
- drm_intel_bo_subdata(batch->buf,
- batch->state_batch_offset,
- batch->size - batch->state_batch_offset,
- batch->buffer + batch->state_batch_offset);
- }
+ drm_intel_gem_bo_unmap_gtt(batch->buf);
batch->ptr = NULL;
@@ -99,7 +97,7 @@ do_flush_locked(struct intel_batchbuffer *batch, GLuint used)
(x_off & 0xffff) | (y_off << 16));
}
- if (INTEL_DEBUG & DEBUG_BATCH) {
+ if (unlikely(INTEL_DEBUG & DEBUG_BATCH)) {
drm_intel_bo_map(batch->buf, GL_FALSE);
intel_decode(batch->buf->virtual, used / 4, batch->buf->offset,
intel->intelScreen->deviceID, GL_TRUE);
@@ -130,7 +128,7 @@ _intel_batchbuffer_flush(struct intel_batchbuffer *batch, const char *file,
if (used == 0)
return;
- if (INTEL_DEBUG & DEBUG_BATCH)
+ if (unlikely(INTEL_DEBUG & DEBUG_BATCH))
fprintf(stderr, "%s:%d: Batchbuffer flush with %db used\n", file, line,
used);
@@ -174,7 +172,7 @@ _intel_batchbuffer_flush(struct intel_batchbuffer *batch, const char *file,
do_flush_locked(batch, used);
- if (INTEL_DEBUG & DEBUG_SYNC) {
+ if (unlikely(INTEL_DEBUG & DEBUG_SYNC)) {
fprintf(stderr, "waiting for idle\n");
drm_intel_bo_map(batch->buf, GL_TRUE);
drm_intel_bo_unmap(batch->buf);
diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.h b/src/mesa/drivers/dri/intel/intel_batchbuffer.h
index ae53f45511..428c027c2f 100644
--- a/src/mesa/drivers/dri/intel/intel_batchbuffer.h
+++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.h
@@ -17,8 +17,6 @@ struct intel_batchbuffer
drm_intel_bo *buf;
- GLubyte *buffer;
-
GLubyte *map;
GLubyte *ptr;
diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c
index a74e21720f..c2917e9b07 100644
--- a/src/mesa/drivers/dri/intel/intel_blit.c
+++ b/src/mesa/drivers/dri/intel/intel_blit.c
@@ -483,8 +483,11 @@ intel_emit_linear_blit(struct intel_context *intel,
/* Blits are in a different ringbuffer so we don't use them. */
assert(intel->gen < 6);
- /* The pitch is a signed value. */
- pitch = MIN2(size, (1 << 15) - 1);
+ /* The pitch given to the GPU must be DWORD aligned, and
+ * we want width to match pitch. Max width is (1 << 15 - 1),
+ * rounding that down to the nearest DWORD is 1 << 15 - 4
+ */
+ pitch = MIN2(size, (1 << 15) - 4);
height = size / pitch;
ok = intelEmitCopyBlit(intel, 1,
pitch, src_bo, src_offset, I915_TILING_NONE,
@@ -499,6 +502,7 @@ intel_emit_linear_blit(struct intel_context *intel,
dst_offset += pitch * height;
size -= pitch * height;
assert (size < (1 << 15));
+ assert ((size & 3) == 0); /* Pitch must be DWORD aligned */
if (size != 0) {
ok = intelEmitCopyBlit(intel, 1,
size, src_bo, src_offset, I915_TILING_NONE,
diff --git a/src/mesa/drivers/dri/intel/intel_chipset.h b/src/mesa/drivers/dri/intel/intel_chipset.h
index 1e7ceed32a..4fecdbed20 100644
--- a/src/mesa/drivers/dri/intel/intel_chipset.h
+++ b/src/mesa/drivers/dri/intel/intel_chipset.h
@@ -67,6 +67,7 @@
#define PCI_CHIP_G45_G 0x2E22
#define PCI_CHIP_G41_G 0x2E32
#define PCI_CHIP_B43_G 0x2E42
+#define PCI_CHIP_B43_G1 0x2E92
#define PCI_CHIP_ILD_G 0x0042
#define PCI_CHIP_ILM_G 0x0046
@@ -93,7 +94,8 @@
devid == PCI_CHIP_Q45_G || \
devid == PCI_CHIP_G45_G || \
devid == PCI_CHIP_G41_G || \
- devid == PCI_CHIP_B43_G)
+ devid == PCI_CHIP_B43_G || \
+ devid == PCI_CHIP_B43_G1)
#define IS_GM45(devid) (devid == PCI_CHIP_GM45_GM)
#define IS_G4X(devid) (IS_G45(devid) || IS_GM45(devid))
diff --git a/src/mesa/drivers/dri/intel/intel_clear.c b/src/mesa/drivers/dri/intel/intel_clear.c
index d7814635b7..fa451f0045 100644
--- a/src/mesa/drivers/dri/intel/intel_clear.c
+++ b/src/mesa/drivers/dri/intel/intel_clear.c
@@ -58,6 +58,21 @@ static const char *buffer_names[] = {
[BUFFER_COLOR7] = "color7",
};
+static void
+debug_mask(const char *name, GLbitfield mask)
+{
+ GLuint i;
+
+ if (unlikely(INTEL_DEBUG & DEBUG_BLIT)) {
+ DBG("%s clear:", name);
+ for (i = 0; i < BUFFER_COUNT; i++) {
+ if (mask & (1 << i))
+ DBG(" %s", buffer_names[i]);
+ }
+ DBG("\n");
+ }
+}
+
/**
* Called by ctx->Driver.Clear.
*/
@@ -70,7 +85,6 @@ intelClear(struct gl_context *ctx, GLbitfield mask)
GLbitfield blit_mask = 0;
GLbitfield swrast_mask = 0;
struct gl_framebuffer *fb = ctx->DrawBuffer;
- GLuint i;
if (mask & (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_FRONT_RIGHT)) {
intel->front_buffer_dirty = GL_TRUE;
@@ -162,39 +176,17 @@ intelClear(struct gl_context *ctx, GLbitfield mask)
}
if (blit_mask) {
- if (INTEL_DEBUG & DEBUG_BLIT) {
- DBG("blit clear:");
- for (i = 0; i < BUFFER_COUNT; i++) {
- if (blit_mask & (1 << i))
- DBG(" %s", buffer_names[i]);
- }
- DBG("\n");
- }
+ debug_mask("blit", blit_mask);
intelClearWithBlit(ctx, blit_mask);
}
if (tri_mask) {
- if (INTEL_DEBUG & DEBUG_BLIT) {
- DBG("tri clear:");
- for (i = 0; i < BUFFER_COUNT; i++) {
- if (tri_mask & (1 << i))
- DBG(" %s", buffer_names[i]);
- }
- DBG("\n");
- }
-
+ debug_mask("tri", tri_mask);
_mesa_meta_Clear(&intel->ctx, tri_mask);
}
if (swrast_mask) {
- if (INTEL_DEBUG & DEBUG_BLIT) {
- DBG("swrast clear:");
- for (i = 0; i < BUFFER_COUNT; i++) {
- if (swrast_mask & (1 << i))
- DBG(" %s", buffer_names[i]);
- }
- DBG("\n");
- }
+ debug_mask("swrast", swrast_mask);
_swrast_Clear(ctx, swrast_mask);
}
}
diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index 7ace50bde9..152cdcaf37 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -155,6 +155,7 @@ intelGetString(struct gl_context * ctx, GLenum name)
chipset = "Intel(R) G41";
break;
case PCI_CHIP_B43_G:
+ case PCI_CHIP_B43_G1:
chipset = "Intel(R) B43";
break;
case PCI_CHIP_ILD_G:
@@ -249,7 +250,7 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
* thus ignore the invalidate. */
drawable->lastStamp = drawable->dri2.stamp;
- if (INTEL_DEBUG & DEBUG_DRI)
+ if (unlikely(INTEL_DEBUG & DEBUG_DRI))
fprintf(stderr, "enter %s, drawable %p\n", __func__, drawable);
screen = intel->intelScreen->driScrnPriv;
@@ -378,14 +379,14 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
if (rb->region && rb->region->name == buffers[i].name)
continue;
- if (INTEL_DEBUG & DEBUG_DRI)
+ if (unlikely(INTEL_DEBUG & DEBUG_DRI))
fprintf(stderr,
"attaching buffer %d, at %d, cpp %d, pitch %d\n",
buffers[i].name, buffers[i].attachment,
buffers[i].cpp, buffers[i].pitch);
if (buffers[i].attachment == __DRI_BUFFER_STENCIL && depth_region) {
- if (INTEL_DEBUG & DEBUG_DRI)
+ if (unlikely(INTEL_DEBUG & DEBUG_DRI))
fprintf(stderr, "(reusing depth buffer as stencil)\n");
intel_region_reference(&region, depth_region);
}
diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h
index 46d10d74ba..9d5139c000 100644
--- a/src/mesa/drivers/dri/intel/intel_context.h
+++ b/src/mesa/drivers/dri/intel/intel_context.h
@@ -98,6 +98,16 @@ extern void intelFallback(struct intel_context *intel, GLbitfield bit,
#define INTEL_MAX_FIXUP 64
+#ifndef likely
+#ifdef __GNUC__
+#define likely(expr) (__builtin_expect(expr, 1))
+#define unlikely(expr) (__builtin_expect(expr, 0))
+#else
+#define likely(expr) (expr)
+#define unlikely(expr) (expr)
+#endif
+#endif
+
struct intel_sync_object {
struct gl_sync_object Base;
@@ -180,9 +190,6 @@ struct intel_context
} prim;
GLuint stats_wm;
- GLboolean locked;
- char *prevLockFile;
- int prevLockLine;
/* Offsets of fields within the current vertex:
*/
@@ -359,10 +366,15 @@ extern int INTEL_DEBUG;
#define DEBUG_CLIP 0x8000000
#define DBG(...) do { \
- if (INTEL_DEBUG & FILE_DEBUG_FLAG) \
+ if (unlikely(INTEL_DEBUG & FILE_DEBUG_FLAG)) \
printf(__VA_ARGS__); \
} while(0)
+#define fallback_debug(...) do { \
+ if (unlikely(INTEL_DEBUG & DEBUG_FALLBACKS)) \
+ printf(__VA_ARGS__); \
+} while(0)
+
#define PCI_CHIP_845_G 0x2562
#define PCI_CHIP_I830_M 0x3577
#define PCI_CHIP_I855_GM 0x3582
diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c
index 974045730b..556a4195bd 100644
--- a/src/mesa/drivers/dri/intel/intel_extensions.c
+++ b/src/mesa/drivers/dri/intel/intel_extensions.c
@@ -55,6 +55,7 @@
#define need_GL_EXT_point_parameters
#define need_GL_EXT_provoking_vertex
#define need_GL_EXT_secondary_color
+#define need_GL_EXT_separate_shader_objects
#define need_GL_EXT_stencil_two_side
#define need_GL_EXT_timer_query
#define need_GL_APPLE_vertex_array_object
@@ -114,6 +115,7 @@ static const struct dri_extension card_extensions[] = {
{ "GL_EXT_packed_depth_stencil", NULL },
{ "GL_EXT_provoking_vertex", GL_EXT_provoking_vertex_functions },
{ "GL_EXT_secondary_color", GL_EXT_secondary_color_functions },
+ { "GL_EXT_separate_shader_objects", GL_EXT_separate_shader_objects_functions },
{ "GL_EXT_stencil_wrap", NULL },
{ "GL_EXT_texture_edge_clamp", NULL },
{ "GL_EXT_texture_env_combine", NULL },
diff --git a/src/mesa/drivers/dri/intel/intel_pixel.c b/src/mesa/drivers/dri/intel/intel_pixel.c
index 60583ef4c0..d5c35775ce 100644
--- a/src/mesa/drivers/dri/intel/intel_pixel.c
+++ b/src/mesa/drivers/dri/intel/intel_pixel.c
@@ -147,10 +147,9 @@ intel_check_blit_format(struct intel_region * region,
return GL_TRUE;
}
- if (INTEL_DEBUG & DEBUG_PIXEL)
- fprintf(stderr, "%s: bad format for blit (cpp %d, type %s format %s)\n",
- __FUNCTION__, region->cpp,
- _mesa_lookup_enum_by_nr(type), _mesa_lookup_enum_by_nr(format));
+ DBG("%s: bad format for blit (cpp %d, type %s format %s)\n",
+ __FUNCTION__, region->cpp,
+ _mesa_lookup_enum_by_nr(type), _mesa_lookup_enum_by_nr(format));
return GL_FALSE;
}
diff --git a/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c b/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c
index 63fb4b37b1..e7356a6da0 100644
--- a/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c
+++ b/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c
@@ -113,9 +113,8 @@ static GLuint get_bitmap_rect(GLsizei width, GLsizei height,
GLint incr;
GLuint count = 0;
- if (INTEL_DEBUG & DEBUG_PIXEL)
- printf("%s %d,%d %dx%d bitmap %dx%d skip %d src_offset %d mask %d\n",
- __FUNCTION__, x,y,w,h,width,height,unpack->SkipPixels, src_offset, mask);
+ DBG("%s %d,%d %dx%d bitmap %dx%d skip %d src_offset %d mask %d\n",
+ __FUNCTION__, x,y,w,h,width,height,unpack->SkipPixels, src_offset, mask);
if (invert) {
first = h-1;
@@ -285,7 +284,7 @@ do_blit_bitmap( struct gl_context *ctx,
}
out:
- if (INTEL_DEBUG & DEBUG_SYNC)
+ if (unlikely(INTEL_DEBUG & DEBUG_SYNC))
intel_batchbuffer_flush(intel->batch);
if (_mesa_is_bufferobj(unpack->BufferObj)) {
@@ -299,6 +298,7 @@ out:
return GL_TRUE;
}
+
/* There are a large number of possible ways to implement bitmap on
* this hardware, most of them have some sort of drawback. Here are a
* few that spring to mind:
diff --git a/src/mesa/drivers/dri/intel/intel_pixel_copy.c b/src/mesa/drivers/dri/intel/intel_pixel_copy.c
index c6b36ed429..a7ca780e94 100644
--- a/src/mesa/drivers/dri/intel/intel_pixel_copy.c
+++ b/src/mesa/drivers/dri/intel/intel_pixel_copy.c
@@ -119,8 +119,7 @@ do_blit_copypixels(struct gl_context * ctx,
GLboolean flip = GL_FALSE;
if (type == GL_DEPTH || type == GL_STENCIL) {
- if (INTEL_DEBUG & DEBUG_FALLBACKS)
- fprintf(stderr, "glCopyPixels() fallback: GL_DEPTH || GL_STENCIL\n");
+ fallback_debug("glCopyPixels() fallback: GL_DEPTH || GL_STENCIL\n");
return GL_FALSE;
}
@@ -203,8 +202,7 @@ intelCopyPixels(struct gl_context * ctx,
GLsizei width, GLsizei height,
GLint destx, GLint desty, GLenum type)
{
- if (INTEL_DEBUG & DEBUG_PIXEL)
- fprintf(stderr, "%s\n", __FUNCTION__);
+ DBG("%s\n", __FUNCTION__);
if (do_blit_copypixels(ctx, srcx, srcy, width, height, destx, desty, type))
return;
diff --git a/src/mesa/drivers/dri/intel/intel_pixel_read.c b/src/mesa/drivers/dri/intel/intel_pixel_read.c
index b249f9a5a0..54da29236d 100644
--- a/src/mesa/drivers/dri/intel/intel_pixel_read.c
+++ b/src/mesa/drivers/dri/intel/intel_pixel_read.c
@@ -42,6 +42,8 @@
#include "intel_pixel.h"
#include "intel_buffer_objects.h"
+#define FILE_DEBUG_FLAG DEBUG_PIXEL
+
/* For many applications, the new ability to pull the source buffers
* back out of the GTT and then do the packing/conversion operations
* in software will be as much of an improvement as trying to get the
@@ -79,8 +81,7 @@ do_blit_readpixels(struct gl_context * ctx,
GLboolean all;
GLint dst_x, dst_y;
- if (INTEL_DEBUG & DEBUG_PIXEL)
- printf("%s\n", __FUNCTION__);
+ DBG("%s\n", __FUNCTION__);
if (!src)
return GL_FALSE;
@@ -88,22 +89,19 @@ do_blit_readpixels(struct gl_context * ctx,
if (!_mesa_is_bufferobj(pack->BufferObj)) {
/* PBO only for now:
*/
- if (INTEL_DEBUG & DEBUG_PIXEL)
- printf("%s - not PBO\n", __FUNCTION__);
+ DBG("%s - not PBO\n", __FUNCTION__);
return GL_FALSE;
}
if (ctx->_ImageTransferState ||
!intel_check_blit_format(src, format, type)) {
- if (INTEL_DEBUG & DEBUG_PIXEL)
- printf("%s - bad format for blit\n", __FUNCTION__);
+ DBG("%s - bad format for blit\n", __FUNCTION__);
return GL_FALSE;
}
if (pack->Alignment != 1 || pack->SwapBytes || pack->LsbFirst) {
- if (INTEL_DEBUG & DEBUG_PIXEL)
- printf("%s: bad packing params\n", __FUNCTION__);
+ DBG("%s: bad packing params\n", __FUNCTION__);
return GL_FALSE;
}
@@ -113,8 +111,7 @@ do_blit_readpixels(struct gl_context * ctx,
rowLength = width;
if (pack->Invert) {
- if (INTEL_DEBUG & DEBUG_PIXEL)
- printf("%s: MESA_PACK_INVERT not done yet\n", __FUNCTION__);
+ DBG("%s: MESA_PACK_INVERT not done yet\n", __FUNCTION__);
return GL_FALSE;
}
else {
@@ -158,8 +155,7 @@ do_blit_readpixels(struct gl_context * ctx,
return GL_FALSE;
}
- if (INTEL_DEBUG & DEBUG_PIXEL)
- printf("%s - DONE\n", __FUNCTION__);
+ DBG("%s - DONE\n", __FUNCTION__);
return GL_TRUE;
}
@@ -173,8 +169,7 @@ intelReadPixels(struct gl_context * ctx,
struct intel_context *intel = intel_context(ctx);
GLboolean dirty;
- if (INTEL_DEBUG & DEBUG_PIXEL)
- fprintf(stderr, "%s\n", __FUNCTION__);
+ DBG("%s\n", __FUNCTION__);
intel_flush(ctx);
@@ -188,8 +183,7 @@ intelReadPixels(struct gl_context * ctx,
(ctx, x, y, width, height, format, type, pack, pixels))
return;
- if (INTEL_DEBUG & DEBUG_PIXEL)
- printf("%s: fallback to swrast\n", __FUNCTION__);
+ fallback_debug("%s: fallback to swrast\n", __FUNCTION__);
/* Update Mesa state before calling down into _swrast_ReadPixels, as
* the spans code requires the computed buffer states to be up to date,
diff --git a/src/mesa/drivers/dri/intel/intel_tex.c b/src/mesa/drivers/dri/intel/intel_tex.c
index 3d9a2549db..2c21ea0576 100644
--- a/src/mesa/drivers/dri/intel/intel_tex.c
+++ b/src/mesa/drivers/dri/intel/intel_tex.c
@@ -61,88 +61,6 @@ intelFreeTextureImageData(struct gl_context * ctx, struct gl_texture_image *texI
}
}
-
-/* The system memcpy (at least on ubuntu 5.10) has problems copying
- * to agp (writecombined) memory from a source which isn't 64-byte
- * aligned - there is a 4x performance falloff.
- *
- * The x86 __memcpy is immune to this but is slightly slower
- * (10%-ish) than the system memcpy.
- *
- * The sse_memcpy seems to have a slight cliff at 64/32 bytes, but
- * isn't much faster than x86_memcpy for agp copies.
- *
- * TODO: switch dynamically.
- */
-static void *
-do_memcpy(void *dest, const void *src, size_t n)
-{
- if ((((unsigned long) src) & 63) || (((unsigned long) dest) & 63)) {
- return __memcpy(dest, src, n);
- }
- else
- return memcpy(dest, src, n);
-}
-
-
-#if DO_DEBUG && !defined(__ia64__)
-
-#ifndef __x86_64__
-static unsigned
-fastrdtsc(void)
-{
- unsigned eax;
- __asm__ volatile ("\t"
- "pushl %%ebx\n\t"
- "cpuid\n\t" ".byte 0x0f, 0x31\n\t"
- "popl %%ebx\n":"=a" (eax)
- :"0"(0)
- :"ecx", "edx", "cc");
-
- return eax;
-}
-#else
-static unsigned
-fastrdtsc(void)
-{
- unsigned eax;
- __asm__ volatile ("\t" "cpuid\n\t" ".byte 0x0f, 0x31\n\t":"=a" (eax)
- :"0"(0)
- :"ecx", "edx", "ebx", "cc");
-
- return eax;
-}
-#endif
-
-static unsigned
-time_diff(unsigned t, unsigned t2)
-{
- return ((t < t2) ? t2 - t : 0xFFFFFFFFU - (t - t2 - 1));
-}
-
-
-static void *
-timed_memcpy(void *dest, const void *src, size_t n)
-{
- void *ret;
- unsigned t1, t2;
- double rate;
-
- if ((((unsigned) src) & 63) || (((unsigned) dest) & 63))
- printf("Warning - non-aligned texture copy!\n");
-
- t1 = fastrdtsc();
- ret = do_memcpy(dest, src, n);
- t2 = fastrdtsc();
-
- rate = time_diff(t1, t2);
- rate /= (double) n;
- printf("timed_memcpy: %u %u --> %f clocks/byte\n", t1, t2, rate);
- return ret;
-}
-#endif /* DO_DEBUG */
-
-
/**
* Called via ctx->Driver.GenerateMipmap()
* This is basically a wrapper for _mesa_meta_GenerateMipmap() which checks
@@ -158,8 +76,7 @@ intelGenerateMipmap(struct gl_context *ctx, GLenum target,
struct intel_context *intel = intel_context(ctx);
struct intel_texture_object *intelObj = intel_texture_object(texObj);
- if (INTEL_DEBUG & DEBUG_FALLBACKS)
- fprintf(stderr, "%s - fallback to swrast\n", __FUNCTION__);
+ fallback_debug("%s - fallback to swrast\n", __FUNCTION__);
intel_tex_map_level_images(intel, intelObj, texObj->BaseLevel);
_mesa_generate_mipmap(ctx, target, texObj);
@@ -203,11 +120,4 @@ intelInitTextureFuncs(struct dd_function_table *functions)
functions->NewTextureImage = intelNewTextureImage;
functions->DeleteTexture = intelDeleteTextureObject;
functions->FreeTexImageData = intelFreeTextureImageData;
-
-#if DO_DEBUG && !defined(__ia64__)
- if (INTEL_DEBUG & DEBUG_BUFMGR)
- functions->TextureMemCpy = timed_memcpy;
- else
-#endif
- functions->TextureMemCpy = do_memcpy;
}
diff --git a/src/mesa/drivers/dri/intel/intel_tex_copy.c b/src/mesa/drivers/dri/intel/intel_tex_copy.c
index 2d046fd52d..87b31bf078 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_copy.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_copy.c
@@ -30,7 +30,6 @@
#include "main/image.h"
#include "main/teximage.h"
#include "main/texstate.h"
-#include "main/mipmap.h"
#include "drivers/common/meta.h"
@@ -105,16 +104,15 @@ do_copy_texsubimage(struct intel_context *intel,
const struct intel_region *src = get_teximage_source(intel, internalFormat);
if (!intelImage->mt || !src || !src->buffer) {
- if (INTEL_DEBUG & DEBUG_FALLBACKS)
+ if (unlikely(INTEL_DEBUG & DEBUG_FALLBACKS))
fprintf(stderr, "%s fail %p %p (0x%08x)\n",
__FUNCTION__, intelImage->mt, src, internalFormat);
return GL_FALSE;
}
if (intelImage->mt->cpp != src->cpp) {
- if (INTEL_DEBUG & DEBUG_FALLBACKS)
- fprintf(stderr, "%s fail %d vs %d cpp\n",
- __FUNCTION__, intelImage->mt->cpp, src->cpp);
+ fallback_debug("%s fail %d vs %d cpp\n",
+ __FUNCTION__, intelImage->mt->cpp, src->cpp);
return GL_FALSE;
}
@@ -212,8 +210,7 @@ intelCopyTexImage1D(struct gl_context * ctx, GLenum target, GLint level,
return;
fail:
- if (INTEL_DEBUG & DEBUG_FALLBACKS)
- fprintf(stderr, "%s - fallback to swrast\n", __FUNCTION__);
+ fallback_debug("%s - fallback to swrast\n", __FUNCTION__);
_mesa_meta_CopyTexImage1D(ctx, target, level, internalFormat, x, y,
width, border);
}
@@ -261,8 +258,7 @@ intelCopyTexImage2D(struct gl_context * ctx, GLenum target, GLint level,
return;
fail:
- if (INTEL_DEBUG & DEBUG_FALLBACKS)
- fprintf(stderr, "%s - fallback to swrast\n", __FUNCTION__);
+ fallback_debug("%s - fallback to swrast\n", __FUNCTION__);
_mesa_meta_CopyTexImage2D(ctx, target, level, internalFormat, x, y,
width, height, border);
}
@@ -287,8 +283,7 @@ intelCopyTexSubImage1D(struct gl_context * ctx, GLenum target, GLint level,
if (!do_copy_texsubimage(intel_context(ctx), target,
intel_texture_image(texImage),
internalFormat, xoffset, 0, x, y, width, 1)) {
- if (INTEL_DEBUG & DEBUG_FALLBACKS)
- fprintf(stderr, "%s - fallback to swrast\n", __FUNCTION__);
+ fallback_debug("%s - fallback to swrast\n", __FUNCTION__);
_mesa_meta_CopyTexSubImage1D(ctx, target, level, xoffset, x, y, width);
}
}
@@ -314,8 +309,7 @@ intelCopyTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level,
internalFormat,
xoffset, yoffset, x, y, width, height)) {
- if (INTEL_DEBUG & DEBUG_FALLBACKS)
- fprintf(stderr, "%s - fallback to swrast\n", __FUNCTION__);
+ fallback_debug("%s - fallback to swrast\n", __FUNCTION__);
_mesa_meta_CopyTexSubImage2D(ctx, target, level,
xoffset, yoffset, x, y, width, height);
}
diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c
index 35f3d7d382..41cdbfd2cb 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_image.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_image.c
@@ -66,7 +66,6 @@ guess_and_alloc_mipmap_tree(struct intel_context *intel,
GLuint width = intelImage->base.Width;
GLuint height = intelImage->base.Height;
GLuint depth = intelImage->base.Depth;
- GLuint l2width, l2height, l2depth;
GLuint i, comp_byte = 0;
GLuint texelBytes;
@@ -114,10 +113,7 @@ guess_and_alloc_mipmap_tree(struct intel_context *intel,
lastLevel = firstLevel;
}
else {
- l2width = logbase2(width);
- l2height = logbase2(height);
- l2depth = logbase2(depth);
- lastLevel = firstLevel + MAX2(MAX2(l2width, l2height), l2depth);
+ lastLevel = firstLevel + logbase2(MAX2(MAX2(width, height), depth));
}
assert(!intelObj->mt);
@@ -347,21 +343,6 @@ intelTexImage(struct gl_context * ctx,
texImage->Data = NULL;
}
- /* If this is the only texture image in the tree, could call
- * bmBufferData with NULL data to free the old block and avoid
- * waiting on any outstanding fences.
- */
- if (intelObj->mt &&
- intelObj->mt->first_level == level &&
- intelObj->mt->last_level == level &&
- intelObj->mt->target != GL_TEXTURE_CUBE_MAP_ARB &&
- !intel_miptree_match_image(intelObj->mt, &intelImage->base)) {
-
- DBG("release it\n");
- intel_miptree_release(intel, &intelObj->mt);
- assert(!intelObj->mt);
- }
-
if (!intelObj->mt) {
guess_and_alloc_mipmap_tree(intel, intelObj, intelImage, pixels == NULL);
if (!intelObj->mt) {
@@ -701,6 +682,7 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
struct gl_texture_object *texObj;
struct gl_texture_image *texImage;
int level = 0, internalFormat;
+ gl_format texFormat;
texObj = _mesa_get_current_tex_object(ctx, target);
intelObj = intel_texture_object(texObj);
@@ -719,10 +701,14 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
if (rb->region == NULL)
return;
- if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
+ if (texture_format == __DRI_TEXTURE_FORMAT_RGB) {
internalFormat = GL_RGB;
- else
+ texFormat = MESA_FORMAT_XRGB8888;
+ }
+ else {
internalFormat = GL_RGBA;
+ texFormat = MESA_FORMAT_ARGB8888;
+ }
mt = intel_miptree_create_for_region(intel, target,
internalFormat,
@@ -743,16 +729,13 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
intel_miptree_release(intel, &intelObj->mt);
intelObj->mt = mt;
+
_mesa_init_teximage_fields(&intel->ctx, target, texImage,
rb->region->width, rb->region->height, 1,
- 0, internalFormat);
+ 0, internalFormat, texFormat);
intelImage->face = target_to_face(target);
intelImage->level = level;
- if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
- texImage->TexFormat = MESA_FORMAT_XRGB8888;
- else
- texImage->TexFormat = MESA_FORMAT_ARGB8888;
texImage->RowStride = rb->region->pitch;
intel_miptree_reference(&intelImage->mt, intelObj->mt);
@@ -808,11 +791,10 @@ intel_image_target_texture_2d(struct gl_context *ctx, GLenum target,
intelObj->mt = mt;
_mesa_init_teximage_fields(&intel->ctx, target, texImage,
image->region->width, image->region->height, 1,
- 0, image->internal_format);
+ 0, image->internal_format, image->format);
intelImage->face = target_to_face(target);
intelImage->level = 0;
- texImage->TexFormat = image->format;
texImage->RowStride = image->region->pitch;
intel_miptree_reference(&intelImage->mt, intelObj->mt);
diff --git a/src/mesa/drivers/dri/nouveau/Makefile b/src/mesa/drivers/dri/nouveau/Makefile
index 7be19b26fd..3b506a91ff 100644
--- a/src/mesa/drivers/dri/nouveau/Makefile
+++ b/src/mesa/drivers/dri/nouveau/Makefile
@@ -19,6 +19,8 @@ DRIVER_SOURCES = \
nouveau_bo_state.c \
nouveau_texture.c \
nouveau_surface.c \
+ nouveau_scratch.c \
+ nouveau_array.c \
nv04_context.c \
nv04_render.c \
nv04_state_fb.c \
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_array.c b/src/mesa/drivers/dri/nouveau/nouveau_array.c
new file mode 100644
index 0000000000..17e6d163a0
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nouveau_array.c
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2009-2010 Francisco Jerez.
+ * 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 "main/bufferobj.h"
+#include "nouveau_driver.h"
+#include "nouveau_array.h"
+#include "nouveau_bufferobj.h"
+
+static void
+get_array_extract(struct nouveau_array *a, extract_u_t *extract_u,
+ extract_f_t *extract_f)
+{
+#define EXTRACT(in_t, out_t, k) \
+ ({ \
+ auto out_t f(struct nouveau_array *, int, int); \
+ out_t f(struct nouveau_array *a, int i, int j) { \
+ in_t x = ((in_t *)(a->buf + i * a->stride))[j]; \
+ \
+ return (out_t)x / (k); \
+ }; \
+ f; \
+ });
+
+ switch (a->type) {
+ case GL_BYTE:
+ *extract_u = EXTRACT(char, unsigned, 1);
+ *extract_f = EXTRACT(char, float, SCHAR_MAX);
+ break;
+ case GL_UNSIGNED_BYTE:
+ *extract_u = EXTRACT(unsigned char, unsigned, 1);
+ *extract_f = EXTRACT(unsigned char, float, UCHAR_MAX);
+ break;
+ case GL_SHORT:
+ *extract_u = EXTRACT(short, unsigned, 1);
+ *extract_f = EXTRACT(short, float, SHRT_MAX);
+ break;
+ case GL_UNSIGNED_SHORT:
+ *extract_u = EXTRACT(unsigned short, unsigned, 1);
+ *extract_f = EXTRACT(unsigned short, float, USHRT_MAX);
+ break;
+ case GL_INT:
+ *extract_u = EXTRACT(int, unsigned, 1);
+ *extract_f = EXTRACT(int, float, INT_MAX);
+ break;
+ case GL_UNSIGNED_INT:
+ *extract_u = EXTRACT(unsigned int, unsigned, 1);
+ *extract_f = EXTRACT(unsigned int, float, UINT_MAX);
+ break;
+ case GL_FLOAT:
+ *extract_u = EXTRACT(float, unsigned, 1.0 / UINT_MAX);
+ *extract_f = EXTRACT(float, float, 1);
+ break;
+ default:
+ assert(0);
+ }
+}
+
+void
+nouveau_init_array(struct nouveau_array *a, int attr, int stride,
+ int fields, int type, struct gl_buffer_object *obj,
+ const void *ptr, GLboolean map)
+{
+ a->attr = attr;
+ a->stride = stride;
+ a->fields = fields;
+ a->type = type;
+ a->buf = NULL;
+
+ if (obj) {
+ if (nouveau_bufferobj_hw(obj)) {
+ struct nouveau_bufferobj *nbo =
+ to_nouveau_bufferobj(obj);
+
+ nouveau_bo_ref(nbo->bo, &a->bo);
+ a->offset = (intptr_t)ptr;
+
+ if (map) {
+ nouveau_bo_map(a->bo, NOUVEAU_BO_RD);
+ a->buf = a->bo->map + a->offset;
+ }
+
+ } else {
+ nouveau_bo_ref(NULL, &a->bo);
+ a->offset = 0;
+
+ if (map)
+ a->buf = ADD_POINTERS(
+ nouveau_bufferobj_sys(obj), ptr);
+ }
+ }
+
+ if (a->buf)
+ get_array_extract(a, &a->extract_u, &a->extract_f);
+}
+
+void
+nouveau_deinit_array(struct nouveau_array *a)
+{
+ if (a->bo) {
+ if (a->bo->map)
+ nouveau_bo_unmap(a->bo);
+ }
+
+ a->buf = NULL;
+ a->fields = 0;
+}
+
+void
+nouveau_cleanup_array(struct nouveau_array *a)
+{
+ nouveau_deinit_array(a);
+ nouveau_bo_ref(NULL, &a->bo);
+}
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_array.h b/src/mesa/drivers/dri/nouveau/nouveau_array.h
new file mode 100644
index 0000000000..ad3d69b33d
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nouveau_array.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2009-2010 Francisco Jerez.
+ * 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.
+ *
+ */
+
+#ifndef __NOUVEAU_ARRAY_H__
+#define __NOUVEAU_ARRAY_H__
+
+struct nouveau_array;
+
+typedef unsigned (*extract_u_t)(struct nouveau_array *, int, int);
+typedef float (*extract_f_t)(struct nouveau_array *, int, int);
+
+struct nouveau_array {
+ int attr;
+ int stride, fields, type;
+
+ struct nouveau_bo *bo;
+ unsigned offset;
+ const void *buf;
+
+ extract_u_t extract_u;
+ extract_f_t extract_f;
+};
+
+void
+nouveau_init_array(struct nouveau_array *a, int attr, int stride,
+ int fields, int type, struct gl_buffer_object *obj,
+ const void *ptr, GLboolean map);
+
+void
+nouveau_deinit_array(struct nouveau_array *a);
+
+void
+nouveau_cleanup_array(struct nouveau_array *a);
+
+#endif
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c
index f31772fe1d..7eef8c1ee8 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.c
@@ -126,13 +126,13 @@ void
nouveau_bo_context_reset(struct nouveau_bo_context *bctx)
{
struct nouveau_bo_state *s = &to_nouveau_context(bctx->ctx)->bo;
- int i;
-
- for (i = 0; i < bctx->count; i++)
- nouveau_bo_ref(NULL, &bctx->marker[i].bo);
+ int i, n = bctx->count;
- s->count -= bctx->count;
+ s->count -= n;
bctx->count = 0;
+
+ for (i = 0; i < n; i++)
+ nouveau_bo_ref(NULL, &bctx->marker[i].bo);
}
GLboolean
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h
index 6119a8336e..388a16a56e 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_bo_state.h
@@ -29,7 +29,7 @@
enum {
NOUVEAU_BO_CONTEXT_FRAMEBUFFER = 0,
- NOUVEAU_BO_CONTEXT_LMA_DEPTH,
+ NOUVEAU_BO_CONTEXT_HIERZ,
NOUVEAU_BO_CONTEXT_SURFACE,
NOUVEAU_BO_CONTEXT_TEXTURE0,
NOUVEAU_BO_CONTEXT_TEXTURE1,
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c
index ad6e5bd805..e60b91f64b 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c
@@ -30,6 +30,23 @@
#include "main/bufferobj.h"
+static inline char *
+get_bufferobj_map(struct gl_buffer_object *obj, unsigned flags)
+{
+ struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj);
+ void *map = NULL;
+
+ if (nbo->sys) {
+ map = nbo->sys;
+ } else if (nbo->bo) {
+ nouveau_bo_map(nbo->bo, flags);
+ map = nbo->bo->map;
+ nouveau_bo_unmap(nbo->bo);
+ }
+
+ return map;
+}
+
static struct gl_buffer_object *
nouveau_bufferobj_new(struct gl_context *ctx, GLuint buffer, GLenum target)
{
@@ -50,6 +67,7 @@ nouveau_bufferobj_del(struct gl_context *ctx, struct gl_buffer_object *obj)
struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj);
nouveau_bo_ref(NULL, &nbo->bo);
+ FREE(nbo->sys);
FREE(nbo);
}
@@ -64,18 +82,27 @@ nouveau_bufferobj_data(struct gl_context *ctx, GLenum target, GLsizeiptrARB size
obj->Size = size;
obj->Usage = usage;
+ /* Free previous storage */
nouveau_bo_ref(NULL, &nbo->bo);
- ret = nouveau_bo_new(context_dev(ctx),
- NOUVEAU_BO_GART | NOUVEAU_BO_MAP, 0,
- size, &nbo->bo);
- assert(!ret);
-
- if (data) {
- nouveau_bo_map(nbo->bo, NOUVEAU_BO_WR);
- memcpy(nbo->bo->map, data, size);
- nouveau_bo_unmap(nbo->bo);
+ FREE(nbo->sys);
+
+ if (target == GL_ELEMENT_ARRAY_BUFFER_ARB ||
+ (size < 512 && usage == GL_DYNAMIC_DRAW_ARB) ||
+ context_chipset(ctx) < 0x10) {
+ /* Heuristic: keep it in system ram */
+ nbo->sys = MALLOC(size);
+
+ } else {
+ /* Get a hardware BO */
+ ret = nouveau_bo_new(context_dev(ctx),
+ NOUVEAU_BO_GART | NOUVEAU_BO_MAP, 0,
+ size, &nbo->bo);
+ assert(!ret);
}
+ if (data)
+ memcpy(get_bufferobj_map(obj, NOUVEAU_BO_WR), data, size);
+
return GL_TRUE;
}
@@ -84,11 +111,7 @@ nouveau_bufferobj_subdata(struct gl_context *ctx, GLenum target, GLintptrARB off
GLsizeiptrARB size, const GLvoid *data,
struct gl_buffer_object *obj)
{
- struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj);
-
- nouveau_bo_map(nbo->bo, NOUVEAU_BO_WR);
- memcpy(nbo->bo->map + offset, data, size);
- nouveau_bo_unmap(nbo->bo);
+ memcpy(get_bufferobj_map(obj, NOUVEAU_BO_WR) + offset, data, size);
}
static void
@@ -96,44 +119,48 @@ nouveau_bufferobj_get_subdata(struct gl_context *ctx, GLenum target, GLintptrARB
GLsizeiptrARB size, GLvoid *data,
struct gl_buffer_object *obj)
{
- struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj);
-
- nouveau_bo_map(nbo->bo, NOUVEAU_BO_RD);
- memcpy(data, nbo->bo->map + offset, size);
- nouveau_bo_unmap(nbo->bo);
+ memcpy(data, get_bufferobj_map(obj, NOUVEAU_BO_RD) + offset, size);
}
static void *
nouveau_bufferobj_map(struct gl_context *ctx, GLenum target, GLenum access,
struct gl_buffer_object *obj)
{
- return ctx->Driver.MapBufferRange(ctx, target, 0, obj->Size, access,
+ unsigned flags = 0;
+
+ if (access == GL_READ_ONLY_ARB ||
+ access == GL_READ_WRITE_ARB)
+ flags |= GL_MAP_READ_BIT;
+ if (access == GL_WRITE_ONLY_ARB ||
+ access == GL_READ_WRITE_ARB)
+ flags |= GL_MAP_WRITE_BIT;
+
+ return ctx->Driver.MapBufferRange(ctx, target, 0, obj->Size, flags,
obj);
}
static void *
nouveau_bufferobj_map_range(struct gl_context *ctx, GLenum target, GLintptr offset,
- GLsizeiptr length, GLenum access,
+ GLsizeiptr length, GLbitfield access,
struct gl_buffer_object *obj)
{
- struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj);
- uint32_t flags = 0;
+ unsigned flags = 0;
+ char *map;
assert(!obj->Pointer);
- if (!nbo->bo)
- return NULL;
-
- if (access == GL_READ_ONLY_ARB ||
- access == GL_READ_WRITE_ARB)
+ if (access & GL_MAP_READ_BIT)
flags |= NOUVEAU_BO_RD;
- if (access == GL_WRITE_ONLY_ARB ||
- access == GL_READ_WRITE_ARB)
+ if (access & GL_MAP_WRITE_BIT)
flags |= NOUVEAU_BO_WR;
+ if (access & GL_MAP_UNSYNCHRONIZED_BIT)
+ flags |= NOUVEAU_BO_NOSYNC;
- nouveau_bo_map_range(nbo->bo, offset, length, flags);
+ map = get_bufferobj_map(obj, flags);
+ if (!map)
+ return NULL;
- obj->Pointer = nbo->bo->map;
+ obj->Pointer = map + offset;
obj->Offset = offset;
obj->Length = length;
obj->AccessFlags = access;
@@ -144,12 +171,8 @@ nouveau_bufferobj_map_range(struct gl_context *ctx, GLenum target, GLintptr offs
static GLboolean
nouveau_bufferobj_unmap(struct gl_context *ctx, GLenum target, struct gl_buffer_object *obj)
{
- struct nouveau_bufferobj *nbo = to_nouveau_bufferobj(obj);
-
assert(obj->Pointer);
- nouveau_bo_unmap(nbo->bo);
-
obj->Pointer = NULL;
obj->Offset = 0;
obj->Length = 0;
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.h b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.h
index acfc4cb9a9..01ef0bad0f 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_bufferobj.h
@@ -30,9 +30,16 @@
struct nouveau_bufferobj {
struct gl_buffer_object base;
struct nouveau_bo *bo;
+ void *sys;
};
#define to_nouveau_bufferobj(x) ((struct nouveau_bufferobj *)(x))
+#define nouveau_bufferobj_hw(x) \
+ (_mesa_is_bufferobj(x) ? to_nouveau_bufferobj(x)->bo : NULL)
+
+#define nouveau_bufferobj_sys(x) \
+ (_mesa_is_bufferobj(x) ? to_nouveau_bufferobj(x)->sys : NULL)
+
void
nouveau_bufferobj_functions_init(struct dd_function_table *functions);
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_class.h b/src/mesa/drivers/dri/nouveau/nouveau_class.h
deleted file mode 100644
index d41d431f79..0000000000
--- a/src/mesa/drivers/dri/nouveau/nouveau_class.h
+++ /dev/null
@@ -1,4959 +0,0 @@
-/*************************************************************************
-
- Autogenerated file, do not edit !
-
- This file was generated by renouveau-gen from renouveau.xml, the
- XML database of nvidia objects and methods. renouveau-gen and
- renouveau.xml can be found in CVS module renouveau of sourceforge.net
- project nouveau:
-
-cvs -z3 -d:pserver:anonymous@nouveau.cvs.sourceforge.net:/cvsroot/nouveau co -P renouveau
-
-**************************************************************************
-
- Copyright (C) 2006-2008 :
- Dmitry Baryshkov,
- Laurent Carlier,
- Matthieu Castet,
- Dawid Gajownik,
- Jeremy Kolb,
- Stephane Loeuillet,
- Patrice Mandin,
- Stephane Marchesin,
- Serge Martin,
- Sylvain Munaut,
- Simon Raffeiner,
- Ben Skeggs,
- Erik Waling,
- koala_br,
-
-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.
-
-*************************************************************************/
-
-
-#ifndef NOUVEAU_REG_H
-#define NOUVEAU_REG_H 1
-
-
-#define NV01_ROOT 0x00000001
-
-
-
-#define NV01_CONTEXT_DMA 0x00000002
-
-
-
-#define NV01_DEVICE 0x00000003
-
-
-
-#define NV01_TIMER 0x00000004
-
-#define NV01_TIMER_SYNCHRONIZE 0x00000100
-#define NV01_TIMER_STOP_ALARM 0x00000104
-#define NV01_TIMER_DMA_NOTIFY 0x00000180
-#define NV01_TIMER_TIME(x) (0x00000300+((x)*4))
-#define NV01_TIMER_TIME__SIZE 0x00000002
-#define NV01_TIMER_ALARM_NOTIFY 0x00000308
-
-
-#define NV01_CONTEXT_BETA1 0x00000012
-
-#define NV01_CONTEXT_BETA1_NOP 0x00000100
-#define NV01_CONTEXT_BETA1_NOTIFY 0x00000104
-#define NV01_CONTEXT_BETA1_DMA_NOTIFY 0x00000180
-#define NV01_CONTEXT_BETA1_BETA_1D31 0x00000300
-
-
-#define NV01_CONTEXT_COLOR_KEY 0x00000017
-
-#define NV01_CONTEXT_COLOR_KEY_NOP 0x00000100
-#define NV01_CONTEXT_COLOR_KEY_NOTIFY 0x00000104
-#define NV01_CONTEXT_COLOR_KEY_DMA_NOTIFY 0x00000180
-#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT 0x00000300
-#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16A8Y8 0x00000001
-#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X24Y8 0x00000002
-#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16A1R5G5B5 0x00000003
-#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X17R5G5B5 0x00000004
-#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A8R8G8B8 0x00000005
-#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X8R8G8B8 0x00000006
-#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A16Y16 0x00000007
-#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16Y16 0x00000008
-#define NV01_CONTEXT_COLOR_KEY_COLOR 0x00000304
-
-
-#define NV04_CONTEXT_COLOR_KEY 0x00000057
-
-
-
-#define NV01_CONTEXT_PATTERN 0x00000018
-
-#define NV01_CONTEXT_PATTERN_NOP 0x00000100
-#define NV01_CONTEXT_PATTERN_NOTIFY 0x00000104
-#define NV01_CONTEXT_PATTERN_DMA_NOTIFY 0x00000180
-#define NV01_CONTEXT_PATTERN_COLOR_FORMAT 0x00000300
-#define NV01_CONTEXT_PATTERN_MONOCHROME_FORMAT 0x00000304
-#define NV01_CONTEXT_PATTERN_SHAPE 0x00000308
-#define NV01_CONTEXT_PATTERN_COLOR(x) (0x00000310+((x)*4))
-#define NV01_CONTEXT_PATTERN_COLOR__SIZE 0x00000002
-#define NV01_CONTEXT_PATTERN_PATTERN(x) (0x00000318+((x)*4))
-#define NV01_CONTEXT_PATTERN_PATTERN__SIZE 0x00000002
-
-
-#define NV01_CONTEXT_CLIP_RECTANGLE 0x00000019
-
-#define NV01_CONTEXT_CLIP_RECTANGLE_NOP 0x00000100
-#define NV01_CONTEXT_CLIP_RECTANGLE_NOTIFY 0x00000104
-#define NV01_CONTEXT_CLIP_RECTANGLE_DMA_NOTIFY 0x00000180
-#define NV01_CONTEXT_CLIP_RECTANGLE_POINT 0x00000300
-#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X_SHIFT 0
-#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X_MASK 0x0000ffff
-#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y_SHIFT 16
-#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y_MASK 0xffff0000
-#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE 0x00000304
-#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W_SHIFT 0
-#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W_MASK 0x0000ffff
-#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H_SHIFT 16
-#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H_MASK 0xffff0000
-
-
-#define NV01_RENDER_SOLID_LINE 0x0000001c
-
-#define NV01_RENDER_SOLID_LINE_NOP 0x00000100
-#define NV01_RENDER_SOLID_LINE_NOTIFY 0x00000104
-#define NV01_RENDER_SOLID_LINE_PATCH 0x0000010c
-#define NV01_RENDER_SOLID_LINE_DMA_NOTIFY 0x00000180
-#define NV01_RENDER_SOLID_LINE_CLIP_RECTANGLE 0x00000184
-#define NV01_RENDER_SOLID_LINE_PATTERN 0x00000188
-#define NV01_RENDER_SOLID_LINE_ROP 0x0000018c
-#define NV01_RENDER_SOLID_LINE_BETA1 0x00000190
-#define NV01_RENDER_SOLID_LINE_SURFACE 0x00000194
-#define NV01_RENDER_SOLID_LINE_OPERATION 0x000002fc
-#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_AND 0x00000000
-#define NV01_RENDER_SOLID_LINE_OPERATION_ROP_AND 0x00000001
-#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_AND 0x00000002
-#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY 0x00000003
-#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_PREMULT 0x00000004
-#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_PREMULT 0x00000005
-#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT 0x00000300
-#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16A8Y8 0x00000001
-#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X24Y8 0x00000002
-#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16A1R5G5B5 0x00000003
-#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X17R5G5B5 0x00000004
-#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A8R8G8B8 0x00000005
-#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X8R8G8B8 0x00000006
-#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A16Y16 0x00000007
-#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16Y16 0x00000008
-#define NV01_RENDER_SOLID_LINE_COLOR 0x00000304
-#define NV01_RENDER_SOLID_LINE_LINE_POINT0(x) (0x00000400+((x)*8))
-#define NV01_RENDER_SOLID_LINE_LINE_POINT0__SIZE 0x00000010
-#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X_SHIFT 0
-#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y_SHIFT 16
-#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y_MASK 0xffff0000
-#define NV01_RENDER_SOLID_LINE_LINE_POINT1(x) (0x00000404+((x)*8))
-#define NV01_RENDER_SOLID_LINE_LINE_POINT1__SIZE 0x00000010
-#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X_SHIFT 0
-#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y_SHIFT 16
-#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y_MASK 0xffff0000
-#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X(x) (0x00000480+((x)*16))
-#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X__SIZE 0x00000010
-#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y(x) (0x00000484+((x)*16))
-#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y__SIZE 0x00000010
-#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X(x) (0x00000488+((x)*16))
-#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X__SIZE 0x00000010
-#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y(x) (0x0000048c+((x)*16))
-#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y__SIZE 0x00000010
-#define NV01_RENDER_SOLID_LINE_POLYLINE(x) (0x00000500+((x)*4))
-#define NV01_RENDER_SOLID_LINE_POLYLINE__SIZE 0x00000020
-#define NV01_RENDER_SOLID_LINE_POLYLINE_X_SHIFT 0
-#define NV01_RENDER_SOLID_LINE_POLYLINE_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_LINE_POLYLINE_Y_SHIFT 16
-#define NV01_RENDER_SOLID_LINE_POLYLINE_Y_MASK 0xffff0000
-#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X(x) (0x00000580+((x)*8))
-#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X__SIZE 0x00000010
-#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y(x) (0x00000584+((x)*8))
-#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y__SIZE 0x00000010
-#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR(x) (0x00000600+((x)*8))
-#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR__SIZE 0x00000010
-#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT(x) (0x00000604+((x)*8))
-#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT__SIZE 0x00000010
-#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X_SHIFT 0
-#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y_SHIFT 16
-#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y_MASK 0xffff0000
-
-
-#define NV04_RENDER_SOLID_LINE 0x0000005c
-
-#define NV04_RENDER_SOLID_LINE_BETA4 0x00000194
-#define NV04_RENDER_SOLID_LINE_SURFACE 0x00000198
-
-
-#define NV01_RENDER_SOLID_TRIANGLE 0x0000001d
-
-#define NV01_RENDER_SOLID_TRIANGLE_NOP 0x00000100
-#define NV01_RENDER_SOLID_TRIANGLE_NOTIFY 0x00000104
-#define NV01_RENDER_SOLID_TRIANGLE_PATCH 0x0000010c
-#define NV01_RENDER_SOLID_TRIANGLE_DMA_NOTIFY 0x00000180
-#define NV01_RENDER_SOLID_TRIANGLE_CLIP_RECTANGLE 0x00000184
-#define NV01_RENDER_SOLID_TRIANGLE_PATTERN 0x00000188
-#define NV01_RENDER_SOLID_TRIANGLE_ROP 0x0000018c
-#define NV01_RENDER_SOLID_TRIANGLE_BETA1 0x00000190
-#define NV01_RENDER_SOLID_TRIANGLE_SURFACE 0x00000194
-#define NV01_RENDER_SOLID_TRIANGLE_OPERATION 0x000002fc
-#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_AND 0x00000000
-#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_ROP_AND 0x00000001
-#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_AND 0x00000002
-#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY 0x00000003
-#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004
-#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_PREMULT 0x00000005
-#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT 0x00000300
-#define NV01_RENDER_SOLID_TRIANGLE_COLOR 0x00000304
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0 0x00000310
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X_SHIFT 0
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y_SHIFT 16
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y_MASK 0xffff0000
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1 0x00000314
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X_SHIFT 0
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y_SHIFT 16
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y_MASK 0xffff0000
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2 0x00000318
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X_SHIFT 0
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y_SHIFT 16
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y_MASK 0xffff0000
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_X 0x00000320
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_Y 0x00000324
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_X 0x00000328
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_Y 0x0000032c
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_X 0x00000330
-#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_Y 0x00000334
-#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH(x) (0x00000400+((x)*4))
-#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH__SIZE 0x00000020
-#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X_SHIFT 0
-#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y_SHIFT 16
-#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y_MASK 0xffff0000
-#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X(x) (0x00000480+((x)*8))
-#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X__SIZE 0x00000010
-#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y(x) (0x00000484+((x)*8))
-#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y__SIZE 0x00000010
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR(x) (0x00000500+((x)*16))
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR__SIZE 0x00000008
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0(x) (0x00000504+((x)*16))
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0__SIZE 0x00000008
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X_SHIFT 0
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y_SHIFT 16
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y_MASK 0xffff0000
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1(x) (0x00000508+((x)*16))
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1__SIZE 0x00000008
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X_SHIFT 0
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y_SHIFT 16
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y_MASK 0xffff0000
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2(x) (0x0000050c+((x)*16))
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2__SIZE 0x00000008
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X_SHIFT 0
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y_SHIFT 16
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y_MASK 0xffff0000
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR(x) (0x00000580+((x)*8))
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR__SIZE 0x00000010
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT(x) (0x00000584+((x)*8))
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT__SIZE 0x00000010
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X_SHIFT 0
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y_SHIFT 16
-#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y_MASK 0xffff0000
-
-
-#define NV04_RENDER_SOLID_TRIANGLE 0x0000005d
-
-#define NV04_RENDER_SOLID_TRIANGLE_BETA4 0x00000194
-#define NV04_RENDER_SOLID_TRIANGLE_SURFACE 0x00000198
-
-
-#define NV01_RENDER_SOLID_RECTANGLE 0x0000001e
-
-#define NV01_RENDER_SOLID_RECTANGLE_NOP 0x00000100
-#define NV01_RENDER_SOLID_RECTANGLE_NOTIFY 0x00000104
-#define NV01_RENDER_SOLID_RECTANGLE_PATCH 0x0000010c
-#define NV01_RENDER_SOLID_RECTANGLE_DMA_NOTIFY 0x00000180
-#define NV01_RENDER_SOLID_RECTANGLE_CLIP_RECTANGLE 0x00000184
-#define NV01_RENDER_SOLID_RECTANGLE_PATTERN 0x00000188
-#define NV01_RENDER_SOLID_RECTANGLE_ROP 0x0000018c
-#define NV01_RENDER_SOLID_RECTANGLE_BETA1 0x00000190
-#define NV01_RENDER_SOLID_RECTANGLE_SURFACE 0x00000194
-#define NV01_RENDER_SOLID_RECTANGLE_OPERATION 0x000002fc
-#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_AND 0x00000000
-#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_ROP_AND 0x00000001
-#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_AND 0x00000002
-#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY 0x00000003
-#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004
-#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_PREMULT 0x00000005
-#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT 0x00000300
-#define NV01_RENDER_SOLID_RECTANGLE_COLOR 0x00000304
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT(x) (0x00000400+((x)*8))
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT__SIZE 0x00000010
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X_SHIFT 0
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y_SHIFT 16
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y_MASK 0xffff0000
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE(x) (0x00000404+((x)*8))
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE__SIZE 0x00000010
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W_SHIFT 0
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W_MASK 0x0000ffff
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H_SHIFT 16
-#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H_MASK 0xffff0000
-
-
-#define NV04_RENDER_SOLID_RECTANGLE 0x0000005e
-
-#define NV04_RENDER_SOLID_RECTANGLE_BETA4 0x00000194
-#define NV04_RENDER_SOLID_RECTANGLE_SURFACE 0x00000198
-
-
-#define NV01_IMAGE_BLIT 0x0000001f
-
-#define NV01_IMAGE_BLIT_NOP 0x00000100
-#define NV01_IMAGE_BLIT_NOTIFY 0x00000104
-#define NV01_IMAGE_BLIT_PATCH 0x0000010c
-#define NV01_IMAGE_BLIT_DMA_NOTIFY 0x00000180
-#define NV01_IMAGE_BLIT_COLOR_KEY 0x00000184
-#define NV01_IMAGE_BLIT_CLIP_RECTANGLE 0x00000188
-#define NV01_IMAGE_BLIT_PATTERN 0x0000018c
-#define NV01_IMAGE_BLIT_ROP 0x00000190
-#define NV01_IMAGE_BLIT_BETA1 0x00000194
-#define NV01_IMAGE_BLIT_SURFACE 0x0000019c
-#define NV01_IMAGE_BLIT_OPERATION 0x000002fc
-#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_AND 0x00000000
-#define NV01_IMAGE_BLIT_OPERATION_ROP_AND 0x00000001
-#define NV01_IMAGE_BLIT_OPERATION_BLEND_AND 0x00000002
-#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY 0x00000003
-#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_PREMULT 0x00000004
-#define NV01_IMAGE_BLIT_OPERATION_BLEND_PREMULT 0x00000005
-#define NV01_IMAGE_BLIT_IMAGE_INPUT 0x00000204
-#define NV01_IMAGE_BLIT_POINT_IN 0x00000300
-#define NV01_IMAGE_BLIT_POINT_IN_X_SHIFT 0
-#define NV01_IMAGE_BLIT_POINT_IN_X_MASK 0x0000ffff
-#define NV01_IMAGE_BLIT_POINT_IN_Y_SHIFT 16
-#define NV01_IMAGE_BLIT_POINT_IN_Y_MASK 0xffff0000
-#define NV01_IMAGE_BLIT_POINT_OUT 0x00000304
-#define NV01_IMAGE_BLIT_POINT_OUT_X_SHIFT 0
-#define NV01_IMAGE_BLIT_POINT_OUT_X_MASK 0x0000ffff
-#define NV01_IMAGE_BLIT_POINT_OUT_Y_SHIFT 16
-#define NV01_IMAGE_BLIT_POINT_OUT_Y_MASK 0xffff0000
-#define NV01_IMAGE_BLIT_SIZE 0x00000308
-#define NV01_IMAGE_BLIT_SIZE_W_SHIFT 0
-#define NV01_IMAGE_BLIT_SIZE_W_MASK 0x0000ffff
-#define NV01_IMAGE_BLIT_SIZE_H_SHIFT 16
-#define NV01_IMAGE_BLIT_SIZE_H_MASK 0xffff0000
-
-
-#define NV04_IMAGE_BLIT 0x0000005f
-
-#define NV04_IMAGE_BLIT_ROP 0x00000190
-#define NV04_IMAGE_BLIT_BETA4 0x00000198
-#define NV04_IMAGE_BLIT_SURFACE 0x0000019c
-
-
-#define NV12_IMAGE_BLIT 0x0000009f
-
-#define NV12_IMAGE_BLIT_WAIT_FOR_IDLE 0x00000108
-
-
-#define NV01_IMAGE_FROM_CPU 0x00000021
-
-#define NV01_IMAGE_FROM_CPU_NOP 0x00000100
-#define NV01_IMAGE_FROM_CPU_NOTIFY 0x00000104
-#define NV01_IMAGE_FROM_CPU_PATCH 0x0000010c
-#define NV01_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180
-#define NV01_IMAGE_FROM_CPU_COLOR_KEY 0x00000184
-#define NV01_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x00000188
-#define NV01_IMAGE_FROM_CPU_PATTERN 0x0000018c
-#define NV01_IMAGE_FROM_CPU_ROP 0x00000190
-#define NV01_IMAGE_FROM_CPU_BETA1 0x00000194
-#define NV01_IMAGE_FROM_CPU_SURFACE 0x00000198
-#define NV01_IMAGE_FROM_CPU_OPERATION 0x000002fc
-#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_AND 0x00000000
-#define NV01_IMAGE_FROM_CPU_OPERATION_ROP_AND 0x00000001
-#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_AND 0x00000002
-#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY 0x00000003
-#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_PREMULT 0x00000004
-#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_PREMULT 0x00000005
-#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300
-#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_Y8 0x00000001
-#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A1R5G5B5 0x00000002
-#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X1R5G5B5 0x00000003
-#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A8R8G8B8 0x00000004
-#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X8R8G8B8 0x00000005
-#define NV01_IMAGE_FROM_CPU_POINT 0x00000304
-#define NV01_IMAGE_FROM_CPU_POINT_X_SHIFT 0
-#define NV01_IMAGE_FROM_CPU_POINT_X_MASK 0x0000ffff
-#define NV01_IMAGE_FROM_CPU_POINT_Y_SHIFT 16
-#define NV01_IMAGE_FROM_CPU_POINT_Y_MASK 0xffff0000
-#define NV01_IMAGE_FROM_CPU_SIZE_OUT 0x00000308
-#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W_SHIFT 0
-#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W_MASK 0x0000ffff
-#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H_SHIFT 16
-#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H_MASK 0xffff0000
-#define NV01_IMAGE_FROM_CPU_SIZE_IN 0x0000030c
-#define NV01_IMAGE_FROM_CPU_SIZE_IN_W_SHIFT 0
-#define NV01_IMAGE_FROM_CPU_SIZE_IN_W_MASK 0x0000ffff
-#define NV01_IMAGE_FROM_CPU_SIZE_IN_H_SHIFT 16
-#define NV01_IMAGE_FROM_CPU_SIZE_IN_H_MASK 0xffff0000
-#define NV01_IMAGE_FROM_CPU_COLOR(x) (0x00000400+((x)*4))
-#define NV01_IMAGE_FROM_CPU_COLOR__SIZE 0x00000020
-
-
-#define NV04_IMAGE_FROM_CPU 0x00000061
-
-#define NV04_IMAGE_FROM_CPU_BETA4 0x00000198
-#define NV04_IMAGE_FROM_CPU_SURFACE 0x0000019c
-
-
-#define NV05_IMAGE_FROM_CPU 0x00000065
-
-#define NV05_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8
-
-
-#define NV10_IMAGE_FROM_CPU 0x0000008a
-
-#define NV10_IMAGE_FROM_CPU_WAIT_FOR_IDLE 0x00000108
-
-
-#define NV30_IMAGE_FROM_CPU 0x0000038a
-
-
-
-#define NV40_IMAGE_FROM_CPU 0x0000308a
-
-
-
-#define NV01_NULL 0x00000030
-
-
-
-#define NV03_STRETCHED_IMAGE_FROM_CPU 0x00000036
-
-#define NV03_STRETCHED_IMAGE_FROM_CPU_NOP 0x00000100
-#define NV03_STRETCHED_IMAGE_FROM_CPU_NOTIFY 0x00000104
-#define NV03_STRETCHED_IMAGE_FROM_CPU_PATCH 0x0000010c
-#define NV03_STRETCHED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180
-#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_KEY 0x00000184
-#define NV03_STRETCHED_IMAGE_FROM_CPU_PATTERN 0x00000188
-#define NV03_STRETCHED_IMAGE_FROM_CPU_ROP 0x0000018c
-#define NV03_STRETCHED_IMAGE_FROM_CPU_BETA1 0x00000190
-#define NV03_STRETCHED_IMAGE_FROM_CPU_SURFACE 0x00000194
-#define NV03_STRETCHED_IMAGE_FROM_CPU_OPERATION 0x000002fc
-#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300
-#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN 0x00000304
-#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W_SHIFT 0
-#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W_MASK 0x0000ffff
-#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H_SHIFT 16
-#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H_MASK 0xffff0000
-#define NV03_STRETCHED_IMAGE_FROM_CPU_DX_DU 0x00000308
-#define NV03_STRETCHED_IMAGE_FROM_CPU_DY_DV 0x0000030c
-#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT 0x00000310
-#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X_SHIFT 0
-#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X_MASK 0x0000ffff
-#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y_SHIFT 16
-#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y_MASK 0xffff0000
-#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE 0x00000314
-#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W_SHIFT 0
-#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W_MASK 0x0000ffff
-#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H_SHIFT 16
-#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H_MASK 0xffff0000
-#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4 0x00000318
-#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X_SHIFT 0
-#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X_MASK 0x0000ffff
-#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y_SHIFT 16
-#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y_MASK 0xffff0000
-#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR(x) (0x00000400+((x)*4))
-#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR__SIZE 0x00000020
-
-
-#define NV04_STRETCHED_IMAGE_FROM_CPU 0x00000076
-
-#define NV04_STRETCHED_IMAGE_FROM_CPU_BETA4 0x00000194
-#define NV04_STRETCHED_IMAGE_FROM_CPU_SURFACE 0x00000198
-
-
-#define NV05_STRETCHED_IMAGE_FROM_CPU 0x00000066
-
-#define NV05_STRETCHED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8
-
-
-#define NV30_STRETCHED_IMAGE_FROM_CPU 0x00000366
-
-
-
-#define NV40_STRETCHED_IMAGE_FROM_CPU 0x00003066
-
-
-
-#define NV03_SCALED_IMAGE_FROM_MEMORY 0x00000037
-
-#define NV03_SCALED_IMAGE_FROM_MEMORY_NOP 0x00000100
-#define NV03_SCALED_IMAGE_FROM_MEMORY_NOTIFY 0x00000104
-#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_NOTIFY 0x00000180
-#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_IMAGE 0x00000184
-#define NV03_SCALED_IMAGE_FROM_MEMORY_PATTERN 0x00000188
-#define NV03_SCALED_IMAGE_FROM_MEMORY_ROP 0x0000018c
-#define NV03_SCALED_IMAGE_FROM_MEMORY_BETA1 0x00000190
-#define NV03_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000194
-#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT 0x00000300
-#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A1R5G5B5 0x00000001
-#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X1R5G5B5 0x00000002
-#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A8R8G8B8 0x00000003
-#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X8R8G8B8 0x00000004
-#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_V8YB8U8YA8 0x00000005
-#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_YB8V8YA8U8 0x00000006
-#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_R5G6B5 0x00000007
-#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_Y8 0x00000008
-#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_AY8 0x00000009
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION 0x00000304
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_AND 0x00000000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_ROP_AND 0x00000001
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_AND 0x00000002
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY 0x00000003
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_PREMULT 0x00000004
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_PREMULT 0x00000005
-#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT 0x00000308
-#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X_SHIFT 0
-#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X_MASK 0x0000ffff
-#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y_SHIFT 16
-#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y_MASK 0xffff0000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE 0x0000030c
-#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W_SHIFT 0
-#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W_MASK 0x0000ffff
-#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H_SHIFT 16
-#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H_MASK 0xffff0000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT 0x00000310
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X_SHIFT 0
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X_MASK 0x0000ffff
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y_SHIFT 16
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y_MASK 0xffff0000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE 0x00000314
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W_SHIFT 0
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W_MASK 0x0000ffff
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H_SHIFT 16
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H_MASK 0xffff0000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_DU_DX 0x00000318
-#define NV03_SCALED_IMAGE_FROM_MEMORY_DV_DY 0x0000031c
-#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE 0x00000400
-#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W_SHIFT 0
-#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W_MASK 0x0000ffff
-#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H_SHIFT 16
-#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H_MASK 0xffff0000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT 0x00000404
-#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH_SHIFT 0
-#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH_MASK 0x0000ffff
-#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_SHIFT 16
-#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_MASK 0x00ff0000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CENTER 0x00010000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CORNER 0x00020000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_SHIFT 24
-#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_MASK 0xff000000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_POINT_SAMPLE 0x00000000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_BILINEAR 0x01000000
-#define NV03_SCALED_IMAGE_FROM_MEMORY_OFFSET 0x00000408
-#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT 0x0000040c
-#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U_SHIFT 0
-#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U_MASK 0x0000ffff
-#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V_SHIFT 16
-#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V_MASK 0xffff0000
-
-
-#define NV04_SCALED_IMAGE_FROM_MEMORY 0x00000077
-
-#define NV04_SCALED_IMAGE_FROM_MEMORY_BETA4 0x00000194
-#define NV04_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000198
-
-
-#define NV05_SCALED_IMAGE_FROM_MEMORY 0x00000063
-
-#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION 0x000002fc
-#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_DITHER 0x00000000
-#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_TRUNCATE 0x00000001
-#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_SUBTR_TRUNCATE 0x00000002
-
-
-#define NV10_SCALED_IMAGE_FROM_MEMORY 0x00000089
-
-#define NV10_SCALED_IMAGE_FROM_MEMORY_WAIT_FOR_IDLE 0x00000108
-
-
-#define NV30_SCALED_IMAGE_FROM_MEMORY 0x00000389
-
-
-
-#define NV40_SCALED_IMAGE_FROM_MEMORY 0x00003089
-
-
-
-#define NV04_DVD_SUBPICTURE 0x00000038
-
-#define NV04_DVD_SUBPICTURE_NOP 0x00000100
-#define NV04_DVD_SUBPICTURE_NOTIFY 0x00000104
-#define NV04_DVD_SUBPICTURE_DMA_NOTIFY 0x00000180
-#define NV04_DVD_SUBPICTURE_DMA_OVERLAY 0x00000184
-#define NV04_DVD_SUBPICTURE_DMA_IMAGEIN 0x00000188
-#define NV04_DVD_SUBPICTURE_DMA_IMAGEOUT 0x0000018c
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT 0x00000300
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_X_SHIFT 0
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_X_MASK 0x0000ffff
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_Y_SHIFT 16
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_Y_MASK 0xffff0000
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE 0x00000304
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_W_SHIFT 0
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_W_MASK 0x0000ffff
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_H_SHIFT 16
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_H_MASK 0xffff0000
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT 0x00000308
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_PITCH_SHIFT 0
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_PITCH_MASK 0x0000ffff
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_COLOR_SHIFT 16
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_COLOR_MASK 0xffff0000
-#define NV04_DVD_SUBPICTURE_IMAGEOUT_OFFSET 0x0000030c
-#define NV04_DVD_SUBPICTURE_IMAGEIN_DELTA_DU_DX 0x00000310
-#define NV04_DVD_SUBPICTURE_IMAGEIN_DELTA_DV_DY 0x00000314
-#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE 0x00000318
-#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_W_SHIFT 0
-#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_W_MASK 0x0000ffff
-#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_H_SHIFT 16
-#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_H_MASK 0xffff0000
-#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT 0x0000031c
-#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_PITCH_SHIFT 0
-#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_PITCH_MASK 0x0000ffff
-#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_COLOR_SHIFT 16
-#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_COLOR_MASK 0xffff0000
-#define NV04_DVD_SUBPICTURE_IMAGEIN_OFFSET 0x00000320
-#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT 0x00000324
-#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_U_SHIFT 0
-#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_U_MASK 0x0000ffff
-#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_V_SHIFT 16
-#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_V_MASK 0xffff0000
-#define NV04_DVD_SUBPICTURE_OVERLAY_DELTA_DU_DX 0x00000328
-#define NV04_DVD_SUBPICTURE_OVERLAY_DELTA_DV_DY 0x0000032c
-#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE 0x00000330
-#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_W_SHIFT 0
-#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_W_MASK 0x0000ffff
-#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_H_SHIFT 16
-#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_H_MASK 0xffff0000
-#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT 0x00000334
-#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_PITCH_SHIFT 0
-#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_PITCH_MASK 0x0000ffff
-#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_COLOR_SHIFT 16
-#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_COLOR_MASK 0xffff0000
-#define NV04_DVD_SUBPICTURE_OVERLAY_OFFSET 0x00000338
-#define NV04_DVD_SUBPICTURE_OVERLAY_POINT 0x0000033c
-#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_U_SHIFT 0
-#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_U_MASK 0x0000ffff
-#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_V_SHIFT 16
-#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_V_MASK 0xffff0000
-
-
-#define NV10_DVD_SUBPICTURE 0x00000088
-
-#define NV10_DVD_SUBPICTURE_WAIT_FOR_IDLE 0x00000108
-
-
-#define NV04_MEMORY_TO_MEMORY_FORMAT 0x00000039
-
-#define NV04_MEMORY_TO_MEMORY_FORMAT_NOP 0x00000100
-#define NV04_MEMORY_TO_MEMORY_FORMAT_NOTIFY 0x00000104
-#define NV04_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY 0x00000180
-#define NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_IN 0x00000184
-#define NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_OUT 0x00000188
-#define NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN 0x0000030c
-#define NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT 0x00000310
-#define NV04_MEMORY_TO_MEMORY_FORMAT_PITCH_IN 0x00000314
-#define NV04_MEMORY_TO_MEMORY_FORMAT_PITCH_OUT 0x00000318
-#define NV04_MEMORY_TO_MEMORY_FORMAT_LINE_LENGTH_IN 0x0000031c
-#define NV04_MEMORY_TO_MEMORY_FORMAT_LINE_COUNT 0x00000320
-#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT 0x00000324
-#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_INPUT_INC_SHIFT 0
-#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_INPUT_INC_MASK 0x000000ff
-#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_OUTPUT_INC_SHIFT 8
-#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_OUTPUT_INC_MASK 0x0000ff00
-#define NV04_MEMORY_TO_MEMORY_FORMAT_BUF_NOTIFY 0x00000328
-
-
-#define NV50_MEMORY_TO_MEMORY_FORMAT 0x00005039
-
-#define NV50_MEMORY_TO_MEMORY_FORMAT_SERIALIZE 0x00000110
-#define NV50_MEMORY_TO_MEMORY_FORMAT_LINEAR_IN 0x00000200
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_MODE_IN 0x00000204
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_PITCH_IN 0x00000208
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_HEIGHT_IN 0x0000020c
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_DEPTH_IN 0x00000210
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Z 0x00000214
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN 0x00000218
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_X_SHIFT 0
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_X_MASK 0x0000ffff
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Y_SHIFT 16
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Y_MASK 0xffff0000
-#define NV50_MEMORY_TO_MEMORY_FORMAT_LINEAR_OUT 0x0000021c
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_MODE_OUT 0x00000220
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_PITCH_OUT 0x00000224
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_HEIGHT_OUT 0x00000228
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_DEPTH_OUT 0x0000022c
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Z 0x00000230
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT 0x00000234
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_X_SHIFT 0
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_X_MASK 0x0000ffff
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Y_SHIFT 16
-#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Y_MASK 0xffff0000
-#define NV50_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN_HIGH 0x00000238
-#define NV50_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT_HIGH 0x0000023c
-
-
-#define NV01_MEMORY_LOCAL_BANKED 0x0000003d
-
-
-
-#define NV01_MAPPING_SYSTEM 0x0000003e
-
-
-
-#define NV03_MEMORY_LOCAL_CURSOR 0x0000003f
-
-
-
-#define NV01_MEMORY_LOCAL_LINEAR 0x00000040
-
-
-
-#define NV01_MAPPING_LOCAL 0x00000041
-
-
-
-#define NV04_CONTEXT_SURFACES_2D 0x00000042
-
-#define NV04_CONTEXT_SURFACES_2D_NOP 0x00000100
-#define NV04_CONTEXT_SURFACES_2D_NOTIFY 0x00000104
-#define NV04_CONTEXT_SURFACES_2D_PM_TRIGGER 0x00000140
-#define NV04_CONTEXT_SURFACES_2D_DMA_NOTIFY 0x00000180
-#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_SOURCE 0x00000184
-#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_DESTIN 0x00000188
-#define NV04_CONTEXT_SURFACES_2D_FORMAT 0x00000300
-#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y8 0x00000001
-#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_Z1R5G5B5 0x00000002
-#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_X1R5G5B5 0x00000003
-#define NV04_CONTEXT_SURFACES_2D_FORMAT_R5G6B5 0x00000004
-#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y16 0x00000005
-#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_Z8R8G8B8 0x00000006
-#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_X8R8G8B8 0x00000007
-#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_Z1A7R8G8B8 0x00000008
-#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_X1A7R8G8B8 0x00000009
-#define NV04_CONTEXT_SURFACES_2D_FORMAT_A8R8G8B8 0x0000000a
-#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y32 0x0000000b
-#define NV04_CONTEXT_SURFACES_2D_PITCH 0x00000304
-#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE_SHIFT 0
-#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE_MASK 0x0000ffff
-#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN_SHIFT 16
-#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN_MASK 0xffff0000
-#define NV04_CONTEXT_SURFACES_2D_OFFSET_SOURCE 0x00000308
-#define NV04_CONTEXT_SURFACES_2D_OFFSET_DESTIN 0x0000030c
-
-
-#define NV10_CONTEXT_SURFACES_2D 0x00000062
-
-
-
-#define NV30_CONTEXT_SURFACES_2D 0x00000362
-
-
-
-#define NV40_CONTEXT_SURFACES_2D 0x00003062
-
-
-
-#define NV03_CONTEXT_ROP 0x00000043
-
-#define NV03_CONTEXT_ROP_NOP 0x00000100
-#define NV03_CONTEXT_ROP_NOTIFY 0x00000104
-#define NV03_CONTEXT_ROP_DMA_NOTIFY 0x00000180
-#define NV03_CONTEXT_ROP_ROP 0x00000300
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_SHIFT 0
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_MASK 0x0000000f
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_CLEAR 0x00000000
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_NOR 0x00000001
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_AND_INVERTED 0x00000002
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_COPY_INVERTED 0x00000003
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_AND_REVERSE 0x00000004
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_INVERT 0x00000005
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_XOR 0x00000006
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_NAND 0x00000007
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_AND 0x00000008
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_EQUI 0x00000009
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_NOOP 0x0000000a
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_OR_INVERTED 0x0000000b
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_COPY 0x0000000c
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_OR_REVERSE 0x0000000d
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_OR 0x0000000e
-#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_SET 0x0000000f
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_SHIFT 4
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_MASK 0x000000f0
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_CLEAR 0x00000000
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_NOR 0x00000010
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_AND_INVERTED 0x00000020
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_COPY_INVERTED 0x00000030
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_AND_REVERSE 0x00000040
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_INVERT 0x00000050
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_XOR 0x00000060
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_NAND 0x00000070
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_AND 0x00000080
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_EQUI 0x00000090
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_NOOP 0x000000a0
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_OR_INVERTED 0x000000b0
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_COPY 0x000000c0
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_OR_REVERSE 0x000000d0
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_OR 0x000000e0
-#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_SET 0x000000f0
-
-
-#define NV04_IMAGE_PATTERN 0x00000044
-
-#define NV04_IMAGE_PATTERN_NOP 0x00000100
-#define NV04_IMAGE_PATTERN_NOTIFY 0x00000104
-#define NV04_IMAGE_PATTERN_DMA_NOTIFY 0x00000180
-#define NV04_IMAGE_PATTERN_COLOR_FORMAT 0x00000300
-#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A16R5G6B5 0x00000001
-#define NV04_IMAGE_PATTERN_COLOR_FORMAT_X16A1R5G5B5 0x00000002
-#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A8R8G8B8 0x00000003
-#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT 0x00000304
-#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_CGA6 0x00000001
-#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_LE 0x00000002
-#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE 0x00000308
-#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_8X8 0x00000000
-#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_64X1 0x00000001
-#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_1X64 0x00000002
-#define NV04_IMAGE_PATTERN_PATTERN_SELECT 0x0000030c
-#define NV04_IMAGE_PATTERN_PATTERN_SELECT_MONO 0x00000001
-#define NV04_IMAGE_PATTERN_PATTERN_SELECT_COLOR 0x00000002
-#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR0 0x00000310
-#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR1 0x00000314
-#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN0 0x00000318
-#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN1 0x0000031c
-#define NV04_IMAGE_PATTERN_PATTERN_Y8(x) (0x00000400+((x)*4))
-#define NV04_IMAGE_PATTERN_PATTERN_Y8__SIZE 0x00000010
-#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0_SHIFT 0
-#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0_MASK 0x000000ff
-#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1_SHIFT 8
-#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1_MASK 0x0000ff00
-#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2_SHIFT 16
-#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2_MASK 0x00ff0000
-#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3_SHIFT 24
-#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3_MASK 0xff000000
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5(x) (0x00000500+((x)*4))
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5__SIZE 0x00000020
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0_SHIFT 0
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0_MASK 0x0000001f
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0_SHIFT 5
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0_MASK 0x000007e0
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0_SHIFT 11
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0_MASK 0x0000f800
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1_SHIFT 16
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1_MASK 0x001f0000
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1_SHIFT 21
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1_MASK 0x07e00000
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1_SHIFT 27
-#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1_MASK 0xf8000000
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5(x) (0x00000600+((x)*4))
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5__SIZE 0x00000020
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0_SHIFT 0
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0_MASK 0x0000001f
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0_SHIFT 5
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0_MASK 0x000003e0
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0_SHIFT 10
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0_MASK 0x00007c00
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1_SHIFT 16
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1_MASK 0x001f0000
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1_SHIFT 21
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1_MASK 0x03e00000
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1_SHIFT 26
-#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1_MASK 0x7c000000
-#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8(x) (0x00000700+((x)*4))
-#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8__SIZE 0x00000040
-#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B_SHIFT 0
-#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B_MASK 0x000000ff
-#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G_SHIFT 8
-#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G_MASK 0x0000ff00
-#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R_SHIFT 16
-#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R_MASK 0x00ff0000
-
-
-#define NV03_VIDEO_LUT_CURSOR_DAC 0x00000046
-
-#define NV03_VIDEO_LUT_CURSOR_DAC_SYNCHRONIZE 0x00000100
-#define NV03_VIDEO_LUT_CURSOR_DAC_STOP_IMAGE 0x00000104
-#define NV03_VIDEO_LUT_CURSOR_DAC_STOP_CURSOR 0x00000108
-#define NV03_VIDEO_LUT_CURSOR_DAC_STOP_DAC 0x0000010c
-#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_NOTIFY 0x00000180
-#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_IMAGE(x) (0x00000184+((x)*4))
-#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_IMAGE__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_LUT(x) (0x0000018c+((x)*4))
-#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_LUT__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_CURSOR(x) (0x00000194+((x)*4))
-#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_CURSOR__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_GET 0x000002fc
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_OFFSET(x) (0x00000300+((x)*8))
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_OFFSET__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT(x) (0x00000304+((x)*8))
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_PITCH_SHIFT 0
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_PITCH_MASK 0x0000ffff
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_COLOR_SHIFT 16
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_COLOR_MASK 0x0fff0000
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_NOTIFY_SHIFT 28
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_NOTIFY_MASK 0xf0000000
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_OFFSET(x) (0x00000340+((x)*12))
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_OFFSET__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT(x) (0x00000344+((x)*12))
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_X_SHIFT 0
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_X_MASK 0x0000ffff
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_Y_SHIFT 16
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_Y_MASK 0xffff0000
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_FORMAT(x) (0x00000348+((x)*12))
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_FORMAT__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A 0x00000358
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_X_SHIFT 0
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_X_MASK 0x0000ffff
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_Y_SHIFT 16
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_Y_MASK 0xffff0000
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE(x) (0x00000380+((x)*16))
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_W_SHIFT 0
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_W_MASK 0x0000ffff
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_H_SHIFT 16
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_H_MASK 0xffff0000
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC(x) (0x00000384+((x)*16))
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_START_SHIFT 0
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_START_MASK 0x0000ffff
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_WIDTH_SHIFT 16
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_WIDTH_MASK 0x0fff0000
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_POLARITY_SHIFT 28
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_POLARITY_MASK 0xf0000000
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC(x) (0x00000388+((x)*16))
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_START_SHIFT 0
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_START_MASK 0x0000ffff
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_WIDTH_SHIFT 16
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_WIDTH_MASK 0x0fff0000
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_POLARITY_SHIFT 28
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_POLARITY_MASK 0xf0000000
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE(x) (0x0000038c+((x)*16))
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE__SIZE 0x00000002
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_WIDTH_SHIFT 0
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_WIDTH_MASK 0x0000ffff
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_HEIGHT_SHIFT 16
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_HEIGHT_MASK 0x0fff0000
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_NOTIFY_SHIFT 28
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_NOTIFY_MASK 0xf0000000
-#define NV03_VIDEO_LUT_CURSOR_DAC_SET_PIXEL_CLOCK 0x000003a0
-
-
-#define NV03_TEXTURED_TRIANGLE 0x00000048
-
-#define NV03_TEXTURED_TRIANGLE_NOP 0x00000100
-#define NV03_TEXTURED_TRIANGLE_NOTIFY 0x00000104
-#define NV03_TEXTURED_TRIANGLE_PATCH 0x0000010c
-#define NV03_TEXTURED_TRIANGLE_DMA_NOTIFY 0x00000180
-#define NV03_TEXTURED_TRIANGLE_DMA_TEXTURE 0x00000184
-#define NV03_TEXTURED_TRIANGLE_CLIP_RECTANGLE 0x00000188
-#define NV03_TEXTURED_TRIANGLE_SURFACE 0x0000018c
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_OFFSET 0x00000304
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT 0x00000308
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_MASK_SHIFT 0
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_MASK_MASK 0x0000ffff
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_ENABLE_SHIFT 16
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_ENABLE_MASK 0x000f0000
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_SHIFT 20
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_MASK 0x00f00000
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MIN_SHIFT 24
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MIN_MASK 0x0f000000
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MAX_SHIFT 28
-#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MAX_MASK 0xf0000000
-#define NV03_TEXTURED_TRIANGLE_FILTER 0x0000030c
-#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_X_SHIFT 0
-#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_X_MASK 0x0000001f
-#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_Y_SHIFT 8
-#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_Y_MASK 0x00001f00
-#define NV03_TEXTURED_TRIANGLE_FILTER_SIZE_ADJUST_SHIFT 16
-#define NV03_TEXTURED_TRIANGLE_FILTER_SIZE_ADJUST_MASK 0x00ff0000
-#define NV03_TEXTURED_TRIANGLE_FOG_COLOR 0x00000310
-#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_B_SHIFT 0
-#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_B_MASK 0x000000ff
-#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_G_SHIFT 8
-#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_G_MASK 0x0000ff00
-#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_R_SHIFT 16
-#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_R_MASK 0x00ff0000
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT 0x00000314
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_INTERPOLATOR_SHIFT 0
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_INTERPOLATOR_MASK 0x0000000f
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_U_SHIFT 4
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_U_MASK 0x00000030
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_V_SHIFT 6
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_V_MASK 0x000000c0
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_SOURCE_COLOR_SHIFT 8
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_SOURCE_COLOR_MASK 0x00000f00
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_CULLING_SHIFT 12
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_CULLING_MASK 0x00007000
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_PERSPECTIVE_ENABLE (1 << 15)
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_FUNC_SHIFT 16
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_FUNC_MASK 0x000f0000
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_WRITE_ENABLE_SHIFT 20
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_WRITE_ENABLE_MASK 0x00f00000
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_COLOR_WRITE_ENABLE_SHIFT 24
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_COLOR_WRITE_ENABLE_MASK 0x07000000
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_ROP_SHIFT 27
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_ROP_MASK 0x18000000
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_BETA (1 << 29)
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_DST_BLEND (1 << 30)
-#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_SRC_BLEND (1 << 31)
-#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL 0x00000318
-#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_REF_SHIFT 0
-#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_REF_MASK 0x000000ff
-#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_FUNC_SHIFT 8
-#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_FUNC_MASK 0xffffff00
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR(x) (0x00001000+((x)*32))
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR__SIZE 0x00000080
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I0_SHIFT 0
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I0_MASK 0x0000000f
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I1_SHIFT 4
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I1_MASK 0x000000f0
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I2_SHIFT 8
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I2_MASK 0x00000f00
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I3_SHIFT 12
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I3_MASK 0x0000f000
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I4_SHIFT 16
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I4_MASK 0x000f0000
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I5_SHIFT 20
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I5_MASK 0x00f00000
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_SHIFT 24
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_MASK 0xff000000
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_COLOR(x) (0x00001004+((x)*32))
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_COLOR__SIZE 0x00000080
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SX(x) (0x00001008+((x)*32))
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SX__SIZE 0x00000080
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SY(x) (0x0000100c+((x)*32))
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SY__SIZE 0x00000080
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SZ(x) (0x00001010+((x)*32))
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SZ__SIZE 0x00000080
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_RHW(x) (0x00001014+((x)*32))
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_RHW__SIZE 0x00000080
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TU(x) (0x00001018+((x)*32))
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TU__SIZE 0x00000080
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TV(x) (0x0000101c+((x)*32))
-#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TV__SIZE 0x00000080
-
-
-#define NV04_GDI_RECTANGLE_TEXT 0x0000004a
-
-#define NV04_GDI_RECTANGLE_TEXT_NOP 0x00000100
-#define NV04_GDI_RECTANGLE_TEXT_NOTIFY 0x00000104
-#define NV04_GDI_RECTANGLE_TEXT_PATCH 0x0000010c
-#define NV04_GDI_RECTANGLE_TEXT_PM_TRIGGER 0x00000140
-#define NV04_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180
-#define NV04_GDI_RECTANGLE_TEXT_DMA_FONTS 0x00000184
-#define NV04_GDI_RECTANGLE_TEXT_PATTERN 0x00000188
-#define NV04_GDI_RECTANGLE_TEXT_ROP 0x0000018c
-#define NV04_GDI_RECTANGLE_TEXT_BETA1 0x00000190
-#define NV04_GDI_RECTANGLE_TEXT_BETA4 0x00000194
-#define NV04_GDI_RECTANGLE_TEXT_SURFACE 0x00000198
-#define NV04_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc
-#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_AND 0x00000000
-#define NV04_GDI_RECTANGLE_TEXT_OPERATION_ROP_AND 0x00000001
-#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_AND 0x00000002
-#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY 0x00000003
-#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_PREMULT 0x00000004
-#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_PREMULT 0x00000005
-#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300
-#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A16R5G6B5 0x00000001
-#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_X16A1R5G5B5 0x00000002
-#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A8R8G8B8 0x00000003
-#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304
-#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_CGA6 0x00000001
-#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_LE 0x00000002
-#define NV04_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT(x) (0x00000400+((x)*8))
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT__SIZE 0x00000020
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE(x) (0x00000404+((x)*8))
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE__SIZE 0x00000020
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0 0x000005f4
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1 0x000005f8
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_COLOR1_B 0x000005fc
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0(x) (0x00000600+((x)*8))
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0__SIZE 0x00000020
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1(x) (0x00000604+((x)*8))
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1__SIZE 0x00000020
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x000007ec
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x000007f0
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_COLOR1_C 0x000007f4
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_C 0x000007f8
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_POINT_C 0x000007fc
-#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(x) (0x00000800+((x)*4))
-#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__SIZE 0x00000080
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x00000be4
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x00000be8
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_COLOR0_E 0x00000bec
-#define NV04_GDI_RECTANGLE_TEXT_COLOR1_E 0x00000bf0
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x00000bf4
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x00000bf8
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_POINT_E 0x00000bfc
-#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(x) (0x00000c00+((x)*4))
-#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__SIZE 0x00000080
-#define NV04_GDI_RECTANGLE_TEXT_FONT_F 0x00000ff0
-#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET_MASK 0x0fffffff
-#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH_SHIFT 28
-#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH_MASK 0xf0000000
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0 0x00000ff4
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1 0x00000ff8
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_COLOR1_F 0x00000ffc
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F(x) (0x00001000+((x)*4))
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F__SIZE 0x00000100
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX_MASK 0x000000ff
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X_SHIFT 8
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X_MASK 0x000fff00
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y_SHIFT 20
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y_MASK 0xfff00000
-#define NV04_GDI_RECTANGLE_TEXT_FONT_G 0x000017f0
-#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET_MASK 0x0fffffff
-#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH_SHIFT 28
-#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH_MASK 0xf0000000
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0 0x000017f4
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1 0x000017f8
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_COLOR1_G 0x000017fc
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT(x) (0x00001800+((x)*8))
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT__SIZE 0x00000100
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X_SHIFT 0
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X_MASK 0x0000ffff
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y_SHIFT 16
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y_MASK 0xffff0000
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX(x) (0x00001804+((x)*8))
-#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX__SIZE 0x00000100
-
-
-#define NV03_GDI_RECTANGLE_TEXT 0x0000004b
-
-#define NV03_GDI_RECTANGLE_TEXT_NOP 0x00000100
-#define NV03_GDI_RECTANGLE_TEXT_NOTIFY 0x00000104
-#define NV03_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180
-#define NV03_GDI_RECTANGLE_TEXT_PATTERN 0x00000184
-#define NV03_GDI_RECTANGLE_TEXT_ROP 0x00000188
-#define NV03_GDI_RECTANGLE_TEXT_BETA1 0x0000018c
-#define NV03_GDI_RECTANGLE_TEXT_SURFACE 0x00000190
-#define NV03_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc
-#define NV03_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300
-#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304
-#define NV03_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc
-#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT 0x00000400
-#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE 0x00000404
-#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B 0x000007f4
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B 0x000007f8
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_COLOR1_B 0x000007fc
-#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0 0x00000800
-#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1 0x00000804
-#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x00000bec
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x00000bf0
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_COLOR1_C 0x00000bf4
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_C 0x00000bf8
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_POINT_C 0x00000bfc
-#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(x) (0x00000c00+((x)*4))
-#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__SIZE 0x00000020
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0 0x00000fe8
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1 0x00000fec
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_COLOR1_D 0x00000ff0
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D 0x00000ff4
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D 0x00000ff8
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_POINT_D 0x00000ffc
-#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D(x) (0x00001000+((x)*4))
-#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D__SIZE 0x00000020
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x000013e4
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x000013e8
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_COLOR0_E 0x000013ec
-#define NV03_GDI_RECTANGLE_TEXT_COLOR1_E 0x000013f0
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x000013f4
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x000013f8
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_POINT_E 0x000013fc
-#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X_SHIFT 0
-#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X_MASK 0x0000ffff
-#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y_SHIFT 16
-#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y_MASK 0xffff0000
-#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(x) (0x00001400+((x)*4))
-#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__SIZE 0x00000020
-
-
-#define NV04_SWIZZLED_SURFACE 0x00000052
-
-#define NV04_SWIZZLED_SURFACE_NOP 0x00000100
-#define NV04_SWIZZLED_SURFACE_NOTIFY 0x00000104
-#define NV04_SWIZZLED_SURFACE_DMA_NOTIFY 0x00000180
-#define NV04_SWIZZLED_SURFACE_DMA_IMAGE 0x00000184
-#define NV04_SWIZZLED_SURFACE_FORMAT 0x00000300
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_SHIFT 0
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_MASK 0x000000ff
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y8 0x00000001
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000002
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000003
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_R5G6B5 0x00000004
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y16 0x00000005
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000006
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000007
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000008
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000009
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_A8R8G8B8 0x0000000a
-#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y32 0x0000000b
-#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U_SHIFT 16
-#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U_MASK 0x00ff0000
-#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V_SHIFT 24
-#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V_MASK 0xff000000
-#define NV04_SWIZZLED_SURFACE_OFFSET 0x00000304
-
-
-#define NV20_SWIZZLED_SURFACE 0x0000009e
-
-
-
-#define NV30_SWIZZLED_SURFACE 0x0000039e
-
-
-
-#define NV40_SWIZZLED_SURFACE 0x0000309e
-
-
-
-#define NV04_CONTEXT_SURFACES_3D 0x00000053
-
-#define NV04_CONTEXT_SURFACES_3D_NOP 0x00000100
-#define NV04_CONTEXT_SURFACES_3D_NOTIFY 0x00000104
-#define NV04_CONTEXT_SURFACES_3D_DMA_NOTIFY 0x00000180
-#define NV04_CONTEXT_SURFACES_3D_DMA_COLOR 0x00000184
-#define NV04_CONTEXT_SURFACES_3D_DMA_ZETA 0x00000188
-#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL 0x000002f8
-#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X_SHIFT 0
-#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X_MASK 0x0000ffff
-#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W_SHIFT 16
-#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W_MASK 0xffff0000
-#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL 0x000002fc
-#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y_SHIFT 0
-#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y_MASK 0x0000ffff
-#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H_SHIFT 16
-#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H_MASK 0xffff0000
-#define NV04_CONTEXT_SURFACES_3D_FORMAT 0x00000300
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_SHIFT 0
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_MASK 0x000000ff
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000001
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000002
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_R5G6B5 0x00000003
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000004
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000005
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000006
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000007
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_A8R8G8B8 0x00000008
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_SHIFT 8
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_MASK 0x0000ff00
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_PITCH 0x00000100
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_SWIZZLE 0x00000200
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U_SHIFT 16
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U_MASK 0x00ff0000
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V_SHIFT 24
-#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V_MASK 0xff000000
-#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE 0x00000304
-#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W_SHIFT 0
-#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W_MASK 0x0000ffff
-#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H_SHIFT 16
-#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H_MASK 0xffff0000
-#define NV04_CONTEXT_SURFACES_3D_PITCH 0x00000308
-#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR_SHIFT 0
-#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR_MASK 0x0000ffff
-#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA_SHIFT 16
-#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA_MASK 0xffff0000
-#define NV04_CONTEXT_SURFACES_3D_OFFSET_COLOR 0x0000030c
-#define NV04_CONTEXT_SURFACES_3D_OFFSET_ZETA 0x00000310
-
-
-#define NV10_CONTEXT_SURFACES_3D 0x00000093
-
-
-
-#define NV04_TEXTURED_TRIANGLE 0x00000054
-
-#define NV04_TEXTURED_TRIANGLE_NOP 0x00000100
-#define NV04_TEXTURED_TRIANGLE_NOTIFY 0x00000104
-#define NV04_TEXTURED_TRIANGLE_DMA_NOTIFY 0x00000180
-#define NV04_TEXTURED_TRIANGLE_DMA_A 0x00000184
-#define NV04_TEXTURED_TRIANGLE_DMA_B 0x00000188
-#define NV04_TEXTURED_TRIANGLE_SURFACE 0x0000018c
-#define NV04_TEXTURED_TRIANGLE_COLORKEY 0x00000300
-#define NV04_TEXTURED_TRIANGLE_OFFSET 0x00000304
-#define NV04_TEXTURED_TRIANGLE_FORMAT 0x00000308
-#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_A (1 << 0)
-#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_B (1 << 1)
-#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_KEY_MATCH_SHIFT 2
-#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_KEY_MATCH_MASK 0x0000000c
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_SHIFT 4
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_MASK 0x00000030
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CENTER 0x00000010
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER 0x00000020
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_SHIFT 6
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_MASK 0x000000c0
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CENTER 0x00000040
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER 0x00000080
-#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_SHIFT 8
-#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_MASK 0x00000f00
-#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_Y8 0x00000100
-#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A1R5G5B5 0x00000200
-#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X1R5G5B5 0x00000300
-#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A4R4G4B4 0x00000400
-#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_R5G6B5 0x00000500
-#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A8R8G8B8 0x00000600
-#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X8R8G8B8 0x00000700
-#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS_SHIFT 12
-#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS_MASK 0x0000f000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U_SHIFT 16
-#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U_MASK 0x000f0000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V_SHIFT 20
-#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V_MASK 0x00f00000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_SHIFT 24
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_MASK 0x07000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_REPEAT 0x01000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_MIRRORED_REPEAT 0x02000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE 0x03000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_BORDER 0x04000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP 0x05000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPU (1 << 27)
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_SHIFT 28
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_MASK 0x70000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_REPEAT 0x10000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_MIRRORED_REPEAT 0x20000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE 0x30000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_BORDER 0x40000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP 0x50000000
-#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPV (1 << 31)
-#define NV04_TEXTURED_TRIANGLE_FILTER 0x0000030c
-#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X_SHIFT 0
-#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X_MASK 0x000000ff
-#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y_SHIFT 8
-#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y_MASK 0x00007f00
-#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE (1 << 15)
-#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS_SHIFT 16
-#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS_MASK 0x00ff0000
-#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_SHIFT 24
-#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_MASK 0x07000000
-#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST 0x01000000
-#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR 0x02000000
-#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000
-#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000
-#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000
-#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000
-#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE (1 << 27)
-#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_SHIFT 28
-#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_MASK 0x70000000
-#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_NEAREST 0x10000000
-#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_LINEAR 0x20000000
-#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE (1 << 31)
-#define NV04_TEXTURED_TRIANGLE_BLEND 0x00000310
-#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_SHIFT 0
-#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MASK 0x0000000f
-#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_SHIFT 4
-#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_MASK 0x00000030
-#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_SHIFT 6
-#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_MASK 0x000000c0
-#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040
-#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080
-#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0
-#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE (1 << 8)
-#define NV04_TEXTURED_TRIANGLE_BLEND_SPECULAR_ENABLE (1 << 12)
-#define NV04_TEXTURED_TRIANGLE_BLEND_FOG_ENABLE (1 << 16)
-#define NV04_TEXTURED_TRIANGLE_BLEND_BLEND_ENABLE (1 << 20)
-#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SHIFT 24
-#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_MASK 0x0f000000
-#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SHIFT 28
-#define NV04_TEXTURED_TRIANGLE_BLEND_DST_MASK 0xf0000000
-#define NV04_TEXTURED_TRIANGLE_CONTROL 0x00000314
-#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF_SHIFT 0
-#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF_MASK 0x000000ff
-#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_SHIFT 8
-#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_MASK 0x00000f00
-#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_ENABLE (1 << 12)
-#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN (1 << 13)
-#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_ENABLE (1 << 14)
-#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_SHIFT 16
-#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_MASK 0x000f0000
-#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_SHIFT 20
-#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_MASK 0x00300000
-#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_BOTH 0x00000000
-#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_NONE 0x00100000
-#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CW 0x00200000
-#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CCW 0x00300000
-#define NV04_TEXTURED_TRIANGLE_CONTROL_DITHER_ENABLE (1 << 22)
-#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_PERSPECTIVE_ENABLE (1 << 23)
-#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_WRITE (1 << 24)
-#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_SHIFT 30
-#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_MASK 0xc0000000
-#define NV04_TEXTURED_TRIANGLE_FOGCOLOR 0x00000318
-#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B_SHIFT 0
-#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B_MASK 0x000000ff
-#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G_SHIFT 8
-#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G_MASK 0x0000ff00
-#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R_SHIFT 16
-#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R_MASK 0x00ff0000
-#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A_SHIFT 24
-#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A_MASK 0xff000000
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SX(x) (0x00000400+((x)*32))
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SX__SIZE 0x00000010
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SY(x) (0x00000404+((x)*32))
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SY__SIZE 0x00000010
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SZ(x) (0x00000408+((x)*32))
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SZ__SIZE 0x00000010
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_RHW(x) (0x0000040c+((x)*32))
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_RHW__SIZE 0x00000010
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR(x) (0x00000410+((x)*32))
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR__SIZE 0x00000010
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B_SHIFT 0
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B_MASK 0x000000ff
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G_SHIFT 8
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G_MASK 0x0000ff00
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R_SHIFT 16
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R_MASK 0x00ff0000
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A_SHIFT 24
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A_MASK 0xff000000
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR(x) (0x00000414+((x)*32))
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR__SIZE 0x00000010
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B_SHIFT 0
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B_MASK 0x000000ff
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G_SHIFT 8
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G_MASK 0x0000ff00
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R_SHIFT 16
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R_MASK 0x00ff0000
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_SHIFT 24
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_MASK 0xff000000
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TU(x) (0x00000418+((x)*32))
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TU__SIZE 0x00000010
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TV(x) (0x0000041c+((x)*32))
-#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TV__SIZE 0x00000010
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE(x) (0x00000600+((x)*4))
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE__SIZE 0x00000040
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0_SHIFT 0
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0_MASK 0x0000000f
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1_SHIFT 4
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1_MASK 0x000000f0
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2_SHIFT 8
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2_MASK 0x00000f00
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3_SHIFT 12
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3_MASK 0x0000f000
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4_SHIFT 16
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4_MASK 0x000f0000
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5_SHIFT 20
-#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5_MASK 0x00f00000
-
-
-#define NV10_TEXTURED_TRIANGLE 0x00000094
-
-
-
-#define NV04_MULTITEX_TRIANGLE 0x00000055
-
-#define NV04_MULTITEX_TRIANGLE_NOP 0x00000100
-#define NV04_MULTITEX_TRIANGLE_NOTIFY 0x00000104
-#define NV04_MULTITEX_TRIANGLE_DMA_NOTIFY 0x00000180
-#define NV04_MULTITEX_TRIANGLE_DMA_A 0x00000184
-#define NV04_MULTITEX_TRIANGLE_DMA_B 0x00000188
-#define NV04_MULTITEX_TRIANGLE_SURFACE 0x0000018c
-#define NV04_MULTITEX_TRIANGLE_OFFSET(x) (0x00000308+((x)*4))
-#define NV04_MULTITEX_TRIANGLE_OFFSET__SIZE 0x00000002
-#define NV04_MULTITEX_TRIANGLE_FORMAT(x) (0x00000310+((x)*4))
-#define NV04_MULTITEX_TRIANGLE_FORMAT__SIZE 0x00000002
-#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_A (1 << 0)
-#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_B (1 << 1)
-#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_SHIFT 4
-#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_MASK 0x00000030
-#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_SHIFT 6
-#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_MASK 0x000000c0
-#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_SHIFT 8
-#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_MASK 0x00000f00
-#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS_SHIFT 12
-#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS_MASK 0x0000f000
-#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U_SHIFT 16
-#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U_MASK 0x000f0000
-#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V_SHIFT 20
-#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V_MASK 0x00f00000
-#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_SHIFT 24
-#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_MASK 0x07000000
-#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPU (1 << 27)
-#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_SHIFT 28
-#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_MASK 0x70000000
-#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPV (1 << 31)
-#define NV04_MULTITEX_TRIANGLE_FILTER(x) (0x00000318+((x)*4))
-#define NV04_MULTITEX_TRIANGLE_FILTER__SIZE 0x00000002
-#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X_SHIFT 0
-#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X_MASK 0x000000ff
-#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y_SHIFT 8
-#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y_MASK 0x00007f00
-#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE (1 << 15)
-#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS_SHIFT 16
-#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS_MASK 0x00ff0000
-#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_SHIFT 24
-#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_MASK 0x07000000
-#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE (1 << 27)
-#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_SHIFT 28
-#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_MASK 0x70000000
-#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE (1 << 31)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA(x) (0x00000320+((x)*12))
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA__SIZE 0x00000002
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE0 (1 << 0)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_SHIFT 2
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_MASK 0x000000fc
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_ZERO 0x00000004
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_CONSTANT 0x00000008
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PRIMARY_COLOR 0x0000000c
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PREVIOUS 0x00000010
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE0 0x00000014
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE1 0x00000018
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE1 (1 << 8)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_SHIFT 10
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_MASK 0x0000fc00
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_ZERO 0x00000400
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_CONSTANT 0x00000800
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PRIMARY_COLOR 0x00000c00
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PREVIOUS 0x00001000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE0 0x00001400
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE1 0x00001800
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE2 (1 << 16)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_SHIFT 18
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_MASK 0x00fc0000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_ZERO 0x00040000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_CONSTANT 0x00080000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PRIMARY_COLOR 0x000c0000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PREVIOUS 0x00100000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE0 0x00140000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE1 0x00180000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE3 (1 << 24)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_SHIFT 26
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_MASK 0x1c000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_ZERO 0x04000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_CONSTANT 0x08000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PRIMARY_COLOR 0x0c000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PREVIOUS 0x10000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE0 0x14000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE1 0x18000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SHIFT 29
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_MASK 0xe0000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_IDENTITY 0x20000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE2 0x40000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE4 0x60000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS 0x80000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS_SCALE2 0xe0000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR(x) (0x00000324+((x)*12))
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR__SIZE 0x00000002
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE0 (1 << 0)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA0 (1 << 1)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_SHIFT 2
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_MASK 0x000000fc
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_ZERO 0x00000004
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_CONSTANT 0x00000008
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PRIMARY_COLOR 0x0000000c
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PREVIOUS 0x00000010
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE0 0x00000014
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE1 0x00000018
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE1 (1 << 8)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA1 (1 << 9)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_SHIFT 10
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_MASK 0x0000fc00
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_ZERO 0x00000400
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_CONSTANT 0x00000800
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PRIMARY_COLOR 0x00000c00
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PREVIOUS 0x00001000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE0 0x00001400
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE1 0x00001800
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE2 (1 << 16)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA2 (1 << 17)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_SHIFT 18
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_MASK 0x00fc0000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_ZERO 0x00040000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_CONSTANT 0x00080000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PRIMARY_COLOR 0x000c0000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PREVIOUS 0x00100000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE0 0x00140000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE1 0x00180000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE3 (1 << 24)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA3 (1 << 25)
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_SHIFT 26
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_MASK 0x1c000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_ZERO 0x04000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_CONSTANT 0x08000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PRIMARY_COLOR 0x0c000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PREVIOUS 0x10000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE0 0x14000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE1 0x18000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SHIFT 29
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_MASK 0xe0000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_IDENTITY 0x20000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE2 0x40000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE4 0x60000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS 0x80000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS_SCALE2 0xe0000000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR 0x00000334
-#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B_SHIFT 0
-#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B_MASK 0x000000ff
-#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G_SHIFT 8
-#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G_MASK 0x0000ff00
-#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R_SHIFT 16
-#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R_MASK 0x00ff0000
-#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A_SHIFT 24
-#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A_MASK 0xff000000
-#define NV04_MULTITEX_TRIANGLE_BLEND 0x00000338
-#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_SHIFT 4
-#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_MASK 0x00000030
-#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_SHIFT 6
-#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_MASK 0x000000c0
-#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040
-#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080
-#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0
-#define NV04_MULTITEX_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE (1 << 8)
-#define NV04_MULTITEX_TRIANGLE_BLEND_SPECULAR_ENABLE (1 << 12)
-#define NV04_MULTITEX_TRIANGLE_BLEND_FOG_ENABLE (1 << 16)
-#define NV04_MULTITEX_TRIANGLE_BLEND_BLEND_ENABLE (1 << 20)
-#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SHIFT 24
-#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_MASK 0x0f000000
-#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SHIFT 28
-#define NV04_MULTITEX_TRIANGLE_BLEND_DST_MASK 0xf0000000
-#define NV04_MULTITEX_TRIANGLE_CONTROL0 0x0000033c
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF_SHIFT 0
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF_MASK 0x000000ff
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_SHIFT 8
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_MASK 0x00000f00
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_ENABLE (1 << 12)
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN (1 << 13)
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_ENABLE (1 << 14)
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_SHIFT 16
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_MASK 0x000f0000
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_SHIFT 20
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_MASK 0x00300000
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_BOTH 0x00000000
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_NONE 0x00100000
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CW 0x00200000
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CCW 0x00300000
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_DITHER_ENABLE (1 << 22)
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_PERSPECTIVE_ENABLE (1 << 23)
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_WRITE (1 << 24)
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_STENCIL_WRITE (1 << 25)
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_WRITE (1 << 26)
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_RED_WRITE (1 << 27)
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_GREEN_WRITE (1 << 28)
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_BLUE_WRITE (1 << 29)
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_SHIFT 30
-#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_MASK 0xc0000000
-#define NV04_MULTITEX_TRIANGLE_CONTROL1 0x00000340
-#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_ENABLE (1 << 0)
-#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC_SHIFT 4
-#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC_MASK 0x000000f0
-#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF_SHIFT 8
-#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF_MASK 0x0000ff00
-#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ_SHIFT 16
-#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ_MASK 0x00ff0000
-#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE_SHIFT 24
-#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE_MASK 0xff000000
-#define NV04_MULTITEX_TRIANGLE_CONTROL2 0x00000344
-#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL_SHIFT 0
-#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL_MASK 0x0000000f
-#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL_SHIFT 4
-#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL_MASK 0x000000f0
-#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS_SHIFT 8
-#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS_MASK 0x00000f00
-#define NV04_MULTITEX_TRIANGLE_FOGCOLOR 0x00000348
-#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B_SHIFT 0
-#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B_MASK 0x000000ff
-#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G_SHIFT 8
-#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G_MASK 0x0000ff00
-#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R_SHIFT 16
-#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R_MASK 0x00ff0000
-#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A_SHIFT 24
-#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A_MASK 0xff000000
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SX(x) (0x00000400+((x)*40))
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SX__SIZE 0x00000008
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SY(x) (0x00000404+((x)*40))
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SY__SIZE 0x00000008
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SZ(x) (0x00000408+((x)*40))
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SZ__SIZE 0x00000008
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_RHW(x) (0x0000040c+((x)*40))
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_RHW__SIZE 0x00000008
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR(x) (0x00000410+((x)*40))
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR__SIZE 0x00000008
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B_SHIFT 0
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B_MASK 0x000000ff
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G_SHIFT 8
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G_MASK 0x0000ff00
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R_SHIFT 16
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R_MASK 0x00ff0000
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A_SHIFT 24
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A_MASK 0xff000000
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR(x) (0x00000414+((x)*40))
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR__SIZE 0x00000008
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B_SHIFT 0
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B_MASK 0x000000ff
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G_SHIFT 8
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G_MASK 0x0000ff00
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R_SHIFT 16
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R_MASK 0x00ff0000
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG_SHIFT 24
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG_MASK 0xff000000
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU0(x) (0x00000418+((x)*40))
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU0__SIZE 0x00000008
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV0(x) (0x0000041c+((x)*40))
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV0__SIZE 0x00000008
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU1(x) (0x00000420+((x)*40))
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU1__SIZE 0x00000008
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV1(x) (0x00000424+((x)*40))
-#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV1__SIZE 0x00000008
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE(x) (0x00000540+((x)*4))
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE__SIZE 0x00000030
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0_SHIFT 0
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0_MASK 0x0000000f
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1_SHIFT 4
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1_MASK 0x000000f0
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2_SHIFT 8
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2_MASK 0x00000f00
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3_SHIFT 12
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3_MASK 0x0000f000
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4_SHIFT 16
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4_MASK 0x000f0000
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5_SHIFT 20
-#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5_MASK 0x00f00000
-
-
-#define NV10_MULTITEX_TRIANGLE 0x00000095
-
-
-
-#define NV10TCL 0x00000056
-
-#define NV10TCL_NOP 0x00000100
-#define NV10TCL_NOTIFY 0x00000104
-#define NV10TCL_DMA_NOTIFY 0x00000180
-#define NV10TCL_DMA_IN_MEMORY0 0x00000184
-#define NV10TCL_DMA_IN_MEMORY1 0x00000188
-#define NV10TCL_DMA_VTXBUF0 0x0000018c
-#define NV10TCL_DMA_IN_MEMORY2 0x00000194
-#define NV10TCL_DMA_IN_MEMORY3 0x00000198
-#define NV10TCL_RT_HORIZ 0x00000200
-#define NV10TCL_RT_HORIZ_X_SHIFT 0
-#define NV10TCL_RT_HORIZ_X_MASK 0x0000ffff
-#define NV10TCL_RT_HORIZ_W_SHIFT 16
-#define NV10TCL_RT_HORIZ_W_MASK 0xffff0000
-#define NV10TCL_RT_VERT 0x00000204
-#define NV10TCL_RT_VERT_Y_SHIFT 0
-#define NV10TCL_RT_VERT_Y_MASK 0x0000ffff
-#define NV10TCL_RT_VERT_H_SHIFT 16
-#define NV10TCL_RT_VERT_H_MASK 0xffff0000
-#define NV10TCL_RT_FORMAT 0x00000208
-#define NV10TCL_RT_FORMAT_TYPE_SHIFT 8
-#define NV10TCL_RT_FORMAT_TYPE_MASK 0x00000f00
-#define NV10TCL_RT_FORMAT_TYPE_LINEAR 0x00000100
-#define NV10TCL_RT_FORMAT_TYPE_SWIZZLED 0x00000200
-#define NV10TCL_RT_FORMAT_COLOR_SHIFT 0
-#define NV10TCL_RT_FORMAT_COLOR_MASK 0x0000001f
-#define NV10TCL_RT_FORMAT_COLOR_R5G6B5 0x00000003
-#define NV10TCL_RT_FORMAT_COLOR_X8R8G8B8 0x00000005
-#define NV10TCL_RT_FORMAT_COLOR_A8R8G8B8 0x00000008
-#define NV10TCL_RT_FORMAT_COLOR_B8 0x00000009
-#define NV10TCL_RT_FORMAT_COLOR_UNKNOWN 0x0000000d
-#define NV10TCL_RT_FORMAT_COLOR_X8B8G8R8 0x0000000f
-#define NV10TCL_RT_FORMAT_COLOR_A8B8G8R8 0x00000010
-#define NV10TCL_RT_PITCH 0x0000020c
-#define NV10TCL_RT_PITCH_COLOR_PITCH_SHIFT 0
-#define NV10TCL_RT_PITCH_COLOR_PITCH_MASK 0x0000ffff
-#define NV10TCL_RT_PITCH_ZETA_PITCH_SHIFT 16
-#define NV10TCL_RT_PITCH_ZETA_PITCH_MASK 0xffff0000
-#define NV10TCL_COLOR_OFFSET 0x00000210
-#define NV10TCL_ZETA_OFFSET 0x00000214
-#define NV10TCL_TX_OFFSET(x) (0x00000218+((x)*4))
-#define NV10TCL_TX_OFFSET__SIZE 0x00000002
-#define NV10TCL_TX_FORMAT(x) (0x00000220+((x)*4))
-#define NV10TCL_TX_FORMAT__SIZE 0x00000002
-#define NV10TCL_TX_FORMAT_DMA0 (1 << 0)
-#define NV10TCL_TX_FORMAT_DMA1 (1 << 1)
-#define NV10TCL_TX_FORMAT_CUBE_MAP (1 << 2)
-#define NV10TCL_TX_FORMAT_FORMAT_SHIFT 7
-#define NV10TCL_TX_FORMAT_FORMAT_MASK 0x00000f80
-#define NV10TCL_TX_FORMAT_FORMAT_L8 0x00000000
-#define NV10TCL_TX_FORMAT_FORMAT_A8 0x00000080
-#define NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5 0x00000100
-#define NV10TCL_TX_FORMAT_FORMAT_A4R4G4B4 0x00000200
-#define NV10TCL_TX_FORMAT_FORMAT_R5G6B5 0x00000280
-#define NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8 0x00000300
-#define NV10TCL_TX_FORMAT_FORMAT_X8R8G8B8 0x00000380
-#define NV10TCL_TX_FORMAT_FORMAT_INDEX8 0x00000580
-#define NV10TCL_TX_FORMAT_FORMAT_DXT1 0x00000600
-#define NV10TCL_TX_FORMAT_FORMAT_DXT3 0x00000700
-#define NV10TCL_TX_FORMAT_FORMAT_DXT5 0x00000780
-#define NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00000800
-#define NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT 0x00000880
-#define NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00000900
-#define NV10TCL_TX_FORMAT_FORMAT_A8_RECT 0x00000980
-#define NV10TCL_TX_FORMAT_MIPMAP (1 << 15)
-#define NV10TCL_TX_FORMAT_BASE_SIZE_U_SHIFT 16
-#define NV10TCL_TX_FORMAT_BASE_SIZE_U_MASK 0x000f0000
-#define NV10TCL_TX_FORMAT_BASE_SIZE_V_SHIFT 20
-#define NV10TCL_TX_FORMAT_BASE_SIZE_V_MASK 0x00f00000
-#define NV10TCL_TX_FORMAT_WRAP_S_SHIFT 24
-#define NV10TCL_TX_FORMAT_WRAP_S_MASK 0x0f000000
-#define NV10TCL_TX_FORMAT_WRAP_S_REPEAT 0x01000000
-#define NV10TCL_TX_FORMAT_WRAP_S_MIRRORED_REPEAT 0x02000000
-#define NV10TCL_TX_FORMAT_WRAP_S_CLAMP_TO_EDGE 0x03000000
-#define NV10TCL_TX_FORMAT_WRAP_S_CLAMP_TO_BORDER 0x04000000
-#define NV10TCL_TX_FORMAT_WRAP_S_CLAMP 0x05000000
-#define NV10TCL_TX_FORMAT_WRAP_T_SHIFT 28
-#define NV10TCL_TX_FORMAT_WRAP_T_MASK 0xf0000000
-#define NV10TCL_TX_FORMAT_WRAP_T_REPEAT 0x10000000
-#define NV10TCL_TX_FORMAT_WRAP_T_MIRRORED_REPEAT 0x20000000
-#define NV10TCL_TX_FORMAT_WRAP_T_CLAMP_TO_EDGE 0x30000000
-#define NV10TCL_TX_FORMAT_WRAP_T_CLAMP_TO_BORDER 0x40000000
-#define NV10TCL_TX_FORMAT_WRAP_T_CLAMP 0x50000000
-#define NV10TCL_TX_ENABLE(x) (0x00000228+((x)*4))
-#define NV10TCL_TX_ENABLE__SIZE 0x00000002
-#define NV10TCL_TX_ENABLE_CULL_SHIFT 0
-#define NV10TCL_TX_ENABLE_CULL_MASK 0x0000000f
-#define NV10TCL_TX_ENABLE_CULL_DISABLED 0x00000000
-#define NV10TCL_TX_ENABLE_CULL_TEST_ALL 0x00000003
-#define NV10TCL_TX_ENABLE_CULL_TEST_ALPHA 0x00000004
-#define NV10TCL_TX_ENABLE_ANISOTROPY_SHIFT 4
-#define NV10TCL_TX_ENABLE_ANISOTROPY_MASK 0x00000030
-#define NV10TCL_TX_ENABLE_MIPMAP_MAX_LOD_SHIFT 14
-#define NV10TCL_TX_ENABLE_MIPMAP_MAX_LOD_MASK 0x0003c000
-#define NV10TCL_TX_ENABLE_MIPMAP_MIN_LOD_SHIFT 26
-#define NV10TCL_TX_ENABLE_MIPMAP_MIN_LOD_MASK 0x3c000000
-#define NV10TCL_TX_ENABLE_ENABLE (1 << 30)
-#define NV10TCL_TX_NPOT_PITCH(x) (0x00000230+((x)*4))
-#define NV10TCL_TX_NPOT_PITCH__SIZE 0x00000002
-#define NV10TCL_TX_NPOT_PITCH_PITCH_SHIFT 16
-#define NV10TCL_TX_NPOT_PITCH_PITCH_MASK 0xffff0000
-#define NV10TCL_TX_NPOT_SIZE(x) (0x00000240+((x)*4))
-#define NV10TCL_TX_NPOT_SIZE__SIZE 0x00000002
-#define NV10TCL_TX_NPOT_SIZE_H_SHIFT 0
-#define NV10TCL_TX_NPOT_SIZE_H_MASK 0x0000ffff
-#define NV10TCL_TX_NPOT_SIZE_W_SHIFT 16
-#define NV10TCL_TX_NPOT_SIZE_W_MASK 0xffff0000
-#define NV10TCL_TX_FILTER(x) (0x00000248+((x)*4))
-#define NV10TCL_TX_FILTER__SIZE 0x00000002
-#define NV10TCL_TX_FILTER_LOD_BIAS_SHIFT 8
-#define NV10TCL_TX_FILTER_LOD_BIAS_MASK 0x00000f00
-#define NV10TCL_TX_FILTER_MINIFY_SHIFT 24
-#define NV10TCL_TX_FILTER_MINIFY_MASK 0x0f000000
-#define NV10TCL_TX_FILTER_MINIFY_NEAREST 0x01000000
-#define NV10TCL_TX_FILTER_MINIFY_LINEAR 0x02000000
-#define NV10TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000
-#define NV10TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000
-#define NV10TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000
-#define NV10TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000
-#define NV10TCL_TX_FILTER_MAGNIFY_SHIFT 28
-#define NV10TCL_TX_FILTER_MAGNIFY_MASK 0xf0000000
-#define NV10TCL_TX_FILTER_MAGNIFY_NEAREST 0x10000000
-#define NV10TCL_TX_FILTER_MAGNIFY_LINEAR 0x20000000
-#define NV10TCL_TX_PALETTE_OFFSET(x) (0x00000250+((x)*4))
-#define NV10TCL_TX_PALETTE_OFFSET__SIZE 0x00000002
-#define NV10TCL_RC_IN_ALPHA(x) (0x00000260+((x)*4))
-#define NV10TCL_RC_IN_ALPHA__SIZE 0x00000002
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_SHIFT 0
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_MASK 0x0000000f
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_FOG 0x00000003
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a
-#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b
-#define NV10TCL_RC_IN_ALPHA_D_COMPONENT_USAGE (1 << 4)
-#define NV10TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000
-#define NV10TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010
-#define NV10TCL_RC_IN_ALPHA_D_MAPPING_SHIFT 5
-#define NV10TCL_RC_IN_ALPHA_D_MAPPING_MASK 0x000000e0
-#define NV10TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020
-#define NV10TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040
-#define NV10TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060
-#define NV10TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
-#define NV10TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
-#define NV10TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0
-#define NV10TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_SHIFT 8
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_MASK 0x00000f00
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_FOG 0x00000300
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00
-#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00
-#define NV10TCL_RC_IN_ALPHA_C_COMPONENT_USAGE (1 << 12)
-#define NV10TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000
-#define NV10TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000
-#define NV10TCL_RC_IN_ALPHA_C_MAPPING_SHIFT 13
-#define NV10TCL_RC_IN_ALPHA_C_MAPPING_MASK 0x0000e000
-#define NV10TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000
-#define NV10TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000
-#define NV10TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000
-#define NV10TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
-#define NV10TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
-#define NV10TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000
-#define NV10TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_SHIFT 16
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_MASK 0x000f0000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_FOG 0x00030000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000
-#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000
-#define NV10TCL_RC_IN_ALPHA_B_COMPONENT_USAGE (1 << 20)
-#define NV10TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000
-#define NV10TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000
-#define NV10TCL_RC_IN_ALPHA_B_MAPPING_SHIFT 21
-#define NV10TCL_RC_IN_ALPHA_B_MAPPING_MASK 0x00e00000
-#define NV10TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000
-#define NV10TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000
-#define NV10TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000
-#define NV10TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
-#define NV10TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
-#define NV10TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000
-#define NV10TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_SHIFT 24
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_MASK 0x0f000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_FOG 0x03000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000
-#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000
-#define NV10TCL_RC_IN_ALPHA_A_COMPONENT_USAGE (1 << 28)
-#define NV10TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000
-#define NV10TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000
-#define NV10TCL_RC_IN_ALPHA_A_MAPPING_SHIFT 29
-#define NV10TCL_RC_IN_ALPHA_A_MAPPING_MASK 0xe0000000
-#define NV10TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000
-#define NV10TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000
-#define NV10TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000
-#define NV10TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
-#define NV10TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
-#define NV10TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000
-#define NV10TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000
-#define NV10TCL_RC_IN_RGB(x) (0x00000268+((x)*4))
-#define NV10TCL_RC_IN_RGB__SIZE 0x00000002
-#define NV10TCL_RC_IN_RGB_D_INPUT_SHIFT 0
-#define NV10TCL_RC_IN_RGB_D_INPUT_MASK 0x0000000f
-#define NV10TCL_RC_IN_RGB_D_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001
-#define NV10TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002
-#define NV10TCL_RC_IN_RGB_D_INPUT_FOG 0x00000003
-#define NV10TCL_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004
-#define NV10TCL_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005
-#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008
-#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009
-#define NV10TCL_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c
-#define NV10TCL_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d
-#define NV10TCL_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
-#define NV10TCL_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f
-#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a
-#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b
-#define NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE (1 << 4)
-#define NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000
-#define NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010
-#define NV10TCL_RC_IN_RGB_D_MAPPING_SHIFT 5
-#define NV10TCL_RC_IN_RGB_D_MAPPING_MASK 0x000000e0
-#define NV10TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020
-#define NV10TCL_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040
-#define NV10TCL_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060
-#define NV10TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
-#define NV10TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
-#define NV10TCL_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0
-#define NV10TCL_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0
-#define NV10TCL_RC_IN_RGB_C_INPUT_SHIFT 8
-#define NV10TCL_RC_IN_RGB_C_INPUT_MASK 0x00000f00
-#define NV10TCL_RC_IN_RGB_C_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100
-#define NV10TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200
-#define NV10TCL_RC_IN_RGB_C_INPUT_FOG 0x00000300
-#define NV10TCL_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400
-#define NV10TCL_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500
-#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800
-#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900
-#define NV10TCL_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00
-#define NV10TCL_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00
-#define NV10TCL_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV10TCL_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00
-#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00
-#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00
-#define NV10TCL_RC_IN_RGB_C_COMPONENT_USAGE (1 << 12)
-#define NV10TCL_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000
-#define NV10TCL_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000
-#define NV10TCL_RC_IN_RGB_C_MAPPING_SHIFT 13
-#define NV10TCL_RC_IN_RGB_C_MAPPING_MASK 0x0000e000
-#define NV10TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000
-#define NV10TCL_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000
-#define NV10TCL_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000
-#define NV10TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
-#define NV10TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
-#define NV10TCL_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000
-#define NV10TCL_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000
-#define NV10TCL_RC_IN_RGB_B_INPUT_SHIFT 16
-#define NV10TCL_RC_IN_RGB_B_INPUT_MASK 0x000f0000
-#define NV10TCL_RC_IN_RGB_B_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000
-#define NV10TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000
-#define NV10TCL_RC_IN_RGB_B_INPUT_FOG 0x00030000
-#define NV10TCL_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000
-#define NV10TCL_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000
-#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000
-#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000
-#define NV10TCL_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000
-#define NV10TCL_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000
-#define NV10TCL_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
-#define NV10TCL_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000
-#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000
-#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000
-#define NV10TCL_RC_IN_RGB_B_COMPONENT_USAGE (1 << 20)
-#define NV10TCL_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000
-#define NV10TCL_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000
-#define NV10TCL_RC_IN_RGB_B_MAPPING_SHIFT 21
-#define NV10TCL_RC_IN_RGB_B_MAPPING_MASK 0x00e00000
-#define NV10TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000
-#define NV10TCL_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000
-#define NV10TCL_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000
-#define NV10TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
-#define NV10TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
-#define NV10TCL_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000
-#define NV10TCL_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000
-#define NV10TCL_RC_IN_RGB_A_INPUT_SHIFT 24
-#define NV10TCL_RC_IN_RGB_A_INPUT_MASK 0x0f000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_FOG 0x03000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000
-#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000
-#define NV10TCL_RC_IN_RGB_A_COMPONENT_USAGE (1 << 28)
-#define NV10TCL_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000
-#define NV10TCL_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000
-#define NV10TCL_RC_IN_RGB_A_MAPPING_SHIFT 29
-#define NV10TCL_RC_IN_RGB_A_MAPPING_MASK 0xe0000000
-#define NV10TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000
-#define NV10TCL_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000
-#define NV10TCL_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000
-#define NV10TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
-#define NV10TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
-#define NV10TCL_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000
-#define NV10TCL_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000
-#define NV10TCL_RC_COLOR(x) (0x00000270+((x)*4))
-#define NV10TCL_RC_COLOR__SIZE 0x00000002
-#define NV10TCL_RC_COLOR_B_SHIFT 0
-#define NV10TCL_RC_COLOR_B_MASK 0x000000ff
-#define NV10TCL_RC_COLOR_G_SHIFT 8
-#define NV10TCL_RC_COLOR_G_MASK 0x0000ff00
-#define NV10TCL_RC_COLOR_R_SHIFT 16
-#define NV10TCL_RC_COLOR_R_MASK 0x00ff0000
-#define NV10TCL_RC_COLOR_A_SHIFT 24
-#define NV10TCL_RC_COLOR_A_MASK 0xff000000
-#define NV10TCL_RC_OUT_ALPHA(x) (0x00000278+((x)*4))
-#define NV10TCL_RC_OUT_ALPHA__SIZE 0x00000002
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SHIFT 0
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_MASK 0x0000000f
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a
-#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SHIFT 4
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_MASK 0x000000f0
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0
-#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SHIFT 8
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_MASK 0x00000f00
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00
-#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00
-#define NV10TCL_RC_OUT_ALPHA_CD_DOT_PRODUCT (1 << 12)
-#define NV10TCL_RC_OUT_ALPHA_AB_DOT_PRODUCT (1 << 13)
-#define NV10TCL_RC_OUT_ALPHA_MUX_SUM (1 << 14)
-#define NV10TCL_RC_OUT_ALPHA_BIAS (1 << 15)
-#define NV10TCL_RC_OUT_ALPHA_BIAS_NONE 0x00000000
-#define NV10TCL_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000
-#define NV10TCL_RC_OUT_ALPHA_SCALE_SHIFT 16
-#define NV10TCL_RC_OUT_ALPHA_SCALE_MASK 0x00030000
-#define NV10TCL_RC_OUT_ALPHA_SCALE_NONE 0x00000000
-#define NV10TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000
-#define NV10TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000
-#define NV10TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000
-#define NV10TCL_RC_OUT_RGB(x) (0x00000280+((x)*4))
-#define NV10TCL_RC_OUT_RGB__SIZE 0x00000002
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SHIFT 0
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_MASK 0x0000000f
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a
-#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SHIFT 4
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_MASK 0x000000f0
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0
-#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SHIFT 8
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_MASK 0x00000f00
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00
-#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00
-#define NV10TCL_RC_OUT_RGB_CD_DOT_PRODUCT (1 << 12)
-#define NV10TCL_RC_OUT_RGB_AB_DOT_PRODUCT (1 << 13)
-#define NV10TCL_RC_OUT_RGB_MUX_SUM (1 << 14)
-#define NV10TCL_RC_OUT_RGB_BIAS (1 << 15)
-#define NV10TCL_RC_OUT_RGB_BIAS_NONE 0x00000000
-#define NV10TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000
-#define NV10TCL_RC_OUT_RGB_SCALE_SHIFT 16
-#define NV10TCL_RC_OUT_RGB_SCALE_MASK 0x00030000
-#define NV10TCL_RC_OUT_RGB_SCALE_NONE 0x00000000
-#define NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000
-#define NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000
-#define NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000
-#define NV10TCL_RC_OUT_RGB_OPERATION_SHIFT 27
-#define NV10TCL_RC_OUT_RGB_OPERATION_MASK 0x38000000
-#define NV10TCL_RC_FINAL0 0x00000288
-#define NV10TCL_RC_FINAL0_D_INPUT_SHIFT 0
-#define NV10TCL_RC_FINAL0_D_INPUT_MASK 0x0000000f
-#define NV10TCL_RC_FINAL0_D_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001
-#define NV10TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002
-#define NV10TCL_RC_FINAL0_D_INPUT_FOG 0x00000003
-#define NV10TCL_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004
-#define NV10TCL_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005
-#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008
-#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009
-#define NV10TCL_RC_FINAL0_D_INPUT_SPARE0 0x0000000c
-#define NV10TCL_RC_FINAL0_D_INPUT_SPARE1 0x0000000d
-#define NV10TCL_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
-#define NV10TCL_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f
-#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a
-#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b
-#define NV10TCL_RC_FINAL0_D_COMPONENT_USAGE (1 << 4)
-#define NV10TCL_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000
-#define NV10TCL_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010
-#define NV10TCL_RC_FINAL0_D_MAPPING_SHIFT 5
-#define NV10TCL_RC_FINAL0_D_MAPPING_MASK 0x000000e0
-#define NV10TCL_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020
-#define NV10TCL_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040
-#define NV10TCL_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060
-#define NV10TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
-#define NV10TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
-#define NV10TCL_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0
-#define NV10TCL_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0
-#define NV10TCL_RC_FINAL0_C_INPUT_SHIFT 8
-#define NV10TCL_RC_FINAL0_C_INPUT_MASK 0x00000f00
-#define NV10TCL_RC_FINAL0_C_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100
-#define NV10TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200
-#define NV10TCL_RC_FINAL0_C_INPUT_FOG 0x00000300
-#define NV10TCL_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400
-#define NV10TCL_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500
-#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800
-#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900
-#define NV10TCL_RC_FINAL0_C_INPUT_SPARE0 0x00000c00
-#define NV10TCL_RC_FINAL0_C_INPUT_SPARE1 0x00000d00
-#define NV10TCL_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV10TCL_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00
-#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00
-#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00
-#define NV10TCL_RC_FINAL0_C_COMPONENT_USAGE (1 << 12)
-#define NV10TCL_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000
-#define NV10TCL_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000
-#define NV10TCL_RC_FINAL0_C_MAPPING_SHIFT 13
-#define NV10TCL_RC_FINAL0_C_MAPPING_MASK 0x0000e000
-#define NV10TCL_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000
-#define NV10TCL_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000
-#define NV10TCL_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000
-#define NV10TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
-#define NV10TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
-#define NV10TCL_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000
-#define NV10TCL_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000
-#define NV10TCL_RC_FINAL0_B_INPUT_SHIFT 16
-#define NV10TCL_RC_FINAL0_B_INPUT_MASK 0x000f0000
-#define NV10TCL_RC_FINAL0_B_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000
-#define NV10TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000
-#define NV10TCL_RC_FINAL0_B_INPUT_FOG 0x00030000
-#define NV10TCL_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000
-#define NV10TCL_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000
-#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000
-#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000
-#define NV10TCL_RC_FINAL0_B_INPUT_SPARE0 0x000c0000
-#define NV10TCL_RC_FINAL0_B_INPUT_SPARE1 0x000d0000
-#define NV10TCL_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
-#define NV10TCL_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000
-#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000
-#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000
-#define NV10TCL_RC_FINAL0_B_COMPONENT_USAGE (1 << 20)
-#define NV10TCL_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000
-#define NV10TCL_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000
-#define NV10TCL_RC_FINAL0_B_MAPPING_SHIFT 21
-#define NV10TCL_RC_FINAL0_B_MAPPING_MASK 0x00e00000
-#define NV10TCL_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000
-#define NV10TCL_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000
-#define NV10TCL_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000
-#define NV10TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
-#define NV10TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
-#define NV10TCL_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000
-#define NV10TCL_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000
-#define NV10TCL_RC_FINAL0_A_INPUT_SHIFT 24
-#define NV10TCL_RC_FINAL0_A_INPUT_MASK 0x0f000000
-#define NV10TCL_RC_FINAL0_A_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000
-#define NV10TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000
-#define NV10TCL_RC_FINAL0_A_INPUT_FOG 0x03000000
-#define NV10TCL_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000
-#define NV10TCL_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000
-#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000
-#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000
-#define NV10TCL_RC_FINAL0_A_INPUT_SPARE0 0x0c000000
-#define NV10TCL_RC_FINAL0_A_INPUT_SPARE1 0x0d000000
-#define NV10TCL_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
-#define NV10TCL_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000
-#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000
-#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000
-#define NV10TCL_RC_FINAL0_A_COMPONENT_USAGE (1 << 28)
-#define NV10TCL_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000
-#define NV10TCL_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000
-#define NV10TCL_RC_FINAL0_A_MAPPING_SHIFT 29
-#define NV10TCL_RC_FINAL0_A_MAPPING_MASK 0xe0000000
-#define NV10TCL_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000
-#define NV10TCL_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000
-#define NV10TCL_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000
-#define NV10TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
-#define NV10TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
-#define NV10TCL_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000
-#define NV10TCL_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000
-#define NV10TCL_RC_FINAL1 0x0000028c
-#define NV10TCL_RC_FINAL1_COLOR_SUM_CLAMP (1 << 7)
-#define NV10TCL_RC_FINAL1_G_INPUT_SHIFT 8
-#define NV10TCL_RC_FINAL1_G_INPUT_MASK 0x00000f00
-#define NV10TCL_RC_FINAL1_G_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100
-#define NV10TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200
-#define NV10TCL_RC_FINAL1_G_INPUT_FOG 0x00000300
-#define NV10TCL_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400
-#define NV10TCL_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500
-#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800
-#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900
-#define NV10TCL_RC_FINAL1_G_INPUT_SPARE0 0x00000c00
-#define NV10TCL_RC_FINAL1_G_INPUT_SPARE1 0x00000d00
-#define NV10TCL_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV10TCL_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00
-#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00
-#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00
-#define NV10TCL_RC_FINAL1_G_COMPONENT_USAGE (1 << 12)
-#define NV10TCL_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000
-#define NV10TCL_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000
-#define NV10TCL_RC_FINAL1_G_MAPPING_SHIFT 13
-#define NV10TCL_RC_FINAL1_G_MAPPING_MASK 0x0000e000
-#define NV10TCL_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000
-#define NV10TCL_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000
-#define NV10TCL_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000
-#define NV10TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000
-#define NV10TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000
-#define NV10TCL_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000
-#define NV10TCL_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000
-#define NV10TCL_RC_FINAL1_F_INPUT_SHIFT 16
-#define NV10TCL_RC_FINAL1_F_INPUT_MASK 0x000f0000
-#define NV10TCL_RC_FINAL1_F_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000
-#define NV10TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000
-#define NV10TCL_RC_FINAL1_F_INPUT_FOG 0x00030000
-#define NV10TCL_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000
-#define NV10TCL_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000
-#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000
-#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000
-#define NV10TCL_RC_FINAL1_F_INPUT_SPARE0 0x000c0000
-#define NV10TCL_RC_FINAL1_F_INPUT_SPARE1 0x000d0000
-#define NV10TCL_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
-#define NV10TCL_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000
-#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000
-#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000
-#define NV10TCL_RC_FINAL1_F_COMPONENT_USAGE (1 << 20)
-#define NV10TCL_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000
-#define NV10TCL_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000
-#define NV10TCL_RC_FINAL1_F_MAPPING_SHIFT 21
-#define NV10TCL_RC_FINAL1_F_MAPPING_MASK 0x00e00000
-#define NV10TCL_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000
-#define NV10TCL_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000
-#define NV10TCL_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000
-#define NV10TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000
-#define NV10TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000
-#define NV10TCL_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000
-#define NV10TCL_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000
-#define NV10TCL_RC_FINAL1_E_INPUT_SHIFT 24
-#define NV10TCL_RC_FINAL1_E_INPUT_MASK 0x0f000000
-#define NV10TCL_RC_FINAL1_E_INPUT_ZERO 0x00000000
-#define NV10TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000
-#define NV10TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000
-#define NV10TCL_RC_FINAL1_E_INPUT_FOG 0x03000000
-#define NV10TCL_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000
-#define NV10TCL_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000
-#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000
-#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000
-#define NV10TCL_RC_FINAL1_E_INPUT_SPARE0 0x0c000000
-#define NV10TCL_RC_FINAL1_E_INPUT_SPARE1 0x0d000000
-#define NV10TCL_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
-#define NV10TCL_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000
-#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000
-#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000
-#define NV10TCL_RC_FINAL1_E_COMPONENT_USAGE (1 << 28)
-#define NV10TCL_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000
-#define NV10TCL_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000
-#define NV10TCL_RC_FINAL1_E_MAPPING_SHIFT 29
-#define NV10TCL_RC_FINAL1_E_MAPPING_MASK 0xe0000000
-#define NV10TCL_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV10TCL_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000
-#define NV10TCL_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000
-#define NV10TCL_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000
-#define NV10TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000
-#define NV10TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000
-#define NV10TCL_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000
-#define NV10TCL_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000
-#define NV10TCL_LIGHT_MODEL 0x00000294
-#define NV10TCL_LIGHT_MODEL_VERTEX_SPECULAR (1 << 0)
-#define NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR (1 << 1)
-#define NV10TCL_LIGHT_MODEL_LOCAL_VIEWER (1 << 16)
-#define NV10TCL_COLOR_MATERIAL 0x00000298
-#define NV10TCL_COLOR_MATERIAL_EMISSION (1 << 0)
-#define NV10TCL_COLOR_MATERIAL_AMBIENT (1 << 1)
-#define NV10TCL_COLOR_MATERIAL_DIFFUSE (1 << 2)
-#define NV10TCL_COLOR_MATERIAL_SPECULAR (1 << 3)
-#define NV10TCL_FOG_MODE 0x0000029c
-#define NV10TCL_FOG_MODE_LINEAR 0x00002601
-#define NV10TCL_FOG_MODE_EXP 0x00000800
-#define NV10TCL_FOG_MODE_EXP_ABS 0x00000802
-#define NV10TCL_FOG_MODE_EXP2 0x00000803
-#define NV10TCL_FOG_COORD 0x000002a0
-#define NV10TCL_FOG_COORD_FOG 0x00000000
-#define NV10TCL_FOG_COORD_DIST_RADIAL 0x00000001
-#define NV10TCL_FOG_COORD_DIST_ORTHOGONAL 0x00000002
-#define NV10TCL_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003
-#define NV10TCL_FOG_ENABLE 0x000002a4
-#define NV10TCL_FOG_COLOR 0x000002a8
-#define NV10TCL_FOG_COLOR_R_SHIFT 0
-#define NV10TCL_FOG_COLOR_R_MASK 0x000000ff
-#define NV10TCL_FOG_COLOR_G_SHIFT 8
-#define NV10TCL_FOG_COLOR_G_MASK 0x0000ff00
-#define NV10TCL_FOG_COLOR_B_SHIFT 16
-#define NV10TCL_FOG_COLOR_B_MASK 0x00ff0000
-#define NV10TCL_FOG_COLOR_A_SHIFT 24
-#define NV10TCL_FOG_COLOR_A_MASK 0xff000000
-#define NV10TCL_VIEWPORT_CLIP_MODE 0x000002b4
-#define NV10TCL_VIEWPORT_CLIP_HORIZ(x) (0x000002c0+((x)*4))
-#define NV10TCL_VIEWPORT_CLIP_HORIZ__SIZE 0x00000008
-#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_L_SHIFT 0
-#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_L_MASK 0x000007ff
-#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_LEFT_ENABLE (1 << 11)
-#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_R_SHIFT 16
-#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_R_MASK 0x07ff0000
-#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_RIGHT_ENABLE (1 << 27)
-#define NV10TCL_VIEWPORT_CLIP_VERT(x) (0x000002e0+((x)*4))
-#define NV10TCL_VIEWPORT_CLIP_VERT__SIZE 0x00000008
-#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_T_SHIFT 0
-#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_T_MASK 0x000007ff
-#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_TOP_ENABLE (1 << 11)
-#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_B_SHIFT 16
-#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_B_MASK 0x07ff0000
-#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_BOTTOM_ENABLE (1 << 27)
-#define NV10TCL_ALPHA_FUNC_ENABLE 0x00000300
-#define NV10TCL_BLEND_FUNC_ENABLE 0x00000304
-#define NV10TCL_CULL_FACE_ENABLE 0x00000308
-#define NV10TCL_DEPTH_TEST_ENABLE 0x0000030c
-#define NV10TCL_DITHER_ENABLE 0x00000310
-#define NV10TCL_LIGHTING_ENABLE 0x00000314
-#define NV10TCL_POINT_PARAMETERS_ENABLE 0x00000318
-#define NV10TCL_POINT_SMOOTH_ENABLE 0x0000031c
-#define NV10TCL_LINE_SMOOTH_ENABLE 0x00000320
-#define NV10TCL_POLYGON_SMOOTH_ENABLE 0x00000324
-#define NV10TCL_VERTEX_WEIGHT_ENABLE 0x00000328
-#define NV10TCL_STENCIL_ENABLE 0x0000032c
-#define NV10TCL_POLYGON_OFFSET_POINT_ENABLE 0x00000330
-#define NV10TCL_POLYGON_OFFSET_LINE_ENABLE 0x00000334
-#define NV10TCL_POLYGON_OFFSET_FILL_ENABLE 0x00000338
-#define NV10TCL_ALPHA_FUNC_FUNC 0x0000033c
-#define NV10TCL_ALPHA_FUNC_FUNC_NEVER 0x00000200
-#define NV10TCL_ALPHA_FUNC_FUNC_LESS 0x00000201
-#define NV10TCL_ALPHA_FUNC_FUNC_EQUAL 0x00000202
-#define NV10TCL_ALPHA_FUNC_FUNC_LEQUAL 0x00000203
-#define NV10TCL_ALPHA_FUNC_FUNC_GREATER 0x00000204
-#define NV10TCL_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205
-#define NV10TCL_ALPHA_FUNC_FUNC_GEQUAL 0x00000206
-#define NV10TCL_ALPHA_FUNC_FUNC_ALWAYS 0x00000207
-#define NV10TCL_ALPHA_FUNC_REF 0x00000340
-#define NV10TCL_BLEND_FUNC_SRC 0x00000344
-#define NV10TCL_BLEND_FUNC_SRC_ZERO 0x00000000
-#define NV10TCL_BLEND_FUNC_SRC_ONE 0x00000001
-#define NV10TCL_BLEND_FUNC_SRC_SRC_COLOR 0x00000300
-#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301
-#define NV10TCL_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302
-#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303
-#define NV10TCL_BLEND_FUNC_SRC_DST_ALPHA 0x00000304
-#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305
-#define NV10TCL_BLEND_FUNC_SRC_DST_COLOR 0x00000306
-#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307
-#define NV10TCL_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308
-#define NV10TCL_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001
-#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002
-#define NV10TCL_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003
-#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004
-#define NV10TCL_BLEND_FUNC_DST 0x00000348
-#define NV10TCL_BLEND_FUNC_DST_ZERO 0x00000000
-#define NV10TCL_BLEND_FUNC_DST_ONE 0x00000001
-#define NV10TCL_BLEND_FUNC_DST_SRC_COLOR 0x00000300
-#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301
-#define NV10TCL_BLEND_FUNC_DST_SRC_ALPHA 0x00000302
-#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303
-#define NV10TCL_BLEND_FUNC_DST_DST_ALPHA 0x00000304
-#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305
-#define NV10TCL_BLEND_FUNC_DST_DST_COLOR 0x00000306
-#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307
-#define NV10TCL_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308
-#define NV10TCL_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001
-#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002
-#define NV10TCL_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003
-#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004
-#define NV10TCL_BLEND_COLOR 0x0000034c
-#define NV10TCL_BLEND_COLOR_B_SHIFT 0
-#define NV10TCL_BLEND_COLOR_B_MASK 0x000000ff
-#define NV10TCL_BLEND_COLOR_G_SHIFT 8
-#define NV10TCL_BLEND_COLOR_G_MASK 0x0000ff00
-#define NV10TCL_BLEND_COLOR_R_SHIFT 16
-#define NV10TCL_BLEND_COLOR_R_MASK 0x00ff0000
-#define NV10TCL_BLEND_COLOR_A_SHIFT 24
-#define NV10TCL_BLEND_COLOR_A_MASK 0xff000000
-#define NV10TCL_BLEND_EQUATION 0x00000350
-#define NV10TCL_BLEND_EQUATION_FUNC_ADD 0x00008006
-#define NV10TCL_BLEND_EQUATION_MIN 0x00008007
-#define NV10TCL_BLEND_EQUATION_MAX 0x00008008
-#define NV10TCL_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a
-#define NV10TCL_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b
-#define NV10TCL_DEPTH_FUNC 0x00000354
-#define NV10TCL_DEPTH_FUNC_NEVER 0x00000200
-#define NV10TCL_DEPTH_FUNC_LESS 0x00000201
-#define NV10TCL_DEPTH_FUNC_EQUAL 0x00000202
-#define NV10TCL_DEPTH_FUNC_LEQUAL 0x00000203
-#define NV10TCL_DEPTH_FUNC_GREATER 0x00000204
-#define NV10TCL_DEPTH_FUNC_NOTEQUAL 0x00000205
-#define NV10TCL_DEPTH_FUNC_GEQUAL 0x00000206
-#define NV10TCL_DEPTH_FUNC_ALWAYS 0x00000207
-#define NV10TCL_COLOR_MASK 0x00000358
-#define NV10TCL_COLOR_MASK_B (1 << 0)
-#define NV10TCL_COLOR_MASK_G (1 << 8)
-#define NV10TCL_COLOR_MASK_R (1 << 16)
-#define NV10TCL_COLOR_MASK_A (1 << 24)
-#define NV10TCL_DEPTH_WRITE_ENABLE 0x0000035c
-#define NV10TCL_STENCIL_MASK 0x00000360
-#define NV10TCL_STENCIL_FUNC_FUNC 0x00000364
-#define NV10TCL_STENCIL_FUNC_FUNC_NEVER 0x00000200
-#define NV10TCL_STENCIL_FUNC_FUNC_LESS 0x00000201
-#define NV10TCL_STENCIL_FUNC_FUNC_EQUAL 0x00000202
-#define NV10TCL_STENCIL_FUNC_FUNC_LEQUAL 0x00000203
-#define NV10TCL_STENCIL_FUNC_FUNC_GREATER 0x00000204
-#define NV10TCL_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205
-#define NV10TCL_STENCIL_FUNC_FUNC_GEQUAL 0x00000206
-#define NV10TCL_STENCIL_FUNC_FUNC_ALWAYS 0x00000207
-#define NV10TCL_STENCIL_FUNC_REF 0x00000368
-#define NV10TCL_STENCIL_FUNC_MASK 0x0000036c
-#define NV10TCL_STENCIL_OP_FAIL 0x00000370
-#define NV10TCL_STENCIL_OP_FAIL_ZERO 0x00000000
-#define NV10TCL_STENCIL_OP_FAIL_INVERT 0x0000150a
-#define NV10TCL_STENCIL_OP_FAIL_KEEP 0x00001e00
-#define NV10TCL_STENCIL_OP_FAIL_REPLACE 0x00001e01
-#define NV10TCL_STENCIL_OP_FAIL_INCR 0x00001e02
-#define NV10TCL_STENCIL_OP_FAIL_DECR 0x00001e03
-#define NV10TCL_STENCIL_OP_FAIL_INCR_WRAP 0x00008507
-#define NV10TCL_STENCIL_OP_FAIL_DECR_WRAP 0x00008508
-#define NV10TCL_STENCIL_OP_ZFAIL 0x00000374
-#define NV10TCL_STENCIL_OP_ZFAIL_ZERO 0x00000000
-#define NV10TCL_STENCIL_OP_ZFAIL_INVERT 0x0000150a
-#define NV10TCL_STENCIL_OP_ZFAIL_KEEP 0x00001e00
-#define NV10TCL_STENCIL_OP_ZFAIL_REPLACE 0x00001e01
-#define NV10TCL_STENCIL_OP_ZFAIL_INCR 0x00001e02
-#define NV10TCL_STENCIL_OP_ZFAIL_DECR 0x00001e03
-#define NV10TCL_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507
-#define NV10TCL_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508
-#define NV10TCL_STENCIL_OP_ZPASS 0x00000378
-#define NV10TCL_STENCIL_OP_ZPASS_ZERO 0x00000000
-#define NV10TCL_STENCIL_OP_ZPASS_INVERT 0x0000150a
-#define NV10TCL_STENCIL_OP_ZPASS_KEEP 0x00001e00
-#define NV10TCL_STENCIL_OP_ZPASS_REPLACE 0x00001e01
-#define NV10TCL_STENCIL_OP_ZPASS_INCR 0x00001e02
-#define NV10TCL_STENCIL_OP_ZPASS_DECR 0x00001e03
-#define NV10TCL_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507
-#define NV10TCL_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508
-#define NV10TCL_SHADE_MODEL 0x0000037c
-#define NV10TCL_SHADE_MODEL_FLAT 0x00001d00
-#define NV10TCL_SHADE_MODEL_SMOOTH 0x00001d01
-#define NV10TCL_LINE_WIDTH 0x00000380
-#define NV10TCL_POLYGON_OFFSET_FACTOR 0x00000384
-#define NV10TCL_POLYGON_OFFSET_UNITS 0x00000388
-#define NV10TCL_POLYGON_MODE_FRONT 0x0000038c
-#define NV10TCL_POLYGON_MODE_FRONT_POINT 0x00001b00
-#define NV10TCL_POLYGON_MODE_FRONT_LINE 0x00001b01
-#define NV10TCL_POLYGON_MODE_FRONT_FILL 0x00001b02
-#define NV10TCL_POLYGON_MODE_BACK 0x00000390
-#define NV10TCL_POLYGON_MODE_BACK_POINT 0x00001b00
-#define NV10TCL_POLYGON_MODE_BACK_LINE 0x00001b01
-#define NV10TCL_POLYGON_MODE_BACK_FILL 0x00001b02
-#define NV10TCL_DEPTH_RANGE_NEAR 0x00000394
-#define NV10TCL_DEPTH_RANGE_FAR 0x00000398
-#define NV10TCL_CULL_FACE 0x0000039c
-#define NV10TCL_CULL_FACE_FRONT 0x00000404
-#define NV10TCL_CULL_FACE_BACK 0x00000405
-#define NV10TCL_CULL_FACE_FRONT_AND_BACK 0x00000408
-#define NV10TCL_FRONT_FACE 0x000003a0
-#define NV10TCL_FRONT_FACE_CW 0x00000900
-#define NV10TCL_FRONT_FACE_CCW 0x00000901
-#define NV10TCL_NORMALIZE_ENABLE 0x000003a4
-#define NV10TCL_MATERIAL_FACTOR_R 0x000003a8
-#define NV10TCL_MATERIAL_FACTOR_G 0x000003ac
-#define NV10TCL_MATERIAL_FACTOR_B 0x000003b0
-#define NV10TCL_MATERIAL_FACTOR_A 0x000003b4
-#define NV10TCL_SEPARATE_SPECULAR_ENABLE 0x000003b8
-#define NV10TCL_ENABLED_LIGHTS 0x000003bc
-#define NV10TCL_ENABLED_LIGHTS_0_SHIFT 0
-#define NV10TCL_ENABLED_LIGHTS_0_MASK 0x00000003
-#define NV10TCL_ENABLED_LIGHTS_0_DISABLED 0x00000000
-#define NV10TCL_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001
-#define NV10TCL_ENABLED_LIGHTS_0_POSITIONAL 0x00000002
-#define NV10TCL_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003
-#define NV10TCL_ENABLED_LIGHTS_1_SHIFT 2
-#define NV10TCL_ENABLED_LIGHTS_1_MASK 0x0000000c
-#define NV10TCL_ENABLED_LIGHTS_1_DISABLED 0x00000000
-#define NV10TCL_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004
-#define NV10TCL_ENABLED_LIGHTS_1_POSITIONAL 0x00000008
-#define NV10TCL_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c
-#define NV10TCL_ENABLED_LIGHTS_2_SHIFT 4
-#define NV10TCL_ENABLED_LIGHTS_2_MASK 0x00000030
-#define NV10TCL_ENABLED_LIGHTS_2_DISABLED 0x00000000
-#define NV10TCL_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010
-#define NV10TCL_ENABLED_LIGHTS_2_POSITIONAL 0x00000020
-#define NV10TCL_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030
-#define NV10TCL_ENABLED_LIGHTS_3_SHIFT 6
-#define NV10TCL_ENABLED_LIGHTS_3_MASK 0x000000c0
-#define NV10TCL_ENABLED_LIGHTS_3_DISABLED 0x00000000
-#define NV10TCL_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040
-#define NV10TCL_ENABLED_LIGHTS_3_POSITIONAL 0x00000080
-#define NV10TCL_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0
-#define NV10TCL_ENABLED_LIGHTS_4_SHIFT 8
-#define NV10TCL_ENABLED_LIGHTS_4_MASK 0x00000300
-#define NV10TCL_ENABLED_LIGHTS_4_DISABLED 0x00000000
-#define NV10TCL_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100
-#define NV10TCL_ENABLED_LIGHTS_4_POSITIONAL 0x00000200
-#define NV10TCL_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300
-#define NV10TCL_ENABLED_LIGHTS_5_SHIFT 10
-#define NV10TCL_ENABLED_LIGHTS_5_MASK 0x00000c00
-#define NV10TCL_ENABLED_LIGHTS_5_DISABLED 0x00000000
-#define NV10TCL_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400
-#define NV10TCL_ENABLED_LIGHTS_5_POSITIONAL 0x00000800
-#define NV10TCL_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00
-#define NV10TCL_ENABLED_LIGHTS_6_SHIFT 12
-#define NV10TCL_ENABLED_LIGHTS_6_MASK 0x00003000
-#define NV10TCL_ENABLED_LIGHTS_6_DISABLED 0x00000000
-#define NV10TCL_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000
-#define NV10TCL_ENABLED_LIGHTS_6_POSITIONAL 0x00002000
-#define NV10TCL_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000
-#define NV10TCL_ENABLED_LIGHTS_7_SHIFT 14
-#define NV10TCL_ENABLED_LIGHTS_7_MASK 0x0000c000
-#define NV10TCL_ENABLED_LIGHTS_7_DISABLED 0x00000000
-#define NV10TCL_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000
-#define NV10TCL_ENABLED_LIGHTS_7_POSITIONAL 0x00008000
-#define NV10TCL_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000
-#define NV10TCL_TX_GEN_MODE_S(x) (0x000003c0+((x)*16))
-#define NV10TCL_TX_GEN_MODE_S__SIZE 0x00000002
-#define NV10TCL_TX_GEN_MODE_S_FALSE 0x00000000
-#define NV10TCL_TX_GEN_MODE_S_EYE_LINEAR 0x00002400
-#define NV10TCL_TX_GEN_MODE_S_OBJECT_LINEAR 0x00002401
-#define NV10TCL_TX_GEN_MODE_S_SPHERE_MAP 0x00002402
-#define NV10TCL_TX_GEN_MODE_S_NORMAL_MAP 0x00008511
-#define NV10TCL_TX_GEN_MODE_S_REFLECTION_MAP 0x00008512
-#define NV10TCL_TX_GEN_MODE_T(x) (0x000003c4+((x)*16))
-#define NV10TCL_TX_GEN_MODE_T__SIZE 0x00000002
-#define NV10TCL_TX_GEN_MODE_T_FALSE 0x00000000
-#define NV10TCL_TX_GEN_MODE_T_EYE_LINEAR 0x00002400
-#define NV10TCL_TX_GEN_MODE_T_OBJECT_LINEAR 0x00002401
-#define NV10TCL_TX_GEN_MODE_T_SPHERE_MAP 0x00002402
-#define NV10TCL_TX_GEN_MODE_T_NORMAL_MAP 0x00008511
-#define NV10TCL_TX_GEN_MODE_T_REFLECTION_MAP 0x00008512
-#define NV10TCL_TX_GEN_MODE_R(x) (0x000003c8+((x)*16))
-#define NV10TCL_TX_GEN_MODE_R__SIZE 0x00000002
-#define NV10TCL_TX_GEN_MODE_R_FALSE 0x00000000
-#define NV10TCL_TX_GEN_MODE_R_EYE_LINEAR 0x00002400
-#define NV10TCL_TX_GEN_MODE_R_OBJECT_LINEAR 0x00002401
-#define NV10TCL_TX_GEN_MODE_R_SPHERE_MAP 0x00002402
-#define NV10TCL_TX_GEN_MODE_R_NORMAL_MAP 0x00008511
-#define NV10TCL_TX_GEN_MODE_R_REFLECTION_MAP 0x00008512
-#define NV10TCL_TX_GEN_MODE_Q(x) (0x000003cc+((x)*16))
-#define NV10TCL_TX_GEN_MODE_Q__SIZE 0x00000002
-#define NV10TCL_TX_GEN_MODE_Q_FALSE 0x00000000
-#define NV10TCL_TX_GEN_MODE_Q_EYE_LINEAR 0x00002400
-#define NV10TCL_TX_GEN_MODE_Q_OBJECT_LINEAR 0x00002401
-#define NV10TCL_TX_GEN_MODE_Q_SPHERE_MAP 0x00002402
-#define NV10TCL_TX_GEN_MODE_Q_NORMAL_MAP 0x00008511
-#define NV10TCL_TX_GEN_MODE_Q_REFLECTION_MAP 0x00008512
-#define NV10TCL_TX_MATRIX_ENABLE(x) (0x000003e0+((x)*4))
-#define NV10TCL_TX_MATRIX_ENABLE__SIZE 0x00000002
-#define NV10TCL_VIEW_MATRIX_ENABLE 0x000003e8
-#define NV10TCL_VIEW_MATRIX_ENABLE_MODELVIEW1 (1 << 0)
-#define NV10TCL_VIEW_MATRIX_ENABLE_MODELVIEW0 (1 << 1)
-#define NV10TCL_VIEW_MATRIX_ENABLE_PROJECTION (1 << 2)
-#define NV10TCL_POINT_SIZE 0x000003ec
-#define NV10TCL_MODELVIEW0_MATRIX(x) (0x00000400+((x)*4))
-#define NV10TCL_MODELVIEW0_MATRIX__SIZE 0x00000010
-#define NV10TCL_MODELVIEW1_MATRIX(x) (0x00000440+((x)*4))
-#define NV10TCL_MODELVIEW1_MATRIX__SIZE 0x00000010
-#define NV10TCL_INVERSE_MODELVIEW0_MATRIX(x) (0x00000480+((x)*4))
-#define NV10TCL_INVERSE_MODELVIEW0_MATRIX__SIZE 0x00000010
-#define NV10TCL_INVERSE_MODELVIEW1_MATRIX(x) (0x000004c0+((x)*4))
-#define NV10TCL_INVERSE_MODELVIEW1_MATRIX__SIZE 0x00000010
-#define NV10TCL_PROJECTION_MATRIX(x) (0x00000500+((x)*4))
-#define NV10TCL_PROJECTION_MATRIX__SIZE 0x00000010
-#define NV10TCL_TX0_MATRIX(x) (0x00000540+((x)*4))
-#define NV10TCL_TX0_MATRIX__SIZE 0x00000010
-#define NV10TCL_TX1_MATRIX(x) (0x00000580+((x)*4))
-#define NV10TCL_TX1_MATRIX__SIZE 0x00000010
-#define NV10TCL_TX_GEN_COEFF_S_A(x) (0x00000600+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_S_A__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_S_B(x) (0x00000604+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_S_B__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_S_C(x) (0x00000608+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_S_C__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_S_D(x) (0x0000060c+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_S_D__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_T_A(x) (0x00000610+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_T_A__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_T_B(x) (0x00000614+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_T_B__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_T_C(x) (0x00000618+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_T_C__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_T_D(x) (0x0000061c+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_T_D__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_R_A(x) (0x00000620+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_R_A__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_R_B(x) (0x00000624+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_R_B__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_R_C(x) (0x00000628+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_R_C__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_R_D(x) (0x0000062c+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_R_D__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_Q_A(x) (0x00000630+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_Q_A__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_Q_B(x) (0x00000634+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_Q_B__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_Q_C(x) (0x00000638+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_Q_C__SIZE 0x00000002
-#define NV10TCL_TX_GEN_COEFF_Q_D(x) (0x0000063c+((x)*64))
-#define NV10TCL_TX_GEN_COEFF_Q_D__SIZE 0x00000002
-#define NV10TCL_FOG_EQUATION_CONSTANT 0x00000680
-#define NV10TCL_FOG_EQUATION_LINEAR 0x00000684
-#define NV10TCL_FOG_EQUATION_QUADRATIC 0x00000688
-#define NV10TCL_MATERIAL_SHININESS(x) (0x000006a0+((x)*4))
-#define NV10TCL_MATERIAL_SHININESS__SIZE 0x00000006
-#define NV10TCL_LIGHT_MODEL_AMBIENT_R 0x000006c4
-#define NV10TCL_LIGHT_MODEL_AMBIENT_G 0x000006c8
-#define NV10TCL_LIGHT_MODEL_AMBIENT_B 0x000006cc
-#define NV10TCL_VIEWPORT_TRANSLATE_X 0x000006e8
-#define NV10TCL_VIEWPORT_TRANSLATE_Y 0x000006ec
-#define NV10TCL_VIEWPORT_TRANSLATE_Z 0x000006f0
-#define NV10TCL_VIEWPORT_TRANSLATE_W 0x000006f4
-#define NV10TCL_POINT_PARAMETER(x) (0x000006f8+((x)*4))
-#define NV10TCL_POINT_PARAMETER__SIZE 0x00000008
-#define NV10TCL_LIGHT_AMBIENT_R(x) (0x00000800+((x)*128))
-#define NV10TCL_LIGHT_AMBIENT_R__SIZE 0x00000008
-#define NV10TCL_LIGHT_AMBIENT_G(x) (0x00000804+((x)*128))
-#define NV10TCL_LIGHT_AMBIENT_G__SIZE 0x00000008
-#define NV10TCL_LIGHT_AMBIENT_B(x) (0x00000808+((x)*128))
-#define NV10TCL_LIGHT_AMBIENT_B__SIZE 0x00000008
-#define NV10TCL_LIGHT_DIFFUSE_R(x) (0x0000080c+((x)*128))
-#define NV10TCL_LIGHT_DIFFUSE_R__SIZE 0x00000008
-#define NV10TCL_LIGHT_DIFFUSE_G(x) (0x00000810+((x)*128))
-#define NV10TCL_LIGHT_DIFFUSE_G__SIZE 0x00000008
-#define NV10TCL_LIGHT_DIFFUSE_B(x) (0x00000814+((x)*128))
-#define NV10TCL_LIGHT_DIFFUSE_B__SIZE 0x00000008
-#define NV10TCL_LIGHT_SPECULAR_R(x) (0x00000818+((x)*128))
-#define NV10TCL_LIGHT_SPECULAR_R__SIZE 0x00000008
-#define NV10TCL_LIGHT_SPECULAR_G(x) (0x0000081c+((x)*128))
-#define NV10TCL_LIGHT_SPECULAR_G__SIZE 0x00000008
-#define NV10TCL_LIGHT_SPECULAR_B(x) (0x00000820+((x)*128))
-#define NV10TCL_LIGHT_SPECULAR_B__SIZE 0x00000008
-#define NV10TCL_LIGHT_HALF_VECTOR_X(x) (0x00000828+((x)*128))
-#define NV10TCL_LIGHT_HALF_VECTOR_X__SIZE 0x00000008
-#define NV10TCL_LIGHT_HALF_VECTOR_Y(x) (0x0000082c+((x)*128))
-#define NV10TCL_LIGHT_HALF_VECTOR_Y__SIZE 0x00000008
-#define NV10TCL_LIGHT_HALF_VECTOR_Z(x) (0x00000830+((x)*128))
-#define NV10TCL_LIGHT_HALF_VECTOR_Z__SIZE 0x00000008
-#define NV10TCL_LIGHT_DIRECTION_X(x) (0x00000834+((x)*128))
-#define NV10TCL_LIGHT_DIRECTION_X__SIZE 0x00000008
-#define NV10TCL_LIGHT_DIRECTION_Y(x) (0x00000838+((x)*128))
-#define NV10TCL_LIGHT_DIRECTION_Y__SIZE 0x00000008
-#define NV10TCL_LIGHT_DIRECTION_Z(x) (0x0000083c+((x)*128))
-#define NV10TCL_LIGHT_DIRECTION_Z__SIZE 0x00000008
-#define NV10TCL_LIGHT_SPOT_CUTOFF_A(x) (0x00000840+((x)*128))
-#define NV10TCL_LIGHT_SPOT_CUTOFF_A__SIZE 0x00000008
-#define NV10TCL_LIGHT_SPOT_CUTOFF_B(x) (0x00000844+((x)*128))
-#define NV10TCL_LIGHT_SPOT_CUTOFF_B__SIZE 0x00000008
-#define NV10TCL_LIGHT_SPOT_CUTOFF_C(x) (0x00000848+((x)*128))
-#define NV10TCL_LIGHT_SPOT_CUTOFF_C__SIZE 0x00000008
-#define NV10TCL_LIGHT_SPOT_DIR_X(x) (0x0000084c+((x)*128))
-#define NV10TCL_LIGHT_SPOT_DIR_X__SIZE 0x00000008
-#define NV10TCL_LIGHT_SPOT_DIR_Y(x) (0x00000850+((x)*128))
-#define NV10TCL_LIGHT_SPOT_DIR_Y__SIZE 0x00000008
-#define NV10TCL_LIGHT_SPOT_DIR_Z(x) (0x00000854+((x)*128))
-#define NV10TCL_LIGHT_SPOT_DIR_Z__SIZE 0x00000008
-#define NV10TCL_LIGHT_SPOT_CUTOFF_D(x) (0x00000858+((x)*128))
-#define NV10TCL_LIGHT_SPOT_CUTOFF_D__SIZE 0x00000008
-#define NV10TCL_LIGHT_POSITION_X(x) (0x0000085c+((x)*128))
-#define NV10TCL_LIGHT_POSITION_X__SIZE 0x00000008
-#define NV10TCL_LIGHT_POSITION_Y(x) (0x00000860+((x)*128))
-#define NV10TCL_LIGHT_POSITION_Y__SIZE 0x00000008
-#define NV10TCL_LIGHT_POSITION_Z(x) (0x00000864+((x)*128))
-#define NV10TCL_LIGHT_POSITION_Z__SIZE 0x00000008
-#define NV10TCL_LIGHT_ATTENUATION_CONSTANT(x) (0x00000868+((x)*128))
-#define NV10TCL_LIGHT_ATTENUATION_CONSTANT__SIZE 0x00000008
-#define NV10TCL_LIGHT_ATTENUATION_LINEAR(x) (0x0000086c+((x)*128))
-#define NV10TCL_LIGHT_ATTENUATION_LINEAR__SIZE 0x00000008
-#define NV10TCL_LIGHT_ATTENUATION_QUADRATIC(x) (0x00000870+((x)*128))
-#define NV10TCL_LIGHT_ATTENUATION_QUADRATIC__SIZE 0x00000008
-#define NV10TCL_VERTEX_POS_3F_X 0x00000c00
-#define NV10TCL_VERTEX_POS_3F_Y 0x00000c04
-#define NV10TCL_VERTEX_POS_3F_Z 0x00000c08
-#define NV10TCL_VERTEX_POS_4F_X 0x00000c18
-#define NV10TCL_VERTEX_POS_4F_Y 0x00000c1c
-#define NV10TCL_VERTEX_POS_4F_Z 0x00000c20
-#define NV10TCL_VERTEX_POS_4F_W 0x00000c24
-#define NV10TCL_VERTEX_NOR_3F_X 0x00000c30
-#define NV10TCL_VERTEX_NOR_3F_Y 0x00000c34
-#define NV10TCL_VERTEX_NOR_3F_Z 0x00000c38
-#define NV10TCL_VERTEX_NOR_3I_XY 0x00000c40
-#define NV10TCL_VERTEX_NOR_3I_XY_X_SHIFT 0
-#define NV10TCL_VERTEX_NOR_3I_XY_X_MASK 0x0000ffff
-#define NV10TCL_VERTEX_NOR_3I_XY_Y_SHIFT 16
-#define NV10TCL_VERTEX_NOR_3I_XY_Y_MASK 0xffff0000
-#define NV10TCL_VERTEX_NOR_3I_Z 0x00000c44
-#define NV10TCL_VERTEX_NOR_3I_Z_Z_SHIFT 0
-#define NV10TCL_VERTEX_NOR_3I_Z_Z_MASK 0x0000ffff
-#define NV10TCL_VERTEX_COL_4F_R 0x00000c50
-#define NV10TCL_VERTEX_COL_4F_G 0x00000c54
-#define NV10TCL_VERTEX_COL_4F_B 0x00000c58
-#define NV10TCL_VERTEX_COL_4F_A 0x00000c5c
-#define NV10TCL_VERTEX_COL_3F_R 0x00000c60
-#define NV10TCL_VERTEX_COL_3F_G 0x00000c64
-#define NV10TCL_VERTEX_COL_3F_B 0x00000c68
-#define NV10TCL_VERTEX_COL_4I 0x00000c6c
-#define NV10TCL_VERTEX_COL_4I_R_SHIFT 0
-#define NV10TCL_VERTEX_COL_4I_R_MASK 0x000000ff
-#define NV10TCL_VERTEX_COL_4I_G_SHIFT 8
-#define NV10TCL_VERTEX_COL_4I_G_MASK 0x0000ff00
-#define NV10TCL_VERTEX_COL_4I_B_SHIFT 16
-#define NV10TCL_VERTEX_COL_4I_B_MASK 0x00ff0000
-#define NV10TCL_VERTEX_COL_4I_A_SHIFT 24
-#define NV10TCL_VERTEX_COL_4I_A_MASK 0xff000000
-#define NV10TCL_VERTEX_COL2_3F_R 0x00000c80
-#define NV10TCL_VERTEX_COL2_3F_G 0x00000c84
-#define NV10TCL_VERTEX_COL2_3F_B 0x00000c88
-#define NV10TCL_VERTEX_COL2_3I 0x00000c8c
-#define NV10TCL_VERTEX_COL2_3I_R_SHIFT 0
-#define NV10TCL_VERTEX_COL2_3I_R_MASK 0x000000ff
-#define NV10TCL_VERTEX_COL2_3I_G_SHIFT 8
-#define NV10TCL_VERTEX_COL2_3I_G_MASK 0x0000ff00
-#define NV10TCL_VERTEX_COL2_3I_B_SHIFT 16
-#define NV10TCL_VERTEX_COL2_3I_B_MASK 0x00ff0000
-#define NV10TCL_VERTEX_TX0_2F_S 0x00000c90
-#define NV10TCL_VERTEX_TX0_2F_T 0x00000c94
-#define NV10TCL_VERTEX_TX0_2I 0x00000c98
-#define NV10TCL_VERTEX_TX0_2I_S_SHIFT 0
-#define NV10TCL_VERTEX_TX0_2I_S_MASK 0x0000ffff
-#define NV10TCL_VERTEX_TX0_2I_T_SHIFT 16
-#define NV10TCL_VERTEX_TX0_2I_T_MASK 0xffff0000
-#define NV10TCL_VERTEX_TX0_4F_S 0x00000ca0
-#define NV10TCL_VERTEX_TX0_4F_T 0x00000ca4
-#define NV10TCL_VERTEX_TX0_4F_R 0x00000ca8
-#define NV10TCL_VERTEX_TX0_4F_Q 0x00000cac
-#define NV10TCL_VERTEX_TX0_4I_ST 0x00000cb0
-#define NV10TCL_VERTEX_TX0_4I_ST_S_SHIFT 0
-#define NV10TCL_VERTEX_TX0_4I_ST_S_MASK 0x0000ffff
-#define NV10TCL_VERTEX_TX0_4I_ST_T_SHIFT 16
-#define NV10TCL_VERTEX_TX0_4I_ST_T_MASK 0xffff0000
-#define NV10TCL_VERTEX_TX0_4I_RQ 0x00000cb4
-#define NV10TCL_VERTEX_TX0_4I_RQ_R_SHIFT 0
-#define NV10TCL_VERTEX_TX0_4I_RQ_R_MASK 0x0000ffff
-#define NV10TCL_VERTEX_TX0_4I_RQ_Q_SHIFT 16
-#define NV10TCL_VERTEX_TX0_4I_RQ_Q_MASK 0xffff0000
-#define NV10TCL_VERTEX_TX1_2F_S 0x00000cb8
-#define NV10TCL_VERTEX_TX1_2F_T 0x00000cbc
-#define NV10TCL_VERTEX_TX1_2I 0x00000cc0
-#define NV10TCL_VERTEX_TX1_2I_S_SHIFT 0
-#define NV10TCL_VERTEX_TX1_2I_S_MASK 0x0000ffff
-#define NV10TCL_VERTEX_TX1_2I_T_SHIFT 16
-#define NV10TCL_VERTEX_TX1_2I_T_MASK 0xffff0000
-#define NV10TCL_VERTEX_TX1_4F_S 0x00000cc8
-#define NV10TCL_VERTEX_TX1_4F_T 0x00000ccc
-#define NV10TCL_VERTEX_TX1_4F_R 0x00000cd0
-#define NV10TCL_VERTEX_TX1_4F_Q 0x00000cd4
-#define NV10TCL_VERTEX_TX1_4I_ST 0x00000cd8
-#define NV10TCL_VERTEX_TX1_4I_ST_S_SHIFT 0
-#define NV10TCL_VERTEX_TX1_4I_ST_S_MASK 0x0000ffff
-#define NV10TCL_VERTEX_TX1_4I_ST_T_SHIFT 16
-#define NV10TCL_VERTEX_TX1_4I_ST_T_MASK 0xffff0000
-#define NV10TCL_VERTEX_TX1_4I_RQ 0x00000cdc
-#define NV10TCL_VERTEX_TX1_4I_RQ_R_SHIFT 0
-#define NV10TCL_VERTEX_TX1_4I_RQ_R_MASK 0x0000ffff
-#define NV10TCL_VERTEX_TX1_4I_RQ_Q_SHIFT 16
-#define NV10TCL_VERTEX_TX1_4I_RQ_Q_MASK 0xffff0000
-#define NV10TCL_VERTEX_FOG_1F 0x00000ce0
-#define NV10TCL_VERTEX_WGH_1F 0x00000ce4
-#define NV10TCL_EDGEFLAG_ENABLE 0x00000cec
-#define NV10TCL_VERTEX_ARRAY_VALIDATE 0x00000cf0
-#define NV10TCL_VTXBUF_ADDRESS(x) (0x00000d00+((x)*8))
-#define NV10TCL_VTXBUF_ADDRESS__SIZE 0x00000008
-#define NV10TCL_VTXFMT(x) (0x00000d04+((x)*8))
-#define NV10TCL_VTXFMT__SIZE 0x00000008
-#define NV10TCL_VTXFMT_TYPE_SHIFT 0
-#define NV10TCL_VTXFMT_TYPE_MASK 0x0000000f
-#define NV10TCL_VTXFMT_TYPE_BYTE_BGRA 0x00000000
-#define NV10TCL_VTXFMT_TYPE_SHORT 0x00000001
-#define NV10TCL_VTXFMT_TYPE_FLOAT 0x00000002
-#define NV10TCL_VTXFMT_TYPE_BYTE_RGBA 0x00000004
-#define NV10TCL_VTXFMT_FIELDS_SHIFT 4
-#define NV10TCL_VTXFMT_FIELDS_MASK 0x000000f0
-#define NV10TCL_VTXFMT_STRIDE_SHIFT 8
-#define NV10TCL_VTXFMT_STRIDE_MASK 0x0000ff00
-#define NV10TCL_VTXFMT_POS_HOMOGENEOUS (1 << 24)
-#define NV10TCL_VERTEX_BEGIN_END 0x00000dfc
-#define NV10TCL_VERTEX_BEGIN_END_STOP 0x00000000
-#define NV10TCL_VERTEX_BEGIN_END_POINTS 0x00000001
-#define NV10TCL_VERTEX_BEGIN_END_LINES 0x00000002
-#define NV10TCL_VERTEX_BEGIN_END_LINE_LOOP 0x00000003
-#define NV10TCL_VERTEX_BEGIN_END_LINE_STRIP 0x00000004
-#define NV10TCL_VERTEX_BEGIN_END_TRIANGLES 0x00000005
-#define NV10TCL_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006
-#define NV10TCL_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007
-#define NV10TCL_VERTEX_BEGIN_END_QUADS 0x00000008
-#define NV10TCL_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009
-#define NV10TCL_VERTEX_BEGIN_END_POLYGON 0x0000000a
-#define NV10TCL_VB_ELEMENT_U16 0x00000e00
-#define NV10TCL_VB_ELEMENT_U16_I0_SHIFT 0
-#define NV10TCL_VB_ELEMENT_U16_I0_MASK 0x0000ffff
-#define NV10TCL_VB_ELEMENT_U16_I1_SHIFT 16
-#define NV10TCL_VB_ELEMENT_U16_I1_MASK 0xffff0000
-#define NV10TCL_VB_ELEMENT_U32 0x00001100
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END 0x000013fc
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END_STOP 0x00000000
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END_POINTS 0x00000001
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END_LINES 0x00000002
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END_LINE_LOOP 0x00000003
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END_LINE_STRIP 0x00000004
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END_TRIANGLES 0x00000005
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END_TRIANGLE_STRIP 0x00000006
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END_TRIANGLE_FAN 0x00000007
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END_QUADS 0x00000008
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END_QUAD_STRIP 0x00000009
-#define NV10TCL_VERTEX_BUFFER_BEGIN_END_POLYGON 0x0000000a
-#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS 0x00001400
-#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_FIRST_SHIFT 0
-#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_FIRST_MASK 0x0000ffff
-#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_LAST_SHIFT 24
-#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_LAST_MASK 0xff000000
-#define NV10TCL_VERTEX_ARRAY_DATA 0x00001800
-
-
-#define NV11TCL 0x00000096
-
-#define NV11TCL_COLOR_LOGIC_OP_ENABLE 0x00000d40
-#define NV11TCL_COLOR_LOGIC_OP_OP 0x00000d44
-#define NV11TCL_COLOR_LOGIC_OP_OP_CLEAR 0x00001500
-#define NV11TCL_COLOR_LOGIC_OP_OP_AND 0x00001501
-#define NV11TCL_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502
-#define NV11TCL_COLOR_LOGIC_OP_OP_COPY 0x00001503
-#define NV11TCL_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504
-#define NV11TCL_COLOR_LOGIC_OP_OP_NOOP 0x00001505
-#define NV11TCL_COLOR_LOGIC_OP_OP_XOR 0x00001506
-#define NV11TCL_COLOR_LOGIC_OP_OP_OR 0x00001507
-#define NV11TCL_COLOR_LOGIC_OP_OP_NOR 0x00001508
-#define NV11TCL_COLOR_LOGIC_OP_OP_EQUIV 0x00001509
-#define NV11TCL_COLOR_LOGIC_OP_OP_INVERT 0x0000150a
-#define NV11TCL_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b
-#define NV11TCL_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c
-#define NV11TCL_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d
-#define NV11TCL_COLOR_LOGIC_OP_OP_NAND 0x0000150e
-#define NV11TCL_COLOR_LOGIC_OP_OP_SET 0x0000150f
-
-
-#define NV17TCL 0x00000099
-
-#define NV17TCL_DMA_IN_MEMORY4 0x000001ac
-#define NV17TCL_DMA_IN_MEMORY5 0x000001b0
-#define NV17TCL_COLOR_MASK_ENABLE 0x000002bc
-#define NV17TCL_ZCLEAR_ENABLE 0x000003f8
-#define NV17TCL_ZCLEAR_VALUE 0x000003fc
-#define NV17TCL_ZCLEAR_VALUE_DEPTH_SHIFT 8
-#define NV17TCL_ZCLEAR_VALUE_DEPTH_MASK 0xffffff00
-#define NV17TCL_ZCLEAR_VALUE_SEQUENCE_SHIFT 0
-#define NV17TCL_ZCLEAR_VALUE_SEQUENCE_MASK 0x000000ff
-#define NV17TCL_LMA_DEPTH_BUFFER_PITCH 0x00000d5c
-#define NV17TCL_LMA_DEPTH_BUFFER_OFFSET 0x00000d60
-#define NV17TCL_LMA_DEPTH_FILL_VALUE 0x00000d68
-#define NV17TCL_LMA_DEPTH_BUFFER_CLEAR 0x00000d6c
-#define NV17TCL_LMA_DEPTH_WINDOW_X 0x00001638
-#define NV17TCL_LMA_DEPTH_WINDOW_Y 0x0000163c
-#define NV17TCL_LMA_DEPTH_WINDOW_Z 0x00001640
-#define NV17TCL_LMA_DEPTH_WINDOW_W 0x00001644
-#define NV17TCL_LMA_DEPTH_ENABLE 0x00001658
-
-
-#define NV03_CONTEXT_SURFACES_2D 0x00000058
-
-#define NV03_CONTEXT_SURFACES_2D_SYNCHRONIZE 0x00000100
-#define NV03_CONTEXT_SURFACES_2D_DMA_NOTIFY 0x00000180
-#define NV03_CONTEXT_SURFACES_2D_DMA_SOURCE 0x00000184
-#define NV03_CONTEXT_SURFACES_2D_DMA_DESTIN 0x00000188
-#define NV03_CONTEXT_SURFACES_2D_COLOR_FORMAT 0x00000300
-#define NV03_CONTEXT_SURFACES_2D_PITCH 0x00000304
-#define NV03_CONTEXT_SURFACES_2D_PITCH_SOURCE_SHIFT 0
-#define NV03_CONTEXT_SURFACES_2D_PITCH_SOURCE_MASK 0x0000ffff
-#define NV03_CONTEXT_SURFACES_2D_PITCH_DESTIN_SHIFT 16
-#define NV03_CONTEXT_SURFACES_2D_PITCH_DESTIN_MASK 0xffff0000
-#define NV03_CONTEXT_SURFACES_2D_OFFSET_SOURCE 0x00000308
-#define NV03_CONTEXT_SURFACES_2D_OFFSET_DESTIN 0x0000030c
-
-
-#define NV03_CONTEXT_SURFACES_3D 0x0000005a
-
-#define NV03_CONTEXT_SURFACES_3D_SYNCHRONIZE 0x00000100
-#define NV03_CONTEXT_SURFACES_3D_DMA_NOTIFY 0x00000180
-#define NV03_CONTEXT_SURFACES_3D_DMA_SURFACE 0x00000184
-#define NV03_CONTEXT_SURFACES_3D_PITCH 0x00000300
-#define NV03_CONTEXT_SURFACES_3D_OFFSET_COLOR 0x00000304
-#define NV03_CONTEXT_SURFACES_3D_OFFSET_ZETA 0x00000308
-
-
-#define NV04_INDEXED_IMAGE_FROM_CPU 0x00000060
-
-#define NV04_INDEXED_IMAGE_FROM_CPU_NOP 0x00000100
-#define NV04_INDEXED_IMAGE_FROM_CPU_NOTIFY 0x00000104
-#define NV04_INDEXED_IMAGE_FROM_CPU_PATCH 0x0000010c
-#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180
-#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_LUT 0x00000184
-#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_KEY 0x00000188
-#define NV04_INDEXED_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x0000018c
-#define NV04_INDEXED_IMAGE_FROM_CPU_PATTERN 0x00000190
-#define NV04_INDEXED_IMAGE_FROM_CPU_ROP 0x00000194
-#define NV04_INDEXED_IMAGE_FROM_CPU_BETA1 0x00000198
-#define NV04_INDEXED_IMAGE_FROM_CPU_BETA4 0x0000019c
-#define NV04_INDEXED_IMAGE_FROM_CPU_SURFACE 0x000001a0
-#define NV04_INDEXED_IMAGE_FROM_CPU_OPERATION 0x000003e4
-#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_FORMAT 0x000003e8
-#define NV04_INDEXED_IMAGE_FROM_CPU_INDEX_FORMAT 0x000003ec
-#define NV04_INDEXED_IMAGE_FROM_CPU_LUT_OFFSET 0x000003f0
-#define NV04_INDEXED_IMAGE_FROM_CPU_POINT 0x000003f4
-#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_OUT 0x000003f8
-#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_IN 0x000003fc
-#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR(x) (0x00000400+((x)*4))
-#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR__SIZE 0x00000700
-
-
-#define NV05_INDEXED_IMAGE_FROM_CPU 0x00000064
-
-#define NV05_INDEXED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000003e0
-
-
-#define NV03_CHANNEL_PIO 0x0000006a
-
-
-
-#define NV03_CHANNEL_DMA 0x0000006b
-
-
-
-#define NV04_BETA_SOLID 0x00000072
-
-#define NV04_BETA_SOLID_NOP 0x00000100
-#define NV04_BETA_SOLID_NOTIFY 0x00000104
-#define NV04_BETA_SOLID_DMA_NOTIFY 0x00000180
-#define NV04_BETA_SOLID_BETA_OUTPUT 0x00000200
-#define NV04_BETA_SOLID_BETA_FACTOR 0x00000300
-
-
-#define NV10_TEXTURE_FROM_CPU 0x0000007b
-
-#define NV10_TEXTURE_FROM_CPU_NOP 0x00000100
-#define NV10_TEXTURE_FROM_CPU_NOTIFY 0x00000104
-#define NV10_TEXTURE_FROM_CPU_WAIT_FOR_IDLE 0x00000108
-#define NV10_TEXTURE_FROM_CPU_PM_TRIGGER 0x00000140
-#define NV10_TEXTURE_FROM_CPU_DMA_NOTIFY 0x00000180
-#define NV10_TEXTURE_FROM_CPU_SURFACE 0x00000184
-#define NV10_TEXTURE_FROM_CPU_COLOR_FORMAT 0x00000300
-#define NV10_TEXTURE_FROM_CPU_POINT 0x00000304
-#define NV10_TEXTURE_FROM_CPU_POINT_X_SHIFT 0
-#define NV10_TEXTURE_FROM_CPU_POINT_X_MASK 0x0000ffff
-#define NV10_TEXTURE_FROM_CPU_POINT_Y_SHIFT 16
-#define NV10_TEXTURE_FROM_CPU_POINT_Y_MASK 0xffff0000
-#define NV10_TEXTURE_FROM_CPU_SIZE 0x00000308
-#define NV10_TEXTURE_FROM_CPU_SIZE_W_SHIFT 0
-#define NV10_TEXTURE_FROM_CPU_SIZE_W_MASK 0x0000ffff
-#define NV10_TEXTURE_FROM_CPU_SIZE_H_SHIFT 16
-#define NV10_TEXTURE_FROM_CPU_SIZE_H_MASK 0xffff0000
-#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL 0x0000030c
-#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X_SHIFT 0
-#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X_MASK 0x0000ffff
-#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W_SHIFT 16
-#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W_MASK 0xffff0000
-#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL 0x00000310
-#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y_SHIFT 0
-#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y_MASK 0x0000ffff
-#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H_SHIFT 16
-#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H_MASK 0xffff0000
-#define NV10_TEXTURE_FROM_CPU_COLOR(x) (0x00000400+((x)*4))
-#define NV10_TEXTURE_FROM_CPU_COLOR__SIZE 0x00000700
-
-
-#define NV30_TEXTURE_FROM_CPU 0x0000037b
-
-
-
-#define NV40_TEXTURE_FROM_CPU 0x0000307b
-
-
-
-#define NV10_VIDEO_DISPLAY 0x0000007c
-
-
-
-#define NV20TCL 0x00000097
-
-#define NV20TCL_NOP 0x00000100
-#define NV20TCL_NOTIFY 0x00000104
-#define NV20TCL_DMA_NOTIFY 0x00000180
-#define NV20TCL_DMA_TEXTURE0 0x00000184
-#define NV20TCL_DMA_TEXTURE1 0x00000188
-#define NV20TCL_DMA_COLOR 0x00000194
-#define NV20TCL_DMA_ZETA 0x00000198
-#define NV20TCL_DMA_VTXBUF0 0x0000019c
-#define NV20TCL_DMA_VTXBUF1 0x000001a0
-#define NV20TCL_DMA_FENCE 0x000001a4
-#define NV20TCL_DMA_QUERY 0x000001a8
-#define NV20TCL_RT_HORIZ 0x00000200
-#define NV20TCL_RT_HORIZ_X_SHIFT 0
-#define NV20TCL_RT_HORIZ_X_MASK 0x0000ffff
-#define NV20TCL_RT_HORIZ_W_SHIFT 16
-#define NV20TCL_RT_HORIZ_W_MASK 0xffff0000
-#define NV20TCL_RT_VERT 0x00000204
-#define NV20TCL_RT_VERT_Y_SHIFT 0
-#define NV20TCL_RT_VERT_Y_MASK 0x0000ffff
-#define NV20TCL_RT_VERT_H_SHIFT 16
-#define NV20TCL_RT_VERT_H_MASK 0xffff0000
-#define NV20TCL_RT_FORMAT 0x00000208
-#define NV20TCL_RT_FORMAT_TYPE_SHIFT 8
-#define NV20TCL_RT_FORMAT_TYPE_MASK 0x00000f00
-#define NV20TCL_RT_FORMAT_TYPE_LINEAR 0x00000100
-#define NV20TCL_RT_FORMAT_TYPE_SWIZZLED 0x00000200
-#define NV20TCL_RT_FORMAT_COLOR_SHIFT 0
-#define NV20TCL_RT_FORMAT_COLOR_MASK 0x0000001f
-#define NV20TCL_RT_FORMAT_COLOR_R5G6B5 0x00000003
-#define NV20TCL_RT_FORMAT_COLOR_X8R8G8B8 0x00000005
-#define NV20TCL_RT_FORMAT_COLOR_A8R8G8B8 0x00000008
-#define NV20TCL_RT_FORMAT_COLOR_B8 0x00000009
-#define NV20TCL_RT_FORMAT_COLOR_UNKNOWN 0x0000000d
-#define NV20TCL_RT_FORMAT_COLOR_X8B8G8R8 0x0000000f
-#define NV20TCL_RT_FORMAT_COLOR_A8B8G8R8 0x00000010
-#define NV20TCL_RT_PITCH 0x0000020c
-#define NV20TCL_RT_PITCH_COLOR_PITCH_SHIFT 0
-#define NV20TCL_RT_PITCH_COLOR_PITCH_MASK 0x0000ffff
-#define NV20TCL_RT_PITCH_ZETA_PITCH_SHIFT 16
-#define NV20TCL_RT_PITCH_ZETA_PITCH_MASK 0xffff0000
-#define NV20TCL_COLOR_OFFSET 0x00000210
-#define NV20TCL_ZETA_OFFSET 0x00000214
-#define NV20TCL_RC_IN_ALPHA(x) (0x00000260+((x)*4))
-#define NV20TCL_RC_IN_ALPHA__SIZE 0x00000008
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_SHIFT 0
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_MASK 0x0000000f
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_FOG 0x00000003
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a
-#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b
-#define NV20TCL_RC_IN_ALPHA_D_COMPONENT_USAGE (1 << 4)
-#define NV20TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000
-#define NV20TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010
-#define NV20TCL_RC_IN_ALPHA_D_MAPPING_SHIFT 5
-#define NV20TCL_RC_IN_ALPHA_D_MAPPING_MASK 0x000000e0
-#define NV20TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020
-#define NV20TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040
-#define NV20TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060
-#define NV20TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
-#define NV20TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
-#define NV20TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0
-#define NV20TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_SHIFT 8
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_MASK 0x00000f00
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_FOG 0x00000300
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00
-#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00
-#define NV20TCL_RC_IN_ALPHA_C_COMPONENT_USAGE (1 << 12)
-#define NV20TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000
-#define NV20TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000
-#define NV20TCL_RC_IN_ALPHA_C_MAPPING_SHIFT 13
-#define NV20TCL_RC_IN_ALPHA_C_MAPPING_MASK 0x0000e000
-#define NV20TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000
-#define NV20TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000
-#define NV20TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000
-#define NV20TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
-#define NV20TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
-#define NV20TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000
-#define NV20TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_SHIFT 16
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_MASK 0x000f0000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_FOG 0x00030000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000
-#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000
-#define NV20TCL_RC_IN_ALPHA_B_COMPONENT_USAGE (1 << 20)
-#define NV20TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000
-#define NV20TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000
-#define NV20TCL_RC_IN_ALPHA_B_MAPPING_SHIFT 21
-#define NV20TCL_RC_IN_ALPHA_B_MAPPING_MASK 0x00e00000
-#define NV20TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000
-#define NV20TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000
-#define NV20TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000
-#define NV20TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
-#define NV20TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
-#define NV20TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000
-#define NV20TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_SHIFT 24
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_MASK 0x0f000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_FOG 0x03000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000
-#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000
-#define NV20TCL_RC_IN_ALPHA_A_COMPONENT_USAGE (1 << 28)
-#define NV20TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000
-#define NV20TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000
-#define NV20TCL_RC_IN_ALPHA_A_MAPPING_SHIFT 29
-#define NV20TCL_RC_IN_ALPHA_A_MAPPING_MASK 0xe0000000
-#define NV20TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000
-#define NV20TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000
-#define NV20TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000
-#define NV20TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
-#define NV20TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
-#define NV20TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000
-#define NV20TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000
-#define NV20TCL_RC_FINAL0 0x00000288
-#define NV20TCL_RC_FINAL0_D_INPUT_SHIFT 0
-#define NV20TCL_RC_FINAL0_D_INPUT_MASK 0x0000000f
-#define NV20TCL_RC_FINAL0_D_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001
-#define NV20TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002
-#define NV20TCL_RC_FINAL0_D_INPUT_FOG 0x00000003
-#define NV20TCL_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004
-#define NV20TCL_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005
-#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008
-#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009
-#define NV20TCL_RC_FINAL0_D_INPUT_SPARE0 0x0000000c
-#define NV20TCL_RC_FINAL0_D_INPUT_SPARE1 0x0000000d
-#define NV20TCL_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
-#define NV20TCL_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f
-#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a
-#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b
-#define NV20TCL_RC_FINAL0_D_COMPONENT_USAGE (1 << 4)
-#define NV20TCL_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000
-#define NV20TCL_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010
-#define NV20TCL_RC_FINAL0_D_MAPPING_SHIFT 5
-#define NV20TCL_RC_FINAL0_D_MAPPING_MASK 0x000000e0
-#define NV20TCL_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020
-#define NV20TCL_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040
-#define NV20TCL_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060
-#define NV20TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
-#define NV20TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
-#define NV20TCL_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0
-#define NV20TCL_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0
-#define NV20TCL_RC_FINAL0_C_INPUT_SHIFT 8
-#define NV20TCL_RC_FINAL0_C_INPUT_MASK 0x00000f00
-#define NV20TCL_RC_FINAL0_C_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100
-#define NV20TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200
-#define NV20TCL_RC_FINAL0_C_INPUT_FOG 0x00000300
-#define NV20TCL_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400
-#define NV20TCL_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500
-#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800
-#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900
-#define NV20TCL_RC_FINAL0_C_INPUT_SPARE0 0x00000c00
-#define NV20TCL_RC_FINAL0_C_INPUT_SPARE1 0x00000d00
-#define NV20TCL_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV20TCL_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00
-#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00
-#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00
-#define NV20TCL_RC_FINAL0_C_COMPONENT_USAGE (1 << 12)
-#define NV20TCL_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000
-#define NV20TCL_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000
-#define NV20TCL_RC_FINAL0_C_MAPPING_SHIFT 13
-#define NV20TCL_RC_FINAL0_C_MAPPING_MASK 0x0000e000
-#define NV20TCL_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000
-#define NV20TCL_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000
-#define NV20TCL_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000
-#define NV20TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
-#define NV20TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
-#define NV20TCL_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000
-#define NV20TCL_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000
-#define NV20TCL_RC_FINAL0_B_INPUT_SHIFT 16
-#define NV20TCL_RC_FINAL0_B_INPUT_MASK 0x000f0000
-#define NV20TCL_RC_FINAL0_B_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000
-#define NV20TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000
-#define NV20TCL_RC_FINAL0_B_INPUT_FOG 0x00030000
-#define NV20TCL_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000
-#define NV20TCL_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000
-#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000
-#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000
-#define NV20TCL_RC_FINAL0_B_INPUT_SPARE0 0x000c0000
-#define NV20TCL_RC_FINAL0_B_INPUT_SPARE1 0x000d0000
-#define NV20TCL_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
-#define NV20TCL_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000
-#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000
-#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000
-#define NV20TCL_RC_FINAL0_B_COMPONENT_USAGE (1 << 20)
-#define NV20TCL_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000
-#define NV20TCL_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000
-#define NV20TCL_RC_FINAL0_B_MAPPING_SHIFT 21
-#define NV20TCL_RC_FINAL0_B_MAPPING_MASK 0x00e00000
-#define NV20TCL_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000
-#define NV20TCL_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000
-#define NV20TCL_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000
-#define NV20TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
-#define NV20TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
-#define NV20TCL_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000
-#define NV20TCL_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000
-#define NV20TCL_RC_FINAL0_A_INPUT_SHIFT 24
-#define NV20TCL_RC_FINAL0_A_INPUT_MASK 0x0f000000
-#define NV20TCL_RC_FINAL0_A_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000
-#define NV20TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000
-#define NV20TCL_RC_FINAL0_A_INPUT_FOG 0x03000000
-#define NV20TCL_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000
-#define NV20TCL_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000
-#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000
-#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000
-#define NV20TCL_RC_FINAL0_A_INPUT_SPARE0 0x0c000000
-#define NV20TCL_RC_FINAL0_A_INPUT_SPARE1 0x0d000000
-#define NV20TCL_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
-#define NV20TCL_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000
-#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000
-#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000
-#define NV20TCL_RC_FINAL0_A_COMPONENT_USAGE (1 << 28)
-#define NV20TCL_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000
-#define NV20TCL_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000
-#define NV20TCL_RC_FINAL0_A_MAPPING_SHIFT 29
-#define NV20TCL_RC_FINAL0_A_MAPPING_MASK 0xe0000000
-#define NV20TCL_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000
-#define NV20TCL_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000
-#define NV20TCL_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000
-#define NV20TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
-#define NV20TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
-#define NV20TCL_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000
-#define NV20TCL_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000
-#define NV20TCL_RC_FINAL1 0x0000028c
-#define NV20TCL_RC_FINAL1_COLOR_SUM_CLAMP (1 << 7)
-#define NV20TCL_RC_FINAL1_G_INPUT_SHIFT 8
-#define NV20TCL_RC_FINAL1_G_INPUT_MASK 0x00000f00
-#define NV20TCL_RC_FINAL1_G_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100
-#define NV20TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200
-#define NV20TCL_RC_FINAL1_G_INPUT_FOG 0x00000300
-#define NV20TCL_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400
-#define NV20TCL_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500
-#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800
-#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900
-#define NV20TCL_RC_FINAL1_G_INPUT_SPARE0 0x00000c00
-#define NV20TCL_RC_FINAL1_G_INPUT_SPARE1 0x00000d00
-#define NV20TCL_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV20TCL_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00
-#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00
-#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00
-#define NV20TCL_RC_FINAL1_G_COMPONENT_USAGE (1 << 12)
-#define NV20TCL_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000
-#define NV20TCL_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000
-#define NV20TCL_RC_FINAL1_G_MAPPING_SHIFT 13
-#define NV20TCL_RC_FINAL1_G_MAPPING_MASK 0x0000e000
-#define NV20TCL_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000
-#define NV20TCL_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000
-#define NV20TCL_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000
-#define NV20TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000
-#define NV20TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000
-#define NV20TCL_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000
-#define NV20TCL_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000
-#define NV20TCL_RC_FINAL1_F_INPUT_SHIFT 16
-#define NV20TCL_RC_FINAL1_F_INPUT_MASK 0x000f0000
-#define NV20TCL_RC_FINAL1_F_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000
-#define NV20TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000
-#define NV20TCL_RC_FINAL1_F_INPUT_FOG 0x00030000
-#define NV20TCL_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000
-#define NV20TCL_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000
-#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000
-#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000
-#define NV20TCL_RC_FINAL1_F_INPUT_SPARE0 0x000c0000
-#define NV20TCL_RC_FINAL1_F_INPUT_SPARE1 0x000d0000
-#define NV20TCL_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
-#define NV20TCL_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000
-#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000
-#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000
-#define NV20TCL_RC_FINAL1_F_COMPONENT_USAGE (1 << 20)
-#define NV20TCL_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000
-#define NV20TCL_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000
-#define NV20TCL_RC_FINAL1_F_MAPPING_SHIFT 21
-#define NV20TCL_RC_FINAL1_F_MAPPING_MASK 0x00e00000
-#define NV20TCL_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000
-#define NV20TCL_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000
-#define NV20TCL_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000
-#define NV20TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000
-#define NV20TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000
-#define NV20TCL_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000
-#define NV20TCL_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000
-#define NV20TCL_RC_FINAL1_E_INPUT_SHIFT 24
-#define NV20TCL_RC_FINAL1_E_INPUT_MASK 0x0f000000
-#define NV20TCL_RC_FINAL1_E_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000
-#define NV20TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000
-#define NV20TCL_RC_FINAL1_E_INPUT_FOG 0x03000000
-#define NV20TCL_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000
-#define NV20TCL_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000
-#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000
-#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000
-#define NV20TCL_RC_FINAL1_E_INPUT_SPARE0 0x0c000000
-#define NV20TCL_RC_FINAL1_E_INPUT_SPARE1 0x0d000000
-#define NV20TCL_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
-#define NV20TCL_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000
-#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000
-#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000
-#define NV20TCL_RC_FINAL1_E_COMPONENT_USAGE (1 << 28)
-#define NV20TCL_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000
-#define NV20TCL_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000
-#define NV20TCL_RC_FINAL1_E_MAPPING_SHIFT 29
-#define NV20TCL_RC_FINAL1_E_MAPPING_MASK 0xe0000000
-#define NV20TCL_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000
-#define NV20TCL_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000
-#define NV20TCL_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000
-#define NV20TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000
-#define NV20TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000
-#define NV20TCL_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000
-#define NV20TCL_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000
-#define NV20TCL_LIGHT_MODEL 0x00000294
-#define NV20TCL_LIGHT_MODEL_VIEWER_SHIFT 16
-#define NV20TCL_LIGHT_MODEL_VIEWER_MASK 0x00030000
-#define NV20TCL_LIGHT_MODEL_VIEWER_NONLOCAL 0x00020000
-#define NV20TCL_LIGHT_MODEL_VIEWER_LOCAL 0x00030000
-#define NV20TCL_LIGHT_MODEL_SEPARATE_SPECULAR (1 << 0)
-#define NV20TCL_COLOR_MATERIAL 0x00000298
-#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_SHIFT 0
-#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_MASK 0x00000003
-#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_OFF 0x00000000
-#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_COL1 0x00000001
-#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_COL2 0x00000002
-#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_SHIFT 2
-#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_MASK 0x0000000c
-#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_OFF 0x00000000
-#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_COL1 0x00000004
-#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_COL2 0x00000008
-#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_SHIFT 4
-#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_MASK 0x00000030
-#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_OFF 0x00000000
-#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_COL1 0x00000010
-#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_COL2 0x00000020
-#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_SHIFT 6
-#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_MASK 0x000000c0
-#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_OFF 0x00000000
-#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_COL1 0x00000040
-#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_COL2 0x00000080
-#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_SHIFT 8
-#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_MASK 0x00000300
-#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_OFF 0x00000000
-#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_COL1 0x00000100
-#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_COL2 0x00000200
-#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_SHIFT 10
-#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_MASK 0x00000c00
-#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_OFF 0x00000000
-#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_COL1 0x00000400
-#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_COL2 0x00000800
-#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_SHIFT 12
-#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_MASK 0x00003000
-#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_OFF 0x00000000
-#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_COL1 0x00001000
-#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_COL2 0x00002000
-#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_SHIFT 14
-#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_MASK 0x0000c000
-#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_OFF 0x00000000
-#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_COL1 0x00004000
-#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_COL2 0x00008000
-#define NV20TCL_FOG_MODE 0x0000029c
-#define NV20TCL_FOG_MODE_LINEAR_UNSIGNED 0x00000804
-#define NV20TCL_FOG_MODE_LINEAR_SIGNED 0x00002601
-#define NV20TCL_FOG_MODE_EXP_UNSIGNED 0x00000802
-#define NV20TCL_FOG_MODE_EXP_SIGNED 0x00000800
-#define NV20TCL_FOG_MODE_EXP2_UNSIGNED 0x00000803
-#define NV20TCL_FOG_MODE_EXP2_SIGNED 0x00000801
-#define NV20TCL_FOG_COORD 0x000002a0
-#define NV20TCL_FOG_COORD_DIST_RADIAL 0x00000001
-#define NV20TCL_FOG_COORD_DIST_ORTHOGONAL 0x00000002
-#define NV20TCL_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003
-#define NV20TCL_FOG_COORD_FOG 0x00000006
-#define NV20TCL_FOG_ENABLE 0x000002a4
-#define NV20TCL_FOG_COLOR 0x000002a8
-#define NV20TCL_FOG_COLOR_R_SHIFT 0
-#define NV20TCL_FOG_COLOR_R_MASK 0x000000ff
-#define NV20TCL_FOG_COLOR_G_SHIFT 8
-#define NV20TCL_FOG_COLOR_G_MASK 0x0000ff00
-#define NV20TCL_FOG_COLOR_B_SHIFT 16
-#define NV20TCL_FOG_COLOR_B_MASK 0x00ff0000
-#define NV20TCL_FOG_COLOR_A_SHIFT 24
-#define NV20TCL_FOG_COLOR_A_MASK 0xff000000
-#define NV20TCL_VIEWPORT_CLIP_MODE 0x000002b4
-#define NV20TCL_VIEWPORT_CLIP_HORIZ(x) (0x000002c0+((x)*4))
-#define NV20TCL_VIEWPORT_CLIP_HORIZ__SIZE 0x00000008
-#define NV20TCL_VIEWPORT_CLIP_VERT(x) (0x000002e0+((x)*4))
-#define NV20TCL_VIEWPORT_CLIP_VERT__SIZE 0x00000008
-#define NV20TCL_ALPHA_FUNC_ENABLE 0x00000300
-#define NV20TCL_BLEND_FUNC_ENABLE 0x00000304
-#define NV20TCL_CULL_FACE_ENABLE 0x00000308
-#define NV20TCL_DEPTH_TEST_ENABLE 0x0000030c
-#define NV20TCL_DITHER_ENABLE 0x00000310
-#define NV20TCL_LIGHTING_ENABLE 0x00000314
-#define NV20TCL_POINT_PARAMETERS_ENABLE 0x00000318
-#define NV20TCL_POINT_SMOOTH_ENABLE 0x0000031c
-#define NV20TCL_LINE_SMOOTH_ENABLE 0x00000320
-#define NV20TCL_POLYGON_SMOOTH_ENABLE 0x00000324
-#define NV20TCL_STENCIL_ENABLE 0x0000032c
-#define NV20TCL_POLYGON_OFFSET_POINT_ENABLE 0x00000330
-#define NV20TCL_POLYGON_OFFSET_LINE_ENABLE 0x00000334
-#define NV20TCL_POLYGON_OFFSET_FILL_ENABLE 0x00000338
-#define NV20TCL_ALPHA_FUNC_FUNC 0x0000033c
-#define NV20TCL_ALPHA_FUNC_FUNC_NEVER 0x00000200
-#define NV20TCL_ALPHA_FUNC_FUNC_LESS 0x00000201
-#define NV20TCL_ALPHA_FUNC_FUNC_EQUAL 0x00000202
-#define NV20TCL_ALPHA_FUNC_FUNC_LEQUAL 0x00000203
-#define NV20TCL_ALPHA_FUNC_FUNC_GREATER 0x00000204
-#define NV20TCL_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205
-#define NV20TCL_ALPHA_FUNC_FUNC_GEQUAL 0x00000206
-#define NV20TCL_ALPHA_FUNC_FUNC_ALWAYS 0x00000207
-#define NV20TCL_ALPHA_FUNC_REF 0x00000340
-#define NV20TCL_BLEND_FUNC_SRC 0x00000344
-#define NV20TCL_BLEND_FUNC_SRC_ZERO 0x00000000
-#define NV20TCL_BLEND_FUNC_SRC_ONE 0x00000001
-#define NV20TCL_BLEND_FUNC_SRC_SRC_COLOR 0x00000300
-#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301
-#define NV20TCL_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302
-#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303
-#define NV20TCL_BLEND_FUNC_SRC_DST_ALPHA 0x00000304
-#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305
-#define NV20TCL_BLEND_FUNC_SRC_DST_COLOR 0x00000306
-#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307
-#define NV20TCL_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308
-#define NV20TCL_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001
-#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002
-#define NV20TCL_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003
-#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004
-#define NV20TCL_BLEND_FUNC_DST 0x00000348
-#define NV20TCL_BLEND_FUNC_DST_ZERO 0x00000000
-#define NV20TCL_BLEND_FUNC_DST_ONE 0x00000001
-#define NV20TCL_BLEND_FUNC_DST_SRC_COLOR 0x00000300
-#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301
-#define NV20TCL_BLEND_FUNC_DST_SRC_ALPHA 0x00000302
-#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303
-#define NV20TCL_BLEND_FUNC_DST_DST_ALPHA 0x00000304
-#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305
-#define NV20TCL_BLEND_FUNC_DST_DST_COLOR 0x00000306
-#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307
-#define NV20TCL_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308
-#define NV20TCL_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001
-#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002
-#define NV20TCL_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003
-#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004
-#define NV20TCL_BLEND_COLOR 0x0000034c
-#define NV20TCL_BLEND_COLOR_B_SHIFT 0
-#define NV20TCL_BLEND_COLOR_B_MASK 0x000000ff
-#define NV20TCL_BLEND_COLOR_G_SHIFT 8
-#define NV20TCL_BLEND_COLOR_G_MASK 0x0000ff00
-#define NV20TCL_BLEND_COLOR_R_SHIFT 16
-#define NV20TCL_BLEND_COLOR_R_MASK 0x00ff0000
-#define NV20TCL_BLEND_COLOR_A_SHIFT 24
-#define NV20TCL_BLEND_COLOR_A_MASK 0xff000000
-#define NV20TCL_BLEND_EQUATION 0x00000350
-#define NV20TCL_BLEND_EQUATION_FUNC_ADD 0x00008006
-#define NV20TCL_BLEND_EQUATION_MIN 0x00008007
-#define NV20TCL_BLEND_EQUATION_MAX 0x00008008
-#define NV20TCL_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a
-#define NV20TCL_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b
-#define NV20TCL_DEPTH_FUNC 0x00000354
-#define NV20TCL_DEPTH_FUNC_NEVER 0x00000200
-#define NV20TCL_DEPTH_FUNC_LESS 0x00000201
-#define NV20TCL_DEPTH_FUNC_EQUAL 0x00000202
-#define NV20TCL_DEPTH_FUNC_LEQUAL 0x00000203
-#define NV20TCL_DEPTH_FUNC_GREATER 0x00000204
-#define NV20TCL_DEPTH_FUNC_NOTEQUAL 0x00000205
-#define NV20TCL_DEPTH_FUNC_GEQUAL 0x00000206
-#define NV20TCL_DEPTH_FUNC_ALWAYS 0x00000207
-#define NV20TCL_COLOR_MASK 0x00000358
-#define NV20TCL_COLOR_MASK_B (1 << 0)
-#define NV20TCL_COLOR_MASK_G (1 << 8)
-#define NV20TCL_COLOR_MASK_R (1 << 16)
-#define NV20TCL_COLOR_MASK_A (1 << 24)
-#define NV20TCL_DEPTH_WRITE_ENABLE 0x0000035c
-#define NV20TCL_STENCIL_MASK 0x00000360
-#define NV20TCL_STENCIL_FUNC_FUNC 0x00000364
-#define NV20TCL_STENCIL_FUNC_FUNC_NEVER 0x00000200
-#define NV20TCL_STENCIL_FUNC_FUNC_LESS 0x00000201
-#define NV20TCL_STENCIL_FUNC_FUNC_EQUAL 0x00000202
-#define NV20TCL_STENCIL_FUNC_FUNC_LEQUAL 0x00000203
-#define NV20TCL_STENCIL_FUNC_FUNC_GREATER 0x00000204
-#define NV20TCL_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205
-#define NV20TCL_STENCIL_FUNC_FUNC_GEQUAL 0x00000206
-#define NV20TCL_STENCIL_FUNC_FUNC_ALWAYS 0x00000207
-#define NV20TCL_STENCIL_FUNC_REF 0x00000368
-#define NV20TCL_STENCIL_FUNC_MASK 0x0000036c
-#define NV20TCL_STENCIL_OP_FAIL 0x00000370
-#define NV20TCL_STENCIL_OP_FAIL_ZERO 0x00000000
-#define NV20TCL_STENCIL_OP_FAIL_INVERT 0x0000150a
-#define NV20TCL_STENCIL_OP_FAIL_KEEP 0x00001e00
-#define NV20TCL_STENCIL_OP_FAIL_REPLACE 0x00001e01
-#define NV20TCL_STENCIL_OP_FAIL_INCR 0x00001e02
-#define NV20TCL_STENCIL_OP_FAIL_DECR 0x00001e03
-#define NV20TCL_STENCIL_OP_FAIL_INCR_WRAP 0x00008507
-#define NV20TCL_STENCIL_OP_FAIL_DECR_WRAP 0x00008508
-#define NV20TCL_STENCIL_OP_ZFAIL 0x00000374
-#define NV20TCL_STENCIL_OP_ZFAIL_ZERO 0x00000000
-#define NV20TCL_STENCIL_OP_ZFAIL_INVERT 0x0000150a
-#define NV20TCL_STENCIL_OP_ZFAIL_KEEP 0x00001e00
-#define NV20TCL_STENCIL_OP_ZFAIL_REPLACE 0x00001e01
-#define NV20TCL_STENCIL_OP_ZFAIL_INCR 0x00001e02
-#define NV20TCL_STENCIL_OP_ZFAIL_DECR 0x00001e03
-#define NV20TCL_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507
-#define NV20TCL_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508
-#define NV20TCL_STENCIL_OP_ZPASS 0x00000378
-#define NV20TCL_STENCIL_OP_ZPASS_ZERO 0x00000000
-#define NV20TCL_STENCIL_OP_ZPASS_INVERT 0x0000150a
-#define NV20TCL_STENCIL_OP_ZPASS_KEEP 0x00001e00
-#define NV20TCL_STENCIL_OP_ZPASS_REPLACE 0x00001e01
-#define NV20TCL_STENCIL_OP_ZPASS_INCR 0x00001e02
-#define NV20TCL_STENCIL_OP_ZPASS_DECR 0x00001e03
-#define NV20TCL_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507
-#define NV20TCL_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508
-#define NV20TCL_SHADE_MODEL 0x0000037c
-#define NV20TCL_SHADE_MODEL_FLAT 0x00001d00
-#define NV20TCL_SHADE_MODEL_SMOOTH 0x00001d01
-#define NV20TCL_LINE_WIDTH 0x00000380
-#define NV20TCL_POLYGON_OFFSET_FACTOR 0x00000384
-#define NV20TCL_POLYGON_OFFSET_UNITS 0x00000388
-#define NV20TCL_POLYGON_MODE_FRONT 0x0000038c
-#define NV20TCL_POLYGON_MODE_FRONT_POINT 0x00001b00
-#define NV20TCL_POLYGON_MODE_FRONT_LINE 0x00001b01
-#define NV20TCL_POLYGON_MODE_FRONT_FILL 0x00001b02
-#define NV20TCL_POLYGON_MODE_BACK 0x00000390
-#define NV20TCL_POLYGON_MODE_BACK_POINT 0x00001b00
-#define NV20TCL_POLYGON_MODE_BACK_LINE 0x00001b01
-#define NV20TCL_POLYGON_MODE_BACK_FILL 0x00001b02
-#define NV20TCL_DEPTH_RANGE_NEAR 0x00000394
-#define NV20TCL_DEPTH_RANGE_FAR 0x00000398
-#define NV20TCL_CULL_FACE 0x0000039c
-#define NV20TCL_CULL_FACE_FRONT 0x00000404
-#define NV20TCL_CULL_FACE_BACK 0x00000405
-#define NV20TCL_CULL_FACE_FRONT_AND_BACK 0x00000408
-#define NV20TCL_FRONT_FACE 0x000003a0
-#define NV20TCL_FRONT_FACE_CW 0x00000900
-#define NV20TCL_FRONT_FACE_CCW 0x00000901
-#define NV20TCL_NORMALIZE_ENABLE 0x000003a4
-#define NV20TCL_MATERIAL_FACTOR_FRONT_R 0x000003a8
-#define NV20TCL_MATERIAL_FACTOR_FRONT_G 0x000003ac
-#define NV20TCL_MATERIAL_FACTOR_FRONT_B 0x000003b0
-#define NV20TCL_MATERIAL_FACTOR_FRONT_A 0x000003b4
-#define NV20TCL_SEPARATE_SPECULAR_ENABLE 0x000003b8
-#define NV20TCL_ENABLED_LIGHTS 0x000003bc
-#define NV20TCL_ENABLED_LIGHTS_0_SHIFT 0
-#define NV20TCL_ENABLED_LIGHTS_0_MASK 0x00000003
-#define NV20TCL_ENABLED_LIGHTS_0_DISABLED 0x00000000
-#define NV20TCL_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001
-#define NV20TCL_ENABLED_LIGHTS_0_POSITIONAL 0x00000002
-#define NV20TCL_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003
-#define NV20TCL_ENABLED_LIGHTS_1_SHIFT 2
-#define NV20TCL_ENABLED_LIGHTS_1_MASK 0x0000000c
-#define NV20TCL_ENABLED_LIGHTS_1_DISABLED 0x00000000
-#define NV20TCL_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004
-#define NV20TCL_ENABLED_LIGHTS_1_POSITIONAL 0x00000008
-#define NV20TCL_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c
-#define NV20TCL_ENABLED_LIGHTS_2_SHIFT 4
-#define NV20TCL_ENABLED_LIGHTS_2_MASK 0x00000030
-#define NV20TCL_ENABLED_LIGHTS_2_DISABLED 0x00000000
-#define NV20TCL_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010
-#define NV20TCL_ENABLED_LIGHTS_2_POSITIONAL 0x00000020
-#define NV20TCL_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030
-#define NV20TCL_ENABLED_LIGHTS_3_SHIFT 6
-#define NV20TCL_ENABLED_LIGHTS_3_MASK 0x000000c0
-#define NV20TCL_ENABLED_LIGHTS_3_DISABLED 0x00000000
-#define NV20TCL_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040
-#define NV20TCL_ENABLED_LIGHTS_3_POSITIONAL 0x00000080
-#define NV20TCL_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0
-#define NV20TCL_ENABLED_LIGHTS_4_SHIFT 8
-#define NV20TCL_ENABLED_LIGHTS_4_MASK 0x00000300
-#define NV20TCL_ENABLED_LIGHTS_4_DISABLED 0x00000000
-#define NV20TCL_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100
-#define NV20TCL_ENABLED_LIGHTS_4_POSITIONAL 0x00000200
-#define NV20TCL_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300
-#define NV20TCL_ENABLED_LIGHTS_5_SHIFT 10
-#define NV20TCL_ENABLED_LIGHTS_5_MASK 0x00000c00
-#define NV20TCL_ENABLED_LIGHTS_5_DISABLED 0x00000000
-#define NV20TCL_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400
-#define NV20TCL_ENABLED_LIGHTS_5_POSITIONAL 0x00000800
-#define NV20TCL_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00
-#define NV20TCL_ENABLED_LIGHTS_6_SHIFT 12
-#define NV20TCL_ENABLED_LIGHTS_6_MASK 0x00003000
-#define NV20TCL_ENABLED_LIGHTS_6_DISABLED 0x00000000
-#define NV20TCL_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000
-#define NV20TCL_ENABLED_LIGHTS_6_POSITIONAL 0x00002000
-#define NV20TCL_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000
-#define NV20TCL_ENABLED_LIGHTS_7_SHIFT 14
-#define NV20TCL_ENABLED_LIGHTS_7_MASK 0x0000c000
-#define NV20TCL_ENABLED_LIGHTS_7_DISABLED 0x00000000
-#define NV20TCL_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000
-#define NV20TCL_ENABLED_LIGHTS_7_POSITIONAL 0x00008000
-#define NV20TCL_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000
-#define NV20TCL_TX_GEN_MODE_S(x) (0x000003c0+((x)*16))
-#define NV20TCL_TX_GEN_MODE_S__SIZE 0x00000004
-#define NV20TCL_TX_GEN_MODE_S_FALSE 0x00000000
-#define NV20TCL_TX_GEN_MODE_S_EYE_LINEAR 0x00002400
-#define NV20TCL_TX_GEN_MODE_S_OBJECT_LINEAR 0x00002401
-#define NV20TCL_TX_GEN_MODE_S_SPHERE_MAP 0x00002402
-#define NV20TCL_TX_GEN_MODE_S_NORMAL_MAP 0x00008511
-#define NV20TCL_TX_GEN_MODE_S_REFLECTION_MAP 0x00008512
-#define NV20TCL_TX_GEN_MODE_T(x) (0x000003c4+((x)*16))
-#define NV20TCL_TX_GEN_MODE_T__SIZE 0x00000004
-#define NV20TCL_TX_GEN_MODE_T_FALSE 0x00000000
-#define NV20TCL_TX_GEN_MODE_T_EYE_LINEAR 0x00002400
-#define NV20TCL_TX_GEN_MODE_T_OBJECT_LINEAR 0x00002401
-#define NV20TCL_TX_GEN_MODE_T_SPHERE_MAP 0x00002402
-#define NV20TCL_TX_GEN_MODE_T_NORMAL_MAP 0x00008511
-#define NV20TCL_TX_GEN_MODE_T_REFLECTION_MAP 0x00008512
-#define NV20TCL_TX_GEN_MODE_R(x) (0x000003c8+((x)*16))
-#define NV20TCL_TX_GEN_MODE_R__SIZE 0x00000004
-#define NV20TCL_TX_GEN_MODE_R_FALSE 0x00000000
-#define NV20TCL_TX_GEN_MODE_R_EYE_LINEAR 0x00002400
-#define NV20TCL_TX_GEN_MODE_R_OBJECT_LINEAR 0x00002401
-#define NV20TCL_TX_GEN_MODE_R_SPHERE_MAP 0x00002402
-#define NV20TCL_TX_GEN_MODE_R_NORMAL_MAP 0x00008511
-#define NV20TCL_TX_GEN_MODE_R_REFLECTION_MAP 0x00008512
-#define NV20TCL_TX_GEN_MODE_Q(x) (0x000003cc+((x)*16))
-#define NV20TCL_TX_GEN_MODE_Q__SIZE 0x00000004
-#define NV20TCL_TX_GEN_MODE_Q_FALSE 0x00000000
-#define NV20TCL_TX_GEN_MODE_Q_EYE_LINEAR 0x00002400
-#define NV20TCL_TX_GEN_MODE_Q_OBJECT_LINEAR 0x00002401
-#define NV20TCL_TX_GEN_MODE_Q_SPHERE_MAP 0x00002402
-#define NV20TCL_TX_GEN_MODE_Q_NORMAL_MAP 0x00008511
-#define NV20TCL_TX_GEN_MODE_Q_REFLECTION_MAP 0x00008512
-#define NV20TCL_TX_MATRIX_ENABLE(x) (0x00000420+((x)*4))
-#define NV20TCL_TX_MATRIX_ENABLE__SIZE 0x00000004
-#define NV20TCL_POINT_SIZE 0x0000043c
-#define NV20TCL_MODELVIEW0_MATRIX(x) (0x00000480+((x)*4))
-#define NV20TCL_MODELVIEW0_MATRIX__SIZE 0x00000010
-#define NV20TCL_MODELVIEW1_MATRIX(x) (0x000004c0+((x)*4))
-#define NV20TCL_MODELVIEW1_MATRIX__SIZE 0x00000010
-#define NV20TCL_MODELVIEW2_MATRIX(x) (0x00000500+((x)*4))
-#define NV20TCL_MODELVIEW2_MATRIX__SIZE 0x00000010
-#define NV20TCL_MODELVIEW3_MATRIX(x) (0x00000540+((x)*4))
-#define NV20TCL_MODELVIEW3_MATRIX__SIZE 0x00000010
-#define NV20TCL_INVERSE_MODELVIEW0_MATRIX(x) (0x00000580+((x)*4))
-#define NV20TCL_INVERSE_MODELVIEW0_MATRIX__SIZE 0x00000010
-#define NV20TCL_INVERSE_MODELVIEW1_MATRIX(x) (0x000005c0+((x)*4))
-#define NV20TCL_INVERSE_MODELVIEW1_MATRIX__SIZE 0x00000010
-#define NV20TCL_INVERSE_MODELVIEW2_MATRIX(x) (0x00000600+((x)*4))
-#define NV20TCL_INVERSE_MODELVIEW2_MATRIX__SIZE 0x00000010
-#define NV20TCL_INVERSE_MODELVIEW3_MATRIX(x) (0x00000640+((x)*4))
-#define NV20TCL_INVERSE_MODELVIEW3_MATRIX__SIZE 0x00000010
-#define NV20TCL_PROJECTION_MATRIX(x) (0x00000680+((x)*4))
-#define NV20TCL_PROJECTION_MATRIX__SIZE 0x00000010
-#define NV20TCL_TX0_MATRIX(x) (0x000006c0+((x)*4))
-#define NV20TCL_TX0_MATRIX__SIZE 0x00000010
-#define NV20TCL_TX1_MATRIX(x) (0x00000700+((x)*4))
-#define NV20TCL_TX1_MATRIX__SIZE 0x00000010
-#define NV20TCL_TX2_MATRIX(x) (0x00000740+((x)*4))
-#define NV20TCL_TX2_MATRIX__SIZE 0x00000010
-#define NV20TCL_TX3_MATRIX(x) (0x00000780+((x)*4))
-#define NV20TCL_TX3_MATRIX__SIZE 0x00000010
-#define NV20TCL_TX_GEN_COEFF_S_A(x) (0x00000840+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_S_A__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_S_B(x) (0x00000844+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_S_B__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_S_C(x) (0x00000848+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_S_C__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_S_D(x) (0x0000084c+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_S_D__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_T_A(x) (0x00000850+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_T_A__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_T_B(x) (0x00000854+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_T_B__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_T_C(x) (0x00000858+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_T_C__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_T_D(x) (0x0000085c+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_T_D__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_R_A(x) (0x00000860+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_R_A__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_R_B(x) (0x00000864+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_R_B__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_R_C(x) (0x00000868+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_R_C__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_R_D(x) (0x0000086c+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_R_D__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_Q_A(x) (0x00000870+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_Q_A__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_Q_B(x) (0x00000874+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_Q_B__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_Q_C(x) (0x00000878+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_Q_C__SIZE 0x00000004
-#define NV20TCL_TX_GEN_COEFF_Q_D(x) (0x0000087c+((x)*64))
-#define NV20TCL_TX_GEN_COEFF_Q_D__SIZE 0x00000004
-#define NV20TCL_FOG_EQUATION_CONSTANT 0x000009c0
-#define NV20TCL_FOG_EQUATION_LINEAR 0x000009c4
-#define NV20TCL_FOG_EQUATION_QUADRATIC 0x000009c8
-#define NV20TCL_FRONT_MATERIAL_SHININESS(x) (0x000009e0+((x)*4))
-#define NV20TCL_FRONT_MATERIAL_SHININESS__SIZE 0x00000006
-#define NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_R 0x00000a10
-#define NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_G 0x00000a14
-#define NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_B 0x00000a18
-#define NV20TCL_VIEWPORT_TRANSLATE_X 0x00000a20
-#define NV20TCL_VIEWPORT_TRANSLATE_Y 0x00000a24
-#define NV20TCL_VIEWPORT_TRANSLATE_Z 0x00000a28
-#define NV20TCL_VIEWPORT_TRANSLATE_W 0x00000a2c
-#define NV20TCL_POINT_PARAMETER(x) (0x00000a30+((x)*4))
-#define NV20TCL_POINT_PARAMETER__SIZE 0x00000008
-#define NV20TCL_RC_CONSTANT_COLOR0(x) (0x00000a60+((x)*4))
-#define NV20TCL_RC_CONSTANT_COLOR0__SIZE 0x00000008
-#define NV20TCL_RC_CONSTANT_COLOR0_B_SHIFT 0
-#define NV20TCL_RC_CONSTANT_COLOR0_B_MASK 0x000000ff
-#define NV20TCL_RC_CONSTANT_COLOR0_G_SHIFT 8
-#define NV20TCL_RC_CONSTANT_COLOR0_G_MASK 0x0000ff00
-#define NV20TCL_RC_CONSTANT_COLOR0_R_SHIFT 16
-#define NV20TCL_RC_CONSTANT_COLOR0_R_MASK 0x00ff0000
-#define NV20TCL_RC_CONSTANT_COLOR0_A_SHIFT 24
-#define NV20TCL_RC_CONSTANT_COLOR0_A_MASK 0xff000000
-#define NV20TCL_RC_CONSTANT_COLOR1(x) (0x00000a80+((x)*4))
-#define NV20TCL_RC_CONSTANT_COLOR1__SIZE 0x00000008
-#define NV20TCL_RC_CONSTANT_COLOR1_B_SHIFT 0
-#define NV20TCL_RC_CONSTANT_COLOR1_B_MASK 0x000000ff
-#define NV20TCL_RC_CONSTANT_COLOR1_G_SHIFT 8
-#define NV20TCL_RC_CONSTANT_COLOR1_G_MASK 0x0000ff00
-#define NV20TCL_RC_CONSTANT_COLOR1_R_SHIFT 16
-#define NV20TCL_RC_CONSTANT_COLOR1_R_MASK 0x00ff0000
-#define NV20TCL_RC_CONSTANT_COLOR1_A_SHIFT 24
-#define NV20TCL_RC_CONSTANT_COLOR1_A_MASK 0xff000000
-#define NV20TCL_RC_OUT_ALPHA(x) (0x00000aa0+((x)*4))
-#define NV20TCL_RC_OUT_ALPHA__SIZE 0x00000008
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SHIFT 0
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_MASK 0x0000000f
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a
-#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SHIFT 4
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_MASK 0x000000f0
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0
-#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SHIFT 8
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_MASK 0x00000f00
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00
-#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00
-#define NV20TCL_RC_OUT_ALPHA_CD_DOT_PRODUCT (1 << 12)
-#define NV20TCL_RC_OUT_ALPHA_AB_DOT_PRODUCT (1 << 13)
-#define NV20TCL_RC_OUT_ALPHA_MUX_SUM (1 << 14)
-#define NV20TCL_RC_OUT_ALPHA_BIAS (1 << 15)
-#define NV20TCL_RC_OUT_ALPHA_BIAS_NONE 0x00000000
-#define NV20TCL_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000
-#define NV20TCL_RC_OUT_ALPHA_SCALE_SHIFT 16
-#define NV20TCL_RC_OUT_ALPHA_SCALE_MASK 0x00030000
-#define NV20TCL_RC_OUT_ALPHA_SCALE_NONE 0x00000000
-#define NV20TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000
-#define NV20TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000
-#define NV20TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000
-#define NV20TCL_RC_IN_RGB(x) (0x00000ac0+((x)*4))
-#define NV20TCL_RC_IN_RGB__SIZE 0x00000008
-#define NV20TCL_RC_IN_RGB_D_INPUT_SHIFT 0
-#define NV20TCL_RC_IN_RGB_D_INPUT_MASK 0x0000000f
-#define NV20TCL_RC_IN_RGB_D_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001
-#define NV20TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002
-#define NV20TCL_RC_IN_RGB_D_INPUT_FOG 0x00000003
-#define NV20TCL_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004
-#define NV20TCL_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005
-#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008
-#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009
-#define NV20TCL_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c
-#define NV20TCL_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d
-#define NV20TCL_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
-#define NV20TCL_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f
-#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a
-#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b
-#define NV20TCL_RC_IN_RGB_D_COMPONENT_USAGE (1 << 4)
-#define NV20TCL_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000
-#define NV20TCL_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010
-#define NV20TCL_RC_IN_RGB_D_MAPPING_SHIFT 5
-#define NV20TCL_RC_IN_RGB_D_MAPPING_MASK 0x000000e0
-#define NV20TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020
-#define NV20TCL_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040
-#define NV20TCL_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060
-#define NV20TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
-#define NV20TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
-#define NV20TCL_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0
-#define NV20TCL_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0
-#define NV20TCL_RC_IN_RGB_C_INPUT_SHIFT 8
-#define NV20TCL_RC_IN_RGB_C_INPUT_MASK 0x00000f00
-#define NV20TCL_RC_IN_RGB_C_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100
-#define NV20TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200
-#define NV20TCL_RC_IN_RGB_C_INPUT_FOG 0x00000300
-#define NV20TCL_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400
-#define NV20TCL_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500
-#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800
-#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900
-#define NV20TCL_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00
-#define NV20TCL_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00
-#define NV20TCL_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV20TCL_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00
-#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00
-#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00
-#define NV20TCL_RC_IN_RGB_C_COMPONENT_USAGE (1 << 12)
-#define NV20TCL_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000
-#define NV20TCL_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000
-#define NV20TCL_RC_IN_RGB_C_MAPPING_SHIFT 13
-#define NV20TCL_RC_IN_RGB_C_MAPPING_MASK 0x0000e000
-#define NV20TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000
-#define NV20TCL_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000
-#define NV20TCL_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000
-#define NV20TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
-#define NV20TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
-#define NV20TCL_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000
-#define NV20TCL_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000
-#define NV20TCL_RC_IN_RGB_B_INPUT_SHIFT 16
-#define NV20TCL_RC_IN_RGB_B_INPUT_MASK 0x000f0000
-#define NV20TCL_RC_IN_RGB_B_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000
-#define NV20TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000
-#define NV20TCL_RC_IN_RGB_B_INPUT_FOG 0x00030000
-#define NV20TCL_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000
-#define NV20TCL_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000
-#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000
-#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000
-#define NV20TCL_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000
-#define NV20TCL_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000
-#define NV20TCL_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
-#define NV20TCL_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000
-#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000
-#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000
-#define NV20TCL_RC_IN_RGB_B_COMPONENT_USAGE (1 << 20)
-#define NV20TCL_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000
-#define NV20TCL_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000
-#define NV20TCL_RC_IN_RGB_B_MAPPING_SHIFT 21
-#define NV20TCL_RC_IN_RGB_B_MAPPING_MASK 0x00e00000
-#define NV20TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000
-#define NV20TCL_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000
-#define NV20TCL_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000
-#define NV20TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
-#define NV20TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
-#define NV20TCL_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000
-#define NV20TCL_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000
-#define NV20TCL_RC_IN_RGB_A_INPUT_SHIFT 24
-#define NV20TCL_RC_IN_RGB_A_INPUT_MASK 0x0f000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_ZERO 0x00000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_FOG 0x03000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000
-#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000
-#define NV20TCL_RC_IN_RGB_A_COMPONENT_USAGE (1 << 28)
-#define NV20TCL_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000
-#define NV20TCL_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000
-#define NV20TCL_RC_IN_RGB_A_MAPPING_SHIFT 29
-#define NV20TCL_RC_IN_RGB_A_MAPPING_MASK 0xe0000000
-#define NV20TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
-#define NV20TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000
-#define NV20TCL_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000
-#define NV20TCL_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000
-#define NV20TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
-#define NV20TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
-#define NV20TCL_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000
-#define NV20TCL_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000
-#define NV20TCL_VIEWPORT_SCALE_X 0x00000af0
-#define NV20TCL_VIEWPORT_SCALE_Y 0x00000af4
-#define NV20TCL_VIEWPORT_SCALE_Z 0x00000af8
-#define NV20TCL_VIEWPORT_SCALE_W 0x00000afc
-#define NV20TCL_VP_UPLOAD_INST(x) (0x00000b00+((x)*4))
-#define NV20TCL_VP_UPLOAD_INST__SIZE 0x00000004
-#define NV20TCL_VP_UPLOAD_CONST(x) (0x00000b80+((x)*4))
-#define NV20TCL_VP_UPLOAD_CONST__SIZE 0x00000004
-#define NV20TCL_LIGHT_BACK_AMBIENT_R(x) (0x00000c00+((x)*64))
-#define NV20TCL_LIGHT_BACK_AMBIENT_R__SIZE 0x00000008
-#define NV20TCL_LIGHT_BACK_AMBIENT_G(x) (0x00000c04+((x)*64))
-#define NV20TCL_LIGHT_BACK_AMBIENT_G__SIZE 0x00000008
-#define NV20TCL_LIGHT_BACK_AMBIENT_B(x) (0x00000c08+((x)*64))
-#define NV20TCL_LIGHT_BACK_AMBIENT_B__SIZE 0x00000008
-#define NV20TCL_LIGHT_BACK_DIFFUSE_R(x) (0x00000c0c+((x)*64))
-#define NV20TCL_LIGHT_BACK_DIFFUSE_R__SIZE 0x00000008
-#define NV20TCL_LIGHT_BACK_DIFFUSE_G(x) (0x00000c10+((x)*64))
-#define NV20TCL_LIGHT_BACK_DIFFUSE_G__SIZE 0x00000008
-#define NV20TCL_LIGHT_BACK_DIFFUSE_B(x) (0x00000c14+((x)*64))
-#define NV20TCL_LIGHT_BACK_DIFFUSE_B__SIZE 0x00000008
-#define NV20TCL_LIGHT_BACK_SPECULAR_R(x) (0x00000c18+((x)*64))
-#define NV20TCL_LIGHT_BACK_SPECULAR_R__SIZE 0x00000008
-#define NV20TCL_LIGHT_BACK_SPECULAR_G(x) (0x00000c1c+((x)*64))
-#define NV20TCL_LIGHT_BACK_SPECULAR_G__SIZE 0x00000008
-#define NV20TCL_LIGHT_BACK_SPECULAR_B(x) (0x00000c20+((x)*64))
-#define NV20TCL_LIGHT_BACK_SPECULAR_B__SIZE 0x00000008
-#define NV20TCL_LIGHT_FRONT_AMBIENT_R(x) (0x00001000+((x)*128))
-#define NV20TCL_LIGHT_FRONT_AMBIENT_R__SIZE 0x00000008
-#define NV20TCL_LIGHT_FRONT_AMBIENT_G(x) (0x00001004+((x)*128))
-#define NV20TCL_LIGHT_FRONT_AMBIENT_G__SIZE 0x00000008
-#define NV20TCL_LIGHT_FRONT_AMBIENT_B(x) (0x00001008+((x)*128))
-#define NV20TCL_LIGHT_FRONT_AMBIENT_B__SIZE 0x00000008
-#define NV20TCL_LIGHT_FRONT_DIFFUSE_R(x) (0x0000100c+((x)*128))
-#define NV20TCL_LIGHT_FRONT_DIFFUSE_R__SIZE 0x00000008
-#define NV20TCL_LIGHT_FRONT_DIFFUSE_G(x) (0x00001010+((x)*128))
-#define NV20TCL_LIGHT_FRONT_DIFFUSE_G__SIZE 0x00000008
-#define NV20TCL_LIGHT_FRONT_DIFFUSE_B(x) (0x00001014+((x)*128))
-#define NV20TCL_LIGHT_FRONT_DIFFUSE_B__SIZE 0x00000008
-#define NV20TCL_LIGHT_FRONT_SPECULAR_R(x) (0x00001018+((x)*128))
-#define NV20TCL_LIGHT_FRONT_SPECULAR_R__SIZE 0x00000008
-#define NV20TCL_LIGHT_FRONT_SPECULAR_G(x) (0x0000101c+((x)*128))
-#define NV20TCL_LIGHT_FRONT_SPECULAR_G__SIZE 0x00000008
-#define NV20TCL_LIGHT_FRONT_SPECULAR_B(x) (0x00001020+((x)*128))
-#define NV20TCL_LIGHT_FRONT_SPECULAR_B__SIZE 0x00000008
-#define NV20TCL_LIGHT_HALF_VECTOR_X(x) (0x00001028+((x)*128))
-#define NV20TCL_LIGHT_HALF_VECTOR_X__SIZE 0x00000008
-#define NV20TCL_LIGHT_HALF_VECTOR_Y(x) (0x0000102c+((x)*128))
-#define NV20TCL_LIGHT_HALF_VECTOR_Y__SIZE 0x00000008
-#define NV20TCL_LIGHT_HALF_VECTOR_Z(x) (0x00001030+((x)*128))
-#define NV20TCL_LIGHT_HALF_VECTOR_Z__SIZE 0x00000008
-#define NV20TCL_LIGHT_DIRECTION_X(x) (0x00001034+((x)*128))
-#define NV20TCL_LIGHT_DIRECTION_X__SIZE 0x00000008
-#define NV20TCL_LIGHT_DIRECTION_Y(x) (0x00001038+((x)*128))
-#define NV20TCL_LIGHT_DIRECTION_Y__SIZE 0x00000008
-#define NV20TCL_LIGHT_DIRECTION_Z(x) (0x0000103c+((x)*128))
-#define NV20TCL_LIGHT_DIRECTION_Z__SIZE 0x00000008
-#define NV20TCL_LIGHT_SPOT_CUTOFF_A(x) (0x00001040+((x)*128))
-#define NV20TCL_LIGHT_SPOT_CUTOFF_A__SIZE 0x00000008
-#define NV20TCL_LIGHT_SPOT_CUTOFF_B(x) (0x00001044+((x)*128))
-#define NV20TCL_LIGHT_SPOT_CUTOFF_B__SIZE 0x00000008
-#define NV20TCL_LIGHT_SPOT_CUTOFF_C(x) (0x00001048+((x)*128))
-#define NV20TCL_LIGHT_SPOT_CUTOFF_C__SIZE 0x00000008
-#define NV20TCL_LIGHT_SPOT_DIR_X(x) (0x0000104c+((x)*128))
-#define NV20TCL_LIGHT_SPOT_DIR_X__SIZE 0x00000008
-#define NV20TCL_LIGHT_SPOT_DIR_Y(x) (0x00001050+((x)*128))
-#define NV20TCL_LIGHT_SPOT_DIR_Y__SIZE 0x00000008
-#define NV20TCL_LIGHT_SPOT_DIR_Z(x) (0x00001054+((x)*128))
-#define NV20TCL_LIGHT_SPOT_DIR_Z__SIZE 0x00000008
-#define NV20TCL_LIGHT_SPOT_CUTOFF_D(x) (0x00001058+((x)*128))
-#define NV20TCL_LIGHT_SPOT_CUTOFF_D__SIZE 0x00000008
-#define NV20TCL_LIGHT_POSITION_X(x) (0x0000105c+((x)*128))
-#define NV20TCL_LIGHT_POSITION_X__SIZE 0x00000008
-#define NV20TCL_LIGHT_POSITION_Y(x) (0x00001060+((x)*128))
-#define NV20TCL_LIGHT_POSITION_Y__SIZE 0x00000008
-#define NV20TCL_LIGHT_POSITION_Z(x) (0x00001064+((x)*128))
-#define NV20TCL_LIGHT_POSITION_Z__SIZE 0x00000008
-#define NV20TCL_LIGHT_ATTENUATION_CONSTANT(x) (0x00001068+((x)*128))
-#define NV20TCL_LIGHT_ATTENUATION_CONSTANT__SIZE 0x00000008
-#define NV20TCL_LIGHT_ATTENUATION_LINEAR(x) (0x0000106c+((x)*128))
-#define NV20TCL_LIGHT_ATTENUATION_LINEAR__SIZE 0x00000008
-#define NV20TCL_LIGHT_ATTENUATION_QUADRATIC(x) (0x00001070+((x)*128))
-#define NV20TCL_LIGHT_ATTENUATION_QUADRATIC__SIZE 0x00000008
-#define NV20TCL_POLYGON_STIPPLE_ENABLE 0x0000147c
-#define NV20TCL_POLYGON_STIPPLE_PATTERN(x) (0x00001480+((x)*4))
-#define NV20TCL_POLYGON_STIPPLE_PATTERN__SIZE 0x00000020
-#define NV20TCL_VERTEX_POS_3F_X 0x00001500
-#define NV20TCL_VERTEX_POS_3F_Y 0x00001504
-#define NV20TCL_VERTEX_POS_3F_Z 0x00001508
-#define NV20TCL_VERTEX_POS_4F_X 0x00001518
-#define NV20TCL_VERTEX_POS_4F_Y 0x0000151c
-#define NV20TCL_VERTEX_POS_4F_Z 0x00001520
-#define NV20TCL_VERTEX_POS_3I_XY 0x00001528
-#define NV20TCL_VERTEX_POS_3I_XY_X_SHIFT 0
-#define NV20TCL_VERTEX_POS_3I_XY_X_MASK 0x0000ffff
-#define NV20TCL_VERTEX_POS_3I_XY_Y_SHIFT 16
-#define NV20TCL_VERTEX_POS_3I_XY_Y_MASK 0xffff0000
-#define NV20TCL_VERTEX_POS_3I_Z 0x0000152c
-#define NV20TCL_VERTEX_POS_3I_Z_Z_SHIFT 0
-#define NV20TCL_VERTEX_POS_3I_Z_Z_MASK 0x0000ffff
-#define NV20TCL_VERTEX_NOR_3F_X 0x00001530
-#define NV20TCL_VERTEX_NOR_3F_Y 0x00001534
-#define NV20TCL_VERTEX_NOR_3F_Z 0x00001538
-#define NV20TCL_VERTEX_NOR_3I_XY 0x00001540
-#define NV20TCL_VERTEX_NOR_3I_XY_X_SHIFT 0
-#define NV20TCL_VERTEX_NOR_3I_XY_X_MASK 0x0000ffff
-#define NV20TCL_VERTEX_NOR_3I_XY_Y_SHIFT 16
-#define NV20TCL_VERTEX_NOR_3I_XY_Y_MASK 0xffff0000
-#define NV20TCL_VERTEX_NOR_3I_Z 0x00001544
-#define NV20TCL_VERTEX_NOR_3I_Z_Z_SHIFT 0
-#define NV20TCL_VERTEX_NOR_3I_Z_Z_MASK 0x0000ffff
-#define NV20TCL_VERTEX_COL_4F_X 0x00001550
-#define NV20TCL_VERTEX_COL_4F_Y 0x00001554
-#define NV20TCL_VERTEX_COL_4F_Z 0x00001558
-#define NV20TCL_VERTEX_COL_4F_W 0x0000155c
-#define NV20TCL_VERTEX_COL_3F_X 0x00001560
-#define NV20TCL_VERTEX_COL_3F_Y 0x00001564
-#define NV20TCL_VERTEX_COL_3F_Z 0x00001568
-#define NV20TCL_VERTEX_COL_4I 0x0000156c
-#define NV20TCL_VERTEX_COL_4I_R_SHIFT 0
-#define NV20TCL_VERTEX_COL_4I_R_MASK 0x000000ff
-#define NV20TCL_VERTEX_COL_4I_G_SHIFT 8
-#define NV20TCL_VERTEX_COL_4I_G_MASK 0x0000ff00
-#define NV20TCL_VERTEX_COL_4I_B_SHIFT 16
-#define NV20TCL_VERTEX_COL_4I_B_MASK 0x00ff0000
-#define NV20TCL_VERTEX_COL_4I_A_SHIFT 24
-#define NV20TCL_VERTEX_COL_4I_A_MASK 0xff000000
-#define NV20TCL_VERTEX_COL2_3F_X 0x00001580
-#define NV20TCL_VERTEX_COL2_3F_Y 0x00001584
-#define NV20TCL_VERTEX_COL2_3F_Z 0x00001588
-#define NV20TCL_VERTEX_COL2_4I 0x0000158c
-#define NV20TCL_VERTEX_COL2_4I_R_SHIFT 0
-#define NV20TCL_VERTEX_COL2_4I_R_MASK 0x000000ff
-#define NV20TCL_VERTEX_COL2_4I_G_SHIFT 8
-#define NV20TCL_VERTEX_COL2_4I_G_MASK 0x0000ff00
-#define NV20TCL_VERTEX_COL2_4I_B_SHIFT 16
-#define NV20TCL_VERTEX_COL2_4I_B_MASK 0x00ff0000
-#define NV20TCL_VERTEX_COL2_4I_A_SHIFT 24
-#define NV20TCL_VERTEX_COL2_4I_A_MASK 0xff000000
-#define NV20TCL_VERTEX_TX0_2F_S 0x00001590
-#define NV20TCL_VERTEX_TX0_2F_T 0x00001594
-#define NV20TCL_VERTEX_TX0_2I 0x00001598
-#define NV20TCL_VERTEX_TX0_2I_S_SHIFT 0
-#define NV20TCL_VERTEX_TX0_2I_S_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX0_2I_T_SHIFT 16
-#define NV20TCL_VERTEX_TX0_2I_T_MASK 0xffff0000
-#define NV20TCL_VERTEX_TX0_4F_S 0x000015a0
-#define NV20TCL_VERTEX_TX0_4F_T 0x000015a4
-#define NV20TCL_VERTEX_TX0_4F_R 0x000015a8
-#define NV20TCL_VERTEX_TX0_4F_Q 0x000015ac
-#define NV20TCL_VERTEX_TX0_4I_ST 0x000015b0
-#define NV20TCL_VERTEX_TX0_4I_ST_S_SHIFT 0
-#define NV20TCL_VERTEX_TX0_4I_ST_S_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX0_4I_ST_T_SHIFT 16
-#define NV20TCL_VERTEX_TX0_4I_ST_T_MASK 0xffff0000
-#define NV20TCL_VERTEX_TX0_4I_RQ 0x000015b4
-#define NV20TCL_VERTEX_TX0_4I_RQ_R_SHIFT 0
-#define NV20TCL_VERTEX_TX0_4I_RQ_R_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX0_4I_RQ_Q_SHIFT 16
-#define NV20TCL_VERTEX_TX0_4I_RQ_Q_MASK 0xffff0000
-#define NV20TCL_VERTEX_TX1_2F_S 0x000015b8
-#define NV20TCL_VERTEX_TX1_2F_T 0x000015bc
-#define NV20TCL_VERTEX_TX1_2I 0x000015c0
-#define NV20TCL_VERTEX_TX1_2I_S_SHIFT 0
-#define NV20TCL_VERTEX_TX1_2I_S_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX1_2I_T_SHIFT 16
-#define NV20TCL_VERTEX_TX1_2I_T_MASK 0xffff0000
-#define NV20TCL_VERTEX_TX1_4F_S 0x000015c8
-#define NV20TCL_VERTEX_TX1_4F_T 0x000015cc
-#define NV20TCL_VERTEX_TX1_4F_R 0x000015d0
-#define NV20TCL_VERTEX_TX1_4F_Q 0x000015d4
-#define NV20TCL_VERTEX_TX1_4I_ST 0x000015d8
-#define NV20TCL_VERTEX_TX1_4I_ST_S_SHIFT 0
-#define NV20TCL_VERTEX_TX1_4I_ST_S_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX1_4I_ST_T_SHIFT 16
-#define NV20TCL_VERTEX_TX1_4I_ST_T_MASK 0xffff0000
-#define NV20TCL_VERTEX_TX1_4I_RQ 0x000015dc
-#define NV20TCL_VERTEX_TX1_4I_RQ_R_SHIFT 0
-#define NV20TCL_VERTEX_TX1_4I_RQ_R_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX1_4I_RQ_Q_SHIFT 16
-#define NV20TCL_VERTEX_TX1_4I_RQ_Q_MASK 0xffff0000
-#define NV20TCL_VERTEX_TX2_2F_S 0x000015e0
-#define NV20TCL_VERTEX_TX2_2F_T 0x000015e4
-#define NV20TCL_VERTEX_TX2_2I 0x000015e8
-#define NV20TCL_VERTEX_TX2_2I_S_SHIFT 0
-#define NV20TCL_VERTEX_TX2_2I_S_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX2_2I_T_SHIFT 16
-#define NV20TCL_VERTEX_TX2_2I_T_MASK 0xffff0000
-#define NV20TCL_VERTEX_TX2_4F_S 0x000015f0
-#define NV20TCL_VERTEX_TX2_4F_T 0x000015f4
-#define NV20TCL_VERTEX_TX2_4F_R 0x000015f8
-#define NV20TCL_VERTEX_TX2_4F_Q 0x000015fc
-#define NV20TCL_VERTEX_TX2_4I_ST 0x00001600
-#define NV20TCL_VERTEX_TX2_4I_ST_S_SHIFT 0
-#define NV20TCL_VERTEX_TX2_4I_ST_S_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX2_4I_ST_T_SHIFT 16
-#define NV20TCL_VERTEX_TX2_4I_ST_T_MASK 0xffff0000
-#define NV20TCL_VERTEX_TX2_4I_RQ 0x00001604
-#define NV20TCL_VERTEX_TX2_4I_RQ_R_SHIFT 0
-#define NV20TCL_VERTEX_TX2_4I_RQ_R_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX2_4I_RQ_Q_SHIFT 16
-#define NV20TCL_VERTEX_TX2_4I_RQ_Q_MASK 0xffff0000
-#define NV20TCL_VERTEX_TX3_2F_S 0x00001608
-#define NV20TCL_VERTEX_TX3_2F_T 0x0000160c
-#define NV20TCL_VERTEX_TX3_2I 0x00001610
-#define NV20TCL_VERTEX_TX3_2I_S_SHIFT 0
-#define NV20TCL_VERTEX_TX3_2I_S_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX3_2I_T_SHIFT 16
-#define NV20TCL_VERTEX_TX3_2I_T_MASK 0xffff0000
-#define NV20TCL_VERTEX_TX3_4F_S 0x00001620
-#define NV20TCL_VERTEX_TX3_4F_T 0x00001624
-#define NV20TCL_VERTEX_TX3_4F_R 0x00001628
-#define NV20TCL_VERTEX_TX3_4F_Q 0x0000162c
-#define NV20TCL_VERTEX_TX3_4I_ST 0x00001630
-#define NV20TCL_VERTEX_TX3_4I_ST_S_SHIFT 0
-#define NV20TCL_VERTEX_TX3_4I_ST_S_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX3_4I_ST_T_SHIFT 16
-#define NV20TCL_VERTEX_TX3_4I_ST_T_MASK 0xffff0000
-#define NV20TCL_VERTEX_TX3_4I_RQ 0x00001634
-#define NV20TCL_VERTEX_TX3_4I_RQ_R_SHIFT 0
-#define NV20TCL_VERTEX_TX3_4I_RQ_R_MASK 0x0000ffff
-#define NV20TCL_VERTEX_TX3_4I_RQ_Q_SHIFT 16
-#define NV20TCL_VERTEX_TX3_4I_RQ_Q_MASK 0xffff0000
-#define NV20TCL_VERTEX_FOG_1F 0x00001698
-#define NV20TCL_EDGEFLAG_ENABLE 0x000016bc
-#define NV20TCL_VTX_CACHE_INVALIDATE 0x00001710
-#define NV20TCL_VTXBUF_ADDRESS(x) (0x00001720+((x)*4))
-#define NV20TCL_VTXBUF_ADDRESS__SIZE 0x00000010
-#define NV20TCL_VTXBUF_ADDRESS_DMA1 (1 << 31)
-#define NV20TCL_VTXBUF_ADDRESS_OFFSET_SHIFT 0
-#define NV20TCL_VTXBUF_ADDRESS_OFFSET_MASK 0x0fffffff
-#define NV20TCL_VTXFMT(x) (0x00001760+((x)*4))
-#define NV20TCL_VTXFMT__SIZE 0x00000010
-#define NV20TCL_VTXFMT_TYPE_SHIFT 0
-#define NV20TCL_VTXFMT_TYPE_MASK 0x0000000f
-#define NV20TCL_VTXFMT_TYPE_FLOAT 0x00000002
-#define NV20TCL_VTXFMT_TYPE_UBYTE 0x00000004
-#define NV20TCL_VTXFMT_TYPE_USHORT 0x00000005
-#define NV20TCL_VTXFMT_SIZE_SHIFT 4
-#define NV20TCL_VTXFMT_SIZE_MASK 0x000000f0
-#define NV20TCL_VTXFMT_STRIDE_SHIFT 8
-#define NV20TCL_VTXFMT_STRIDE_MASK 0x0000ff00
-#define NV20TCL_LIGHT_MODEL_BACK_AMBIENT_R 0x000017a0
-#define NV20TCL_LIGHT_MODEL_BACK_AMBIENT_G 0x000017a4
-#define NV20TCL_LIGHT_MODEL_BACK_AMBIENT_B 0x000017a8
-#define NV20TCL_MATERIAL_FACTOR_BACK_A 0x000017ac
-#define NV20TCL_MATERIAL_FACTOR_BACK_R 0x000017b0
-#define NV20TCL_MATERIAL_FACTOR_BACK_G 0x000017b4
-#define NV20TCL_MATERIAL_FACTOR_BACK_B 0x000017b8
-#define NV20TCL_COLOR_LOGIC_OP_ENABLE 0x000017bc
-#define NV20TCL_COLOR_LOGIC_OP_OP 0x000017c0
-#define NV20TCL_COLOR_LOGIC_OP_OP_CLEAR 0x00001500
-#define NV20TCL_COLOR_LOGIC_OP_OP_AND 0x00001501
-#define NV20TCL_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502
-#define NV20TCL_COLOR_LOGIC_OP_OP_COPY 0x00001503
-#define NV20TCL_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504
-#define NV20TCL_COLOR_LOGIC_OP_OP_NOOP 0x00001505
-#define NV20TCL_COLOR_LOGIC_OP_OP_XOR 0x00001506
-#define NV20TCL_COLOR_LOGIC_OP_OP_OR 0x00001507
-#define NV20TCL_COLOR_LOGIC_OP_OP_NOR 0x00001508
-#define NV20TCL_COLOR_LOGIC_OP_OP_EQUIV 0x00001509
-#define NV20TCL_COLOR_LOGIC_OP_OP_INVERT 0x0000150a
-#define NV20TCL_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b
-#define NV20TCL_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c
-#define NV20TCL_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d
-#define NV20TCL_COLOR_LOGIC_OP_OP_NAND 0x0000150e
-#define NV20TCL_COLOR_LOGIC_OP_OP_SET 0x0000150f
-#define NV20TCL_LIGHT_MODEL_TWO_SIDE_ENABLE 0x000017c4
-#define NV20TCL_TX_SHADER_CULL_MODE 0x000017f8
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_S (1 << 0)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_S_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_S_LESS 0x00000001
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_T (1 << 1)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_T_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_T_LESS 0x00000002
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_R (1 << 2)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_R_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_R_LESS 0x00000004
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_Q (1 << 3)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_Q_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX0_Q_LESS 0x00000008
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_S (1 << 4)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_S_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_S_LESS 0x00000010
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_T (1 << 5)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_T_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_T_LESS 0x00000020
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_R (1 << 6)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_R_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_R_LESS 0x00000040
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_Q (1 << 7)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_Q_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX1_Q_LESS 0x00000080
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_S (1 << 8)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_S_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_S_LESS 0x00000100
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_T (1 << 9)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_T_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_T_LESS 0x00000200
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_R (1 << 10)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_R_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_R_LESS 0x00000400
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_Q (1 << 11)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_Q_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX2_Q_LESS 0x00000800
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_S (1 << 12)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_S_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_S_LESS 0x00001000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_T (1 << 13)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_T_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_T_LESS 0x00002000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_R (1 << 14)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_R_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_R_LESS 0x00004000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_Q (1 << 15)
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_Q_GEQUAL 0x00000000
-#define NV20TCL_TX_SHADER_CULL_MODE_TX3_Q_LESS 0x00008000
-#define NV20TCL_VERTEX_BEGIN_END 0x000017fc
-#define NV20TCL_VERTEX_BEGIN_END_STOP 0x00000000
-#define NV20TCL_VERTEX_BEGIN_END_POINTS 0x00000001
-#define NV20TCL_VERTEX_BEGIN_END_LINES 0x00000002
-#define NV20TCL_VERTEX_BEGIN_END_LINE_LOOP 0x00000003
-#define NV20TCL_VERTEX_BEGIN_END_LINE_STRIP 0x00000004
-#define NV20TCL_VERTEX_BEGIN_END_TRIANGLES 0x00000005
-#define NV20TCL_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006
-#define NV20TCL_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007
-#define NV20TCL_VERTEX_BEGIN_END_QUADS 0x00000008
-#define NV20TCL_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009
-#define NV20TCL_VERTEX_BEGIN_END_POLYGON 0x0000000a
-#define NV20TCL_VB_ELEMENT_U16 0x00001800
-#define NV20TCL_VB_ELEMENT_U16_I0_SHIFT 0
-#define NV20TCL_VB_ELEMENT_U16_I0_MASK 0x0000ffff
-#define NV20TCL_VB_ELEMENT_U16_I1_SHIFT 16
-#define NV20TCL_VB_ELEMENT_U16_I1_MASK 0xffff0000
-#define NV20TCL_VB_ELEMENT_U32 0x00001808
-#define NV20TCL_VB_VERTEX_BATCH 0x00001810
-#define NV20TCL_VB_VERTEX_BATCH_OFFSET_SHIFT 0
-#define NV20TCL_VB_VERTEX_BATCH_OFFSET_MASK 0x00ffffff
-#define NV20TCL_VB_VERTEX_BATCH_COUNT_SHIFT 24
-#define NV20TCL_VB_VERTEX_BATCH_COUNT_MASK 0xff000000
-#define NV20TCL_VERTEX_DATA 0x00001818
-#define NV20TCL_TX_SHADER_CONST_EYE_X 0x0000181c
-#define NV20TCL_TX_SHADER_CONST_EYE_Y 0x00001820
-#define NV20TCL_TX_SHADER_CONST_EYE_Z 0x00001824
-#define NV20TCL_VTX_ATTR_4F_X(x) (0x00001a00+((x)*16))
-#define NV20TCL_VTX_ATTR_4F_X__SIZE 0x00000010
-#define NV20TCL_VTX_ATTR_4F_Y(x) (0x00001a04+((x)*16))
-#define NV20TCL_VTX_ATTR_4F_Y__SIZE 0x00000010
-#define NV20TCL_VTX_ATTR_4F_Z(x) (0x00001a08+((x)*16))
-#define NV20TCL_VTX_ATTR_4F_Z__SIZE 0x00000010
-#define NV20TCL_VTX_ATTR_4F_W(x) (0x00001a0c+((x)*16))
-#define NV20TCL_VTX_ATTR_4F_W__SIZE 0x00000010
-#define NV20TCL_TX_OFFSET(x) (0x00001b00+((x)*64))
-#define NV20TCL_TX_OFFSET__SIZE 0x00000004
-#define NV20TCL_TX_FORMAT(x) (0x00001b04+((x)*64))
-#define NV20TCL_TX_FORMAT__SIZE 0x00000004
-#define NV20TCL_TX_FORMAT_DMA0 (1 << 0)
-#define NV20TCL_TX_FORMAT_DMA1 (1 << 1)
-#define NV20TCL_TX_FORMAT_CUBIC (1 << 2)
-#define NV20TCL_TX_FORMAT_NO_BORDER (1 << 3)
-#define NV20TCL_TX_FORMAT_DIMS_SHIFT 4
-#define NV20TCL_TX_FORMAT_DIMS_MASK 0x000000f0
-#define NV20TCL_TX_FORMAT_DIMS_1D 0x00000010
-#define NV20TCL_TX_FORMAT_DIMS_2D 0x00000020
-#define NV20TCL_TX_FORMAT_DIMS_3D 0x00000030
-#define NV20TCL_TX_FORMAT_FORMAT_SHIFT 8
-#define NV20TCL_TX_FORMAT_FORMAT_MASK 0x0000ff00
-#define NV20TCL_TX_FORMAT_FORMAT_L8 0x00000000
-#define NV20TCL_TX_FORMAT_FORMAT_A8 0x00000100
-#define NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5 0x00000200
-#define NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4 0x00000400
-#define NV20TCL_TX_FORMAT_FORMAT_R5G6B5 0x00000500
-#define NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8 0x00000600
-#define NV20TCL_TX_FORMAT_FORMAT_X8R8G8B8 0x00000700
-#define NV20TCL_TX_FORMAT_FORMAT_INDEX8 0x00000b00
-#define NV20TCL_TX_FORMAT_FORMAT_DXT1 0x00000c00
-#define NV20TCL_TX_FORMAT_FORMAT_DXT3 0x00000e00
-#define NV20TCL_TX_FORMAT_FORMAT_DXT5 0x00000f00
-#define NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00001000
-#define NV20TCL_TX_FORMAT_FORMAT_R5G6B5_RECT 0x00001100
-#define NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00001200
-#define NV20TCL_TX_FORMAT_FORMAT_L8_RECT 0x00001300
-#define NV20TCL_TX_FORMAT_FORMAT_DSDT8_RECT 0x00001700
-#define NV20TCL_TX_FORMAT_FORMAT_A8L8 0x00001a00
-#define NV20TCL_TX_FORMAT_FORMAT_A8_RECT 0x00001b00
-#define NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4_RECT 0x00001d00
-#define NV20TCL_TX_FORMAT_FORMAT_R8G8B8_RECT 0x00001e00
-#define NV20TCL_TX_FORMAT_FORMAT_A8L8_RECT 0x00002000
-#define NV20TCL_TX_FORMAT_FORMAT_DSDT8 0x00002800
-#define NV20TCL_TX_FORMAT_FORMAT_HILO16 0x00003300
-#define NV20TCL_TX_FORMAT_FORMAT_HILO16_RECT 0x00003600
-#define NV20TCL_TX_FORMAT_FORMAT_HILO8 0x00004400
-#define NV20TCL_TX_FORMAT_FORMAT_SIGNED_HILO8 0x00004500
-#define NV20TCL_TX_FORMAT_FORMAT_HILO8_RECT 0x00004600
-#define NV20TCL_TX_FORMAT_FORMAT_SIGNED_HILO8_RECT 0x00004700
-#define NV20TCL_TX_FORMAT_FORMAT_A16 0x00003200
-#define NV20TCL_TX_FORMAT_FORMAT_A16_RECT 0x00003500
-#define NV20TCL_TX_FORMAT_FORMAT_FLOAT_RGBA16_NV 0x00004a00
-#define NV20TCL_TX_FORMAT_FORMAT_FLOAT_RGBA32_NV 0x00004b00
-#define NV20TCL_TX_FORMAT_FORMAT_FLOAT_R32_NV 0x00004c00
-#define NV20TCL_TX_FORMAT_MIPMAP (1 << 19)
-#define NV20TCL_TX_FORMAT_BASE_SIZE_U_SHIFT 20
-#define NV20TCL_TX_FORMAT_BASE_SIZE_U_MASK 0x00f00000
-#define NV20TCL_TX_FORMAT_BASE_SIZE_V_SHIFT 24
-#define NV20TCL_TX_FORMAT_BASE_SIZE_V_MASK 0x0f000000
-#define NV20TCL_TX_FORMAT_BASE_SIZE_W_SHIFT 28
-#define NV20TCL_TX_FORMAT_BASE_SIZE_W_MASK 0xf0000000
-#define NV20TCL_TX_WRAP(x) (0x00001b08+((x)*64))
-#define NV20TCL_TX_WRAP__SIZE 0x00000004
-#define NV20TCL_TX_WRAP_S_SHIFT 0
-#define NV20TCL_TX_WRAP_S_MASK 0x000000ff
-#define NV20TCL_TX_WRAP_S_REPEAT 0x00000001
-#define NV20TCL_TX_WRAP_S_MIRRORED_REPEAT 0x00000002
-#define NV20TCL_TX_WRAP_S_CLAMP_TO_EDGE 0x00000003
-#define NV20TCL_TX_WRAP_S_CLAMP_TO_BORDER 0x00000004
-#define NV20TCL_TX_WRAP_S_CLAMP 0x00000005
-#define NV20TCL_TX_WRAP_T_SHIFT 8
-#define NV20TCL_TX_WRAP_T_MASK 0x00000f00
-#define NV20TCL_TX_WRAP_T_REPEAT 0x00000100
-#define NV20TCL_TX_WRAP_T_MIRRORED_REPEAT 0x00000200
-#define NV20TCL_TX_WRAP_T_CLAMP_TO_EDGE 0x00000300
-#define NV20TCL_TX_WRAP_T_CLAMP_TO_BORDER 0x00000400
-#define NV20TCL_TX_WRAP_T_CLAMP 0x00000500
-#define NV20TCL_TX_WRAP_R_SHIFT 16
-#define NV20TCL_TX_WRAP_R_MASK 0x000f0000
-#define NV20TCL_TX_WRAP_R_REPEAT 0x00010000
-#define NV20TCL_TX_WRAP_R_MIRRORED_REPEAT 0x00020000
-#define NV20TCL_TX_WRAP_R_CLAMP_TO_EDGE 0x00030000
-#define NV20TCL_TX_WRAP_R_CLAMP_TO_BORDER 0x00040000
-#define NV20TCL_TX_WRAP_R_CLAMP 0x00050000
-#define NV20TCL_TX_ENABLE(x) (0x00001b0c+((x)*64))
-#define NV20TCL_TX_ENABLE__SIZE 0x00000004
-#define NV20TCL_TX_ENABLE_ANISO_SHIFT 4
-#define NV20TCL_TX_ENABLE_ANISO_MASK 0x00000030
-#define NV20TCL_TX_ENABLE_ANISO_NONE 0x00000000
-#define NV20TCL_TX_ENABLE_ANISO_2X 0x00000010
-#define NV20TCL_TX_ENABLE_ANISO_4X 0x00000020
-#define NV20TCL_TX_ENABLE_ANISO_8X 0x00000030
-#define NV20TCL_TX_ENABLE_MIPMAP_MAX_LOD_SHIFT 14
-#define NV20TCL_TX_ENABLE_MIPMAP_MAX_LOD_MASK 0x0003c000
-#define NV20TCL_TX_ENABLE_MIPMAP_MIN_LOD_SHIFT 26
-#define NV20TCL_TX_ENABLE_MIPMAP_MIN_LOD_MASK 0x3c000000
-#define NV20TCL_TX_ENABLE_ENABLE (1 << 30)
-#define NV20TCL_TX_NPOT_PITCH(x) (0x00001b10+((x)*64))
-#define NV20TCL_TX_NPOT_PITCH__SIZE 0x00000004
-#define NV20TCL_TX_NPOT_PITCH_PITCH_SHIFT 16
-#define NV20TCL_TX_NPOT_PITCH_PITCH_MASK 0xffff0000
-#define NV20TCL_TX_FILTER(x) (0x00001b14+((x)*64))
-#define NV20TCL_TX_FILTER__SIZE 0x00000004
-#define NV20TCL_TX_FILTER_LOD_BIAS_SHIFT 8
-#define NV20TCL_TX_FILTER_LOD_BIAS_MASK 0x00000f00
-#define NV20TCL_TX_FILTER_MINIFY_SHIFT 16
-#define NV20TCL_TX_FILTER_MINIFY_MASK 0x000f0000
-#define NV20TCL_TX_FILTER_MINIFY_NEAREST 0x00010000
-#define NV20TCL_TX_FILTER_MINIFY_LINEAR 0x00020000
-#define NV20TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x00030000
-#define NV20TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x00040000
-#define NV20TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x00050000
-#define NV20TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x00060000
-#define NV20TCL_TX_FILTER_MAGNIFY_SHIFT 24
-#define NV20TCL_TX_FILTER_MAGNIFY_MASK 0x0f000000
-#define NV20TCL_TX_FILTER_MAGNIFY_NEAREST 0x01000000
-#define NV20TCL_TX_FILTER_MAGNIFY_LINEAR 0x02000000
-#define NV20TCL_TX_NPOT_SIZE(x) (0x00001b1c+((x)*64))
-#define NV20TCL_TX_NPOT_SIZE__SIZE 0x00000004
-#define NV20TCL_TX_NPOT_SIZE_H_SHIFT 0
-#define NV20TCL_TX_NPOT_SIZE_H_MASK 0x0000ffff
-#define NV20TCL_TX_NPOT_SIZE_W_SHIFT 16
-#define NV20TCL_TX_NPOT_SIZE_W_MASK 0xffff0000
-#define NV20TCL_TX_PALETTE_OFFSET(x) (0x00001b20+((x)*64))
-#define NV20TCL_TX_PALETTE_OFFSET__SIZE 0x00000004
-#define NV20TCL_TX_BORDER_COLOR(x) (0x00001b24+((x)*64))
-#define NV20TCL_TX_BORDER_COLOR__SIZE 0x00000004
-#define NV20TCL_TX_BORDER_COLOR_B_SHIFT 0
-#define NV20TCL_TX_BORDER_COLOR_B_MASK 0x000000ff
-#define NV20TCL_TX_BORDER_COLOR_G_SHIFT 8
-#define NV20TCL_TX_BORDER_COLOR_G_MASK 0x0000ff00
-#define NV20TCL_TX_BORDER_COLOR_R_SHIFT 16
-#define NV20TCL_TX_BORDER_COLOR_R_MASK 0x00ff0000
-#define NV20TCL_TX_BORDER_COLOR_A_SHIFT 24
-#define NV20TCL_TX_BORDER_COLOR_A_MASK 0xff000000
-#define NV20TCL_TX_SHADER_OFFSET_MATRIX00(x) (0x00001b28+((x)*64))
-#define NV20TCL_TX_SHADER_OFFSET_MATRIX00__SIZE 0x00000004
-#define NV20TCL_TX_SHADER_OFFSET_MATRIX01(x) (0x00001b2c+((x)*64))
-#define NV20TCL_TX_SHADER_OFFSET_MATRIX01__SIZE 0x00000004
-#define NV20TCL_TX_SHADER_OFFSET_MATRIX11(x) (0x00001b30+((x)*64))
-#define NV20TCL_TX_SHADER_OFFSET_MATRIX11__SIZE 0x00000004
-#define NV20TCL_TX_SHADER_OFFSET_MATRIX10(x) (0x00001b34+((x)*64))
-#define NV20TCL_TX_SHADER_OFFSET_MATRIX10__SIZE 0x00000004
-#define NV20TCL_DEPTH_UNK17D8 0x00001d78
-#define NV20TCL_DEPTH_UNK17D8_CLAMP_SHIFT 4
-#define NV20TCL_DEPTH_UNK17D8_CLAMP_MASK 0x000000f0
-#define NV20TCL_MULTISAMPLE_CONTROL 0x00001d7c
-#define NV20TCL_CLEAR_DEPTH_VALUE 0x00001d8c
-#define NV20TCL_CLEAR_VALUE 0x00001d90
-#define NV20TCL_CLEAR_BUFFERS 0x00001d94
-#define NV20TCL_CLEAR_BUFFERS_COLOR_A (1 << 7)
-#define NV20TCL_CLEAR_BUFFERS_COLOR_B (1 << 6)
-#define NV20TCL_CLEAR_BUFFERS_COLOR_G (1 << 5)
-#define NV20TCL_CLEAR_BUFFERS_COLOR_R (1 << 4)
-#define NV20TCL_CLEAR_BUFFERS_STENCIL (1 << 1)
-#define NV20TCL_CLEAR_BUFFERS_DEPTH (1 << 0)
-#define NV20TCL_RC_COLOR0 0x00001e20
-#define NV20TCL_RC_COLOR0_B_SHIFT 0
-#define NV20TCL_RC_COLOR0_B_MASK 0x000000ff
-#define NV20TCL_RC_COLOR0_G_SHIFT 8
-#define NV20TCL_RC_COLOR0_G_MASK 0x0000ff00
-#define NV20TCL_RC_COLOR0_R_SHIFT 16
-#define NV20TCL_RC_COLOR0_R_MASK 0x00ff0000
-#define NV20TCL_RC_COLOR0_A_SHIFT 24
-#define NV20TCL_RC_COLOR0_A_MASK 0xff000000
-#define NV20TCL_RC_COLOR1 0x00001e24
-#define NV20TCL_RC_COLOR1_B_SHIFT 0
-#define NV20TCL_RC_COLOR1_B_MASK 0x000000ff
-#define NV20TCL_RC_COLOR1_G_SHIFT 8
-#define NV20TCL_RC_COLOR1_G_MASK 0x0000ff00
-#define NV20TCL_RC_COLOR1_R_SHIFT 16
-#define NV20TCL_RC_COLOR1_R_MASK 0x00ff0000
-#define NV20TCL_RC_COLOR1_A_SHIFT 24
-#define NV20TCL_RC_COLOR1_A_MASK 0xff000000
-#define NV20TCL_BACK_MATERIAL_SHININESS(x) (0x00001e28+((x)*4))
-#define NV20TCL_BACK_MATERIAL_SHININESS__SIZE 0x00000006
-#define NV20TCL_RC_OUT_RGB(x) (0x00001e40+((x)*4))
-#define NV20TCL_RC_OUT_RGB__SIZE 0x00000008
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SHIFT 0
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_MASK 0x0000000f
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a
-#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SHIFT 4
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_MASK 0x000000f0
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0
-#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SHIFT 8
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_MASK 0x00000f00
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00
-#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00
-#define NV20TCL_RC_OUT_RGB_CD_DOT_PRODUCT (1 << 12)
-#define NV20TCL_RC_OUT_RGB_AB_DOT_PRODUCT (1 << 13)
-#define NV20TCL_RC_OUT_RGB_MUX_SUM (1 << 14)
-#define NV20TCL_RC_OUT_RGB_BIAS (1 << 15)
-#define NV20TCL_RC_OUT_RGB_BIAS_NONE 0x00000000
-#define NV20TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000
-#define NV20TCL_RC_OUT_RGB_SCALE_SHIFT 16
-#define NV20TCL_RC_OUT_RGB_SCALE_MASK 0x00030000
-#define NV20TCL_RC_OUT_RGB_SCALE_NONE 0x00000000
-#define NV20TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000
-#define NV20TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000
-#define NV20TCL_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000
-#define NV20TCL_RC_ENABLE 0x00001e60
-#define NV20TCL_RC_ENABLE_NUM_COMBINERS_SHIFT 0
-#define NV20TCL_RC_ENABLE_NUM_COMBINERS_MASK 0x0000000f
-#define NV20TCL_TX_RCOMP 0x00001e6c
-#define NV20TCL_TX_RCOMP_NEVER 0x00000000
-#define NV20TCL_TX_RCOMP_GREATER 0x00000001
-#define NV20TCL_TX_RCOMP_EQUAL 0x00000002
-#define NV20TCL_TX_RCOMP_GEQUAL 0x00000003
-#define NV20TCL_TX_RCOMP_LESS 0x00000004
-#define NV20TCL_TX_RCOMP_NOTEQUAL 0x00000005
-#define NV20TCL_TX_RCOMP_LEQUAL 0x00000006
-#define NV20TCL_TX_RCOMP_ALWAYS 0x00000007
-#define NV20TCL_TX_SHADER_OP 0x00001e70
-#define NV20TCL_TX_SHADER_OP_TX0_SHIFT 0
-#define NV20TCL_TX_SHADER_OP_TX0_MASK 0x0000001f
-#define NV20TCL_TX_SHADER_OP_TX0_NONE 0x00000000
-#define NV20TCL_TX_SHADER_OP_TX0_TEXTURE_2D 0x00000001
-#define NV20TCL_TX_SHADER_OP_TX0_PASS_THROUGH 0x00000004
-#define NV20TCL_TX_SHADER_OP_TX0_CULL_FRAGMENT 0x00000005
-#define NV20TCL_TX_SHADER_OP_TX0_OFFSET_TEXTURE_2D 0x00000006
-#define NV20TCL_TX_SHADER_OP_TX0_DOT_PRODUCT_TEXTURE_2D 0x00000009
-#define NV20TCL_TX_SHADER_OP_TX0_DOT_PRODUCT_DEPTH_REPLACE 0x0000000a
-#define NV20TCL_TX_SHADER_OP_TX0_DEPENDANT_AR_TEXTURE_2D 0x0000000f
-#define NV20TCL_TX_SHADER_OP_TX0_DEPENDANT_GB_TEXTURE_2D 0x00000010
-#define NV20TCL_TX_SHADER_OP_TX0_DOT_PRODUCT 0x00000011
-#define NV20TCL_TX_SHADER_OP_TX1_SHIFT 5
-#define NV20TCL_TX_SHADER_OP_TX1_MASK 0x000003e0
-#define NV20TCL_TX_SHADER_OP_TX1_NONE 0x00000000
-#define NV20TCL_TX_SHADER_OP_TX1_TEXTURE_2D 0x00000020
-#define NV20TCL_TX_SHADER_OP_TX1_PASS_THROUGH 0x00000080
-#define NV20TCL_TX_SHADER_OP_TX1_CULL_FRAGMENT 0x000000a0
-#define NV20TCL_TX_SHADER_OP_TX1_OFFSET_TEXTURE_2D 0x000000c0
-#define NV20TCL_TX_SHADER_OP_TX1_DOT_PRODUCT_TEXTURE_2D 0x00000120
-#define NV20TCL_TX_SHADER_OP_TX1_DOT_PRODUCT_DEPTH_REPLACE 0x00000140
-#define NV20TCL_TX_SHADER_OP_TX1_DEPENDANT_AR_TEXTURE_2D 0x000001e0
-#define NV20TCL_TX_SHADER_OP_TX1_DEPENDANT_GB_TEXTURE_2D 0x00000200
-#define NV20TCL_TX_SHADER_OP_TX1_DOT_PRODUCT 0x00000220
-#define NV20TCL_TX_SHADER_OP_TX2_SHIFT 10
-#define NV20TCL_TX_SHADER_OP_TX2_MASK 0x00007c00
-#define NV20TCL_TX_SHADER_OP_TX2_NONE 0x00000000
-#define NV20TCL_TX_SHADER_OP_TX2_TEXTURE_2D 0x00000400
-#define NV20TCL_TX_SHADER_OP_TX2_PASS_THROUGH 0x00001000
-#define NV20TCL_TX_SHADER_OP_TX2_CULL_FRAGMENT 0x00001400
-#define NV20TCL_TX_SHADER_OP_TX2_OFFSET_TEXTURE_2D 0x00001800
-#define NV20TCL_TX_SHADER_OP_TX2_DOT_PRODUCT_TEXTURE_2D 0x00002400
-#define NV20TCL_TX_SHADER_OP_TX2_DOT_PRODUCT_DEPTH_REPLACE 0x00002800
-#define NV20TCL_TX_SHADER_OP_TX2_DEPENDANT_AR_TEXTURE_2D 0x00003c00
-#define NV20TCL_TX_SHADER_OP_TX2_DEPENDANT_GB_TEXTURE_2D 0x00004000
-#define NV20TCL_TX_SHADER_OP_TX2_DOT_PRODUCT 0x00004400
-#define NV20TCL_TX_SHADER_OP_TX3_SHIFT 15
-#define NV20TCL_TX_SHADER_OP_TX3_MASK 0x000f8000
-#define NV20TCL_TX_SHADER_OP_TX3_NONE 0x00000000
-#define NV20TCL_TX_SHADER_OP_TX3_TEXTURE_2D 0x00008000
-#define NV20TCL_TX_SHADER_OP_TX3_PASS_THROUGH 0x00020000
-#define NV20TCL_TX_SHADER_OP_TX3_CULL_FRAGMENT 0x00028000
-#define NV20TCL_TX_SHADER_OP_TX3_OFFSET_TEXTURE_2D 0x00030000
-#define NV20TCL_TX_SHADER_OP_TX3_DOT_PRODUCT_TEXTURE_2D 0x00048000
-#define NV20TCL_TX_SHADER_OP_TX3_DOT_PRODUCT_DEPTH_REPLACE 0x00050000
-#define NV20TCL_TX_SHADER_OP_TX3_DEPENDANT_AR_TEXTURE_2D 0x00078000
-#define NV20TCL_TX_SHADER_OP_TX3_DEPENDANT_GB_TEXTURE_2D 0x00080000
-#define NV20TCL_TX_SHADER_OP_TX3_DOT_PRODUCT 0x00088000
-#define NV20TCL_TX_SHADER_DOTMAPPING 0x00001e74
-#define NV20TCL_TX_SHADER_DOTMAPPING_TX0_SHIFT 0
-#define NV20TCL_TX_SHADER_DOTMAPPING_TX0_MASK 0x0000000f
-#define NV20TCL_TX_SHADER_DOTMAPPING_TX1_SHIFT 4
-#define NV20TCL_TX_SHADER_DOTMAPPING_TX1_MASK 0x000000f0
-#define NV20TCL_TX_SHADER_DOTMAPPING_TX2_SHIFT 8
-#define NV20TCL_TX_SHADER_DOTMAPPING_TX2_MASK 0x00000f00
-#define NV20TCL_TX_SHADER_DOTMAPPING_TX3_SHIFT 12
-#define NV20TCL_TX_SHADER_DOTMAPPING_TX3_MASK 0x0000f000
-#define NV20TCL_TX_SHADER_PREVIOUS 0x00001e78
-#define NV20TCL_TX_SHADER_PREVIOUS_TX0_SHIFT 8
-#define NV20TCL_TX_SHADER_PREVIOUS_TX0_MASK 0x00000f00
-#define NV20TCL_TX_SHADER_PREVIOUS_TX1_SHIFT 12
-#define NV20TCL_TX_SHADER_PREVIOUS_TX1_MASK 0x0000f000
-#define NV20TCL_TX_SHADER_PREVIOUS_TX2_SHIFT 16
-#define NV20TCL_TX_SHADER_PREVIOUS_TX2_MASK 0x00030000
-#define NV20TCL_TX_SHADER_PREVIOUS_TX3_SHIFT 20
-#define NV20TCL_TX_SHADER_PREVIOUS_TX3_MASK 0x00300000
-#define NV20TCL_ENGINE 0x00001e94
-#define NV20TCL_ENGINE_VP (1 << 1)
-#define NV20TCL_ENGINE_FIXED (1 << 2)
-#define NV20TCL_VP_UPLOAD_FROM_ID 0x00001e9c
-#define NV20TCL_VP_START_FROM_ID 0x00001ea0
-#define NV20TCL_VP_UPLOAD_CONST_ID 0x00001ea4
-
-
-#define NV25TCL 0x00000597
-
-#define NV25TCL_DMA_IN_MEMORY4 0x0000019c
-#define NV25TCL_DMA_IN_MEMORY5 0x000001a0
-#define NV25TCL_DMA_IN_MEMORY8 0x000001ac
-#define NV25TCL_DMA_IN_MEMORY9 0x000001b0
-
-#endif /* NOUVEAU_REG_H */
-
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c
index 0ace139b88..53a121420d 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_context.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c
@@ -119,6 +119,7 @@ nouveau_context_init(struct gl_context *ctx, struct nouveau_screen *screen,
nouveau_state_init(ctx);
nouveau_bo_state_init(ctx);
+ nouveau_scratch_init(ctx);
_mesa_meta_init(ctx);
_swrast_CreateContext(ctx);
_vbo_CreateContext(ctx);
@@ -163,6 +164,7 @@ nouveau_context_deinit(struct gl_context *ctx)
if (nctx->hw.chan)
nouveau_channel_free(&nctx->hw.chan);
+ nouveau_scratch_destroy(ctx);
nouveau_bo_state_destroy(ctx);
_mesa_free_context_data(ctx);
}
@@ -312,7 +314,7 @@ nouveau_context_make_current(__DRIcontext *dri_ctx, __DRIdrawable *dri_draw,
GLboolean
nouveau_context_unbind(__DRIcontext *dri_ctx)
{
- /* Unset current context and dispath table */
+ /* Unset current context and dispatch table */
_mesa_make_current(NULL, NULL, NULL);
return GL_TRUE;
@@ -325,10 +327,12 @@ nouveau_fallback(struct gl_context *ctx, enum nouveau_fallback mode)
nctx->fallback = MAX2(HWTNL, mode);
- if (mode < SWRAST)
+ if (mode < SWRAST) {
nouveau_state_emit(ctx);
- else
+ nouveau_bo_state_emit(ctx);
+ } else {
FIRE_RING(context_chan(ctx));
+ }
}
static void
@@ -365,5 +369,6 @@ nouveau_validate_framebuffer(struct gl_context *ctx)
validate_framebuffer(dri_ctx, dri_read,
&dri_ctx->dri2.read_stamp);
- nouveau_state_emit(ctx);
+ if (ctx->NewState & _NEW_BUFFERS)
+ _mesa_update_state(ctx);
}
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.h b/src/mesa/drivers/dri/nouveau/nouveau_context.h
index 23a8725672..7ebc676379 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_context.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_context.h
@@ -30,6 +30,7 @@
#include "nouveau_screen.h"
#include "nouveau_state.h"
#include "nouveau_bo_state.h"
+#include "nouveau_scratch.h"
#include "nouveau_render.h"
#include "main/bitset.h"
@@ -67,6 +68,7 @@ struct nouveau_context {
struct nouveau_hw_state hw;
struct nouveau_bo_state bo;
struct nouveau_render_state render;
+ struct nouveau_scratch_state scratch;
struct {
GLboolean clear_blocked;
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_render.h b/src/mesa/drivers/dri/nouveau/nouveau_render.h
index 81c6119fcc..0539c37758 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_render.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_render.h
@@ -28,46 +28,22 @@
#define __NOUVEAU_RENDER_H__
#include "vbo/vbo_context.h"
-
-struct nouveau_array_state;
+#include "nouveau_array.h"
typedef void (*dispatch_t)(struct gl_context *, unsigned int, int, unsigned int);
-typedef unsigned (*extract_u_t)(struct nouveau_array_state *, int, int);
-typedef float (*extract_f_t)(struct nouveau_array_state *, int, int);
+typedef void (*emit_t)(struct gl_context *, struct nouveau_array *, const void *);
struct nouveau_attr_info {
int vbo_index;
int imm_method;
int imm_fields;
- void (*emit)(struct gl_context *, struct nouveau_array_state *, const void *);
-};
-
-struct nouveau_array_state {
- int attr;
- int stride, fields, type;
-
- struct nouveau_bo *bo;
- unsigned offset;
- const void *buf;
-
- extract_u_t extract_u;
- extract_f_t extract_f;
-};
-
-#define RENDER_SCRATCH_COUNT 2
-#define RENDER_SCRATCH_SIZE 2*1024*1024
-
-struct nouveau_scratch_state {
- struct nouveau_bo *bo[RENDER_SCRATCH_COUNT];
-
- int index;
- int offset;
- void *buf;
+ emit_t emit;
};
struct nouveau_swtnl_state {
struct nouveau_bo *vbo;
+ unsigned offset;
void *buf;
unsigned vertex_count;
GLenum primitive;
@@ -79,8 +55,8 @@ struct nouveau_render_state {
IMM
} mode;
- struct nouveau_array_state ib;
- struct nouveau_array_state attrs[VERT_ATTRIB_MAX];
+ struct nouveau_array ib;
+ struct nouveau_array attrs[VERT_ATTRIB_MAX];
/* Maps a HW VBO index or IMM emission order to an index in
* the attrs array above (or -1 if unused). */
@@ -89,10 +65,16 @@ struct nouveau_render_state {
int attr_count;
int vertex_size;
- struct nouveau_scratch_state scratch;
struct nouveau_swtnl_state swtnl;
};
#define to_render_state(ctx) (&to_nouveau_context(ctx)->render)
+#define FOR_EACH_ATTR(render, i, attr) \
+ for (i = 0; attr = (render)->map[i], i < NUM_VERTEX_ATTRS; i++)
+
+#define FOR_EACH_BOUND_ATTR(render, i, attr) \
+ for (i = 0; attr = (render)->map[i], i < render->attr_count; i++) \
+ if (attr >= 0)
+
#endif
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_render_t.c b/src/mesa/drivers/dri/nouveau/nouveau_render_t.c
index dd38c14aa7..e0cf727d11 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_render_t.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_render_t.c
@@ -100,8 +100,8 @@
/*
* Select an appropriate dispatch function for the given index buffer.
*/
-static void
-get_array_dispatch(struct nouveau_array_state *a, dispatch_t *dispatch)
+static dispatch_t
+get_array_dispatch(struct nouveau_array *a)
{
if (!a->fields) {
auto void f(struct gl_context *, unsigned int, int, unsigned int);
@@ -114,7 +114,7 @@ get_array_dispatch(struct nouveau_array_state *a, dispatch_t *dispatch)
EMIT_VBO(L, ctx, start, delta, n);
};
- *dispatch = f;
+ return f;
} else if (a->type == GL_UNSIGNED_INT) {
auto void f(struct gl_context *, unsigned int, int, unsigned int);
@@ -127,7 +127,7 @@ get_array_dispatch(struct nouveau_array_state *a, dispatch_t *dispatch)
EMIT_VBO(I32, ctx, start, delta, n);
};
- *dispatch = f;
+ return f;
} else {
auto void f(struct gl_context *, unsigned int, int, unsigned int);
@@ -141,115 +141,11 @@ get_array_dispatch(struct nouveau_array_state *a, dispatch_t *dispatch)
EMIT_VBO(I16, ctx, start, delta, n & ~1);
};
- *dispatch = f;
+ return f;
}
}
/*
- * Select appropriate element extraction functions for the given
- * array.
- */
-static void
-get_array_extract(struct nouveau_array_state *a,
- extract_u_t *extract_u, extract_f_t *extract_f)
-{
-#define EXTRACT(in_t, out_t, k) \
- ({ \
- auto out_t f(struct nouveau_array_state *, int, int); \
- out_t f(struct nouveau_array_state *a, int i, int j) { \
- in_t x = ((in_t *)(a->buf + i * a->stride))[j]; \
- \
- return (out_t)x / (k); \
- }; \
- f; \
- });
-
- switch (a->type) {
- case GL_BYTE:
- *extract_u = EXTRACT(char, unsigned, 1);
- *extract_f = EXTRACT(char, float, SCHAR_MAX);
- break;
- case GL_UNSIGNED_BYTE:
- *extract_u = EXTRACT(unsigned char, unsigned, 1);
- *extract_f = EXTRACT(unsigned char, float, UCHAR_MAX);
- break;
- case GL_SHORT:
- *extract_u = EXTRACT(short, unsigned, 1);
- *extract_f = EXTRACT(short, float, SHRT_MAX);
- break;
- case GL_UNSIGNED_SHORT:
- *extract_u = EXTRACT(unsigned short, unsigned, 1);
- *extract_f = EXTRACT(unsigned short, float, USHRT_MAX);
- break;
- case GL_INT:
- *extract_u = EXTRACT(int, unsigned, 1);
- *extract_f = EXTRACT(int, float, INT_MAX);
- break;
- case GL_UNSIGNED_INT:
- *extract_u = EXTRACT(unsigned int, unsigned, 1);
- *extract_f = EXTRACT(unsigned int, float, UINT_MAX);
- break;
- case GL_FLOAT:
- *extract_u = EXTRACT(float, unsigned, 1.0 / UINT_MAX);
- *extract_f = EXTRACT(float, float, 1);
- break;
-
- default:
- assert(0);
- }
-}
-
-/*
- * Returns a pointer to a chunk of <size> bytes long GART memory. <bo>
- * will be updated with the buffer object the memory is located in.
- *
- * If <offset> is provided, it will be updated with the offset within
- * <bo> of the allocated memory. Otherwise the returned memory will
- * always be located right at the beginning of <bo>.
- */
-static inline void *
-get_scratch_vbo(struct gl_context *ctx, unsigned size, struct nouveau_bo **bo,
- unsigned *offset)
-{
- struct nouveau_scratch_state *scratch = &to_render_state(ctx)->scratch;
- void *buf;
-
- if (scratch->buf && offset &&
- size <= RENDER_SCRATCH_SIZE - scratch->offset) {
- nouveau_bo_ref(scratch->bo[scratch->index], bo);
-
- buf = scratch->buf + scratch->offset;
- *offset = scratch->offset;
- scratch->offset += size;
-
- } else if (size <= RENDER_SCRATCH_SIZE) {
- scratch->index = (scratch->index + 1) % RENDER_SCRATCH_COUNT;
- nouveau_bo_ref(scratch->bo[scratch->index], bo);
-
- nouveau_bo_map(*bo, NOUVEAU_BO_WR);
- buf = scratch->buf = (*bo)->map;
- nouveau_bo_unmap(*bo);
-
- if (offset)
- *offset = 0;
- scratch->offset = size;
-
- } else {
- nouveau_bo_new(context_dev(ctx),
- NOUVEAU_BO_MAP | NOUVEAU_BO_GART, 0, size, bo);
-
- nouveau_bo_map(*bo, NOUVEAU_BO_WR);
- buf = (*bo)->map;
- nouveau_bo_unmap(*bo);
-
- if (offset)
- *offset = 0;
- }
-
- return buf;
-}
-
-/*
* Returns how many vertices you can draw using <n> pushbuf dwords.
*/
static inline unsigned
@@ -277,6 +173,11 @@ get_max_vertices(struct gl_context *ctx, const struct _mesa_index_buffer *ib,
case GL_UNSIGNED_BYTE:
max_out = MAX_OUT_I16;
break;
+
+ default:
+ assert(0);
+ max_out = 0;
+ break;
}
} else {
max_out = MAX_OUT_L;
@@ -286,76 +187,26 @@ get_max_vertices(struct gl_context *ctx, const struct _mesa_index_buffer *ib,
}
}
-#include "nouveau_vbo_t.c"
-#include "nouveau_swtnl_t.c"
-
static void
-TAG(emit_material)(struct gl_context *ctx, struct nouveau_array_state *a,
+TAG(emit_material)(struct gl_context *ctx, struct nouveau_array *a,
const void *v)
{
- const int attr = a->attr - VERT_ATTRIB_GENERIC0;
- const int state = ((int []) {
- NOUVEAU_STATE_MATERIAL_FRONT_AMBIENT,
- NOUVEAU_STATE_MATERIAL_BACK_AMBIENT,
- NOUVEAU_STATE_MATERIAL_FRONT_DIFFUSE,
- NOUVEAU_STATE_MATERIAL_BACK_DIFFUSE,
- NOUVEAU_STATE_MATERIAL_FRONT_SPECULAR,
- NOUVEAU_STATE_MATERIAL_BACK_SPECULAR,
- NOUVEAU_STATE_MATERIAL_FRONT_AMBIENT,
- NOUVEAU_STATE_MATERIAL_BACK_AMBIENT,
- NOUVEAU_STATE_MATERIAL_FRONT_SHININESS,
- NOUVEAU_STATE_MATERIAL_BACK_SHININESS
- }) [attr];
+ int attr = a->attr - VERT_ATTRIB_GENERIC0;
+ int state = ((int []) {
+ NOUVEAU_STATE_MATERIAL_FRONT_AMBIENT,
+ NOUVEAU_STATE_MATERIAL_BACK_AMBIENT,
+ NOUVEAU_STATE_MATERIAL_FRONT_DIFFUSE,
+ NOUVEAU_STATE_MATERIAL_BACK_DIFFUSE,
+ NOUVEAU_STATE_MATERIAL_FRONT_SPECULAR,
+ NOUVEAU_STATE_MATERIAL_BACK_SPECULAR,
+ NOUVEAU_STATE_MATERIAL_FRONT_AMBIENT,
+ NOUVEAU_STATE_MATERIAL_BACK_AMBIENT,
+ NOUVEAU_STATE_MATERIAL_FRONT_SHININESS,
+ NOUVEAU_STATE_MATERIAL_BACK_SHININESS
+ }) [attr];
COPY_4V(ctx->Light.Material.Attrib[attr], (float *)v);
_mesa_update_material(ctx, 1 << attr);
context_drv(ctx)->emit[state](ctx, state);
}
-
-static void
-TAG(render_prims)(struct gl_context *ctx, const struct gl_client_array **arrays,
- const struct _mesa_prim *prims, GLuint nr_prims,
- const struct _mesa_index_buffer *ib,
- GLboolean index_bounds_valid,
- GLuint min_index, GLuint max_index)
-{
- struct nouveau_context *nctx = to_nouveau_context(ctx);
-
- nouveau_validate_framebuffer(ctx);
-
- if (nctx->fallback == HWTNL)
- TAG(vbo_render_prims)(ctx, arrays, prims, nr_prims, ib,
- index_bounds_valid, min_index, max_index);
-
- if (nctx->fallback == SWTNL)
- _tnl_vbo_draw_prims(ctx, arrays, prims, nr_prims, ib,
- index_bounds_valid, min_index, max_index);
-}
-
-void
-TAG(render_init)(struct gl_context *ctx)
-{
- struct nouveau_render_state *render = to_render_state(ctx);
- struct nouveau_scratch_state *scratch = &render->scratch;
- int ret, i;
-
- for (i = 0; i < RENDER_SCRATCH_COUNT; i++) {
- ret = nouveau_bo_new(context_dev(ctx),
- NOUVEAU_BO_MAP | NOUVEAU_BO_GART,
- 0, RENDER_SCRATCH_SIZE, &scratch->bo[i]);
- assert(!ret);
- }
-
- for (i = 0; i < VERT_ATTRIB_MAX; i++)
- render->map[i] = -1;
-
- TAG(swtnl_init)(ctx);
- vbo_set_draw_func(ctx, TAG(render_prims));
-}
-
-void
-TAG(render_destroy)(struct gl_context *ctx)
-{
- TAG(swtnl_destroy)(ctx);
-}
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_scratch.c b/src/mesa/drivers/dri/nouveau/nouveau_scratch.c
new file mode 100644
index 0000000000..ddda67b2f1
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nouveau_scratch.c
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2009-2010 Francisco Jerez.
+ * 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 "nouveau_driver.h"
+#include "nouveau_context.h"
+
+/*
+ * Returns a pointer to a chunk of 'size' bytes long GART memory. 'bo'
+ * and 'offset' will point to the returned memory.
+ */
+void *
+nouveau_get_scratch(struct gl_context *ctx, unsigned size,
+ struct nouveau_bo **bo, unsigned *offset)
+{
+ struct nouveau_scratch_state *scratch =
+ &to_nouveau_context(ctx)->scratch;
+ void *buf;
+
+ if (scratch->buf && size <= NOUVEAU_SCRATCH_SIZE - scratch->offset) {
+ nouveau_bo_ref(scratch->bo[scratch->index], bo);
+
+ buf = scratch->buf + scratch->offset;
+ *offset = scratch->offset;
+ scratch->offset += size;
+
+ } else if (size <= NOUVEAU_SCRATCH_SIZE) {
+ scratch->index = (scratch->index + 1) % NOUVEAU_SCRATCH_COUNT;
+ nouveau_bo_ref(scratch->bo[scratch->index], bo);
+
+ nouveau_bo_map(*bo, NOUVEAU_BO_WR);
+ buf = scratch->buf = (*bo)->map;
+ nouveau_bo_unmap(*bo);
+
+ *offset = 0;
+ scratch->offset = size;
+
+ } else {
+ nouveau_bo_new(context_dev(ctx),
+ NOUVEAU_BO_MAP | NOUVEAU_BO_GART, 0, size, bo);
+
+ nouveau_bo_map(*bo, NOUVEAU_BO_WR);
+ buf = (*bo)->map;
+ nouveau_bo_unmap(*bo);
+
+ *offset = 0;
+ }
+
+ return buf;
+}
+
+void
+nouveau_scratch_init(struct gl_context *ctx)
+{
+ struct nouveau_scratch_state *scratch =
+ &to_nouveau_context(ctx)->scratch;
+ int ret, i;
+
+ for (i = 0; i < NOUVEAU_SCRATCH_COUNT; i++) {
+ ret = nouveau_bo_new(context_dev(ctx),
+ NOUVEAU_BO_MAP | NOUVEAU_BO_GART,
+ 0, NOUVEAU_SCRATCH_SIZE, &scratch->bo[i]);
+ assert(!ret);
+ }
+}
+
+void
+nouveau_scratch_destroy(struct gl_context *ctx)
+{
+ struct nouveau_scratch_state *scratch =
+ &to_nouveau_context(ctx)->scratch;
+ int i;
+
+ for (i = 0; i < NOUVEAU_SCRATCH_COUNT; i++)
+ nouveau_bo_ref(NULL, &scratch->bo[i]);
+}
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_scratch.h b/src/mesa/drivers/dri/nouveau/nouveau_scratch.h
new file mode 100644
index 0000000000..b60b33dd1a
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nouveau_scratch.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2009-2010 Francisco Jerez.
+ * 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.
+ *
+ */
+
+#ifndef __NOUVEAU_SCRATCH_H__
+#define __NOUVEAU_SCRATCH_H__
+
+#define NOUVEAU_SCRATCH_COUNT 2
+#define NOUVEAU_SCRATCH_SIZE 3*1024*1024
+
+struct nouveau_scratch_state {
+ struct nouveau_bo *bo[NOUVEAU_SCRATCH_COUNT];
+
+ int index;
+ int offset;
+ void *buf;
+};
+
+void *
+nouveau_get_scratch(struct gl_context *ctx, unsigned size,
+ struct nouveau_bo **bo, unsigned *offset);
+
+void
+nouveau_scratch_init(struct gl_context *ctx);
+
+void
+nouveau_scratch_destroy(struct gl_context *ctx);
+
+#endif
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_state.c b/src/mesa/drivers/dri/nouveau/nouveau_state.c
index 7b7ddd2f54..1579d29efc 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_state.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_state.c
@@ -113,6 +113,12 @@ nouveau_depth_range(struct gl_context *ctx, GLclampd nearval, GLclampd farval)
}
static void
+nouveau_read_buffer(struct gl_context *ctx, GLenum buffer)
+{
+ nouveau_validate_framebuffer(ctx);
+}
+
+static void
nouveau_draw_buffers(struct gl_context *ctx, GLsizei n, const GLenum *buffers)
{
nouveau_validate_framebuffer(ctx);
@@ -512,6 +518,7 @@ nouveau_state_init(struct gl_context *ctx)
ctx->Driver.DepthFunc = nouveau_depth_func;
ctx->Driver.DepthMask = nouveau_depth_mask;
ctx->Driver.DepthRange = nouveau_depth_range;
+ ctx->Driver.ReadBuffer = nouveau_read_buffer;
ctx->Driver.DrawBuffers = nouveau_draw_buffers;
ctx->Driver.Enable = nouveau_enable;
ctx->Driver.Fogfv = nouveau_fog;
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c b/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c
index b3588e8fd3..f084f89d29 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c
@@ -28,6 +28,8 @@
#include "tnl/t_pipeline.h"
#include "tnl/t_vertex.h"
+#define SWTNL_VBO_SIZE 65536
+
static enum tnl_attr_format
swtnl_get_format(int type, int fields) {
switch (type) {
@@ -105,7 +107,7 @@ swtnl_choose_attrs(struct gl_context *ctx)
TNLcontext *tnl = TNL_CONTEXT(ctx);
struct tnl_clipspace *vtx = &tnl->clipspace;
static struct tnl_attr_map map[NUM_VERTEX_ATTRS];
- int fields, i, n = 0;
+ int fields, attr, i, n = 0;
render->mode = VBO;
render->attr_count = NUM_VERTEX_ATTRS;
@@ -116,7 +118,7 @@ swtnl_choose_attrs(struct gl_context *ctx)
for (i = 0; i < VERT_ATTRIB_MAX; i++) {
struct nouveau_attr_info *ha = &TAG(vertex_attrs)[i];
struct swtnl_attr_info *sa = &swtnl_attrs[i];
- struct nouveau_array_state *a = &render->attrs[i];
+ struct nouveau_array *a = &render->attrs[i];
if (!sa->fields)
continue; /* Unsupported attribute. */
@@ -141,13 +143,8 @@ swtnl_choose_attrs(struct gl_context *ctx)
_tnl_install_attrs(ctx, map, n, NULL, 0);
- for (i = 0; i < vtx->attr_count; i++) {
- struct tnl_clipspace_attr *ta = &vtx->attr[i];
- struct nouveau_array_state *a = &render->attrs[ta->attrib];
-
- a->stride = vtx->vertex_size;
- a->offset = ta->vertoffset;
- }
+ FOR_EACH_BOUND_ATTR(render, i, attr)
+ render->attrs[attr].stride = vtx->vertex_size;
TAG(render_set_format)(ctx);
}
@@ -158,8 +155,8 @@ swtnl_alloc_vertices(struct gl_context *ctx)
struct nouveau_swtnl_state *swtnl = &to_render_state(ctx)->swtnl;
nouveau_bo_ref(NULL, &swtnl->vbo);
- swtnl->buf = get_scratch_vbo(ctx, RENDER_SCRATCH_SIZE,
- &swtnl->vbo, NULL);
+ swtnl->buf = nouveau_get_scratch(ctx, SWTNL_VBO_SIZE, &swtnl->vbo,
+ &swtnl->offset);
swtnl->vertex_count = 0;
}
@@ -168,14 +165,15 @@ swtnl_bind_vertices(struct gl_context *ctx)
{
struct nouveau_render_state *render = to_render_state(ctx);
struct nouveau_swtnl_state *swtnl = &render->swtnl;
+ struct tnl_clipspace *vtx = &TNL_CONTEXT(ctx)->clipspace;
int i;
- for (i = 0; i < render->attr_count; i++) {
- int attr = render->map[i];
+ for (i = 0; i < vtx->attr_count; i++) {
+ struct tnl_clipspace_attr *ta = &vtx->attr[i];
+ struct nouveau_array *a = &render->attrs[ta->attrib];
- if (attr >= 0)
- nouveau_bo_ref(swtnl->vbo,
- &render->attrs[attr].bo);
+ nouveau_bo_ref(swtnl->vbo, &a->bo);
+ a->offset = swtnl->offset + ta->vertoffset;
}
TAG(render_bind_vertices)(ctx);
@@ -185,15 +183,11 @@ static void
swtnl_unbind_vertices(struct gl_context *ctx)
{
struct nouveau_render_state *render = to_render_state(ctx);
- int i;
-
- for (i = 0; i < render->attr_count; i++) {
- int *attr = &render->map[i];
+ int i, attr;
- if (*attr >= 0) {
- nouveau_bo_ref(NULL, &render->attrs[*attr].bo);
- *attr = -1;
- }
+ FOR_EACH_BOUND_ATTR(render, i, attr) {
+ nouveau_bo_ref(NULL, &render->attrs[attr].bo);
+ render->map[i] = -1;
}
render->attr_count = 0;
@@ -260,7 +254,7 @@ swtnl_reset_stipple(struct gl_context *ctx)
struct nouveau_swtnl_state *swtnl = &to_render_state(ctx)->swtnl; \
int vertex_len = TNL_CONTEXT(ctx)->clipspace.vertex_size; \
\
- if (swtnl->vertex_count + (n) > swtnl->vbo->size/vertex_len \
+ if (swtnl->vertex_count + (n) > SWTNL_VBO_SIZE/vertex_len \
|| (swtnl->vertex_count && swtnl->primitive != p)) \
swtnl_flush_vertices(ctx); \
\
@@ -280,7 +274,7 @@ swtnl_points(struct gl_context *ctx, GLuint first, GLuint last)
while (first < last) {
BEGIN_PRIMITIVE(GL_POINTS, last - first);
- count = MIN2(swtnl->vbo->size / vertex_len, last - first);
+ count = MIN2(SWTNL_VBO_SIZE / vertex_len, last - first);
for (i = 0; i < count; i++)
OUT_VERTEX(first + i);
@@ -316,7 +310,7 @@ swtnl_quad(struct gl_context *ctx, GLuint v1, GLuint v2, GLuint v3, GLuint v4)
}
/* TnL initialization. */
-static void
+void
TAG(swtnl_init)(struct gl_context *ctx)
{
TNLcontext *tnl = TNL_CONTEXT(ctx);
@@ -347,7 +341,7 @@ TAG(swtnl_init)(struct gl_context *ctx)
swtnl_alloc_vertices(ctx);
}
-static void
+void
TAG(swtnl_destroy)(struct gl_context *ctx)
{
nouveau_bo_ref(NULL, &to_render_state(ctx)->swtnl.vbo);
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
index cd063702af..2480b1ea50 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
@@ -79,26 +79,65 @@ nouveau_teximage_free(struct gl_context *ctx, struct gl_texture_image *ti)
}
static void
-nouveau_teximage_map(struct gl_context *ctx, struct gl_texture_image *ti)
+nouveau_teximage_map(struct gl_context *ctx, struct gl_texture_image *ti,
+ int access, int x, int y, int w, int h)
{
- struct nouveau_surface *s = &to_nouveau_teximage(ti)->surface;
- int ret;
+ struct nouveau_teximage *nti = to_nouveau_teximage(ti);
+ struct nouveau_surface *s = &nti->surface;
+ struct nouveau_surface *st = &nti->transfer.surface;
if (s->bo) {
- ret = nouveau_bo_map(s->bo, NOUVEAU_BO_RDWR);
- assert(!ret);
-
- ti->Data = s->bo->map;
+ if (!(access & GL_MAP_READ_BIT) &&
+ nouveau_bo_pending(s->bo)) {
+ /*
+ * Heuristic: use a bounce buffer to pipeline
+ * teximage transfers.
+ */
+ st->layout = LINEAR;
+ st->format = s->format;
+ st->cpp = s->cpp;
+ st->width = w;
+ st->height = h;
+ st->pitch = s->pitch;
+ nti->transfer.x = x;
+ nti->transfer.y = y;
+
+ ti->Data = nouveau_get_scratch(ctx, st->pitch * h,
+ &st->bo, &st->offset);
+
+ } else {
+ int ret, flags = 0;
+
+ if (access & GL_MAP_READ_BIT)
+ flags |= NOUVEAU_BO_RD;
+ if (access & GL_MAP_WRITE_BIT)
+ flags |= NOUVEAU_BO_WR;
+
+ ret = nouveau_bo_map(s->bo, flags);
+ assert(!ret);
+
+ ti->Data = s->bo->map + y * s->pitch + x * s->cpp;
+ }
}
}
static void
nouveau_teximage_unmap(struct gl_context *ctx, struct gl_texture_image *ti)
{
- struct nouveau_surface *s = &to_nouveau_teximage(ti)->surface;
+ struct nouveau_teximage *nti = to_nouveau_teximage(ti);
+ struct nouveau_surface *s = &nti->surface;
+ struct nouveau_surface *st = &nti->transfer.surface;
- if (s->bo)
+ if (st->bo) {
+ context_drv(ctx)->surface_copy(ctx, s, st, nti->transfer.x,
+ nti->transfer.y, 0, 0,
+ st->width, st->height);
+ nouveau_surface_ref(NULL, st);
+
+ } else if (s->bo) {
nouveau_bo_unmap(s->bo);
+ }
+
ti->Data = NULL;
}
@@ -115,6 +154,7 @@ nouveau_choose_tex_format(struct gl_context *ctx, GLint internalFormat,
case GL_RGBA12:
case GL_RGBA16:
case GL_RGB10_A2:
+ case GL_COMPRESSED_RGBA:
return MESA_FORMAT_ARGB8888;
case GL_RGB5_A1:
return MESA_FORMAT_ARGB1555;
@@ -124,6 +164,7 @@ nouveau_choose_tex_format(struct gl_context *ctx, GLint internalFormat,
case GL_RGB10:
case GL_RGB12:
case GL_RGB16:
+ case GL_COMPRESSED_RGB:
return MESA_FORMAT_XRGB8888;
case 3:
case GL_R3_G3_B2:
@@ -139,6 +180,7 @@ nouveau_choose_tex_format(struct gl_context *ctx, GLint internalFormat,
case GL_LUMINANCE12_ALPHA12:
case GL_LUMINANCE16_ALPHA16:
case GL_LUMINANCE8_ALPHA8:
+ case GL_COMPRESSED_LUMINANCE_ALPHA:
return MESA_FORMAT_ARGB8888;
case 1:
@@ -147,6 +189,7 @@ nouveau_choose_tex_format(struct gl_context *ctx, GLint internalFormat,
case GL_LUMINANCE12:
case GL_LUMINANCE16:
case GL_LUMINANCE8:
+ case GL_COMPRESSED_LUMINANCE:
return MESA_FORMAT_L8;
case GL_ALPHA:
@@ -154,6 +197,7 @@ nouveau_choose_tex_format(struct gl_context *ctx, GLint internalFormat,
case GL_ALPHA12:
case GL_ALPHA16:
case GL_ALPHA8:
+ case GL_COMPRESSED_ALPHA:
return MESA_FORMAT_A8;
case GL_INTENSITY:
@@ -356,7 +400,8 @@ nouveau_teximage(struct gl_context *ctx, GLint dims, GLenum target, GLint level,
"glTexImage");
if (pixels) {
/* Store the pixel data. */
- nouveau_teximage_map(ctx, ti);
+ nouveau_teximage_map(ctx, ti, GL_MAP_WRITE_BIT,
+ 0, 0, width, height);
ret = _mesa_texstore(ctx, dims, ti->_BaseFormat,
ti->TexFormat, ti->Data,
@@ -443,13 +488,13 @@ nouveau_texsubimage(struct gl_context *ctx, GLint dims, GLenum target, GLint lev
format, type, pixels, packing,
"glTexSubImage");
if (pixels) {
- nouveau_teximage_map(ctx, ti);
+ nouveau_teximage_map(ctx, ti, GL_MAP_WRITE_BIT,
+ xoffset, yoffset, width, height);
ret = _mesa_texstore(ctx, 3, ti->_BaseFormat, ti->TexFormat,
- ti->Data, xoffset, yoffset, zoffset,
- s->pitch, ti->ImageOffsets,
- width, height, depth, format, type,
- pixels, packing);
+ ti->Data, 0, 0, 0, s->pitch,
+ ti->ImageOffsets, width, height, depth,
+ format, type, pixels, packing);
assert(ret);
nouveau_teximage_unmap(ctx, ti);
@@ -508,7 +553,8 @@ nouveau_get_teximage(struct gl_context *ctx, GLenum target, GLint level,
struct gl_texture_object *t,
struct gl_texture_image *ti)
{
- nouveau_teximage_map(ctx, ti);
+ nouveau_teximage_map(ctx, ti, GL_MAP_READ_BIT,
+ 0, 0, ti->Width, ti->Height);
_mesa_get_teximage(ctx, target, level, format, type, pixels,
t, ti);
nouveau_teximage_unmap(ctx, ti);
@@ -557,11 +603,12 @@ nouveau_set_texbuffer(__DRIcontext *dri_ctx,
nouveau_update_renderbuffers(dri_ctx, draw);
nouveau_surface_ref(&to_nouveau_renderbuffer(rb)->surface, s);
+ s->format = get_texbuffer_format(rb, format);
+
/* Update the image fields. */
_mesa_init_teximage_fields(ctx, target, ti, s->width, s->height,
- 1, 0, s->cpp);
+ 1, 0, s->cpp, s->format);
ti->RowStride = s->pitch / s->cpp;
- ti->TexFormat = s->format = get_texbuffer_format(rb, format);
/* Try to validate it. */
if (!validate_teximage(ctx, t, 0, 0, 0, 0, s->width, s->height, 1))
@@ -579,8 +626,11 @@ nouveau_texture_map(struct gl_context *ctx, struct gl_texture_object *t)
int i;
for (i = t->BaseLevel; i < t->_MaxLevel; i++) {
- if (t->Image[0][i])
- nouveau_teximage_map(ctx, t->Image[0][i]);
+ struct gl_texture_image *ti = t->Image[0][i];
+
+ if (ti)
+ nouveau_teximage_map(ctx, ti, GL_MAP_READ_BIT,
+ 0, 0, ti->Width, ti->Height);
}
}
@@ -630,7 +680,8 @@ nouveau_generate_mipmap(struct gl_context *ctx, GLenum target,
if (_mesa_meta_check_generate_mipmap_fallback(ctx, target, t)) {
struct gl_texture_image *base = t->Image[0][t->BaseLevel];
- nouveau_teximage_map(ctx, base);
+ nouveau_teximage_map(ctx, base, GL_MAP_READ_BIT,
+ 0, 0, base->Width, base->Height);
_mesa_generate_mipmap(ctx, target, t);
nouveau_teximage_unmap(ctx, base);
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.h b/src/mesa/drivers/dri/nouveau/nouveau_texture.h
index fc170215f3..56e61c7337 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_texture.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.h
@@ -30,6 +30,10 @@
struct nouveau_teximage {
struct gl_texture_image base;
struct nouveau_surface surface;
+ struct {
+ struct nouveau_surface surface;
+ int x, y;
+ } transfer;
};
#define to_nouveau_teximage(x) ((struct nouveau_teximage *)(x))
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_util.h b/src/mesa/drivers/dri/nouveau/nouveau_util.h
index 8df8867d14..6d01934dad 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_util.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_util.h
@@ -164,6 +164,12 @@ get_viewport_translate(struct gl_context *ctx, float a[4])
}
static inline void
+OUT_RINGb(struct nouveau_channel *chan, GLboolean x)
+{
+ OUT_RING(chan, x ? 1 : 0);
+}
+
+static inline void
OUT_RINGm(struct nouveau_channel *chan, float m[16])
{
int i, j;
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c
index 394f3c9b50..d8b331cca7 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c
@@ -31,59 +31,11 @@
#include "main/image.h"
/* Arbitrary pushbuf length we can assume we can get with a single
- * WAIT_RING. */
+ * call to WAIT_RING. */
#define PUSHBUF_DWORDS 65536
-/* Functions to set up struct nouveau_array_state from something like
- * a GL array or index buffer. */
-
-static void
-vbo_init_array(struct nouveau_array_state *a, int attr, int stride,
- int fields, int type, struct gl_buffer_object *obj,
- const void *ptr, GLboolean map)
-{
- a->attr = attr;
- a->stride = stride;
- a->fields = fields;
- a->type = type;
-
- if (_mesa_is_bufferobj(obj)) {
- nouveau_bo_ref(to_nouveau_bufferobj(obj)->bo, &a->bo);
- a->offset = (intptr_t)ptr;
-
- if (map) {
- nouveau_bo_map(a->bo, NOUVEAU_BO_RD);
- a->buf = a->bo->map + a->offset;
- } else {
- a->buf = NULL;
- }
-
- } else {
- nouveau_bo_ref(NULL, &a->bo);
- a->offset = 0;
-
- if (map)
- a->buf = ptr;
- else
- a->buf = NULL;
- }
-
- if (a->buf)
- get_array_extract(a, &a->extract_u, &a->extract_f);
-}
-
-static void
-vbo_deinit_array(struct nouveau_array_state *a)
-{
- if (a->bo) {
- if (a->bo->map)
- nouveau_bo_unmap(a->bo);
- nouveau_bo_ref(NULL, &a->bo);
- }
-
- a->buf = NULL;
- a->fields = 0;
-}
+/* Functions to turn GL arrays or index buffers into nouveau_array
+ * structures. */
static int
get_array_stride(struct gl_context *ctx, const struct gl_client_array *a)
@@ -102,48 +54,45 @@ vbo_init_arrays(struct gl_context *ctx, const struct _mesa_index_buffer *ib,
const struct gl_client_array **arrays)
{
struct nouveau_render_state *render = to_render_state(ctx);
- int i;
+ GLboolean imm = (render->mode == IMM);
+ int i, attr;
if (ib)
- vbo_init_array(&render->ib, 0, 0, ib->count, ib->type,
- ib->obj, ib->ptr, GL_TRUE);
+ nouveau_init_array(&render->ib, 0, 0, ib->count, ib->type,
+ ib->obj, ib->ptr, GL_TRUE);
- for (i = 0; i < render->attr_count; i++) {
- int attr = render->map[i];
+ FOR_EACH_BOUND_ATTR(render, i, attr) {
+ const struct gl_client_array *array = arrays[attr];
- if (attr >= 0) {
- const struct gl_client_array *array = arrays[attr];
-
- vbo_init_array(&render->attrs[attr], attr,
- get_array_stride(ctx, array),
- array->Size, array->Type,
- array->BufferObj, array->Ptr,
- render->mode == IMM);
- }
+ nouveau_init_array(&render->attrs[attr], attr,
+ get_array_stride(ctx, array),
+ array->Size, array->Type,
+ imm ? array->BufferObj : NULL,
+ array->Ptr, imm);
}
}
static void
vbo_deinit_arrays(struct gl_context *ctx, const struct _mesa_index_buffer *ib,
- const struct gl_client_array **arrays)
+ const struct gl_client_array **arrays)
{
struct nouveau_render_state *render = to_render_state(ctx);
- int i;
+ int i, attr;
if (ib)
- vbo_deinit_array(&render->ib);
+ nouveau_cleanup_array(&render->ib);
- for (i = 0; i < render->attr_count; i++) {
- int *attr = &render->map[i];
+ FOR_EACH_BOUND_ATTR(render, i, attr) {
+ struct nouveau_array *a = &render->attrs[attr];
- if (*attr >= 0) {
- vbo_deinit_array(&render->attrs[*attr]);
- *attr = -1;
- }
+ if (render->mode == IMM)
+ nouveau_bo_ref(NULL, &a->bo);
+
+ nouveau_deinit_array(a);
+ render->map[i] = -1;
}
render->attr_count = 0;
- context_bctx(ctx, VERTEX);
}
/* Make some rendering decisions from the GL context. */
@@ -164,20 +113,16 @@ vbo_choose_render_mode(struct gl_context *ctx, const struct gl_client_array **ar
}
}
}
-
- if (render->mode == VBO)
- render->attr_count = NUM_VERTEX_ATTRS;
- else
- render->attr_count = 0;
}
static void
-vbo_emit_attr(struct gl_context *ctx, const struct gl_client_array **arrays, int attr)
+vbo_emit_attr(struct gl_context *ctx, const struct gl_client_array **arrays,
+ int attr)
{
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_render_state *render = to_render_state(ctx);
const struct gl_client_array *array = arrays[attr];
- struct nouveau_array_state *a = &render->attrs[attr];
+ struct nouveau_array *a = &render->attrs[attr];
RENDER_LOCALS(ctx);
if (!array->StrideB) {
@@ -186,11 +131,11 @@ vbo_emit_attr(struct gl_context *ctx, const struct gl_client_array **arrays, int
return;
/* Constant attribute. */
- vbo_init_array(a, attr, array->StrideB, array->Size,
- array->Type, array->BufferObj, array->Ptr,
- GL_TRUE);
+ nouveau_init_array(a, attr, array->StrideB, array->Size,
+ array->Type, array->BufferObj, array->Ptr,
+ GL_TRUE);
EMIT_IMM(ctx, a, 0);
- vbo_deinit_array(a);
+ nouveau_deinit_array(a);
} else {
/* Varying attribute. */
@@ -199,6 +144,8 @@ vbo_emit_attr(struct gl_context *ctx, const struct gl_client_array **arrays, int
if (render->mode == VBO) {
render->map[info->vbo_index] = attr;
render->vertex_size += array->_ElementSize;
+ render->attr_count = MAX2(render->attr_count,
+ info->vbo_index + 1);
} else {
render->map[render->attr_count++] = attr;
render->vertex_size += 4 * info->imm_fields;
@@ -216,6 +163,7 @@ vbo_choose_attrs(struct gl_context *ctx, const struct gl_client_array **arrays)
/* Reset the vertex size. */
render->vertex_size = 0;
+ render->attr_count = 0;
vbo_emit_attr(ctx, arrays, VERT_ATTRIB_COLOR0);
if (ctx->Fog.ColorSumEnabled && !ctx->Light.Enabled)
@@ -233,7 +181,7 @@ vbo_choose_attrs(struct gl_context *ctx, const struct gl_client_array **arrays)
(ctx->Texture._GenFlags & TEXGEN_NEED_NORMALS))
vbo_emit_attr(ctx, arrays, VERT_ATTRIB_NORMAL);
- if (ctx->Light.Enabled) {
+ if (ctx->Light.Enabled && render->mode == IMM) {
vbo_emit_attr(ctx, arrays, MAT(FRONT_AMBIENT));
vbo_emit_attr(ctx, arrays, MAT(FRONT_DIFFUSE));
vbo_emit_attr(ctx, arrays, MAT(FRONT_SPECULAR));
@@ -254,17 +202,13 @@ static int
get_max_client_stride(struct gl_context *ctx, const struct gl_client_array **arrays)
{
struct nouveau_render_state *render = to_render_state(ctx);
- int i, s = 0;
-
- for (i = 0; i < render->attr_count; i++) {
- int attr = render->map[i];
+ int i, attr, s = 0;
- if (attr >= 0) {
- const struct gl_client_array *a = arrays[attr];
+ FOR_EACH_BOUND_ATTR(render, i, attr) {
+ const struct gl_client_array *a = arrays[attr];
- if (!_mesa_is_bufferobj(a->BufferObj))
- s = MAX2(s, get_array_stride(ctx, a));
- }
+ if (!_mesa_is_bufferobj(a->BufferObj))
+ s = MAX2(s, get_array_stride(ctx, a));
}
return s;
@@ -295,7 +239,7 @@ vbo_maybe_split(struct gl_context *ctx, const struct gl_client_array **arrays,
if (render->mode == VBO &&
(stride = get_max_client_stride(ctx, arrays)))
vert_avail = MIN2(vert_avail,
- RENDER_SCRATCH_SIZE / stride);
+ NOUVEAU_SCRATCH_SIZE / stride);
if (max_index - min_index > vert_avail ||
(ib && ib->count > idx_avail)) {
@@ -315,42 +259,93 @@ vbo_maybe_split(struct gl_context *ctx, const struct gl_client_array **arrays,
/* VBO rendering path. */
+static GLboolean
+check_update_array(struct nouveau_array *a, unsigned offset,
+ struct nouveau_bo *bo, int *pdelta)
+{
+ int delta = *pdelta;
+ GLboolean dirty;
+
+ if (a->bo == bo) {
+ if (delta < 0)
+ delta = ((int)offset - (int)a->offset) / a->stride;
+
+ dirty = (delta < 0 ||
+ offset != (a->offset + delta * a->stride));
+ } else {
+ dirty = GL_TRUE;
+ }
+
+ *pdelta = (dirty ? 0 : delta);
+ return dirty;
+}
+
static void
vbo_bind_vertices(struct gl_context *ctx, const struct gl_client_array **arrays,
- GLint basevertex, GLuint min_index, GLuint max_index)
+ int base, unsigned min_index, unsigned max_index, int *pdelta)
{
struct nouveau_render_state *render = to_render_state(ctx);
- int i;
+ struct nouveau_channel *chan = context_chan(ctx);
+ struct nouveau_bo *bo[NUM_VERTEX_ATTRS];
+ unsigned offset[NUM_VERTEX_ATTRS];
+ GLboolean dirty = GL_FALSE;
+ int i, j, attr;
+ RENDER_LOCALS(ctx);
- for (i = 0; i < NUM_VERTEX_ATTRS; i++) {
- int attr = render->map[i];
-
- if (attr >= 0) {
- const struct gl_client_array *array = arrays[attr];
- struct nouveau_array_state *a = &render->attrs[attr];
- unsigned delta = (basevertex + min_index)
- * array->StrideB;
-
- if (a->bo) {
- /* Array in a buffer obj. */
- a->offset = (intptr_t)array->Ptr + delta;
- } else {
- int j, n = max_index - min_index + 1;
- char *sp = (char *)array->Ptr + delta;
- char *dp = get_scratch_vbo(ctx, n * a->stride,
- &a->bo, &a->offset);
-
- /* Array in client memory, move it to
- * a scratch buffer obj. */
- for (j = 0; j < n; j++)
- memcpy(dp + j * a->stride,
- sp + j * array->StrideB,
- a->stride);
- }
+ *pdelta = -1;
+
+ FOR_EACH_BOUND_ATTR(render, i, attr) {
+ const struct gl_client_array *array = arrays[attr];
+ struct gl_buffer_object *obj = array->BufferObj;
+ struct nouveau_array *a = &render->attrs[attr];
+ unsigned delta = (base + min_index) * array->StrideB;
+
+ bo[i] = NULL;
+
+ if (nouveau_bufferobj_hw(obj)) {
+ /* Array in a buffer obj. */
+ nouveau_bo_ref(to_nouveau_bufferobj(obj)->bo, &bo[i]);
+ offset[i] = delta + (intptr_t)array->Ptr;
+
+ } else {
+ int n = max_index - min_index + 1;
+ char *sp = (char *)ADD_POINTERS(
+ nouveau_bufferobj_sys(obj), array->Ptr) + delta;
+ char *dp = nouveau_get_scratch(ctx, n * a->stride,
+ &bo[i], &offset[i]);
+
+ /* Array in client memory, move it to a
+ * scratch buffer obj. */
+ for (j = 0; j < n; j++)
+ memcpy(dp + j * a->stride,
+ sp + j * array->StrideB,
+ a->stride);
+ }
+
+ dirty |= check_update_array(a, offset[i], bo[i], pdelta);
+ }
+
+ *pdelta -= min_index;
+
+ if (dirty) {
+ /* Buffers changed, update the attribute binding. */
+ FOR_EACH_BOUND_ATTR(render, i, attr) {
+ struct nouveau_array *a = &render->attrs[attr];
+
+ nouveau_bo_ref(NULL, &a->bo);
+ a->offset = offset[i];
+ a->bo = bo[i];
}
+
+ TAG(render_bind_vertices)(ctx);
+
+ } else {
+ /* Just cleanup. */
+ FOR_EACH_BOUND_ATTR(render, i, attr)
+ nouveau_bo_ref(NULL, &bo[i]);
}
- TAG(render_bind_vertices)(ctx);
+ BATCH_VALIDATE();
}
static void
@@ -360,12 +355,10 @@ vbo_draw_vbo(struct gl_context *ctx, const struct gl_client_array **arrays,
GLuint max_index)
{
struct nouveau_channel *chan = context_chan(ctx);
- dispatch_t dispatch;
- int delta = -min_index, basevertex = 0, i;
+ dispatch_t dispatch = get_array_dispatch(&to_render_state(ctx)->ib);
+ int i, delta = 0, basevertex = 0;
RENDER_LOCALS(ctx);
- get_array_dispatch(&to_render_state(ctx)->ib, &dispatch);
-
TAG(render_set_format)(ctx);
for (i = 0; i < nr_prims; i++) {
@@ -374,8 +367,8 @@ vbo_draw_vbo(struct gl_context *ctx, const struct gl_client_array **arrays,
if (i == 0 || basevertex != prims[i].basevertex) {
basevertex = prims[i].basevertex;
- vbo_bind_vertices(ctx, arrays, basevertex,
- min_index, max_index);
+ vbo_bind_vertices(ctx, arrays, basevertex, min_index,
+ max_index, &delta);
}
if (count > get_max_vertices(ctx, ib, AVAIL_RING(chan)))
@@ -390,7 +383,7 @@ vbo_draw_vbo(struct gl_context *ctx, const struct gl_client_array **arrays,
/* Immediate rendering path. */
static unsigned
-extract_id(struct nouveau_array_state *a, int i, int j)
+extract_id(struct nouveau_array *a, int i, int j)
{
return j;
}
@@ -404,7 +397,7 @@ vbo_draw_imm(struct gl_context *ctx, const struct gl_client_array **arrays,
struct nouveau_render_state *render = to_render_state(ctx);
struct nouveau_channel *chan = context_chan(ctx);
extract_u_t extract = ib ? render->ib.extract_u : extract_id;
- int i, j, k;
+ int i, j, k, attr;
RENDER_LOCALS(ctx);
for (i = 0; i < nr_prims; i++) {
@@ -421,9 +414,8 @@ vbo_draw_imm(struct gl_context *ctx, const struct gl_client_array **arrays,
j = prims[i].basevertex +
extract(&render->ib, 0, start);
- for (k = 0; k < render->attr_count; k++)
- EMIT_IMM(ctx, &render->attrs[render->map[k]],
- j);
+ FOR_EACH_BOUND_ATTR(render, k, attr)
+ EMIT_IMM(ctx, &render->attrs[attr], j);
}
BATCH_END();
@@ -433,7 +425,8 @@ vbo_draw_imm(struct gl_context *ctx, const struct gl_client_array **arrays,
/* draw_prims entry point when we're doing hw-tnl. */
static void
-TAG(vbo_render_prims)(struct gl_context *ctx, const struct gl_client_array **arrays,
+TAG(vbo_render_prims)(struct gl_context *ctx,
+ const struct gl_client_array **arrays,
const struct _mesa_prim *prims, GLuint nr_prims,
const struct _mesa_index_buffer *ib,
GLboolean index_bounds_valid,
@@ -462,3 +455,44 @@ TAG(vbo_render_prims)(struct gl_context *ctx, const struct gl_client_array **arr
vbo_deinit_arrays(ctx, ib, arrays);
}
+
+/* VBO rendering entry points. */
+
+static void
+TAG(vbo_check_render_prims)(struct gl_context *ctx,
+ const struct gl_client_array **arrays,
+ const struct _mesa_prim *prims, GLuint nr_prims,
+ const struct _mesa_index_buffer *ib,
+ GLboolean index_bounds_valid,
+ GLuint min_index, GLuint max_index)
+{
+ struct nouveau_context *nctx = to_nouveau_context(ctx);
+
+ nouveau_validate_framebuffer(ctx);
+
+ if (nctx->fallback == HWTNL)
+ TAG(vbo_render_prims)(ctx, arrays, prims, nr_prims, ib,
+ index_bounds_valid, min_index, max_index);
+
+ if (nctx->fallback == SWTNL)
+ _tnl_vbo_draw_prims(ctx, arrays, prims, nr_prims, ib,
+ index_bounds_valid, min_index, max_index);
+}
+
+void
+TAG(vbo_init)(struct gl_context *ctx)
+{
+ struct nouveau_render_state *render = to_render_state(ctx);
+ int i;
+
+ for (i = 0; i < VERT_ATTRIB_MAX; i++)
+ render->map[i] = -1;
+
+ vbo_set_draw_func(ctx, TAG(vbo_check_render_prims));
+ vbo_use_buffer_objects(ctx);
+}
+
+void
+TAG(vbo_destroy)(struct gl_context *ctx)
+{
+}
diff --git a/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h b/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h
new file mode 100644
index 0000000000..3390da089b
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h
@@ -0,0 +1,1343 @@
+#ifndef NV01_2D_XML
+#define NV01_2D_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv01_2d.xml ( 33509 bytes, from 2010-11-13 23:32:57)
+- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58)
+- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46)
+- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57)
+- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+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.
+*/
+
+
+
+#define NV01_CONTEXT_BETA1_DMA_NOTIFY 0x00000180
+
+#define NV01_CONTEXT_BETA1_BETA_1D31 0x00000300
+
+
+#define NV04_BETA_SOLID_DMA_NOTIFY 0x00000180
+
+#define NV04_BETA_SOLID_BETA_FACTOR 0x00000300
+
+
+#define NV01_CONTEXT_COLOR_KEY_DMA_NOTIFY 0x00000180
+
+#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT 0x00000300
+#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A16R5G6B5 0x00000001
+#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16A1R5G5B5 0x00000002
+#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A8R8G8B8 0x00000003
+
+#define NV01_CONTEXT_COLOR_KEY_COLOR 0x00000304
+
+
+#define NV01_CONTEXT_PATTERN_DMA_NOTIFY 0x00000180
+
+#define NV01_CONTEXT_PATTERN_COLOR_FORMAT 0x00000300
+
+#define NV01_CONTEXT_PATTERN_MONOCHROME_FORMAT 0x00000304
+
+#define NV01_CONTEXT_PATTERN_SHAPE 0x00000308
+
+#define NV01_CONTEXT_PATTERN_COLOR(i0) (0x00000310 + 0x4*(i0))
+#define NV01_CONTEXT_PATTERN_COLOR__ESIZE 0x00000004
+#define NV01_CONTEXT_PATTERN_COLOR__LEN 0x00000002
+
+#define NV01_CONTEXT_PATTERN_PATTERN(i0) (0x00000318 + 0x4*(i0))
+#define NV01_CONTEXT_PATTERN_PATTERN__ESIZE 0x00000004
+#define NV01_CONTEXT_PATTERN_PATTERN__LEN 0x00000002
+
+
+#define NV01_CONTEXT_CLIP_RECTANGLE_DMA_NOTIFY 0x00000180
+
+#define NV01_CONTEXT_CLIP_RECTANGLE_POINT 0x00000300
+#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X__MASK 0x0000ffff
+#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X__SHIFT 0
+#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y__MASK 0xffff0000
+#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y__SHIFT 16
+
+#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE 0x00000304
+#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W__MASK 0x0000ffff
+#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W__SHIFT 0
+#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H__MASK 0xffff0000
+#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H__SHIFT 16
+
+
+#define NV04_CONTEXT_SURFACES_2D_DMA_NOTIFY 0x00000180
+
+#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_SOURCE 0x00000184
+
+#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_DESTIN 0x00000188
+
+
+#define NV50_CONTEXT_SURFACES_2D_SRC_LINEAR 0x00000200
+
+#define NV50_CONTEXT_SURFACES_2D_SRC_TILE_MODE 0x00000204
+
+#define NV50_CONTEXT_SURFACES_2D_SRC_WIDTH 0x00000208
+
+#define NV50_CONTEXT_SURFACES_2D_SRC_HEIGHT 0x0000020c
+
+#define NV50_CONTEXT_SURFACES_2D_UNK0210 0x00000210
+
+#define NV50_CONTEXT_SURFACES_2D_UNK0214 0x00000214
+
+#define NV50_CONTEXT_SURFACES_2D_DST_LINEAR 0x00000218
+
+#define NV50_CONTEXT_SURFACES_2D_DST_TILE_MODE 0x0000021c
+
+#define NV50_CONTEXT_SURFACES_2D_DST_WIDTH 0x00000220
+
+#define NV50_CONTEXT_SURFACES_2D_DST_HEIGHT 0x00000224
+
+#define NV50_CONTEXT_SURFACES_2D_UNK0228 0x00000228
+
+#define NV50_CONTEXT_SURFACES_2D_UNK022C 0x0000022c
+
+#define NV50_CONTEXT_SURFACES_2D_OFFSET_SOURCE_HIGH 0x00000230
+
+#define NV50_CONTEXT_SURFACES_2D_OFFSET_DESTIN_HIGH 0x00000234
+
+#define NV04_CONTEXT_SURFACES_2D_FORMAT 0x00000300
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y8 0x00000001
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_Z1R5G5B5 0x00000002
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_X1R5G5B5 0x00000003
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_R5G6B5 0x00000004
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y16 0x00000005
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_Z8R8G8B8 0x00000006
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_X8R8G8B8 0x00000007
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_Z1A7R8G8B8 0x00000008
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_X1A7R8G8B8 0x00000009
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_A8R8G8B8 0x0000000a
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y32 0x0000000b
+
+#define NV04_CONTEXT_SURFACES_2D_PITCH 0x00000304
+#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE__MASK 0x0000ffff
+#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE__SHIFT 0
+#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN__MASK 0xffff0000
+#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN__SHIFT 16
+
+#define NV04_CONTEXT_SURFACES_2D_OFFSET_SOURCE 0x00000308
+
+#define NV04_CONTEXT_SURFACES_2D_OFFSET_DESTIN 0x0000030c
+
+
+#define NV04_SWIZZLED_SURFACE_DMA_NOTIFY 0x00000180
+
+#define NV04_SWIZZLED_SURFACE_DMA_IMAGE 0x00000184
+
+#define NV04_SWIZZLED_SURFACE_FORMAT 0x00000300
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR__MASK 0x000000ff
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR__SHIFT 0
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y8 0x00000001
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000002
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000003
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_R5G6B5 0x00000004
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y16 0x00000005
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000006
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000007
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000008
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000009
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_A8R8G8B8 0x0000000a
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y32 0x0000000b
+#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U__MASK 0x00ff0000
+#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U__SHIFT 16
+#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V__MASK 0xff000000
+#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V__SHIFT 24
+
+#define NV04_SWIZZLED_SURFACE_OFFSET 0x00000304
+
+
+#define NV03_CONTEXT_ROP_DMA_NOTIFY 0x00000180
+
+#define NV03_CONTEXT_ROP_ROP 0x00000300
+
+
+#define NV04_IMAGE_PATTERN_DMA_NOTIFY 0x00000180
+
+#define NV04_IMAGE_PATTERN_COLOR_FORMAT 0x00000300
+#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A16R5G6B5 0x00000001
+#define NV04_IMAGE_PATTERN_COLOR_FORMAT_X16A1R5G5B5 0x00000002
+#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A8R8G8B8 0x00000003
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT 0x00000304
+#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_CGA6 0x00000001
+#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_LE 0x00000002
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE 0x00000308
+#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_8X8 0x00000000
+#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_64X1 0x00000001
+#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_1X64 0x00000002
+
+#define NV04_IMAGE_PATTERN_PATTERN_SELECT 0x0000030c
+#define NV04_IMAGE_PATTERN_PATTERN_SELECT_MONO 0x00000001
+#define NV04_IMAGE_PATTERN_PATTERN_SELECT_COLOR 0x00000002
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR0 0x00000310
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR1 0x00000314
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN0 0x00000318
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN1 0x0000031c
+
+#define NV04_IMAGE_PATTERN_PATTERN_Y8(i0) (0x00000400 + 0x4*(i0))
+#define NV04_IMAGE_PATTERN_PATTERN_Y8__ESIZE 0x00000004
+#define NV04_IMAGE_PATTERN_PATTERN_Y8__LEN 0x00000010
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0__MASK 0x000000ff
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0__SHIFT 0
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1__MASK 0x0000ff00
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1__SHIFT 8
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2__MASK 0x00ff0000
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2__SHIFT 16
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3__MASK 0xff000000
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3__SHIFT 24
+
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5(i0) (0x00000500 + 0x4*(i0))
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5__ESIZE 0x00000004
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5__LEN 0x00000020
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0__MASK 0x0000001f
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0__SHIFT 0
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0__MASK 0x000007e0
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0__SHIFT 5
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0__MASK 0x0000f800
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0__SHIFT 11
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1__MASK 0x001f0000
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1__SHIFT 16
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1__MASK 0x07e00000
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1__SHIFT 21
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1__MASK 0xf8000000
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1__SHIFT 27
+
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5(i0) (0x00000600 + 0x4*(i0))
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5__ESIZE 0x00000004
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5__LEN 0x00000020
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0__MASK 0x0000001f
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0__SHIFT 0
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0__MASK 0x000003e0
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0__SHIFT 5
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0__MASK 0x00007c00
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0__SHIFT 10
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1__MASK 0x001f0000
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1__SHIFT 16
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1__MASK 0x03e00000
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1__SHIFT 21
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1__MASK 0x7c000000
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1__SHIFT 26
+
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8(i0) (0x00000700 + 0x4*(i0))
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8__ESIZE 0x00000004
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8__LEN 0x00000040
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B__MASK 0x000000ff
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B__SHIFT 0
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G__MASK 0x0000ff00
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G__SHIFT 8
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R__MASK 0x00ff0000
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R__SHIFT 16
+
+
+#define NV01_RENDER_SOLID_LINE_PATCH 0x0000010c
+
+#define NV01_RENDER_SOLID_LINE_DMA_NOTIFY 0x00000180
+
+#define NV01_RENDER_SOLID_LINE_CLIP_RECTANGLE 0x00000184
+
+#define NV01_RENDER_SOLID_LINE_PATTERN 0x00000188
+
+#define NV04_RENDER_SOLID_LINE_PATTERN 0x00000188
+
+#define NV01_RENDER_SOLID_LINE_ROP 0x0000018c
+
+#define NV01_RENDER_SOLID_LINE_BETA1 0x00000190
+
+#define NV01_RENDER_SOLID_LINE_SURFACE_DST 0x00000194
+
+
+#define NV04_RENDER_SOLID_LINE_BETA4 0x00000194
+
+#define NV04_RENDER_SOLID_LINE_SURFACE 0x00000198
+
+#define NV01_RENDER_SOLID_LINE_OPERATION 0x000002fc
+#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_AND 0x00000000
+#define NV01_RENDER_SOLID_LINE_OPERATION_ROP_AND 0x00000001
+#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_AND 0x00000002
+#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY 0x00000003
+#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_PREMULT 0x00000004
+#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_PREMULT 0x00000005
+
+#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT 0x00000300
+#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A16R5G6B5 0x00000001
+#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16A1R5G5B5 0x00000002
+#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A8R8G8B8 0x00000003
+
+#define NV01_RENDER_SOLID_LINE_COLOR 0x00000304
+
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0(i0) (0x00000400 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0__LEN 0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X__SHIFT 0
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y__SHIFT 16
+
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1(i0) (0x00000404 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1__LEN 0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X__SHIFT 0
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y__SHIFT 16
+
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X(i0) (0x00000480 + 0x10*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X__ESIZE 0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X__LEN 0x00000010
+
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y(i0) (0x00000484 + 0x10*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y__ESIZE 0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y__LEN 0x00000010
+
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X(i0) (0x00000488 + 0x10*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X__ESIZE 0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X__LEN 0x00000010
+
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y(i0) (0x0000048c + 0x10*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y__ESIZE 0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y__LEN 0x00000010
+
+#define NV01_RENDER_SOLID_LINE_POLYLINE(i0) (0x00000500 + 0x4*(i0))
+#define NV01_RENDER_SOLID_LINE_POLYLINE__ESIZE 0x00000004
+#define NV01_RENDER_SOLID_LINE_POLYLINE__LEN 0x00000020
+#define NV01_RENDER_SOLID_LINE_POLYLINE_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_LINE_POLYLINE_X__SHIFT 0
+#define NV01_RENDER_SOLID_LINE_POLYLINE_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_LINE_POLYLINE_Y__SHIFT 16
+
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X(i0) (0x00000580 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X__LEN 0x00000010
+
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y(i0) (0x00000584 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y__LEN 0x00000010
+
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR(i0) (0x00000600 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR__LEN 0x00000010
+
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT(i0) (0x00000604 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT__LEN 0x00000010
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X__SHIFT 0
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y__SHIFT 16
+
+
+#define NV01_RENDER_SOLID_TRIANGLE_PATCH 0x0000010c
+
+#define NV01_RENDER_SOLID_TRIANGLE_DMA_NOTIFY 0x00000180
+
+#define NV01_RENDER_SOLID_TRIANGLE_CLIP_RECTANGLE 0x00000184
+
+#define NV01_RENDER_SOLID_TRIANGLE_PATTERN 0x00000188
+
+#define NV04_RENDER_SOLID_TRIANGLE_PATTERN 0x00000188
+
+#define NV01_RENDER_SOLID_TRIANGLE_ROP 0x0000018c
+
+#define NV01_RENDER_SOLID_TRIANGLE_BETA1 0x00000190
+
+#define NV01_RENDER_SOLID_TRIANGLE_SURFACE_DST 0x00000194
+
+
+#define NV04_RENDER_SOLID_TRIANGLE_BETA4 0x00000194
+
+#define NV04_RENDER_SOLID_TRIANGLE_SURFACE 0x00000198
+
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION 0x000002fc
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_AND 0x00000000
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_ROP_AND 0x00000001
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_AND 0x00000002
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY 0x00000003
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_PREMULT 0x00000005
+
+#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT 0x00000300
+#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_A16R5G6B5 0x00000001
+#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_X16A1R5G5B5 0x00000002
+#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_A8R8G8B8 0x00000003
+
+#define NV01_RENDER_SOLID_TRIANGLE_COLOR 0x00000304
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0 0x00000310
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X__SHIFT 0
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y__SHIFT 16
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1 0x00000314
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X__SHIFT 0
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y__SHIFT 16
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2 0x00000318
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X__SHIFT 0
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y__SHIFT 16
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_X 0x00000320
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_Y 0x00000324
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_X 0x00000328
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_Y 0x0000032c
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_X 0x00000330
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_Y 0x00000334
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH(i0) (0x00000400 + 0x4*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH__ESIZE 0x00000004
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH__LEN 0x00000020
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X__SHIFT 0
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y__SHIFT 16
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X(i0) (0x00000480 + 0x8*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X__LEN 0x00000010
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y(i0) (0x00000484 + 0x8*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y__LEN 0x00000010
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR(i0) (0x00000500 + 0x10*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR__ESIZE 0x00000010
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR__LEN 0x00000008
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0(i0) (0x00000504 + 0x10*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0__ESIZE 0x00000010
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0__LEN 0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X__SHIFT 0
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y__SHIFT 16
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1(i0) (0x00000508 + 0x10*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1__ESIZE 0x00000010
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1__LEN 0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X__SHIFT 0
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y__SHIFT 16
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2(i0) (0x0000050c + 0x10*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2__ESIZE 0x00000010
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2__LEN 0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X__SHIFT 0
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y__SHIFT 16
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR(i0) (0x00000580 + 0x8*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR__LEN 0x00000010
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT(i0) (0x00000584 + 0x8*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT__LEN 0x00000010
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X__SHIFT 0
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y__SHIFT 16
+
+
+#define NV01_RENDER_SOLID_RECTANGLE_PATCH 0x0000010c
+
+#define NV01_RENDER_SOLID_RECTANGLE_DMA_NOTIFY 0x00000180
+
+#define NV01_RENDER_SOLID_RECTANGLE_CLIP_RECTANGLE 0x00000184
+
+#define NV01_RENDER_SOLID_RECTANGLE_PATTERN 0x00000188
+
+#define NV04_RENDER_SOLID_RECTANGLE_PATTERN 0x00000188
+
+#define NV01_RENDER_SOLID_RECTANGLE_ROP 0x0000018c
+
+#define NV01_RENDER_SOLID_RECTANGLE_BETA1 0x00000190
+
+#define NV01_RENDER_SOLID_RECTANGLE_SURFACE_DST 0x00000194
+
+
+#define NV04_RENDER_SOLID_RECTANGLE_BETA4 0x00000194
+
+#define NV04_RENDER_SOLID_RECTANGLE_SURFACE 0x00000198
+
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION 0x000002fc
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_AND 0x00000000
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_ROP_AND 0x00000001
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_AND 0x00000002
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY 0x00000003
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_PREMULT 0x00000005
+
+#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT 0x00000300
+#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_A16R5G6B5 0x00000001
+#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_X16A1R5G5B5 0x00000002
+#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_A8R8G8B8 0x00000003
+
+#define NV01_RENDER_SOLID_RECTANGLE_COLOR 0x00000304
+
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT(i0) (0x00000400 + 0x8*(i0))
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT__LEN 0x00000010
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X__SHIFT 0
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y__MASK 0xffff0000
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y__SHIFT 16
+
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE(i0) (0x00000404 + 0x8*(i0))
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE__ESIZE 0x00000008
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE__LEN 0x00000010
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W__MASK 0x0000ffff
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W__SHIFT 0
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H__MASK 0xffff0000
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H__SHIFT 16
+
+
+#define NV01_IMAGE_BLIT_PATCH 0x0000010c
+
+
+#define NV11_IMAGE_BLIT_WAIT_FOR_IDLE 0x00000108
+
+#define NV11_IMAGE_BLIT_FLIP_SET_READ 0x00000120
+
+#define NV11_IMAGE_BLIT_FLIP_SET_WRITE 0x00000124
+
+#define NV11_IMAGE_BLIT_FLIP_MAX 0x00000128
+
+#define NV11_IMAGE_BLIT_FLIP_INCR_WRITE 0x0000012c
+
+#define NV11_IMAGE_BLIT_FLIP_WAIT 0x00000130
+
+#define NV11_IMAGE_BLIT_FLIP_CRTC_INCR_READ 0x00000134
+
+#define NV01_IMAGE_BLIT_DMA_NOTIFY 0x00000180
+
+#define NV01_IMAGE_BLIT_COLOR_KEY 0x00000184
+
+#define NV04_IMAGE_BLIT_COLOR_KEY 0x00000184
+
+#define NV01_IMAGE_BLIT_CLIP_RECTANGLE 0x00000188
+
+#define NV01_IMAGE_BLIT_PATTERN 0x0000018c
+
+#define NV04_IMAGE_BLIT_PATTERN 0x0000018c
+
+#define NV01_IMAGE_BLIT_ROP 0x00000190
+
+#define NV01_IMAGE_BLIT_BETA1 0x00000194
+
+
+#define NV01_IMAGE_BLIT_SURFACE_SRC 0x00000198
+
+#define NV01_IMAGE_BLIT_SURFACE_DST 0x0000019c
+
+
+#define NV04_IMAGE_BLIT_BETA4 0x00000198
+
+#define NV04_IMAGE_BLIT_SURFACES 0x0000019c
+
+#define NV01_IMAGE_BLIT_OPERATION 0x000002fc
+#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_AND 0x00000000
+#define NV01_IMAGE_BLIT_OPERATION_ROP_AND 0x00000001
+#define NV01_IMAGE_BLIT_OPERATION_BLEND_AND 0x00000002
+#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY 0x00000003
+#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_PREMULT 0x00000004
+#define NV01_IMAGE_BLIT_OPERATION_BLEND_PREMULT 0x00000005
+
+#define NV01_IMAGE_BLIT_POINT_IN 0x00000300
+#define NV01_IMAGE_BLIT_POINT_IN_X__MASK 0x0000ffff
+#define NV01_IMAGE_BLIT_POINT_IN_X__SHIFT 0
+#define NV01_IMAGE_BLIT_POINT_IN_Y__MASK 0xffff0000
+#define NV01_IMAGE_BLIT_POINT_IN_Y__SHIFT 16
+
+#define NV01_IMAGE_BLIT_POINT_OUT 0x00000304
+#define NV01_IMAGE_BLIT_POINT_OUT_X__MASK 0x0000ffff
+#define NV01_IMAGE_BLIT_POINT_OUT_X__SHIFT 0
+#define NV01_IMAGE_BLIT_POINT_OUT_Y__MASK 0xffff0000
+#define NV01_IMAGE_BLIT_POINT_OUT_Y__SHIFT 16
+
+#define NV01_IMAGE_BLIT_SIZE 0x00000308
+#define NV01_IMAGE_BLIT_SIZE_W__MASK 0x0000ffff
+#define NV01_IMAGE_BLIT_SIZE_W__SHIFT 0
+#define NV01_IMAGE_BLIT_SIZE_H__MASK 0xffff0000
+#define NV01_IMAGE_BLIT_SIZE_H__SHIFT 16
+
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_PATCH 0x0000010c
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_LUT 0x00000184
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_KEY 0x00000188
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x0000018c
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_PATTERN 0x00000190
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_ROP 0x00000194
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_BETA1 0x00000198
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_BETA4 0x0000019c
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_SURFACE 0x000001a0
+
+#define NV05_INDEXED_IMAGE_FROM_CPU_SURFACE 0x000001a0
+
+#define NV05_INDEXED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000003e0
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_OPERATION 0x000003e4
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_FORMAT 0x000003e8
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_INDEX_FORMAT 0x000003ec
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_LUT_OFFSET 0x000003f0
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_POINT 0x000003f4
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_OUT 0x000003f8
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_IN 0x000003fc
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0))
+#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004
+#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR__LEN 0x00000700
+
+
+#define NV10_IMAGE_FROM_CPU_WAIT_FOR_IDLE 0x00000108
+
+#define NV01_IMAGE_FROM_CPU_PATCH 0x0000010c
+
+#define NV01_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180
+
+#define NV01_IMAGE_FROM_CPU_COLOR_KEY 0x00000184
+
+#define NV04_IMAGE_FROM_CPU_COLOR_KEY 0x00000184
+
+#define NV01_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x00000188
+
+#define NV01_IMAGE_FROM_CPU_PATTERN 0x0000018c
+
+#define NV04_IMAGE_FROM_CPU_PATTERN 0x0000018c
+
+#define NV01_IMAGE_FROM_CPU_ROP 0x00000190
+
+#define NV01_IMAGE_FROM_CPU_BETA1 0x00000194
+
+
+#define NV01_IMAGE_FROM_CPU_SURFACE_DST 0x00000198
+
+
+#define NV04_IMAGE_FROM_CPU_BETA4 0x00000198
+
+#define NV04_IMAGE_FROM_CPU_SURFACE 0x0000019c
+
+#define NV05_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8
+
+#define NV01_IMAGE_FROM_CPU_OPERATION 0x000002fc
+#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_AND 0x00000000
+#define NV01_IMAGE_FROM_CPU_OPERATION_ROP_AND 0x00000001
+#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_AND 0x00000002
+#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY 0x00000003
+#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_PREMULT 0x00000004
+#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_PREMULT 0x00000005
+
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_R5G6G5 0x00000001
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A1R5G5B5 0x00000002
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X1R5G5B5 0x00000003
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A8R8G8B8 0x00000004
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X8R8G8B8 0x00000005
+
+#define NV01_IMAGE_FROM_CPU_POINT 0x00000304
+#define NV01_IMAGE_FROM_CPU_POINT_X__MASK 0x0000ffff
+#define NV01_IMAGE_FROM_CPU_POINT_X__SHIFT 0
+#define NV01_IMAGE_FROM_CPU_POINT_Y__MASK 0xffff0000
+#define NV01_IMAGE_FROM_CPU_POINT_Y__SHIFT 16
+
+#define NV01_IMAGE_FROM_CPU_SIZE_OUT 0x00000308
+#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W__MASK 0x0000ffff
+#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W__SHIFT 0
+#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H__MASK 0xffff0000
+#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H__SHIFT 16
+
+#define NV01_IMAGE_FROM_CPU_SIZE_IN 0x0000030c
+#define NV01_IMAGE_FROM_CPU_SIZE_IN_W__MASK 0x0000ffff
+#define NV01_IMAGE_FROM_CPU_SIZE_IN_W__SHIFT 0
+#define NV01_IMAGE_FROM_CPU_SIZE_IN_H__MASK 0xffff0000
+#define NV01_IMAGE_FROM_CPU_SIZE_IN_H__SHIFT 16
+
+#define NV01_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0))
+#define NV01_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004
+#define NV01_IMAGE_FROM_CPU_COLOR__LEN 0x00000020
+
+#define NV04_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0))
+#define NV04_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004
+#define NV04_IMAGE_FROM_CPU_COLOR__LEN 0x00000700
+
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_PATCH 0x0000010c
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_KEY 0x00000184
+
+#define NV04_STRETCHED_IMAGE_FROM_CPU_COLOR_KEY 0x00000184
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_PATTERN 0x00000188
+
+#define NV04_STRETCHED_IMAGE_FROM_CPU_PATTERN 0x00000188
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_ROP 0x0000018c
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_BETA1 0x00000190
+
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SURFACE_DST 0x00000194
+
+
+#define NV04_STRETCHED_IMAGE_FROM_CPU_BETA4 0x00000194
+
+#define NV04_STRETCHED_IMAGE_FROM_CPU_SURFACE 0x00000198
+
+#define NV05_STRETCHED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_OPERATION 0x000002fc
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN 0x00000304
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W__MASK 0x0000ffff
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W__SHIFT 0
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H__MASK 0xffff0000
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H__SHIFT 16
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_DX_DU 0x00000308
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_DY_DV 0x0000030c
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT 0x00000310
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X__MASK 0x0000ffff
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X__SHIFT 0
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y__MASK 0xffff0000
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y__SHIFT 16
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE 0x00000314
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W__MASK 0x0000ffff
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W__SHIFT 0
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H__MASK 0xffff0000
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H__SHIFT 16
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4 0x00000318
+#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X__MASK 0x0000ffff
+#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X__SHIFT 0
+#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y__MASK 0xffff0000
+#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y__SHIFT 16
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0))
+#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004
+#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR__LEN 0x00000700
+
+
+#define NV10_SCALED_IMAGE_FROM_MEMORY_WAIT_FOR_IDLE 0x00000108
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_NOTIFY 0x00000180
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_IMAGE 0x00000184
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_PATTERN 0x00000188
+
+#define NV04_SCALED_IMAGE_FROM_MEMORY_PATTERN 0x00000188
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_ROP 0x0000018c
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_BETA1 0x00000190
+
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SURFACE_DST 0x00000194
+
+
+#define NV04_SCALED_IMAGE_FROM_MEMORY_BETA4 0x00000194
+
+#define NV04_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000198
+
+#define NV05_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000198
+
+#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION 0x000002fc
+#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_DITHER 0x00000000
+#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_TRUNCATE 0x00000001
+#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_SUBTR_TRUNCATE 0x00000002
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT 0x00000300
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A1R5G5B5 0x00000001
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X1R5G5B5 0x00000002
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A8R8G8B8 0x00000003
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X8R8G8B8 0x00000004
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_V8YB8U8YA8 0x00000005
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_YB8V8YA8U8 0x00000006
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_R5G6B5 0x00000007
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_Y8 0x00000008
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_AY8 0x00000009
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION 0x00000304
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_AND 0x00000000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_ROP_AND 0x00000001
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_AND 0x00000002
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY 0x00000003
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_PREMULT 0x00000004
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_PREMULT 0x00000005
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT 0x00000308
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X__MASK 0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X__SHIFT 0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y__MASK 0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y__SHIFT 16
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE 0x0000030c
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W__MASK 0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W__SHIFT 0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H__MASK 0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H__SHIFT 16
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT 0x00000310
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X__MASK 0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X__SHIFT 0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y__MASK 0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y__SHIFT 16
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE 0x00000314
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W__MASK 0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W__SHIFT 0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H__MASK 0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H__SHIFT 16
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_DU_DX 0x00000318
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_DV_DY 0x0000031c
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE 0x00000400
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W__MASK 0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W__SHIFT 0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H__MASK 0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H__SHIFT 16
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT 0x00000404
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH__MASK 0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH__SHIFT 0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN__MASK 0x00ff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN__SHIFT 16
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CENTER 0x00010000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CORNER 0x00020000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER__MASK 0xff000000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER__SHIFT 24
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_POINT_SAMPLE 0x00000000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_BILINEAR 0x01000000
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OFFSET 0x00000408
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT 0x0000040c
+#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U__MASK 0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U__SHIFT 0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V__MASK 0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V__SHIFT 16
+
+
+#define NV50_SCALED_IMAGE_FROM_MEMORY_OFFSET_HIGH 0x00000410
+
+#define NV50_SCALED_IMAGE_FROM_MEMORY_SRC_LINEAR 0x00000414
+
+#define NV50_SCALED_IMAGE_FROM_MEMORY_SRC_TILE_MODE 0x00000418
+
+
+#define NV03_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180
+
+#define NV03_GDI_RECTANGLE_TEXT_PATTERN 0x00000184
+
+#define NV03_GDI_RECTANGLE_TEXT_ROP 0x00000188
+
+#define NV03_GDI_RECTANGLE_TEXT_BETA1 0x0000019c
+
+#define NV03_GDI_RECTANGLE_TEXT_SURFACE_DST 0x00000190
+
+#define NV03_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300
+
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc
+
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT 0x00000400
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE 0x00000404
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B 0x000007f4
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B 0x000007f8
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR1_B 0x000007fc
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0 0x00000800
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1 0x00000804
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x00000bec
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x00000bf0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR1_C 0x00000bf4
+
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_C 0x00000bf8
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_POINT_C 0x00000bfc
+#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(i0) (0x00000c00 + 0x4*(i0))
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__ESIZE 0x00000004
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__LEN 0x00000020
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0 0x00000fe8
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1 0x00000fec
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR1_D 0x00000ff0
+
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D 0x00000ff4
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D 0x00000ff8
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_POINT_D 0x00000ffc
+#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D(i0) (0x00001000 + 0x4*(i0))
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D__ESIZE 0x00000004
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D__LEN 0x00000020
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x000013e4
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x000013e8
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR0_E 0x000013ec
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR1_E 0x000013f0
+
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x000013f4
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x000013f8
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_POINT_E 0x000013fc
+#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X__MASK 0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X__SHIFT 0
+#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y__MASK 0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y__SHIFT 16
+
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(i0) (0x00001400 + 0x4*(i0))
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__ESIZE 0x00000004
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__LEN 0x00000020
+
+
+#define NV04_GDI_RECTANGLE_TEXT_PATCH 0x0000010c
+
+#define NV04_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180
+
+#define NV04_GDI_RECTANGLE_TEXT_DMA_FONTS 0x00000184
+
+#define NV04_GDI_RECTANGLE_TEXT_PATTERN 0x00000188
+
+#define NV04_GDI_RECTANGLE_TEXT_ROP 0x0000018c
+
+#define NV04_GDI_RECTANGLE_TEXT_BETA1 0x00000190
+
+#define NV04_GDI_RECTANGLE_TEXT_BETA4 0x00000194
+
+#define NV04_GDI_RECTANGLE_TEXT_SURFACE 0x00000198
+
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_AND 0x00000000
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_ROP_AND 0x00000001
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_AND 0x00000002
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY 0x00000003
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_PREMULT 0x00000004
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_PREMULT 0x00000005
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300
+#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A16R5G6B5 0x00000001
+#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_X16A1R5G5B5 0x00000002
+#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A8R8G8B8 0x00000003
+
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_CGA6 0x00000001
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_LE 0x00000002
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc
+
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT(i0) (0x00000400 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT__ESIZE 0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT__LEN 0x00000020
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE(i0) (0x00000404 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE__ESIZE 0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE__LEN 0x00000020
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0 0x000005f4
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1 0x000005f8
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_B 0x000005fc
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0(i0) (0x00000600 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0__ESIZE 0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0__LEN 0x00000020
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1(i0) (0x00000604 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1__ESIZE 0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1__LEN 0x00000020
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x000007ec
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x000007f0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_C 0x000007f4
+
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_C 0x000007f8
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_POINT_C 0x000007fc
+#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(i0) (0x00000800 + 0x4*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__ESIZE 0x00000004
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__LEN 0x00000080
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x00000be4
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x00000be8
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR0_E 0x00000bec
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_E 0x00000bf0
+
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x00000bf4
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x00000bf8
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_POINT_E 0x00000bfc
+#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(i0) (0x00000c00 + 0x4*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__ESIZE 0x00000004
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__LEN 0x00000080
+
+#define NV04_GDI_RECTANGLE_TEXT_FONT_F 0x00000ff0
+#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET__MASK 0x0fffffff
+#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH__MASK 0xf0000000
+#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH__SHIFT 28
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0 0x00000ff4
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1 0x00000ff8
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_F 0x00000ffc
+
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F(i0) (0x00001000 + 0x4*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F__ESIZE 0x00000004
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F__LEN 0x00000100
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX__MASK 0x000000ff
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X__MASK 0x000fff00
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X__SHIFT 8
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y__MASK 0xfff00000
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y__SHIFT 20
+
+#define NV04_GDI_RECTANGLE_TEXT_FONT_G 0x000017f0
+#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET__MASK 0x0fffffff
+#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH__MASK 0xf0000000
+#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH__SHIFT 28
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0 0x000017f4
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1 0x000017f8
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_G 0x000017fc
+
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT(i0) (0x00001800 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT__ESIZE 0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT__LEN 0x00000100
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X__MASK 0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X__SHIFT 0
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y__MASK 0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y__SHIFT 16
+
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX(i0) (0x00001804 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX__ESIZE 0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX__LEN 0x00000100
+
+
+#define NV10_TEXTURE_FROM_CPU_WAIT_FOR_IDLE 0x00000108
+
+#define NV10_TEXTURE_FROM_CPU_DMA_NOTIFY 0x00000180
+
+#define NV10_TEXTURE_FROM_CPU_SURFACE 0x00000184
+
+#define NV10_TEXTURE_FROM_CPU_COLOR_FORMAT 0x00000300
+
+#define NV10_TEXTURE_FROM_CPU_POINT 0x00000304
+#define NV10_TEXTURE_FROM_CPU_POINT_X__MASK 0x0000ffff
+#define NV10_TEXTURE_FROM_CPU_POINT_X__SHIFT 0
+#define NV10_TEXTURE_FROM_CPU_POINT_Y__MASK 0xffff0000
+#define NV10_TEXTURE_FROM_CPU_POINT_Y__SHIFT 16
+
+#define NV10_TEXTURE_FROM_CPU_SIZE 0x00000308
+#define NV10_TEXTURE_FROM_CPU_SIZE_W__MASK 0x0000ffff
+#define NV10_TEXTURE_FROM_CPU_SIZE_W__SHIFT 0
+#define NV10_TEXTURE_FROM_CPU_SIZE_H__MASK 0xffff0000
+#define NV10_TEXTURE_FROM_CPU_SIZE_H__SHIFT 16
+
+#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL 0x0000030c
+#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X__MASK 0x0000ffff
+#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X__SHIFT 0
+#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W__MASK 0xffff0000
+#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W__SHIFT 16
+
+#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL 0x00000310
+#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y__MASK 0x0000ffff
+#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y__SHIFT 0
+#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H__MASK 0xffff0000
+#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H__SHIFT 16
+
+#define NV10_TEXTURE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0))
+#define NV10_TEXTURE_FROM_CPU_COLOR__ESIZE 0x00000004
+#define NV10_TEXTURE_FROM_CPU_COLOR__LEN 0x00000700
+
+
+#endif /* NV01_2D_XML */
diff --git a/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h
new file mode 100644
index 0000000000..d4fb680a36
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h
@@ -0,0 +1,738 @@
+#ifndef NV04_3D_XML
+#define NV04_3D_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv04_3d.xml ( 17839 bytes, from 2010-11-15 02:23:48)
+- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58)
+- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57)
+- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57)
+- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46)
+- nv_3ddefs.xml ( 16394 bytes, from 2010-11-01 00:28:46)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+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.
+*/
+
+
+
+#define NV04_CONTEXT_SURFACES_3D_DMA_NOTIFY 0x00000180
+
+#define NV04_CONTEXT_SURFACES_3D_DMA_COLOR 0x00000184
+
+#define NV04_CONTEXT_SURFACES_3D_DMA_ZETA 0x00000188
+
+#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL 0x000002f8
+#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X__MASK 0x0000ffff
+#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X__SHIFT 0
+#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W__MASK 0xffff0000
+#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W__SHIFT 16
+
+#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL 0x000002fc
+#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y__MASK 0x0000ffff
+#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y__SHIFT 0
+#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H__MASK 0xffff0000
+#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H__SHIFT 16
+
+#define NV04_CONTEXT_SURFACES_3D_FORMAT 0x00000300
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR__MASK 0x000000ff
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR__SHIFT 0
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000001
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000002
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_R5G6B5 0x00000003
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000004
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000005
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000006
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000007
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_A8R8G8B8 0x00000008
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE__MASK 0x0000ff00
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE__SHIFT 8
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_PITCH 0x00000100
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_SWIZZLE 0x00000200
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U__MASK 0x00ff0000
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U__SHIFT 16
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V__MASK 0xff000000
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V__SHIFT 24
+
+#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE 0x00000304
+#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W__MASK 0x0000ffff
+#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W__SHIFT 0
+#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H__MASK 0xffff0000
+#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H__SHIFT 16
+
+#define NV04_CONTEXT_SURFACES_3D_PITCH 0x00000308
+#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR__MASK 0x0000ffff
+#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR__SHIFT 0
+#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA__MASK 0xffff0000
+#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA__SHIFT 16
+
+#define NV04_CONTEXT_SURFACES_3D_OFFSET_COLOR 0x0000030c
+
+#define NV04_CONTEXT_SURFACES_3D_OFFSET_ZETA 0x00000310
+
+
+#define NV04_TEXTURED_TRIANGLE_DMA_NOTIFY 0x00000180
+
+#define NV04_TEXTURED_TRIANGLE_DMA_A 0x00000184
+
+#define NV04_TEXTURED_TRIANGLE_DMA_B 0x00000188
+
+#define NV04_TEXTURED_TRIANGLE_SURFACES 0x0000018c
+
+#define NV04_TEXTURED_TRIANGLE_COLORKEY 0x00000300
+
+#define NV04_TEXTURED_TRIANGLE_OFFSET 0x00000304
+
+#define NV04_TEXTURED_TRIANGLE_FORMAT 0x00000308
+#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_A 0x00000001
+#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_B 0x00000002
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_KEY_ENABLE 0x00000004
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH__MASK 0x00000030
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH__SHIFT 4
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CENTER 0x00000010
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER 0x00000020
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH__MASK 0x000000c0
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH__SHIFT 6
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CENTER 0x00000040
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER 0x00000080
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR__MASK 0x00000f00
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR__SHIFT 8
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_Y8 0x00000100
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A1R5G5B5 0x00000200
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X1R5G5B5 0x00000300
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A4R4G4B4 0x00000400
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_R5G6B5 0x00000500
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A8R8G8B8 0x00000600
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X8R8G8B8 0x00000700
+#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS__MASK 0x0000f000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS__SHIFT 12
+#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U__MASK 0x000f0000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U__SHIFT 16
+#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V__MASK 0x00f00000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V__SHIFT 20
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU__MASK 0x07000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU__SHIFT 24
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_REPEAT 0x01000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_MIRRORED_REPEAT 0x02000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE 0x03000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_BORDER 0x04000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPU 0x08000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV__MASK 0x70000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV__SHIFT 28
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_REPEAT 0x10000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_MIRRORED_REPEAT 0x20000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE 0x30000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_BORDER 0x40000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPV 0x80000000
+
+#define NV04_TEXTURED_TRIANGLE_FILTER 0x0000030c
+#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X__MASK 0x000000ff
+#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X__SHIFT 0
+#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y__MASK 0x00007f00
+#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y__SHIFT 8
+#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE 0x00008000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS__MASK 0x00ff0000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS__SHIFT 16
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY__MASK 0x07000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY__SHIFT 24
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST 0x01000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR 0x02000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE 0x08000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY__MASK 0x70000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY__SHIFT 28
+#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_NEAREST 0x10000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_LINEAR 0x20000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE 0x80000000
+
+#define NV04_TEXTURED_TRIANGLE_BLEND 0x00000310
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP__MASK 0x0000000f
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP__SHIFT 0
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECAL 0x00000001
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATE 0x00000002
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECALALPHA 0x00000003
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATEALPHA 0x00000004
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECALMASK 0x00000005
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATEMASK 0x00000006
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_COPY 0x00000007
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_ADD 0x00000008
+#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT__MASK 0x00000030
+#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT__SHIFT 4
+#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_LSB 0x00000010
+#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_MSB 0x00000020
+#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE__MASK 0x000000c0
+#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE__SHIFT 6
+#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040
+#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080
+#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE 0x00000100
+#define NV04_TEXTURED_TRIANGLE_BLEND_SPECULAR_ENABLE 0x00001000
+#define NV04_TEXTURED_TRIANGLE_BLEND_FOG_ENABLE 0x00010000
+#define NV04_TEXTURED_TRIANGLE_BLEND_BLEND_ENABLE 0x00100000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC__MASK 0x0f000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC__SHIFT 24
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ZERO 0x01000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE 0x02000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_COLOR 0x03000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_COLOR 0x04000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_ALPHA 0x05000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_ALPHA 0x06000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_DST_ALPHA 0x07000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_ALPHA 0x08000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_DST_COLOR 0x09000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_COLOR 0x0a000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_ALPHA_SATURATE 0x0b000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST__MASK 0xf0000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST__SHIFT 28
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ZERO 0x10000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE 0x20000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_COLOR 0x30000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_COLOR 0x40000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_ALPHA 0x50000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_ALPHA 0x60000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_DST_ALPHA 0x70000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_DST_ALPHA 0x80000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_DST_COLOR 0x90000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_DST_COLOR 0xa0000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_ALPHA_SATURATE 0xb0000000
+
+#define NV04_TEXTURED_TRIANGLE_CONTROL 0x00000314
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF__MASK 0x000000ff
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF__SHIFT 0
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC__MASK 0x00000f00
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC__SHIFT 8
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_NEVER 0x00000100
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_LESS 0x00000200
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_EQUAL 0x00000300
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_LEQUAL 0x00000400
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_GREATER 0x00000500
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_NOTEQUAL 0x00000600
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_GEQUAL 0x00000700
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_ALWAYS 0x00000800
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_ENABLE 0x00001000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN__MASK 0x00002000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN__SHIFT 13
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CENTER 0x00000000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CORNER 0x00002000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_ENABLE 0x00004000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC__MASK 0x000f0000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC__SHIFT 16
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_NEVER 0x00010000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_LESS 0x00020000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_EQUAL 0x00030000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_LEQUAL 0x00040000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_GREATER 0x00050000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_NOTEQUAL 0x00060000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_GEQUAL 0x00070000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_ALWAYS 0x00080000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE__MASK 0x00300000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE__SHIFT 20
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_BOTH 0x00000000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_NONE 0x00100000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CW 0x00200000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CCW 0x00300000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_DITHER_ENABLE 0x00400000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_PERSPECTIVE_ENABLE 0x00800000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_WRITE 0x01000000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT__MASK 0xc0000000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT__SHIFT 30
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_FIXED 0x40000000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_FLOAT 0x80000000
+
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR 0x00000318
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B__MASK 0x000000ff
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B__SHIFT 0
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G__MASK 0x0000ff00
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G__SHIFT 8
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R__MASK 0x00ff0000
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R__SHIFT 16
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A__MASK 0xff000000
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A__SHIFT 24
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX(i0) (0x00000400 + 0x20*(i0))
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX__ESIZE 0x00000020
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX__LEN 0x00000010
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SX(i0) (0x00000400 + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SY(i0) (0x00000404 + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SZ(i0) (0x00000408 + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_RHW(i0) (0x0000040c + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR(i0) (0x00000410 + 0x20*(i0))
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B__MASK 0x000000ff
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B__SHIFT 0
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G__MASK 0x0000ff00
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G__SHIFT 8
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R__MASK 0x00ff0000
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R__SHIFT 16
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A__MASK 0xff000000
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A__SHIFT 24
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR(i0) (0x00000414 + 0x20*(i0))
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B__MASK 0x000000ff
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B__SHIFT 0
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G__MASK 0x0000ff00
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G__SHIFT 8
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R__MASK 0x00ff0000
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R__SHIFT 16
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG__MASK 0xff000000
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG__SHIFT 24
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TU(i0) (0x00000418 + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TV(i0) (0x0000041c + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE(i0) (0x00000600 + 0x4*(i0))
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE__ESIZE 0x00000004
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE__LEN 0x00000040
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0__MASK 0x0000000f
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0__SHIFT 0
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1__MASK 0x000000f0
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1__SHIFT 4
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2__MASK 0x00000f00
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2__SHIFT 8
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3__MASK 0x0000f000
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3__SHIFT 12
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4__MASK 0x000f0000
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4__SHIFT 16
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5__MASK 0x00f00000
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5__SHIFT 20
+
+
+#define NV04_MULTITEX_TRIANGLE_DMA_NOTIFY 0x00000180
+
+#define NV04_MULTITEX_TRIANGLE_DMA_A 0x00000184
+
+#define NV04_MULTITEX_TRIANGLE_DMA_B 0x00000188
+
+#define NV04_MULTITEX_TRIANGLE_SURFACES 0x0000018c
+
+#define NV04_MULTITEX_TRIANGLE_OFFSET(i0) (0x00000308 + 0x4*(i0))
+#define NV04_MULTITEX_TRIANGLE_OFFSET__ESIZE 0x00000004
+#define NV04_MULTITEX_TRIANGLE_OFFSET__LEN 0x00000002
+
+#define NV04_MULTITEX_TRIANGLE_FORMAT(i0) (0x00000310 + 0x4*(i0))
+#define NV04_MULTITEX_TRIANGLE_FORMAT__ESIZE 0x00000004
+#define NV04_MULTITEX_TRIANGLE_FORMAT__LEN 0x00000002
+#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_A 0x00000001
+#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_B 0x00000002
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH__MASK 0x00000030
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH__SHIFT 4
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_CENTER 0x00000010
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER 0x00000020
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH__MASK 0x000000c0
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH__SHIFT 6
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_CENTER 0x00000040
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER 0x00000080
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR__MASK 0x00000f00
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR__SHIFT 8
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_Y8 0x00000100
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A1R5G5B5 0x00000200
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_X1R5G5B5 0x00000300
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A4R4G4B4 0x00000400
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_R5G6B5 0x00000500
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A8R8G8B8 0x00000600
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_X8R8G8B8 0x00000700
+#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS__MASK 0x0000f000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS__SHIFT 12
+#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U__MASK 0x000f0000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U__SHIFT 16
+#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V__MASK 0x00f00000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V__SHIFT 20
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU__MASK 0x07000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU__SHIFT 24
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_REPEAT 0x01000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_MIRRORED_REPEAT 0x02000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE 0x03000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_BORDER 0x04000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPU 0x08000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV__MASK 0x70000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV__SHIFT 28
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_REPEAT 0x10000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_MIRRORED_REPEAT 0x20000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE 0x30000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_BORDER 0x40000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPV 0x80000000
+
+#define NV04_MULTITEX_TRIANGLE_FILTER(i0) (0x00000318 + 0x4*(i0))
+#define NV04_MULTITEX_TRIANGLE_FILTER__ESIZE 0x00000004
+#define NV04_MULTITEX_TRIANGLE_FILTER__LEN 0x00000002
+#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X__MASK 0x000000ff
+#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X__SHIFT 0
+#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y__MASK 0x00007f00
+#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y__SHIFT 8
+#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE 0x00008000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS__MASK 0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS__SHIFT 16
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY__MASK 0x07000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY__SHIFT 24
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST 0x01000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR 0x02000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE 0x08000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY__MASK 0x70000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY__SHIFT 28
+#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_NEAREST 0x10000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_LINEAR 0x20000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE 0x80000000
+
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA(i0) (0x00000320 + 0xc*(i0))
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA__ESIZE 0x0000000c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA__LEN 0x00000002
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE0 0x00000001
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0__MASK 0x000000fc
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0__SHIFT 2
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_ZERO 0x00000004
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_CONSTANT 0x00000008
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PRIMARY_COLOR 0x0000000c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PREVIOUS 0x00000010
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE0 0x00000014
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE1 0x00000018
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURELOD 0x0000001c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE1 0x00000100
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1__MASK 0x0000fc00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1__SHIFT 10
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_ZERO 0x00000400
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_CONSTANT 0x00000800
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PRIMARY_COLOR 0x00000c00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PREVIOUS 0x00001000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE0 0x00001400
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE1 0x00001800
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURELOD 0x00001c00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE2 0x00010000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2__MASK 0x00fc0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2__SHIFT 18
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_ZERO 0x00040000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_CONSTANT 0x00080000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PRIMARY_COLOR 0x000c0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PREVIOUS 0x00100000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE0 0x00140000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE1 0x00180000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURELOD 0x001c0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE3 0x01000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3__MASK 0x1c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3__SHIFT 26
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_ZERO 0x04000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_CONSTANT 0x08000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PRIMARY_COLOR 0x0c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PREVIOUS 0x10000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE0 0x14000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE1 0x18000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURELOD 0x1c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP__MASK 0xe0000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP__SHIFT 29
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_IDENTITY 0x20000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE2 0x40000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE4 0x60000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS 0x80000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS_SCALE2 0xe0000000
+
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR(i0) (0x00000324 + 0xc*(i0))
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR__ESIZE 0x0000000c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR__LEN 0x00000002
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE0 0x00000001
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA0 0x00000002
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__MASK 0x000000fc
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__SHIFT 2
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_ZERO 0x00000004
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_CONSTANT 0x00000008
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PRIMARY_COLOR 0x0000000c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PREVIOUS 0x00000010
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE0 0x00000014
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE1 0x00000018
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURELOD 0x0000001c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE1 0x00000100
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA1 0x00000200
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1__MASK 0x0000fc00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1__SHIFT 10
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_ZERO 0x00000400
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_CONSTANT 0x00000800
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PRIMARY_COLOR 0x00000c00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PREVIOUS 0x00001000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE0 0x00001400
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE1 0x00001800
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURELOD 0x00001c00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE2 0x00010000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA2 0x00020000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2__MASK 0x00fc0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2__SHIFT 18
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_ZERO 0x00040000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_CONSTANT 0x00080000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PRIMARY_COLOR 0x000c0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PREVIOUS 0x00100000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE0 0x00140000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE1 0x00180000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURELOD 0x001c0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE3 0x01000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA3 0x02000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3__MASK 0x1c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3__SHIFT 26
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_ZERO 0x04000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_CONSTANT 0x08000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PRIMARY_COLOR 0x0c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PREVIOUS 0x10000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE0 0x14000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE1 0x18000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURELOD 0x1c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP__MASK 0xe0000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP__SHIFT 29
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_IDENTITY 0x20000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE2 0x40000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE4 0x60000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS 0x80000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS_SCALE2 0xe0000000
+
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR 0x00000334
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B__MASK 0x000000ff
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B__SHIFT 0
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G__MASK 0x0000ff00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G__SHIFT 8
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R__MASK 0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R__SHIFT 16
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A__MASK 0xff000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A__SHIFT 24
+
+#define NV04_MULTITEX_TRIANGLE_BLEND 0x00000338
+#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT__MASK 0x00000030
+#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT__SHIFT 4
+#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_LSB 0x00000010
+#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_MSB 0x00000020
+#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE__MASK 0x000000c0
+#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE__SHIFT 6
+#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040
+#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080
+#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0
+#define NV04_MULTITEX_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE 0x00000100
+#define NV04_MULTITEX_TRIANGLE_BLEND_SPECULAR_ENABLE 0x00001000
+#define NV04_MULTITEX_TRIANGLE_BLEND_FOG_ENABLE 0x00010000
+#define NV04_MULTITEX_TRIANGLE_BLEND_BLEND_ENABLE 0x00100000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC__MASK 0x0f000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC__SHIFT 24
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ZERO 0x01000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE 0x02000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_COLOR 0x03000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_COLOR 0x04000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_ALPHA 0x05000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_ALPHA 0x06000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_DST_ALPHA 0x07000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_ALPHA 0x08000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_DST_COLOR 0x09000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_COLOR 0x0a000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_ALPHA_SATURATE 0x0b000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST__MASK 0xf0000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST__SHIFT 28
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ZERO 0x10000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE 0x20000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_COLOR 0x30000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_COLOR 0x40000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_ALPHA 0x50000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_ALPHA 0x60000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_DST_ALPHA 0x70000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_DST_ALPHA 0x80000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_DST_COLOR 0x90000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_DST_COLOR 0xa0000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_ALPHA_SATURATE 0xb0000000
+
+#define NV04_MULTITEX_TRIANGLE_CONTROL0 0x0000033c
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF__MASK 0x000000ff
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF__SHIFT 0
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC__MASK 0x00000f00
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC__SHIFT 8
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_NEVER 0x00000100
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_LESS 0x00000200
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_EQUAL 0x00000300
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_LEQUAL 0x00000400
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_GREATER 0x00000500
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_NOTEQUAL 0x00000600
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_GEQUAL 0x00000700
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_ALWAYS 0x00000800
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_ENABLE 0x00001000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN__MASK 0x00002000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN__SHIFT 13
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CENTER 0x00000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CORNER 0x00002000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_ENABLE 0x00004000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC__MASK 0x000f0000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC__SHIFT 16
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_NEVER 0x00010000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_LESS 0x00020000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_EQUAL 0x00030000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_LEQUAL 0x00040000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_GREATER 0x00050000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_NOTEQUAL 0x00060000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_GEQUAL 0x00070000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_ALWAYS 0x00080000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE__MASK 0x00300000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE__SHIFT 20
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_BOTH 0x00000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_NONE 0x00100000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CW 0x00200000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CCW 0x00300000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_DITHER_ENABLE 0x00400000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_PERSPECTIVE_ENABLE 0x00800000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_WRITE 0x01000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_STENCIL_WRITE 0x02000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_WRITE 0x04000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_RED_WRITE 0x08000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_GREEN_WRITE 0x10000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_BLUE_WRITE 0x20000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT__MASK 0xc0000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT__SHIFT 30
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_FIXED 0x40000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_FLOAT 0x80000000
+
+#define NV04_MULTITEX_TRIANGLE_CONTROL1 0x00000340
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_ENABLE 0x00000001
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC__MASK 0x000000f0
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC__SHIFT 4
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF__MASK 0x0000ff00
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF__SHIFT 8
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ__MASK 0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ__SHIFT 16
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE__MASK 0xff000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE__SHIFT 24
+
+#define NV04_MULTITEX_TRIANGLE_CONTROL2 0x00000344
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL__MASK 0x0000000f
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL__SHIFT 0
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL__MASK 0x000000f0
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL__SHIFT 4
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS__MASK 0x00000f00
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS__SHIFT 8
+
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR 0x00000348
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B__MASK 0x000000ff
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B__SHIFT 0
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G__MASK 0x0000ff00
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G__SHIFT 8
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R__MASK 0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R__SHIFT 16
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A__MASK 0xff000000
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A__SHIFT 24
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX(i0) (0x00000400 + 0x28*(i0))
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX__ESIZE 0x00000028
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX__LEN 0x00000008
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SX(i0) (0x00000400 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SY(i0) (0x00000404 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SZ(i0) (0x00000408 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_RHW(i0) (0x0000040c + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR(i0) (0x00000410 + 0x28*(i0))
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B__MASK 0x000000ff
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B__SHIFT 0
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G__MASK 0x0000ff00
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G__SHIFT 8
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R__MASK 0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R__SHIFT 16
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A__MASK 0xff000000
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A__SHIFT 24
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR(i0) (0x00000414 + 0x28*(i0))
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B__MASK 0x000000ff
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B__SHIFT 0
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G__MASK 0x0000ff00
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G__SHIFT 8
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R__MASK 0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R__SHIFT 16
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG__MASK 0xff000000
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG__SHIFT 24
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU0(i0) (0x00000418 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV0(i0) (0x0000041c + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU1(i0) (0x00000420 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV1(i0) (0x00000424 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE(i0) (0x00000540 + 0x4*(i0))
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE__ESIZE 0x00000004
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE__LEN 0x00000030
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0__MASK 0x0000000f
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0__SHIFT 0
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1__MASK 0x000000f0
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1__SHIFT 4
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2__MASK 0x00000f00
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2__SHIFT 8
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3__MASK 0x0000f000
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3__SHIFT 12
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4__MASK 0x000f0000
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4__SHIFT 16
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5__MASK 0x00f00000
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5__SHIFT 20
+
+
+#endif /* NV04_3D_XML */
diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.c b/src/mesa/drivers/dri/nouveau/nv04_context.c
index 8683343b39..3140af56fd 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_context.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_context.c
@@ -28,7 +28,7 @@
#include "nouveau_context.h"
#include "nouveau_fbo.h"
#include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv04_3d.xml.h"
#include "nv04_driver.h"
static GLboolean
diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.h b/src/mesa/drivers/dri/nouveau/nv04_context.h
index 45e70d2bc3..960a6550dc 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_context.h
+++ b/src/mesa/drivers/dri/nouveau/nv04_context.h
@@ -28,6 +28,7 @@
#define __NV04_CONTEXT_H__
#include "nouveau_context.h"
+#include "nv_object.xml.h"
struct nv04_context {
struct nouveau_context base;
diff --git a/src/mesa/drivers/dri/nouveau/nv04_render.c b/src/mesa/drivers/dri/nouveau/nv04_render.c
index 47bad24f9d..ad45093edd 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_render.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_render.c
@@ -27,7 +27,7 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
#include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv04_3d.xml.h"
#include "nv04_driver.h"
#include "tnl/tnl.h"
diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c
index a3e343660f..854571d07e 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c
@@ -28,7 +28,7 @@
#include "nouveau_context.h"
#include "nouveau_fbo.h"
#include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv04_3d.xml.h"
#include "nv04_driver.h"
static inline unsigned
@@ -36,11 +36,11 @@ get_rt_format(gl_format format)
{
switch (format) {
case MESA_FORMAT_XRGB8888:
- return 0x05;
+ return NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_X8R8G8B8;
case MESA_FORMAT_ARGB8888:
- return 0x08;
+ return NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_A8R8G8B8;
case MESA_FORMAT_RGB565:
- return 0x03;
+ return NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_R5G6B5;
default:
assert(0);
}
diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c
index 658b23a4d9..21478de262 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c
@@ -27,12 +27,13 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
#include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv04_3d.xml.h"
#include "nv04_driver.h"
#define COMBINER_SHIFT(in) \
- (NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT##in##_SHIFT \
- - NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_SHIFT)
+ (NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT##in##__SHIFT \
+ - NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__SHIFT)
#define COMBINER_SOURCE(reg) \
NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_##reg
#define COMBINER_INVERT \
diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c
index a114f44b22..98f2f98f1d 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c
@@ -27,7 +27,8 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
#include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv04_3d.xml.h"
#include "nv04_driver.h"
static unsigned
@@ -142,7 +143,7 @@ nv04_emit_control(struct gl_context *ctx, int emit)
int cull_mode = ctx->Polygon.CullFaceMode;
int front_face = ctx->Polygon.FrontFace;
uint32_t ctrl0 = 1 << 30 |
- NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN;
+ NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CORNER;
uint32_t ctrl1 = 0, ctrl2 = 0;
/* Color mask. */
@@ -210,7 +211,7 @@ nv04_emit_control(struct gl_context *ctx, int emit)
int cull_mode = ctx->Polygon.CullFaceMode;
int front_face = ctx->Polygon.FrontFace;
uint32_t ctrl = 1 << 30 |
- NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN;
+ NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CORNER;
/* Dithering. */
if (ctx->Color.DitherFlag)
diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
index 1fe47a30e4..5ed8b14755 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
@@ -29,7 +29,8 @@
#include "nouveau_texture.h"
#include "nouveau_util.h"
#include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv04_3d.xml.h"
#include "nv04_driver.h"
static uint32_t
diff --git a/src/mesa/drivers/dri/nouveau/nv04_surface.c b/src/mesa/drivers/dri/nouveau/nv04_surface.c
index 6d3ffa26d3..c1eda8b7f3 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_surface.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_surface.c
@@ -25,7 +25,10 @@
*/
#include "nouveau_driver.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv_m2mf.xml.h"
+#include "nv01_2d.xml.h"
+#include "nv04_3d.xml.h"
#include "nouveau_context.h"
#include "nouveau_util.h"
#include "nv04_driver.h"
@@ -283,9 +286,9 @@ nv04_surface_copy_m2mf(struct gl_context *ctx,
unsigned dst_offset = dst->offset + dy * dst->pitch + dx * dst->cpp;
unsigned src_offset = src->offset + sy * src->pitch + sx * src->cpp;
- nouveau_bo_marko(bctx, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_IN,
+ nouveau_bo_marko(bctx, m2mf, NV04_M2MF_DMA_BUFFER_IN,
src->bo, bo_flags | NOUVEAU_BO_RD);
- nouveau_bo_marko(bctx, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_OUT,
+ nouveau_bo_marko(bctx, m2mf, NV04_M2MF_DMA_BUFFER_OUT,
dst->bo, bo_flags | NOUVEAU_BO_WR);
while (h) {
@@ -293,7 +296,7 @@ nv04_surface_copy_m2mf(struct gl_context *ctx,
MARK_RING(chan, 9, 2);
- BEGIN_RING(chan, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN, 8);
+ BEGIN_RING(chan, m2mf, NV04_M2MF_OFFSET_IN, 8);
OUT_RELOCl(chan, src->bo, src_offset,
bo_flags | NOUVEAU_BO_RD);
OUT_RELOCl(chan, dst->bo, dst_offset,
@@ -488,12 +491,11 @@ nv04_surface_init(struct gl_context *ctx)
goto fail;
/* Memory to memory format. */
- ret = nouveau_grobj_alloc(chan, handle++, NV04_MEMORY_TO_MEMORY_FORMAT,
- &hw->m2mf);
+ ret = nouveau_grobj_alloc(chan, handle++, NV04_M2MF, &hw->m2mf);
if (ret)
goto fail;
- BEGIN_RING(chan, hw->m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY, 1);
+ BEGIN_RING(chan, hw->m2mf, NV04_M2MF_DMA_NOTIFY, 1);
OUT_RING (chan, hw->ntfy->handle);
/* Context surfaces 2D. */
diff --git a/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h
new file mode 100644
index 0000000000..cdc61f4573
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h
@@ -0,0 +1,1619 @@
+#ifndef NV10_3D_XML
+#define NV10_3D_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv10_3d.xml ( 18437 bytes, from 2010-11-15 15:30:21)
+- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58)
+- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46)
+- nv_3ddefs.xml ( 16394 bytes, from 2010-11-01 00:28:46)
+- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57)
+- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+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.
+*/
+
+
+#define NV10_VERTEX_ATTR_POS 0x00000000
+#define NV10_VERTEX_ATTR_COLOR0 0x00000001
+#define NV10_VERTEX_ATTR_COLOR1 0x00000002
+#define NV10_VERTEX_ATTR_TEX0 0x00000003
+#define NV10_VERTEX_ATTR_TEX1 0x00000004
+#define NV10_VERTEX_ATTR_NORMAL 0x00000005
+#define NV10_VERTEX_ATTR_WEIGHT 0x00000006
+#define NV10_VERTEX_ATTR_FOG 0x00000007
+
+
+
+#define NV11_3D_FLIP_SET_READ 0x00000120
+
+#define NV11_3D_FLIP_SET_WRITE 0x00000124
+
+#define NV11_3D_FLIP_MAX 0x00000128
+
+#define NV11_3D_FLIP_INCR_WRITE 0x0000012c
+
+#define NV11_3D_FLIP_WAIT 0x00000130
+
+#define NV10_3D_DMA_NOTIFY 0x00000180
+
+#define NV10_3D_DMA_TEXTURE0 0x00000184
+
+#define NV10_3D_DMA_TEXTURE1 0x00000188
+
+#define NV10_3D_DMA_COLOR 0x00000194
+
+#define NV10_3D_DMA_ZETA 0x00000198
+
+#define NV10_3D_RT_HORIZ 0x00000200
+#define NV10_3D_RT_HORIZ_X__MASK 0x0000ffff
+#define NV10_3D_RT_HORIZ_X__SHIFT 0
+#define NV10_3D_RT_HORIZ_W__MASK 0xffff0000
+#define NV10_3D_RT_HORIZ_W__SHIFT 16
+
+#define NV10_3D_RT_VERT 0x00000204
+#define NV10_3D_RT_VERT_Y__MASK 0x0000ffff
+#define NV10_3D_RT_VERT_Y__SHIFT 0
+#define NV10_3D_RT_VERT_H__MASK 0xffff0000
+#define NV10_3D_RT_VERT_H__SHIFT 16
+
+#define NV10_3D_RT_FORMAT 0x00000208
+#define NV10_3D_RT_FORMAT_TYPE__MASK 0x00000f00
+#define NV10_3D_RT_FORMAT_TYPE__SHIFT 8
+#define NV10_3D_RT_FORMAT_TYPE_LINEAR 0x00000100
+#define NV10_3D_RT_FORMAT_TYPE_SWIZZLED 0x00000200
+#define NV10_3D_RT_FORMAT_DEPTH__MASK 0x00000030
+#define NV10_3D_RT_FORMAT_DEPTH__SHIFT 4
+#define NV10_3D_RT_FORMAT_DEPTH_Z24S8 0x00000000
+#define NV10_3D_RT_FORMAT_DEPTH_Z16 0x00000010
+#define NV10_3D_RT_FORMAT_COLOR__MASK 0x0000000f
+#define NV10_3D_RT_FORMAT_COLOR__SHIFT 0
+#define NV10_3D_RT_FORMAT_COLOR_R5G6B5 0x00000003
+#define NV10_3D_RT_FORMAT_COLOR_X8R8G8B8 0x00000005
+#define NV10_3D_RT_FORMAT_COLOR_A8R8G8B8 0x00000008
+#define NV10_3D_RT_FORMAT_COLOR_B8 0x00000009
+
+#define NV10_3D_RT_PITCH 0x0000020c
+#define NV10_3D_RT_PITCH_COLOR_PITCH__MASK 0x0000ffff
+#define NV10_3D_RT_PITCH_COLOR_PITCH__SHIFT 0
+#define NV10_3D_RT_PITCH_ZETA_PITCH__MASK 0xffff0000
+#define NV10_3D_RT_PITCH_ZETA_PITCH__SHIFT 16
+
+#define NV10_3D_COLOR_OFFSET 0x00000210
+
+#define NV10_3D_ZETA_OFFSET 0x00000214
+
+#define NV10_3D_UNK0290 0x00000290
+
+#define NV10_3D_VIEWPORT_CLIP_MODE 0x000002b4
+
+#define NV10_3D_VIEWPORT_CLIP_HORIZ(i0) (0x000002c0 + 0x4*(i0))
+#define NV10_3D_VIEWPORT_CLIP_HORIZ__ESIZE 0x00000004
+#define NV10_3D_VIEWPORT_CLIP_HORIZ__LEN 0x00000008
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__MASK 0x000007ff
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__SHIFT 0
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_LEFT_ENABLE 0x00000800
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__MASK 0x07ff0000
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__SHIFT 16
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_RIGHT_ENABLE 0x08000000
+
+#define NV10_3D_VIEWPORT_CLIP_VERT(i0) (0x000002e0 + 0x4*(i0))
+#define NV10_3D_VIEWPORT_CLIP_VERT__ESIZE 0x00000004
+#define NV10_3D_VIEWPORT_CLIP_VERT__LEN 0x00000008
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_T__MASK 0x000007ff
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_T__SHIFT 0
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_TOP_ENABLE 0x00000800
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_B__MASK 0x07ff0000
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_B__SHIFT 16
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_BOTTOM_ENABLE 0x08000000
+
+#define NV10_3D_ALPHA_FUNC_ENABLE 0x00000300
+
+#define NV10_3D_BLEND_FUNC_ENABLE 0x00000304
+
+#define NV10_3D_CULL_FACE_ENABLE 0x00000308
+
+#define NV10_3D_DEPTH_TEST_ENABLE 0x0000030c
+
+#define NV10_3D_DITHER_ENABLE 0x00000310
+
+#define NV10_3D_LIGHTING_ENABLE 0x00000314
+
+#define NV10_3D_POINT_PARAMETERS_ENABLE 0x00000318
+
+#define NV10_3D_POINT_SMOOTH_ENABLE 0x0000031c
+
+#define NV10_3D_LINE_SMOOTH_ENABLE 0x00000320
+
+#define NV10_3D_POLYGON_SMOOTH_ENABLE 0x00000324
+
+#define NV10_3D_STENCIL_ENABLE 0x0000032c
+
+#define NV10_3D_POLYGON_OFFSET_POINT_ENABLE 0x00000330
+
+#define NV10_3D_POLYGON_OFFSET_LINE_ENABLE 0x00000334
+
+#define NV10_3D_POLYGON_OFFSET_FILL_ENABLE 0x00000338
+
+#define NV10_3D_ALPHA_FUNC_FUNC 0x0000033c
+#define NV10_3D_ALPHA_FUNC_FUNC_NEVER 0x00000200
+#define NV10_3D_ALPHA_FUNC_FUNC_LESS 0x00000201
+#define NV10_3D_ALPHA_FUNC_FUNC_EQUAL 0x00000202
+#define NV10_3D_ALPHA_FUNC_FUNC_LEQUAL 0x00000203
+#define NV10_3D_ALPHA_FUNC_FUNC_GREATER 0x00000204
+#define NV10_3D_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205
+#define NV10_3D_ALPHA_FUNC_FUNC_GEQUAL 0x00000206
+#define NV10_3D_ALPHA_FUNC_FUNC_ALWAYS 0x00000207
+
+#define NV10_3D_ALPHA_FUNC_REF 0x00000340
+
+#define NV10_3D_BLEND_FUNC_SRC 0x00000344
+#define NV10_3D_BLEND_FUNC_SRC_ZERO 0x00000000
+#define NV10_3D_BLEND_FUNC_SRC_ONE 0x00000001
+#define NV10_3D_BLEND_FUNC_SRC_SRC_COLOR 0x00000300
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301
+#define NV10_3D_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303
+#define NV10_3D_BLEND_FUNC_SRC_DST_ALPHA 0x00000304
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305
+#define NV10_3D_BLEND_FUNC_SRC_DST_COLOR 0x00000306
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307
+#define NV10_3D_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308
+#define NV10_3D_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002
+#define NV10_3D_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004
+
+#define NV10_3D_BLEND_FUNC_DST 0x00000348
+#define NV10_3D_BLEND_FUNC_DST_ZERO 0x00000000
+#define NV10_3D_BLEND_FUNC_DST_ONE 0x00000001
+#define NV10_3D_BLEND_FUNC_DST_SRC_COLOR 0x00000300
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301
+#define NV10_3D_BLEND_FUNC_DST_SRC_ALPHA 0x00000302
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303
+#define NV10_3D_BLEND_FUNC_DST_DST_ALPHA 0x00000304
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305
+#define NV10_3D_BLEND_FUNC_DST_DST_COLOR 0x00000306
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307
+#define NV10_3D_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308
+#define NV10_3D_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002
+#define NV10_3D_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004
+
+#define NV10_3D_BLEND_COLOR 0x0000034c
+#define NV10_3D_BLEND_COLOR_B__MASK 0x000000ff
+#define NV10_3D_BLEND_COLOR_B__SHIFT 0
+#define NV10_3D_BLEND_COLOR_G__MASK 0x0000ff00
+#define NV10_3D_BLEND_COLOR_G__SHIFT 8
+#define NV10_3D_BLEND_COLOR_R__MASK 0x00ff0000
+#define NV10_3D_BLEND_COLOR_R__SHIFT 16
+#define NV10_3D_BLEND_COLOR_A__MASK 0xff000000
+#define NV10_3D_BLEND_COLOR_A__SHIFT 24
+
+#define NV10_3D_BLEND_EQUATION 0x00000350
+#define NV10_3D_BLEND_EQUATION_FUNC_ADD 0x00008006
+#define NV10_3D_BLEND_EQUATION_MIN 0x00008007
+#define NV10_3D_BLEND_EQUATION_MAX 0x00008008
+#define NV10_3D_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a
+#define NV10_3D_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b
+
+#define NV10_3D_DEPTH_FUNC 0x00000354
+#define NV10_3D_DEPTH_FUNC_NEVER 0x00000200
+#define NV10_3D_DEPTH_FUNC_LESS 0x00000201
+#define NV10_3D_DEPTH_FUNC_EQUAL 0x00000202
+#define NV10_3D_DEPTH_FUNC_LEQUAL 0x00000203
+#define NV10_3D_DEPTH_FUNC_GREATER 0x00000204
+#define NV10_3D_DEPTH_FUNC_NOTEQUAL 0x00000205
+#define NV10_3D_DEPTH_FUNC_GEQUAL 0x00000206
+#define NV10_3D_DEPTH_FUNC_ALWAYS 0x00000207
+
+#define NV10_3D_COLOR_MASK 0x00000358
+#define NV10_3D_COLOR_MASK_B 0x00000001
+#define NV10_3D_COLOR_MASK_G 0x00000100
+#define NV10_3D_COLOR_MASK_R 0x00010000
+#define NV10_3D_COLOR_MASK_A 0x01000000
+
+#define NV10_3D_DEPTH_WRITE_ENABLE 0x0000035c
+
+#define NV10_3D_STENCIL_MASK 0x00000360
+
+#define NV10_3D_STENCIL_FUNC_FUNC 0x00000364
+#define NV10_3D_STENCIL_FUNC_FUNC_NEVER 0x00000200
+#define NV10_3D_STENCIL_FUNC_FUNC_LESS 0x00000201
+#define NV10_3D_STENCIL_FUNC_FUNC_EQUAL 0x00000202
+#define NV10_3D_STENCIL_FUNC_FUNC_LEQUAL 0x00000203
+#define NV10_3D_STENCIL_FUNC_FUNC_GREATER 0x00000204
+#define NV10_3D_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205
+#define NV10_3D_STENCIL_FUNC_FUNC_GEQUAL 0x00000206
+#define NV10_3D_STENCIL_FUNC_FUNC_ALWAYS 0x00000207
+
+#define NV10_3D_STENCIL_FUNC_REF 0x00000368
+
+#define NV10_3D_STENCIL_FUNC_MASK 0x0000036c
+
+#define NV10_3D_STENCIL_OP_FAIL 0x00000370
+#define NV10_3D_STENCIL_OP_FAIL_ZERO 0x00000000
+#define NV10_3D_STENCIL_OP_FAIL_INVERT 0x0000150a
+#define NV10_3D_STENCIL_OP_FAIL_KEEP 0x00001e00
+#define NV10_3D_STENCIL_OP_FAIL_REPLACE 0x00001e01
+#define NV10_3D_STENCIL_OP_FAIL_INCR 0x00001e02
+#define NV10_3D_STENCIL_OP_FAIL_DECR 0x00001e03
+#define NV10_3D_STENCIL_OP_FAIL_INCR_WRAP 0x00008507
+#define NV10_3D_STENCIL_OP_FAIL_DECR_WRAP 0x00008508
+
+#define NV10_3D_STENCIL_OP_ZFAIL 0x00000374
+#define NV10_3D_STENCIL_OP_ZFAIL_ZERO 0x00000000
+#define NV10_3D_STENCIL_OP_ZFAIL_INVERT 0x0000150a
+#define NV10_3D_STENCIL_OP_ZFAIL_KEEP 0x00001e00
+#define NV10_3D_STENCIL_OP_ZFAIL_REPLACE 0x00001e01
+#define NV10_3D_STENCIL_OP_ZFAIL_INCR 0x00001e02
+#define NV10_3D_STENCIL_OP_ZFAIL_DECR 0x00001e03
+#define NV10_3D_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507
+#define NV10_3D_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508
+
+#define NV10_3D_STENCIL_OP_ZPASS 0x00000378
+#define NV10_3D_STENCIL_OP_ZPASS_ZERO 0x00000000
+#define NV10_3D_STENCIL_OP_ZPASS_INVERT 0x0000150a
+#define NV10_3D_STENCIL_OP_ZPASS_KEEP 0x00001e00
+#define NV10_3D_STENCIL_OP_ZPASS_REPLACE 0x00001e01
+#define NV10_3D_STENCIL_OP_ZPASS_INCR 0x00001e02
+#define NV10_3D_STENCIL_OP_ZPASS_DECR 0x00001e03
+#define NV10_3D_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507
+#define NV10_3D_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508
+
+#define NV10_3D_SHADE_MODEL 0x0000037c
+#define NV10_3D_SHADE_MODEL_FLAT 0x00001d00
+#define NV10_3D_SHADE_MODEL_SMOOTH 0x00001d01
+
+#define NV10_3D_LINE_WIDTH 0x00000380
+
+#define NV10_3D_POLYGON_OFFSET_FACTOR 0x00000384
+
+#define NV10_3D_POLYGON_OFFSET_UNITS 0x00000388
+
+#define NV10_3D_POLYGON_MODE_FRONT 0x0000038c
+#define NV10_3D_POLYGON_MODE_FRONT_POINT 0x00001b00
+#define NV10_3D_POLYGON_MODE_FRONT_LINE 0x00001b01
+#define NV10_3D_POLYGON_MODE_FRONT_FILL 0x00001b02
+
+#define NV10_3D_POLYGON_MODE_BACK 0x00000390
+#define NV10_3D_POLYGON_MODE_BACK_POINT 0x00001b00
+#define NV10_3D_POLYGON_MODE_BACK_LINE 0x00001b01
+#define NV10_3D_POLYGON_MODE_BACK_FILL 0x00001b02
+
+#define NV10_3D_DEPTH_RANGE_NEAR 0x00000394
+
+#define NV10_3D_DEPTH_RANGE_FAR 0x00000398
+
+#define NV10_3D_CULL_FACE 0x0000039c
+#define NV10_3D_CULL_FACE_FRONT 0x00000404
+#define NV10_3D_CULL_FACE_BACK 0x00000405
+#define NV10_3D_CULL_FACE_FRONT_AND_BACK 0x00000408
+
+#define NV10_3D_FRONT_FACE 0x000003a0
+#define NV10_3D_FRONT_FACE_CW 0x00000900
+#define NV10_3D_FRONT_FACE_CCW 0x00000901
+
+
+#define NV10_3D_VERTEX_POS_3F 0x00000c00
+
+
+#define NV10_3D_VERTEX_POS_3F_X 0x00000c00
+
+#define NV10_3D_VERTEX_POS_3F_Y 0x00000c04
+
+#define NV10_3D_VERTEX_POS_3F_Z 0x00000c08
+
+#define NV10_3D_VERTEX_POS_4F 0x00000c18
+
+
+#define NV10_3D_VERTEX_POS_4F_X 0x00000c18
+
+#define NV10_3D_VERTEX_POS_4F_Y 0x00000c1c
+
+#define NV10_3D_VERTEX_POS_4F_Z 0x00000c20
+
+#define NV10_3D_VERTEX_POS_4F_W 0x00000c24
+
+#define NV10_3D_VERTEX_NOR_3F 0x00000c30
+
+
+#define NV10_3D_VERTEX_NOR_3F_X 0x00000c30
+
+#define NV10_3D_VERTEX_NOR_3F_Y 0x00000c34
+
+#define NV10_3D_VERTEX_NOR_3F_Z 0x00000c38
+
+#define NV10_3D_VERTEX_NOR_3I 0x00000c30
+
+
+#define NV10_3D_VERTEX_NOR_3I_XY 0x00000c30
+#define NV10_3D_VERTEX_NOR_3I_XY_X__MASK 0x0000ffff
+#define NV10_3D_VERTEX_NOR_3I_XY_X__SHIFT 0
+#define NV10_3D_VERTEX_NOR_3I_XY_Y__MASK 0xffff0000
+#define NV10_3D_VERTEX_NOR_3I_XY_Y__SHIFT 16
+
+#define NV10_3D_VERTEX_NOR_3I_Z 0x00000c34
+#define NV10_3D_VERTEX_NOR_3I_Z_Z__MASK 0x0000ffff
+#define NV10_3D_VERTEX_NOR_3I_Z_Z__SHIFT 0
+
+#define NV10_3D_VERTEX_COL_4F 0x00000c50
+
+
+#define NV10_3D_VERTEX_COL_4F_R 0x00000c50
+
+#define NV10_3D_VERTEX_COL_4F_G 0x00000c54
+
+#define NV10_3D_VERTEX_COL_4F_B 0x00000c58
+
+#define NV10_3D_VERTEX_COL_4F_A 0x00000c5c
+
+#define NV10_3D_VERTEX_COL_3F 0x00000c60
+
+
+#define NV10_3D_VERTEX_COL_3F_R 0x00000c60
+
+#define NV10_3D_VERTEX_COL_3F_G 0x00000c64
+
+#define NV10_3D_VERTEX_COL_3F_B 0x00000c68
+
+#define NV10_3D_VERTEX_COL_4I 0x00000c6c
+#define NV10_3D_VERTEX_COL_4I_R__MASK 0x000000ff
+#define NV10_3D_VERTEX_COL_4I_R__SHIFT 0
+#define NV10_3D_VERTEX_COL_4I_G__MASK 0x0000ff00
+#define NV10_3D_VERTEX_COL_4I_G__SHIFT 8
+#define NV10_3D_VERTEX_COL_4I_B__MASK 0x00ff0000
+#define NV10_3D_VERTEX_COL_4I_B__SHIFT 16
+#define NV10_3D_VERTEX_COL_4I_A__MASK 0xff000000
+#define NV10_3D_VERTEX_COL_4I_A__SHIFT 24
+
+#define NV10_3D_VERTEX_COL2_3F 0x00000c80
+
+
+#define NV10_3D_VERTEX_COL2_3F_R 0x00000c80
+
+#define NV10_3D_VERTEX_COL2_3F_G 0x00000c84
+
+#define NV10_3D_VERTEX_COL2_3F_B 0x00000c88
+
+#define NV10_3D_VERTEX_COL2_3I 0x00000c8c
+#define NV10_3D_VERTEX_COL2_3I_R__MASK 0x000000ff
+#define NV10_3D_VERTEX_COL2_3I_R__SHIFT 0
+#define NV10_3D_VERTEX_COL2_3I_G__MASK 0x0000ff00
+#define NV10_3D_VERTEX_COL2_3I_G__SHIFT 8
+#define NV10_3D_VERTEX_COL2_3I_B__MASK 0x00ff0000
+#define NV10_3D_VERTEX_COL2_3I_B__SHIFT 16
+
+#define NV10_3D_VERTEX_TX0_2F 0x00000c90
+
+
+#define NV10_3D_VERTEX_TX0_2F_S 0x00000c90
+
+#define NV10_3D_VERTEX_TX0_2F_T 0x00000c94
+
+#define NV10_3D_VERTEX_TX0_2I 0x00000c98
+#define NV10_3D_VERTEX_TX0_2I_S__MASK 0x0000ffff
+#define NV10_3D_VERTEX_TX0_2I_S__SHIFT 0
+#define NV10_3D_VERTEX_TX0_2I_T__MASK 0xffff0000
+#define NV10_3D_VERTEX_TX0_2I_T__SHIFT 16
+
+#define NV10_3D_VERTEX_TX0_4F 0x00000ca0
+
+
+#define NV10_3D_VERTEX_TX0_4F_S 0x00000ca0
+
+#define NV10_3D_VERTEX_TX0_4F_T 0x00000ca4
+
+#define NV10_3D_VERTEX_TX0_4F_R 0x00000ca8
+
+#define NV10_3D_VERTEX_TX0_4F_Q 0x00000cac
+
+#define NV10_3D_VERTEX_TX0_4I 0x00000cb0
+
+
+#define NV10_3D_VERTEX_TX0_4I_ST 0x00000cb0
+#define NV10_3D_VERTEX_TX0_4I_ST_S__MASK 0x0000ffff
+#define NV10_3D_VERTEX_TX0_4I_ST_S__SHIFT 0
+#define NV10_3D_VERTEX_TX0_4I_ST_T__MASK 0xffff0000
+#define NV10_3D_VERTEX_TX0_4I_ST_T__SHIFT 16
+
+#define NV10_3D_VERTEX_TX0_4I_RQ 0x00000cb4
+#define NV10_3D_VERTEX_TX0_4I_RQ_R__MASK 0x0000ffff
+#define NV10_3D_VERTEX_TX0_4I_RQ_R__SHIFT 0
+#define NV10_3D_VERTEX_TX0_4I_RQ_Q__MASK 0xffff0000
+#define NV10_3D_VERTEX_TX0_4I_RQ_Q__SHIFT 16
+
+#define NV10_3D_VERTEX_TX1_2F 0x00000cb8
+
+
+#define NV10_3D_VERTEX_TX1_2F_S 0x00000cb8
+
+#define NV10_3D_VERTEX_TX1_2F_T 0x00000cbc
+
+#define NV10_3D_VERTEX_TX1_2I 0x00000cc0
+#define NV10_3D_VERTEX_TX1_2I_S__MASK 0x0000ffff
+#define NV10_3D_VERTEX_TX1_2I_S__SHIFT 0
+#define NV10_3D_VERTEX_TX1_2I_T__MASK 0xffff0000
+#define NV10_3D_VERTEX_TX1_2I_T__SHIFT 16
+
+#define NV10_3D_VERTEX_TX1_4F 0x00000cc8
+
+
+#define NV10_3D_VERTEX_TX1_4F_S 0x00000cc8
+
+#define NV10_3D_VERTEX_TX1_4F_T 0x00000ccc
+
+#define NV10_3D_VERTEX_TX1_4F_R 0x00000cd0
+
+#define NV10_3D_VERTEX_TX1_4F_Q 0x00000cd4
+
+#define NV10_3D_VERTEX_TX1_4I 0x00000cd8
+
+
+#define NV10_3D_VERTEX_TX1_4I_ST 0x00000cd8
+#define NV10_3D_VERTEX_TX1_4I_ST_S__MASK 0x0000ffff
+#define NV10_3D_VERTEX_TX1_4I_ST_S__SHIFT 0
+#define NV10_3D_VERTEX_TX1_4I_ST_T__MASK 0xffff0000
+#define NV10_3D_VERTEX_TX1_4I_ST_T__SHIFT 16
+
+#define NV10_3D_VERTEX_TX1_4I_RQ 0x00000cdc
+#define NV10_3D_VERTEX_TX1_4I_RQ_R__MASK 0x0000ffff
+#define NV10_3D_VERTEX_TX1_4I_RQ_R__SHIFT 0
+#define NV10_3D_VERTEX_TX1_4I_RQ_Q__MASK 0xffff0000
+#define NV10_3D_VERTEX_TX1_4I_RQ_Q__SHIFT 16
+
+#define NV10_3D_VERTEX_FOG_1F 0x00000ce0
+
+#define NV10_3D_VERTEX_WGH_1F 0x00000ce4
+
+#define NV10_3D_EDGEFLAG_ENABLE 0x00000cec
+
+
+#define NV10_3D_DMA_VTXBUF 0x0000018c
+
+#define NV10_3D_VTXBUF_VALIDATE 0x00000cf0
+
+
+#define NV10_3D_VTXBUF_OFFSET(i0) (0x00000d00 + 0x8*(i0))
+
+#define NV10_3D_VTXBUF_FMT(i0) (0x00000d04 + 0x8*(i0))
+#define NV10_3D_VTXBUF_FMT_TYPE__MASK 0x0000000f
+#define NV10_3D_VTXBUF_FMT_TYPE__SHIFT 0
+#define NV10_3D_VTXBUF_FMT_TYPE_B8G8R8A8_UNORM 0x00000000
+#define NV10_3D_VTXBUF_FMT_TYPE_V16_SNORM 0x00000001
+#define NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT 0x00000002
+#define NV10_3D_VTXBUF_FMT_TYPE_U8_UNORM 0x00000004
+#define NV10_3D_VTXBUF_FMT_FIELDS__MASK 0x000000f0
+#define NV10_3D_VTXBUF_FMT_FIELDS__SHIFT 4
+#define NV10_3D_VTXBUF_FMT_STRIDE__MASK 0x0000ff00
+#define NV10_3D_VTXBUF_FMT_STRIDE__SHIFT 8
+#define NV10_3D_VTXBUF_FMT_HOMOGENEOUS 0x01000000
+
+#define NV10_3D_VERTEX_BEGIN_END 0x00000dfc
+#define NV10_3D_VERTEX_BEGIN_END_STOP 0x00000000
+#define NV10_3D_VERTEX_BEGIN_END_POINTS 0x00000001
+#define NV10_3D_VERTEX_BEGIN_END_LINES 0x00000002
+#define NV10_3D_VERTEX_BEGIN_END_LINE_LOOP 0x00000003
+#define NV10_3D_VERTEX_BEGIN_END_LINE_STRIP 0x00000004
+#define NV10_3D_VERTEX_BEGIN_END_TRIANGLES 0x00000005
+#define NV10_3D_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006
+#define NV10_3D_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007
+#define NV10_3D_VERTEX_BEGIN_END_QUADS 0x00000008
+#define NV10_3D_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009
+#define NV10_3D_VERTEX_BEGIN_END_POLYGON 0x0000000a
+
+#define NV10_3D_VTXBUF_ELEMENT_U16 0x00000e00
+#define NV10_3D_VTXBUF_ELEMENT_U16_I0__MASK 0x0000ffff
+#define NV10_3D_VTXBUF_ELEMENT_U16_I0__SHIFT 0
+#define NV10_3D_VTXBUF_ELEMENT_U16_I1__MASK 0xffff0000
+#define NV10_3D_VTXBUF_ELEMENT_U16_I1__SHIFT 16
+
+#define NV10_3D_VTXBUF_ELEMENT_U32 0x00001100
+
+#define NV10_3D_VTXBUF_BEGIN_END 0x000013fc
+#define NV10_3D_VTXBUF_BEGIN_END_STOP 0x00000000
+#define NV10_3D_VTXBUF_BEGIN_END_POINTS 0x00000001
+#define NV10_3D_VTXBUF_BEGIN_END_LINES 0x00000002
+#define NV10_3D_VTXBUF_BEGIN_END_LINE_LOOP 0x00000003
+#define NV10_3D_VTXBUF_BEGIN_END_LINE_STRIP 0x00000004
+#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLES 0x00000005
+#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLE_STRIP 0x00000006
+#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLE_FAN 0x00000007
+#define NV10_3D_VTXBUF_BEGIN_END_QUADS 0x00000008
+#define NV10_3D_VTXBUF_BEGIN_END_QUAD_STRIP 0x00000009
+#define NV10_3D_VTXBUF_BEGIN_END_POLYGON 0x0000000a
+
+#define NV10_3D_VTXBUF_BATCH 0x00001400
+#define NV10_3D_VTXBUF_BATCH_FIRST__MASK 0x0000ffff
+#define NV10_3D_VTXBUF_BATCH_FIRST__SHIFT 0
+#define NV10_3D_VTXBUF_BATCH_LAST__MASK 0xff000000
+#define NV10_3D_VTXBUF_BATCH_LAST__SHIFT 24
+
+#define NV10_3D_VTXBUF_DATA 0x00001800
+
+
+#define NV10_3D_VERTEX_WEIGHT_ENABLE 0x00000328
+
+#define NV10_3D_VIEW_MATRIX_ENABLE 0x000003e8
+#define NV10_3D_VIEW_MATRIX_ENABLE_MODELVIEW1 0x00000001
+#define NV10_3D_VIEW_MATRIX_ENABLE_MODELVIEW0 0x00000002
+#define NV10_3D_VIEW_MATRIX_ENABLE_PROJECTION 0x00000004
+
+
+#define NV10_3D_MODELVIEW_MATRIX(i0, i1) (0x00000400 + 0x40*(i0) + 0x4*(i1))
+#define NV10_3D_MODELVIEW_MATRIX__ESIZE 0x00000004
+#define NV10_3D_MODELVIEW_MATRIX__LEN 0x00000010
+
+#define NV10_3D_INVERSE_MODELVIEW_MATRIX(i0, i1) (0x00000480 + 0x40*(i0) + 0x4*(i1))
+#define NV10_3D_INVERSE_MODELVIEW_MATRIX__ESIZE 0x00000004
+#define NV10_3D_INVERSE_MODELVIEW_MATRIX__LEN 0x0000000c
+
+#define NV10_3D_PROJECTION_MATRIX(i0) (0x00000500 + 0x4*(i0))
+#define NV10_3D_PROJECTION_MATRIX__ESIZE 0x00000004
+#define NV10_3D_PROJECTION_MATRIX__LEN 0x00000010
+
+#define NV10_3D_VIEWPORT_TRANSLATE 0x000006e8
+
+
+#define NV10_3D_VIEWPORT_TRANSLATE_X 0x000006e8
+
+#define NV10_3D_VIEWPORT_TRANSLATE_Y 0x000006ec
+
+#define NV10_3D_VIEWPORT_TRANSLATE_Z 0x000006f0
+
+#define NV10_3D_VIEWPORT_TRANSLATE_W 0x000006f4
+
+
+#define NV10_3D_LIGHT_MODEL 0x00000294
+#define NV10_3D_LIGHT_MODEL_VERTEX_SPECULAR 0x00000001
+#define NV10_3D_LIGHT_MODEL_SEPARATE_SPECULAR 0x00000002
+#define NV10_3D_LIGHT_MODEL_LOCAL_VIEWER 0x00010000
+
+#define NV10_3D_COLOR_MATERIAL 0x00000298
+#define NV10_3D_COLOR_MATERIAL_EMISSION 0x00000001
+#define NV10_3D_COLOR_MATERIAL_AMBIENT 0x00000002
+#define NV10_3D_COLOR_MATERIAL_DIFFUSE 0x00000004
+#define NV10_3D_COLOR_MATERIAL_SPECULAR 0x00000008
+
+#define NV10_3D_MATERIAL_FACTOR 0x000003a8
+
+
+#define NV10_3D_MATERIAL_FACTOR_R 0x000003a8
+
+#define NV10_3D_MATERIAL_FACTOR_G 0x000003ac
+
+#define NV10_3D_MATERIAL_FACTOR_B 0x000003b0
+
+#define NV10_3D_MATERIAL_FACTOR_A 0x000003b4
+
+#define NV10_3D_NORMALIZE_ENABLE 0x000003a4
+
+#define NV10_3D_SEPARATE_SPECULAR_ENABLE 0x000003b8
+
+#define NV10_3D_ENABLED_LIGHTS 0x000003bc
+#define NV10_3D_ENABLED_LIGHTS_0__MASK 0x00000003
+#define NV10_3D_ENABLED_LIGHTS_0__SHIFT 0
+#define NV10_3D_ENABLED_LIGHTS_0_DISABLED 0x00000000
+#define NV10_3D_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001
+#define NV10_3D_ENABLED_LIGHTS_0_POSITIONAL 0x00000002
+#define NV10_3D_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003
+#define NV10_3D_ENABLED_LIGHTS_1__MASK 0x0000000c
+#define NV10_3D_ENABLED_LIGHTS_1__SHIFT 2
+#define NV10_3D_ENABLED_LIGHTS_1_DISABLED 0x00000000
+#define NV10_3D_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004
+#define NV10_3D_ENABLED_LIGHTS_1_POSITIONAL 0x00000008
+#define NV10_3D_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c
+#define NV10_3D_ENABLED_LIGHTS_2__MASK 0x00000030
+#define NV10_3D_ENABLED_LIGHTS_2__SHIFT 4
+#define NV10_3D_ENABLED_LIGHTS_2_DISABLED 0x00000000
+#define NV10_3D_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010
+#define NV10_3D_ENABLED_LIGHTS_2_POSITIONAL 0x00000020
+#define NV10_3D_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030
+#define NV10_3D_ENABLED_LIGHTS_3__MASK 0x000000c0
+#define NV10_3D_ENABLED_LIGHTS_3__SHIFT 6
+#define NV10_3D_ENABLED_LIGHTS_3_DISABLED 0x00000000
+#define NV10_3D_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040
+#define NV10_3D_ENABLED_LIGHTS_3_POSITIONAL 0x00000080
+#define NV10_3D_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0
+#define NV10_3D_ENABLED_LIGHTS_4__MASK 0x00000300
+#define NV10_3D_ENABLED_LIGHTS_4__SHIFT 8
+#define NV10_3D_ENABLED_LIGHTS_4_DISABLED 0x00000000
+#define NV10_3D_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100
+#define NV10_3D_ENABLED_LIGHTS_4_POSITIONAL 0x00000200
+#define NV10_3D_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300
+#define NV10_3D_ENABLED_LIGHTS_5__MASK 0x00000c00
+#define NV10_3D_ENABLED_LIGHTS_5__SHIFT 10
+#define NV10_3D_ENABLED_LIGHTS_5_DISABLED 0x00000000
+#define NV10_3D_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400
+#define NV10_3D_ENABLED_LIGHTS_5_POSITIONAL 0x00000800
+#define NV10_3D_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00
+#define NV10_3D_ENABLED_LIGHTS_6__MASK 0x00003000
+#define NV10_3D_ENABLED_LIGHTS_6__SHIFT 12
+#define NV10_3D_ENABLED_LIGHTS_6_DISABLED 0x00000000
+#define NV10_3D_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000
+#define NV10_3D_ENABLED_LIGHTS_6_POSITIONAL 0x00002000
+#define NV10_3D_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000
+#define NV10_3D_ENABLED_LIGHTS_7__MASK 0x0000c000
+#define NV10_3D_ENABLED_LIGHTS_7__SHIFT 14
+#define NV10_3D_ENABLED_LIGHTS_7_DISABLED 0x00000000
+#define NV10_3D_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000
+#define NV10_3D_ENABLED_LIGHTS_7_POSITIONAL 0x00008000
+#define NV10_3D_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000
+
+#define NV10_3D_MATERIAL_SHININESS(i0) (0x000006a0 + 0x4*(i0))
+#define NV10_3D_MATERIAL_SHININESS__ESIZE 0x00000004
+#define NV10_3D_MATERIAL_SHININESS__LEN 0x00000006
+
+#define NV10_3D_LIGHT_MODEL_AMBIENT 0x000006c4
+
+
+#define NV10_3D_LIGHT_MODEL_AMBIENT_R 0x000006c4
+
+#define NV10_3D_LIGHT_MODEL_AMBIENT_G 0x000006c8
+
+#define NV10_3D_LIGHT_MODEL_AMBIENT_B 0x000006cc
+
+#define NV10_3D_LIGHT(i0) (0x00000800 + 0x80*(i0))
+#define NV10_3D_LIGHT__ESIZE 0x00000080
+#define NV10_3D_LIGHT__LEN 0x00000008
+
+#define NV10_3D_LIGHT_AMBIENT(i0) (0x00000800 + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_AMBIENT_R(i0) (0x00000800 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_AMBIENT_G(i0) (0x00000804 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_AMBIENT_B(i0) (0x00000808 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIFFUSE(i0) (0x0000080c + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_DIFFUSE_R(i0) (0x0000080c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIFFUSE_G(i0) (0x00000810 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIFFUSE_B(i0) (0x00000814 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_SPECULAR(i0) (0x00000818 + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_SPECULAR_R(i0) (0x00000818 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_SPECULAR_G(i0) (0x0000081c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_SPECULAR_B(i0) (0x00000820 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_HALF_VECTOR(i0) (0x00000828 + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_HALF_VECTOR_X(i0) (0x00000828 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_HALF_VECTOR_Y(i0) (0x0000082c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_HALF_VECTOR_Z(i0) (0x00000830 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIRECTION(i0) (0x00000834 + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_DIRECTION_X(i0) (0x00000834 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIRECTION_Y(i0) (0x00000838 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIRECTION_Z(i0) (0x0000083c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_SPOT_CUTOFF(i0, i1) (0x00000840 + 0x80*(i0) + 0x4*(i1))
+#define NV10_3D_LIGHT_SPOT_CUTOFF__ESIZE 0x00000004
+#define NV10_3D_LIGHT_SPOT_CUTOFF__LEN 0x00000007
+
+#define NV10_3D_LIGHT_POSITION(i0) (0x0000085c + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_POSITION_X(i0) (0x0000085c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_POSITION_Y(i0) (0x00000860 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_POSITION_Z(i0) (0x00000864 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_ATTENUATION(i0) (0x00000868 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_ATTENUATION_CONSTANT(i0) (0x00000868 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_ATTENUATION_LINEAR(i0) (0x0000086c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_ATTENUATION_QUADRATIC(i0) (0x00000870 + 0x80*(i0))
+
+
+#define NV10_3D_FOG_MODE 0x0000029c
+#define NV10_3D_FOG_MODE_LINEAR 0x00002601
+#define NV10_3D_FOG_MODE_EXP 0x00000800
+#define NV10_3D_FOG_MODE_EXP_ABS 0x00000802
+#define NV10_3D_FOG_MODE_EXP2 0x00000803
+
+#define NV10_3D_FOG_COORD 0x000002a0
+#define NV10_3D_FOG_COORD_FOG 0x00000000
+#define NV10_3D_FOG_COORD_DIST_RADIAL 0x00000001
+#define NV10_3D_FOG_COORD_DIST_ORTHOGONAL 0x00000002
+#define NV10_3D_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003
+
+#define NV10_3D_FOG_ENABLE 0x000002a4
+
+#define NV10_3D_FOG_COLOR 0x000002a8
+#define NV10_3D_FOG_COLOR_R__MASK 0x000000ff
+#define NV10_3D_FOG_COLOR_R__SHIFT 0
+#define NV10_3D_FOG_COLOR_G__MASK 0x0000ff00
+#define NV10_3D_FOG_COLOR_G__SHIFT 8
+#define NV10_3D_FOG_COLOR_B__MASK 0x00ff0000
+#define NV10_3D_FOG_COLOR_B__SHIFT 16
+#define NV10_3D_FOG_COLOR_A__MASK 0xff000000
+#define NV10_3D_FOG_COLOR_A__SHIFT 24
+
+#define NV10_3D_FOG_COEFF(i0) (0x00000680 + 0x4*(i0))
+#define NV10_3D_FOG_COEFF__ESIZE 0x00000004
+#define NV10_3D_FOG_COEFF__LEN 0x00000003
+
+
+
+#define NV10_3D_TEX_GEN_MODE(i0, i1) (0x000003c0 + 0x10*(i0) + 0x4*(i1))
+#define NV10_3D_TEX_GEN_MODE__ESIZE 0x00000004
+#define NV10_3D_TEX_GEN_MODE__LEN 0x00000004
+#define NV10_3D_TEX_GEN_MODE_FALSE 0x00000000
+#define NV10_3D_TEX_GEN_MODE_EYE_LINEAR 0x00002400
+#define NV10_3D_TEX_GEN_MODE_OBJECT_LINEAR 0x00002401
+#define NV10_3D_TEX_GEN_MODE_SPHERE_MAP 0x00002402
+#define NV10_3D_TEX_GEN_MODE_NORMAL_MAP 0x00008511
+#define NV10_3D_TEX_GEN_MODE_REFLECTION_MAP 0x00008512
+
+
+#define NV10_3D_TEX_GEN_COEFF(i0, i1) (0x00000600 + 0x40*(i0) + 0x10*(i1))
+#define NV10_3D_TEX_GEN_COEFF__ESIZE 0x00000010
+#define NV10_3D_TEX_GEN_COEFF__LEN 0x00000004
+
+#define NV10_3D_TEX_GEN_COEFF_A(i0, i1) (0x00000600 + 0x40*(i0) + 0x10*(i1))
+
+#define NV10_3D_TEX_GEN_COEFF_B(i0, i1) (0x00000604 + 0x40*(i0) + 0x10*(i1))
+
+#define NV10_3D_TEX_GEN_COEFF_C(i0, i1) (0x00000608 + 0x40*(i0) + 0x10*(i1))
+
+#define NV10_3D_TEX_GEN_COEFF_D(i0, i1) (0x0000060c + 0x40*(i0) + 0x10*(i1))
+
+#define NV10_3D_TEX_MATRIX_ENABLE(i0) (0x000003e0 + 0x4*(i0))
+#define NV10_3D_TEX_MATRIX_ENABLE__ESIZE 0x00000004
+#define NV10_3D_TEX_MATRIX_ENABLE__LEN 0x00000002
+
+
+#define NV10_3D_TEX_MATRIX(i0, i1) (0x00000540 + 0x40*(i0) + 0x4*(i1))
+#define NV10_3D_TEX_MATRIX__ESIZE 0x00000004
+#define NV10_3D_TEX_MATRIX__LEN 0x00000010
+
+#define NV10_3D_TEX(i0) (0x00000000 + 0x4*(i0))
+#define NV10_3D_TEX__ESIZE 0x00000004
+#define NV10_3D_TEX__LEN 0x00000002
+
+#define NV10_3D_TEX_OFFSET(i0) (0x00000218 + 0x4*(i0))
+
+#define NV10_3D_TEX_FORMAT(i0) (0x00000220 + 0x4*(i0))
+#define NV10_3D_TEX_FORMAT_DMA0 0x00000001
+#define NV10_3D_TEX_FORMAT_DMA1 0x00000002
+#define NV10_3D_TEX_FORMAT_CUBE_MAP 0x00000004
+#define NV10_3D_TEX_FORMAT_FORMAT__MASK 0x00000f80
+#define NV10_3D_TEX_FORMAT_FORMAT__SHIFT 7
+#define NV10_3D_TEX_FORMAT_FORMAT_L8 0x00000000
+#define NV10_3D_TEX_FORMAT_FORMAT_I8 0x00000080
+#define NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5 0x00000100
+#define NV10_3D_TEX_FORMAT_FORMAT_A4R4G4B4 0x00000200
+#define NV10_3D_TEX_FORMAT_FORMAT_R5G6B5 0x00000280
+#define NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8 0x00000300
+#define NV10_3D_TEX_FORMAT_FORMAT_X8R8G8B8 0x00000380
+#define NV10_3D_TEX_FORMAT_FORMAT_INDEX8 0x00000580
+#define NV10_3D_TEX_FORMAT_FORMAT_DXT1 0x00000600
+#define NV10_3D_TEX_FORMAT_FORMAT_DXT3 0x00000700
+#define NV10_3D_TEX_FORMAT_FORMAT_DXT5 0x00000780
+#define NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00000800
+#define NV10_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT 0x00000880
+#define NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00000900
+#define NV10_3D_TEX_FORMAT_FORMAT_I8_RECT 0x00000980
+#define NV10_3D_TEX_FORMAT_MIPMAP 0x00008000
+#define NV10_3D_TEX_FORMAT_BASE_SIZE_U__MASK 0x000f0000
+#define NV10_3D_TEX_FORMAT_BASE_SIZE_U__SHIFT 16
+#define NV10_3D_TEX_FORMAT_BASE_SIZE_V__MASK 0x00f00000
+#define NV10_3D_TEX_FORMAT_BASE_SIZE_V__SHIFT 20
+#define NV10_3D_TEX_FORMAT_WRAP_S__MASK 0x0f000000
+#define NV10_3D_TEX_FORMAT_WRAP_S__SHIFT 24
+#define NV10_3D_TEX_FORMAT_WRAP_S_REPEAT 0x01000000
+#define NV10_3D_TEX_FORMAT_WRAP_S_MIRRORED_REPEAT 0x02000000
+#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP_TO_EDGE 0x03000000
+#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP_TO_BORDER 0x04000000
+#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP 0x05000000
+#define NV10_3D_TEX_FORMAT_WRAP_T__MASK 0xf0000000
+#define NV10_3D_TEX_FORMAT_WRAP_T__SHIFT 28
+#define NV10_3D_TEX_FORMAT_WRAP_T_REPEAT 0x10000000
+#define NV10_3D_TEX_FORMAT_WRAP_T_MIRRORED_REPEAT 0x20000000
+#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP_TO_EDGE 0x30000000
+#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP_TO_BORDER 0x40000000
+#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP 0x50000000
+
+#define NV10_3D_TEX_ENABLE(i0) (0x00000228 + 0x4*(i0))
+#define NV10_3D_TEX_ENABLE_CULL__MASK 0x0000000f
+#define NV10_3D_TEX_ENABLE_CULL__SHIFT 0
+#define NV10_3D_TEX_ENABLE_CULL_DISABLED 0x00000000
+#define NV10_3D_TEX_ENABLE_CULL_TEST_ALL 0x00000003
+#define NV10_3D_TEX_ENABLE_CULL_TEST_ALPHA 0x00000004
+#define NV10_3D_TEX_ENABLE_ANISOTROPY__MASK 0x00000030
+#define NV10_3D_TEX_ENABLE_ANISOTROPY__SHIFT 4
+#define NV10_3D_TEX_ENABLE_MIPMAP_MAX_LOD__MASK 0x0003c000
+#define NV10_3D_TEX_ENABLE_MIPMAP_MAX_LOD__SHIFT 14
+#define NV10_3D_TEX_ENABLE_MIPMAP_MIN_LOD__MASK 0x3c000000
+#define NV10_3D_TEX_ENABLE_MIPMAP_MIN_LOD__SHIFT 26
+#define NV10_3D_TEX_ENABLE_ENABLE 0x40000000
+
+#define NV10_3D_TEX_NPOT_PITCH(i0) (0x00000230 + 0x4*(i0))
+#define NV10_3D_TEX_NPOT_PITCH_PITCH__MASK 0xffff0000
+#define NV10_3D_TEX_NPOT_PITCH_PITCH__SHIFT 16
+
+#define NV10_3D_TEX_NPOT_SIZE(i0) (0x00000240 + 0x4*(i0))
+#define NV10_3D_TEX_NPOT_SIZE_H__MASK 0x0000ffff
+#define NV10_3D_TEX_NPOT_SIZE_H__SHIFT 0
+#define NV10_3D_TEX_NPOT_SIZE_W__MASK 0xffff0000
+#define NV10_3D_TEX_NPOT_SIZE_W__SHIFT 16
+
+#define NV10_3D_TEX_FILTER(i0) (0x00000248 + 0x4*(i0))
+#define NV10_3D_TEX_FILTER_LOD_BIAS__MASK 0x00000f00
+#define NV10_3D_TEX_FILTER_LOD_BIAS__SHIFT 8
+#define NV10_3D_TEX_FILTER_MINIFY__MASK 0x0f000000
+#define NV10_3D_TEX_FILTER_MINIFY__SHIFT 24
+#define NV10_3D_TEX_FILTER_MINIFY_NEAREST 0x01000000
+#define NV10_3D_TEX_FILTER_MINIFY_LINEAR 0x02000000
+#define NV10_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000
+#define NV10_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000
+#define NV10_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000
+#define NV10_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000
+#define NV10_3D_TEX_FILTER_MAGNIFY__MASK 0xf0000000
+#define NV10_3D_TEX_FILTER_MAGNIFY__SHIFT 28
+#define NV10_3D_TEX_FILTER_MAGNIFY_NEAREST 0x10000000
+#define NV10_3D_TEX_FILTER_MAGNIFY_LINEAR 0x20000000
+
+#define NV10_3D_TEX_PALETTE_OFFSET(i0) (0x00000250 + 0x4*(i0))
+
+
+
+#define NV10_3D_RC_IN_ALPHA(i0) (0x00000260 + 0x4*(i0))
+#define NV10_3D_RC_IN_ALPHA_D_INPUT__MASK 0x0000000f
+#define NV10_3D_RC_IN_ALPHA_D_INPUT__SHIFT 0
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_FOG 0x00000003
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f
+#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__MASK 0x00000010
+#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__SHIFT 4
+#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000
+#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING__MASK 0x000000e0
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING__SHIFT 5
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0
+#define NV10_3D_RC_IN_ALPHA_C_INPUT__MASK 0x00000f00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT__SHIFT 8
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_FOG 0x00000300
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00
+#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__MASK 0x00001000
+#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__SHIFT 12
+#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000
+#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING__MASK 0x0000e000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING__SHIFT 13
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT__MASK 0x000f0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT__SHIFT 16
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_FOG 0x00030000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000
+#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__MASK 0x00100000
+#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__SHIFT 20
+#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000
+#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING__MASK 0x00e00000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING__SHIFT 21
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT__MASK 0x0f000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT__SHIFT 24
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_FOG 0x03000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000
+#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__MASK 0x10000000
+#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__SHIFT 28
+#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000
+#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING__MASK 0xe0000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING__SHIFT 29
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000
+
+#define NV10_3D_RC_IN_RGB(i0) (0x00000268 + 0x4*(i0))
+#define NV10_3D_RC_IN_RGB_D_INPUT__MASK 0x0000000f
+#define NV10_3D_RC_IN_RGB_D_INPUT__SHIFT 0
+#define NV10_3D_RC_IN_RGB_D_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001
+#define NV10_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002
+#define NV10_3D_RC_IN_RGB_D_INPUT_FOG 0x00000003
+#define NV10_3D_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004
+#define NV10_3D_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005
+#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008
+#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009
+#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a
+#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b
+#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c
+#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d
+#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
+#define NV10_3D_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f
+#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE__MASK 0x00000010
+#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE__SHIFT 4
+#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000
+#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010
+#define NV10_3D_RC_IN_RGB_D_MAPPING__MASK 0x000000e0
+#define NV10_3D_RC_IN_RGB_D_MAPPING__SHIFT 5
+#define NV10_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020
+#define NV10_3D_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040
+#define NV10_3D_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060
+#define NV10_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
+#define NV10_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
+#define NV10_3D_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0
+#define NV10_3D_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0
+#define NV10_3D_RC_IN_RGB_C_INPUT__MASK 0x00000f00
+#define NV10_3D_RC_IN_RGB_C_INPUT__SHIFT 8
+#define NV10_3D_RC_IN_RGB_C_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100
+#define NV10_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200
+#define NV10_3D_RC_IN_RGB_C_INPUT_FOG 0x00000300
+#define NV10_3D_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400
+#define NV10_3D_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500
+#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800
+#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900
+#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00
+#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00
+#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00
+#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00
+#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV10_3D_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00
+#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE__MASK 0x00001000
+#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE__SHIFT 12
+#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000
+#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000
+#define NV10_3D_RC_IN_RGB_C_MAPPING__MASK 0x0000e000
+#define NV10_3D_RC_IN_RGB_C_MAPPING__SHIFT 13
+#define NV10_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000
+#define NV10_3D_RC_IN_RGB_B_INPUT__MASK 0x000f0000
+#define NV10_3D_RC_IN_RGB_B_INPUT__SHIFT 16
+#define NV10_3D_RC_IN_RGB_B_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000
+#define NV10_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000
+#define NV10_3D_RC_IN_RGB_B_INPUT_FOG 0x00030000
+#define NV10_3D_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000
+#define NV10_3D_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000
+#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000
+#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000
+#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000
+#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000
+#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000
+#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000
+#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
+#define NV10_3D_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000
+#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE__MASK 0x00100000
+#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE__SHIFT 20
+#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000
+#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000
+#define NV10_3D_RC_IN_RGB_B_MAPPING__MASK 0x00e00000
+#define NV10_3D_RC_IN_RGB_B_MAPPING__SHIFT 21
+#define NV10_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000
+#define NV10_3D_RC_IN_RGB_A_INPUT__MASK 0x0f000000
+#define NV10_3D_RC_IN_RGB_A_INPUT__SHIFT 24
+#define NV10_3D_RC_IN_RGB_A_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_FOG 0x03000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000
+#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE__MASK 0x10000000
+#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE__SHIFT 28
+#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000
+#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING__MASK 0xe0000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING__SHIFT 29
+#define NV10_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000
+
+#define NV10_3D_RC_COLOR(i0) (0x00000270 + 0x4*(i0))
+#define NV10_3D_RC_COLOR_B__MASK 0x000000ff
+#define NV10_3D_RC_COLOR_B__SHIFT 0
+#define NV10_3D_RC_COLOR_G__MASK 0x0000ff00
+#define NV10_3D_RC_COLOR_G__SHIFT 8
+#define NV10_3D_RC_COLOR_R__MASK 0x00ff0000
+#define NV10_3D_RC_COLOR_R__SHIFT 16
+#define NV10_3D_RC_COLOR_A__MASK 0xff000000
+#define NV10_3D_RC_COLOR_A__SHIFT 24
+
+#define NV10_3D_RC_OUT_ALPHA(i0) (0x00000278 + 0x4*(i0))
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT__MASK 0x0000000f
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT__SHIFT 0
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT__MASK 0x000000f0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT__SHIFT 4
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT__MASK 0x00000f00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT__SHIFT 8
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00
+#define NV10_3D_RC_OUT_ALPHA_CD_DOT_PRODUCT 0x00001000
+#define NV10_3D_RC_OUT_ALPHA_AB_DOT_PRODUCT 0x00002000
+#define NV10_3D_RC_OUT_ALPHA_MUX_SUM 0x00004000
+#define NV10_3D_RC_OUT_ALPHA_BIAS__MASK 0x00008000
+#define NV10_3D_RC_OUT_ALPHA_BIAS__SHIFT 15
+#define NV10_3D_RC_OUT_ALPHA_BIAS_NONE 0x00000000
+#define NV10_3D_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000
+#define NV10_3D_RC_OUT_ALPHA_SCALE__MASK 0x00030000
+#define NV10_3D_RC_OUT_ALPHA_SCALE__SHIFT 16
+#define NV10_3D_RC_OUT_ALPHA_SCALE_NONE 0x00000000
+#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000
+#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000
+#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000
+
+#define NV10_3D_RC_OUT_RGB(i0) (0x00000280 + 0x4*(i0))
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT__MASK 0x0000000f
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT__SHIFT 0
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT__MASK 0x000000f0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT__SHIFT 4
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT__MASK 0x00000f00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT__SHIFT 8
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00
+#define NV10_3D_RC_OUT_RGB_CD_DOT_PRODUCT 0x00001000
+#define NV10_3D_RC_OUT_RGB_AB_DOT_PRODUCT 0x00002000
+#define NV10_3D_RC_OUT_RGB_MUX_SUM 0x00004000
+#define NV10_3D_RC_OUT_RGB_BIAS__MASK 0x00008000
+#define NV10_3D_RC_OUT_RGB_BIAS__SHIFT 15
+#define NV10_3D_RC_OUT_RGB_BIAS_NONE 0x00000000
+#define NV10_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000
+#define NV10_3D_RC_OUT_RGB_SCALE__MASK 0x00030000
+#define NV10_3D_RC_OUT_RGB_SCALE__SHIFT 16
+#define NV10_3D_RC_OUT_RGB_SCALE_NONE 0x00000000
+#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000
+#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000
+#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000
+#define NV10_3D_RC_OUT_RGB_OPERATION__MASK 0x38000000
+#define NV10_3D_RC_OUT_RGB_OPERATION__SHIFT 27
+
+#define NV10_3D_RC_FINAL0 0x00000288
+#define NV10_3D_RC_FINAL0_D_INPUT__MASK 0x0000000f
+#define NV10_3D_RC_FINAL0_D_INPUT__SHIFT 0
+#define NV10_3D_RC_FINAL0_D_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001
+#define NV10_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002
+#define NV10_3D_RC_FINAL0_D_INPUT_FOG 0x00000003
+#define NV10_3D_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004
+#define NV10_3D_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005
+#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008
+#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009
+#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a
+#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b
+#define NV10_3D_RC_FINAL0_D_INPUT_SPARE0 0x0000000c
+#define NV10_3D_RC_FINAL0_D_INPUT_SPARE1 0x0000000d
+#define NV10_3D_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
+#define NV10_3D_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f
+#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE__MASK 0x00000010
+#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE__SHIFT 4
+#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000
+#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010
+#define NV10_3D_RC_FINAL0_D_MAPPING__MASK 0x000000e0
+#define NV10_3D_RC_FINAL0_D_MAPPING__SHIFT 5
+#define NV10_3D_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020
+#define NV10_3D_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040
+#define NV10_3D_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060
+#define NV10_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
+#define NV10_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
+#define NV10_3D_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0
+#define NV10_3D_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0
+#define NV10_3D_RC_FINAL0_C_INPUT__MASK 0x00000f00
+#define NV10_3D_RC_FINAL0_C_INPUT__SHIFT 8
+#define NV10_3D_RC_FINAL0_C_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100
+#define NV10_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200
+#define NV10_3D_RC_FINAL0_C_INPUT_FOG 0x00000300
+#define NV10_3D_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400
+#define NV10_3D_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500
+#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800
+#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900
+#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00
+#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00
+#define NV10_3D_RC_FINAL0_C_INPUT_SPARE0 0x00000c00
+#define NV10_3D_RC_FINAL0_C_INPUT_SPARE1 0x00000d00
+#define NV10_3D_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV10_3D_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00
+#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE__MASK 0x00001000
+#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE__SHIFT 12
+#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000
+#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000
+#define NV10_3D_RC_FINAL0_C_MAPPING__MASK 0x0000e000
+#define NV10_3D_RC_FINAL0_C_MAPPING__SHIFT 13
+#define NV10_3D_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000
+#define NV10_3D_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000
+#define NV10_3D_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000
+#define NV10_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
+#define NV10_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
+#define NV10_3D_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000
+#define NV10_3D_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000
+#define NV10_3D_RC_FINAL0_B_INPUT__MASK 0x000f0000
+#define NV10_3D_RC_FINAL0_B_INPUT__SHIFT 16
+#define NV10_3D_RC_FINAL0_B_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000
+#define NV10_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000
+#define NV10_3D_RC_FINAL0_B_INPUT_FOG 0x00030000
+#define NV10_3D_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000
+#define NV10_3D_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000
+#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000
+#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000
+#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000
+#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000
+#define NV10_3D_RC_FINAL0_B_INPUT_SPARE0 0x000c0000
+#define NV10_3D_RC_FINAL0_B_INPUT_SPARE1 0x000d0000
+#define NV10_3D_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
+#define NV10_3D_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000
+#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE__MASK 0x00100000
+#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE__SHIFT 20
+#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000
+#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000
+#define NV10_3D_RC_FINAL0_B_MAPPING__MASK 0x00e00000
+#define NV10_3D_RC_FINAL0_B_MAPPING__SHIFT 21
+#define NV10_3D_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000
+#define NV10_3D_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000
+#define NV10_3D_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000
+#define NV10_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
+#define NV10_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
+#define NV10_3D_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000
+#define NV10_3D_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000
+#define NV10_3D_RC_FINAL0_A_INPUT__MASK 0x0f000000
+#define NV10_3D_RC_FINAL0_A_INPUT__SHIFT 24
+#define NV10_3D_RC_FINAL0_A_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000
+#define NV10_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000
+#define NV10_3D_RC_FINAL0_A_INPUT_FOG 0x03000000
+#define NV10_3D_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000
+#define NV10_3D_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000
+#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000
+#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000
+#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000
+#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000
+#define NV10_3D_RC_FINAL0_A_INPUT_SPARE0 0x0c000000
+#define NV10_3D_RC_FINAL0_A_INPUT_SPARE1 0x0d000000
+#define NV10_3D_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
+#define NV10_3D_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000
+#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE__MASK 0x10000000
+#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE__SHIFT 28
+#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000
+#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000
+#define NV10_3D_RC_FINAL0_A_MAPPING__MASK 0xe0000000
+#define NV10_3D_RC_FINAL0_A_MAPPING__SHIFT 29
+#define NV10_3D_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000
+
+#define NV10_3D_RC_FINAL1 0x0000028c
+#define NV10_3D_RC_FINAL1_COLOR_SUM_CLAMP 0x00000080
+#define NV10_3D_RC_FINAL1_G_INPUT__MASK 0x00000f00
+#define NV10_3D_RC_FINAL1_G_INPUT__SHIFT 8
+#define NV10_3D_RC_FINAL1_G_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100
+#define NV10_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200
+#define NV10_3D_RC_FINAL1_G_INPUT_FOG 0x00000300
+#define NV10_3D_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400
+#define NV10_3D_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500
+#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800
+#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900
+#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00
+#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00
+#define NV10_3D_RC_FINAL1_G_INPUT_SPARE0 0x00000c00
+#define NV10_3D_RC_FINAL1_G_INPUT_SPARE1 0x00000d00
+#define NV10_3D_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV10_3D_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00
+#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE__MASK 0x00001000
+#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE__SHIFT 12
+#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000
+#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000
+#define NV10_3D_RC_FINAL1_G_MAPPING__MASK 0x0000e000
+#define NV10_3D_RC_FINAL1_G_MAPPING__SHIFT 13
+#define NV10_3D_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000
+#define NV10_3D_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000
+#define NV10_3D_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000
+#define NV10_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000
+#define NV10_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000
+#define NV10_3D_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000
+#define NV10_3D_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000
+#define NV10_3D_RC_FINAL1_F_INPUT__MASK 0x000f0000
+#define NV10_3D_RC_FINAL1_F_INPUT__SHIFT 16
+#define NV10_3D_RC_FINAL1_F_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000
+#define NV10_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000
+#define NV10_3D_RC_FINAL1_F_INPUT_FOG 0x00030000
+#define NV10_3D_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000
+#define NV10_3D_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000
+#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000
+#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000
+#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000
+#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000
+#define NV10_3D_RC_FINAL1_F_INPUT_SPARE0 0x000c0000
+#define NV10_3D_RC_FINAL1_F_INPUT_SPARE1 0x000d0000
+#define NV10_3D_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
+#define NV10_3D_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000
+#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE__MASK 0x00100000
+#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE__SHIFT 20
+#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000
+#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000
+#define NV10_3D_RC_FINAL1_F_MAPPING__MASK 0x00e00000
+#define NV10_3D_RC_FINAL1_F_MAPPING__SHIFT 21
+#define NV10_3D_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000
+#define NV10_3D_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000
+#define NV10_3D_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000
+#define NV10_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000
+#define NV10_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000
+#define NV10_3D_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000
+#define NV10_3D_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000
+#define NV10_3D_RC_FINAL1_E_INPUT__MASK 0x0f000000
+#define NV10_3D_RC_FINAL1_E_INPUT__SHIFT 24
+#define NV10_3D_RC_FINAL1_E_INPUT_ZERO 0x00000000
+#define NV10_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000
+#define NV10_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000
+#define NV10_3D_RC_FINAL1_E_INPUT_FOG 0x03000000
+#define NV10_3D_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000
+#define NV10_3D_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000
+#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000
+#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000
+#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000
+#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000
+#define NV10_3D_RC_FINAL1_E_INPUT_SPARE0 0x0c000000
+#define NV10_3D_RC_FINAL1_E_INPUT_SPARE1 0x0d000000
+#define NV10_3D_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
+#define NV10_3D_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000
+#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE__MASK 0x10000000
+#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE__SHIFT 28
+#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000
+#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000
+#define NV10_3D_RC_FINAL1_E_MAPPING__MASK 0xe0000000
+#define NV10_3D_RC_FINAL1_E_MAPPING__SHIFT 29
+#define NV10_3D_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000
+
+
+#define NV17_3D_DMA_HIERZ 0x000001b0
+
+#define NV17_3D_HIERZ_PITCH 0x00000d5c
+
+#define NV17_3D_HIERZ_OFFSET 0x00000d60
+
+#define NV17_3D_HIERZ_FILL_VALUE 0x00000d68
+
+#define NV17_3D_HIERZ_BUFFER_CLEAR 0x00000d6c
+
+#define NV17_3D_UNK0D74 0x00000d74
+
+#define NV17_3D_UNK0D84 0x00000d84
+
+
+#define NV17_3D_HIERZ_WINDOW 0x00001638
+
+
+#define NV17_3D_HIERZ_WINDOW_X 0x00001638
+
+#define NV17_3D_HIERZ_WINDOW_Y 0x0000163c
+
+#define NV17_3D_HIERZ_WINDOW_Z 0x00001640
+
+#define NV17_3D_HIERZ_WINDOW_W 0x00001644
+
+#define NV17_3D_HIERZ_ENABLE 0x00001658
+
+
+#define NV17_3D_UNK01AC 0x000001ac
+
+#define NV17_3D_UNK0258 0x00000258
+
+#define NV17_3D_UNK025C 0x0000025c
+
+#define NV10_3D_UNK0290 0x00000290
+
+#define NV17_3D_COLOR_MASK_ENABLE 0x000002bc
+
+#define NV10_3D_UNK03F0 0x000003f0
+
+#define NV10_3D_UNK03F4 0x000003f4
+
+#define NV17_3D_ZCLEAR_ENABLE 0x000003f8
+
+#define NV17_3D_ZCLEAR_VALUE 0x000003fc
+#define NV17_3D_ZCLEAR_VALUE_DEPTH__MASK 0xffffff00
+#define NV17_3D_ZCLEAR_VALUE_DEPTH__SHIFT 8
+#define NV17_3D_ZCLEAR_VALUE_SEQUENCE__MASK 0x000000ff
+#define NV17_3D_ZCLEAR_VALUE_SEQUENCE__SHIFT 0
+
+#define NV10_3D_POINT_SIZE 0x000003ec
+
+#define NV10_3D_POINT_PARAMETER(i0) (0x000006f8 + 0x4*(i0))
+#define NV10_3D_POINT_PARAMETER__ESIZE 0x00000004
+#define NV10_3D_POINT_PARAMETER__LEN 0x00000008
+
+#define NV11_3D_COLOR_LOGIC_OP 0x00000d40
+
+#define NV11_3D_COLOR_LOGIC_OP_ENABLE 0x00000d40
+
+#define NV11_3D_COLOR_LOGIC_OP_OP 0x00000d44
+#define NV11_3D_COLOR_LOGIC_OP_OP_CLEAR 0x00001500
+#define NV11_3D_COLOR_LOGIC_OP_OP_AND 0x00001501
+#define NV11_3D_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502
+#define NV11_3D_COLOR_LOGIC_OP_OP_COPY 0x00001503
+#define NV11_3D_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504
+#define NV11_3D_COLOR_LOGIC_OP_OP_NOOP 0x00001505
+#define NV11_3D_COLOR_LOGIC_OP_OP_XOR 0x00001506
+#define NV11_3D_COLOR_LOGIC_OP_OP_OR 0x00001507
+#define NV11_3D_COLOR_LOGIC_OP_OP_NOR 0x00001508
+#define NV11_3D_COLOR_LOGIC_OP_OP_EQUIV 0x00001509
+#define NV11_3D_COLOR_LOGIC_OP_OP_INVERT 0x0000150a
+#define NV11_3D_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b
+#define NV11_3D_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c
+#define NV11_3D_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d
+#define NV11_3D_COLOR_LOGIC_OP_OP_NAND 0x0000150e
+#define NV11_3D_COLOR_LOGIC_OP_OP_SET 0x0000150f
+
+
+#endif /* NV10_3D_XML */
diff --git a/src/mesa/drivers/dri/nouveau/nv10_context.c b/src/mesa/drivers/dri/nouveau/nv10_context.c
index fdcb43b771..8074b4bb47 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_context.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_context.c
@@ -24,11 +24,13 @@
*
*/
+#include "main/state.h"
#include "nouveau_driver.h"
#include "nouveau_context.h"
#include "nouveau_fbo.h"
#include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv10_3d.xml.h"
#include "nv04_driver.h"
#include "nv10_driver.h"
@@ -156,9 +158,9 @@ nv17_zclear(struct gl_context *ctx, GLbitfield *buffers)
nfb->base._DepthBuffer->Wrapped)->surface;
/* Clear the hierarchical depth buffer */
- BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_FILL_VALUE, 1);
+ BEGIN_RING(chan, celsius, NV17_3D_HIERZ_FILL_VALUE, 1);
OUT_RING(chan, pack_zs_f(s->format, ctx->Depth.Clear, 0));
- BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_CLEAR, 1);
+ BEGIN_RING(chan, celsius, NV17_3D_HIERZ_BUFFER_CLEAR, 1);
OUT_RING(chan, 1);
/* Mark the depth buffer as cleared */
@@ -184,6 +186,9 @@ nv10_clear(struct gl_context *ctx, GLbitfield buffers)
nv17_zclear(ctx, &buffers);
else
nv10_zclear(ctx, &buffers);
+
+ /* Emit the zclear state if it's dirty */
+ _mesa_update_state(ctx);
}
nouveau_clear(ctx, buffers);
@@ -197,33 +202,33 @@ nv10_hwctx_init(struct gl_context *ctx)
struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw;
int i;
- BEGIN_RING(chan, celsius, NV10TCL_DMA_NOTIFY, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_DMA_NOTIFY, 1);
OUT_RING(chan, hw->ntfy->handle);
- BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY0, 3);
+ BEGIN_RING(chan, celsius, NV10_3D_DMA_TEXTURE0, 3);
OUT_RING(chan, chan->vram->handle);
OUT_RING(chan, chan->gart->handle);
OUT_RING(chan, chan->gart->handle);
- BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY2, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_DMA_COLOR, 2);
OUT_RING(chan, chan->vram->handle);
OUT_RING(chan, chan->vram->handle);
- BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+ BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1);
OUT_RING(chan, 0x7ff << 16 | 0x800);
- BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1);
OUT_RING(chan, 0x7ff << 16 | 0x800);
for (i = 1; i < 8; i++) {
- BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(i), 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(i), 1);
OUT_RING(chan, 0);
}
@@ -232,18 +237,18 @@ nv10_hwctx_init(struct gl_context *ctx)
BEGIN_RING(chan, celsius, 0x3f4, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+ BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
OUT_RING(chan, 0);
if (context_chipset(ctx) >= 0x17) {
- BEGIN_RING(chan, celsius, NV17TCL_DMA_IN_MEMORY4, 2);
+ BEGIN_RING(chan, celsius, NV17_3D_UNK01AC, 2);
OUT_RING(chan, chan->vram->handle);
OUT_RING(chan, chan->vram->handle);
BEGIN_RING(chan, celsius, 0xd84, 1);
OUT_RING(chan, 0x3);
- BEGIN_RING(chan, celsius, NV17TCL_COLOR_MASK_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV17_3D_COLOR_MASK_ENABLE, 1);
OUT_RING(chan, 1);
}
@@ -253,41 +258,41 @@ nv10_hwctx_init(struct gl_context *ctx)
OUT_RING(chan, 1);
OUT_RING(chan, 2);
- BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+ BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
OUT_RING(chan, 0);
}
- BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+ BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
OUT_RING(chan, 0);
/* Set state */
- BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2);
OUT_RING(chan, 0x207);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(0), 2);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(0), 2);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 2);
OUT_RING(chan, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_VERTEX_WEIGHT_ENABLE, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_VERTEX_WEIGHT_ENABLE, 2);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 4);
+ BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 4);
OUT_RING(chan, 1);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
OUT_RING(chan, 0x8006);
- BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 8);
+ BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 8);
OUT_RING(chan, 0xff);
OUT_RING(chan, 0x207);
OUT_RING(chan, 0);
@@ -296,105 +301,105 @@ nv10_hwctx_init(struct gl_context *ctx)
OUT_RING(chan, 0x1e00);
OUT_RING(chan, 0x1e00);
OUT_RING(chan, 0x1d01);
- BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 2);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
+ BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1);
OUT_RING(chan, 0x201);
- BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1);
OUT_RING(chan, 8);
- BEGIN_RING(chan, celsius, NV10TCL_POINT_PARAMETERS_ENABLE, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_POINT_PARAMETERS_ENABLE, 2);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1);
OUT_RING(chan, 8);
- BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2);
OUT_RING(chan, 0x1b02);
OUT_RING(chan, 0x1b02);
- BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 2);
OUT_RING(chan, 0x405);
OUT_RING(chan, 0x901);
- BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_TX_GEN_MODE_S(0), 8);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(0, 0), 8);
for (i = 0; i < 8; i++)
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(0), 2);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(0), 2);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3);
+ BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3);
OUT_RING(chan, 0x3fc00000); /* -1.50 */
OUT_RING(chan, 0xbdb8aa0a); /* -0.09 */
OUT_RING(chan, 0); /* 0.00 */
- BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+ BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 2);
OUT_RING(chan, 0x802);
OUT_RING(chan, 2);
/* for some reason VIEW_MATRIX_ENABLE need to be 6 instead of 4 when
* using texturing, except when using the texture matrix
*/
- BEGIN_RING(chan, celsius, NV10TCL_VIEW_MATRIX_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_VIEW_MATRIX_ENABLE, 1);
OUT_RING(chan, 6);
- BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1);
OUT_RING(chan, 0x01010101);
/* Set vertex component */
- BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL_4F_R, 4);
+ BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL_4F_R, 4);
OUT_RINGf(chan, 1.0);
OUT_RINGf(chan, 0.0);
OUT_RINGf(chan, 0.0);
OUT_RINGf(chan, 1.0);
- BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL2_3F_R, 3);
+ BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL2_3F_R, 3);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
- BEGIN_RING(chan, celsius, NV10TCL_VERTEX_NOR_3F_X, 3);
+ BEGIN_RING(chan, celsius, NV10_3D_VERTEX_NOR_3F_X, 3);
OUT_RING(chan, 0);
OUT_RING(chan, 0);
OUT_RINGf(chan, 1.0);
- BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX0_4F_S, 4);
+ BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX0_4F_S, 4);
OUT_RINGf(chan, 0.0);
OUT_RINGf(chan, 0.0);
OUT_RINGf(chan, 0.0);
OUT_RINGf(chan, 1.0);
- BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX1_4F_S, 4);
+ BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX1_4F_S, 4);
OUT_RINGf(chan, 0.0);
OUT_RINGf(chan, 0.0);
OUT_RINGf(chan, 0.0);
OUT_RINGf(chan, 1.0);
- BEGIN_RING(chan, celsius, NV10TCL_VERTEX_FOG_1F, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_VERTEX_FOG_1F, 1);
OUT_RINGf(chan, 0.0);
- BEGIN_RING(chan, celsius, NV10TCL_EDGEFLAG_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_EDGEFLAG_ENABLE, 1);
OUT_RING(chan, 1);
- BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2);
OUT_RINGf(chan, 0.0);
OUT_RINGf(chan, 16777216.0);
@@ -407,7 +412,8 @@ nv10_context_destroy(struct gl_context *ctx)
struct nouveau_context *nctx = to_nouveau_context(ctx);
nv04_surface_takedown(ctx);
- nv10_render_destroy(ctx);
+ nv10_swtnl_destroy(ctx);
+ nv10_vbo_destroy(ctx);
nouveau_grobj_free(&nctx->hw.eng3d);
@@ -451,11 +457,11 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua
/* 3D engine. */
if (context_chipset(ctx) >= 0x17)
- celsius_class = NV17TCL;
+ celsius_class = NV17_3D;
else if (context_chipset(ctx) >= 0x11)
- celsius_class = NV11TCL;
+ celsius_class = NV11_3D;
else
- celsius_class = NV10TCL;
+ celsius_class = NV10_3D;
ret = nouveau_grobj_alloc(context_chan(ctx), 0xbeef0001, celsius_class,
&nctx->hw.eng3d);
@@ -463,7 +469,8 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua
goto fail;
nv10_hwctx_init(ctx);
- nv10_render_init(ctx);
+ nv10_vbo_init(ctx);
+ nv10_swtnl_init(ctx);
return ctx;
diff --git a/src/mesa/drivers/dri/nouveau/nv10_driver.h b/src/mesa/drivers/dri/nouveau/nv10_driver.h
index dec3d64e7d..6fdc464162 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_driver.h
+++ b/src/mesa/drivers/dri/nouveau/nv10_driver.h
@@ -45,10 +45,16 @@ nv10_transform_depth(struct gl_context *ctx, float z);
/* nv10_render.c */
void
-nv10_render_init(struct gl_context *ctx);
+nv10_vbo_init(struct gl_context *ctx);
void
-nv10_render_destroy(struct gl_context *ctx);
+nv10_vbo_destroy(struct gl_context *ctx);
+
+void
+nv10_swtnl_init(struct gl_context *ctx);
+
+void
+nv10_swtnl_destroy(struct gl_context *ctx);
/* nv10_state_fb.c */
void
diff --git a/src/mesa/drivers/dri/nouveau/nv10_render.c b/src/mesa/drivers/dri/nouveau/nv10_render.c
index a03ace3536..20fb447842 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_render.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_render.c
@@ -26,50 +26,50 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
#include "nv10_driver.h"
#define NUM_VERTEX_ATTRS 8
static void
-nv10_emit_material(struct gl_context *ctx, struct nouveau_array_state *a,
+nv10_emit_material(struct gl_context *ctx, struct nouveau_array *a,
const void *v);
/* Vertex attribute format. */
static struct nouveau_attr_info nv10_vertex_attrs[VERT_ATTRIB_MAX] = {
[VERT_ATTRIB_POS] = {
.vbo_index = 0,
- .imm_method = NV10TCL_VERTEX_POS_4F_X,
+ .imm_method = NV10_3D_VERTEX_POS_4F_X,
.imm_fields = 4,
},
[VERT_ATTRIB_COLOR0] = {
.vbo_index = 1,
- .imm_method = NV10TCL_VERTEX_COL_4F_R,
+ .imm_method = NV10_3D_VERTEX_COL_4F_R,
.imm_fields = 4,
},
[VERT_ATTRIB_COLOR1] = {
.vbo_index = 2,
- .imm_method = NV10TCL_VERTEX_COL2_3F_R,
+ .imm_method = NV10_3D_VERTEX_COL2_3F_R,
.imm_fields = 3,
},
[VERT_ATTRIB_TEX0] = {
.vbo_index = 3,
- .imm_method = NV10TCL_VERTEX_TX0_4F_S,
+ .imm_method = NV10_3D_VERTEX_TX0_4F_S,
.imm_fields = 4,
},
[VERT_ATTRIB_TEX1] = {
.vbo_index = 4,
- .imm_method = NV10TCL_VERTEX_TX1_4F_S,
+ .imm_method = NV10_3D_VERTEX_TX1_4F_S,
.imm_fields = 4,
},
[VERT_ATTRIB_NORMAL] = {
.vbo_index = 5,
- .imm_method = NV10TCL_VERTEX_NOR_3F_X,
+ .imm_method = NV10_3D_VERTEX_NOR_3F_X,
.imm_fields = 3,
},
[VERT_ATTRIB_FOG] = {
.vbo_index = 7,
- .imm_method = NV10TCL_VERTEX_FOG_1F,
+ .imm_method = NV10_3D_VERTEX_FOG_1F,
.imm_fields = 1,
},
[VERT_ATTRIB_GENERIC0] = {
@@ -94,12 +94,12 @@ get_hw_format(int type)
{
switch (type) {
case GL_FLOAT:
- return NV10TCL_VTXFMT_TYPE_FLOAT;
+ return NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT;
case GL_SHORT:
case GL_UNSIGNED_SHORT:
- return NV10TCL_VTXFMT_TYPE_SHORT;
+ return NV10_3D_VTXBUF_FMT_TYPE_V16_SNORM;
case GL_UNSIGNED_BYTE:
- return NV10TCL_VTXFMT_TYPE_BYTE_RGBA;
+ return NV10_3D_VTXBUF_FMT_TYPE_B8G8R8A8_UNORM;
default:
assert(0);
}
@@ -111,26 +111,24 @@ nv10_render_set_format(struct gl_context *ctx)
struct nouveau_render_state *render = to_render_state(ctx);
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- int i, hw_format;
-
- for (i = 0; i < NUM_VERTEX_ATTRS; i++) {
- int attr = render->map[i];
+ int i, attr, hw_format;
+ FOR_EACH_ATTR(render, i, attr) {
if (attr >= 0) {
- struct nouveau_array_state *a = &render->attrs[attr];
+ struct nouveau_array *a = &render->attrs[attr];
hw_format = a->stride << 8 |
a->fields << 4 |
get_hw_format(a->type);
if (attr == VERT_ATTRIB_POS && a->fields == 4)
- hw_format |= NV10TCL_VTXFMT_POS_HOMOGENEOUS;
+ hw_format |= NV10_3D_VTXBUF_FMT_HOMOGENEOUS;
} else {
/* Unused attribute. */
- hw_format = NV10TCL_VTXFMT_TYPE_FLOAT;
+ hw_format = NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT;
}
- BEGIN_RING(chan, celsius, NV10TCL_VTXFMT(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_FMT(i), 1);
OUT_RING(chan, hw_format);
}
}
@@ -140,55 +138,51 @@ nv10_render_bind_vertices(struct gl_context *ctx)
{
struct nouveau_render_state *render = to_render_state(ctx);
struct nouveau_bo_context *bctx = context_bctx(ctx, VERTEX);
- struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- int i;
+ int i, attr;
- for (i = 0; i < NUM_VERTEX_ATTRS; i++) {
- int attr = render->map[i];
-
- if (attr >= 0) {
- struct nouveau_array_state *a = &render->attrs[attr];
+ FOR_EACH_BOUND_ATTR(render, i, attr) {
+ struct nouveau_array *a = &render->attrs[attr];
- nouveau_bo_markl(bctx, celsius,
- NV10TCL_VTXBUF_ADDRESS(i),
- a->bo, a->offset,
- NOUVEAU_BO_GART | NOUVEAU_BO_RD);
- }
+ nouveau_bo_markl(bctx, celsius,
+ NV10_3D_VTXBUF_OFFSET(i),
+ a->bo, a->offset,
+ NOUVEAU_BO_GART | NOUVEAU_BO_RD);
}
-
- BEGIN_RING(chan, celsius, NV10TCL_VERTEX_ARRAY_VALIDATE, 1);
- OUT_RING(chan, 0);
}
/* Vertex array rendering defs. */
#define RENDER_LOCALS(ctx) \
struct nouveau_grobj *celsius = context_eng3d(ctx)
+#define BATCH_VALIDATE() \
+ BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_VALIDATE, 1); \
+ OUT_RING(chan, 0)
+
#define BATCH_BEGIN(prim) \
- BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1); \
+ BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1); \
OUT_RING(chan, prim)
#define BATCH_END() \
- BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1); \
+ BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1); \
OUT_RING(chan, 0)
#define MAX_PACKET 0x400
#define MAX_OUT_L 0x100
#define BATCH_PACKET_L(n) \
- BEGIN_RING_NI(chan, celsius, NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS, n)
+ BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_BATCH, n)
#define BATCH_OUT_L(i, n) \
OUT_RING(chan, ((n) - 1) << 24 | (i))
#define MAX_OUT_I16 0x2
#define BATCH_PACKET_I16(n) \
- BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U16, n)
+ BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U16, n)
#define BATCH_OUT_I16(i0, i1) \
OUT_RING(chan, (i1) << 16 | (i0))
#define MAX_OUT_I32 0x1
#define BATCH_PACKET_I32(n) \
- BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U32, n)
+ BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U32, n)
#define BATCH_OUT_I32(i) \
OUT_RING(chan, i)
@@ -199,3 +193,5 @@ nv10_render_bind_vertices(struct gl_context *ctx)
#define TAG(x) nv10_##x
#include "nouveau_render_t.c"
+#include "nouveau_vbo_t.c"
+#include "nouveau_swtnl_t.c"
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
index d87fe96b1c..0505547421 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
@@ -27,8 +27,9 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
#include "nouveau_fbo.h"
-#include "nouveau_class.h"
#include "nouveau_util.h"
+#include "nv_object.xml.h"
+#include "nv10_3d.xml.h"
#include "nv10_driver.h"
static inline unsigned
@@ -36,26 +37,26 @@ get_rt_format(gl_format format)
{
switch (format) {
case MESA_FORMAT_XRGB8888:
- return 0x05;
+ return NV10_3D_RT_FORMAT_COLOR_X8R8G8B8;
case MESA_FORMAT_ARGB8888:
- return 0x08;
+ return NV10_3D_RT_FORMAT_COLOR_A8R8G8B8;
case MESA_FORMAT_RGB565:
- return 0x03;
+ return NV10_3D_RT_FORMAT_COLOR_R5G6B5;
case MESA_FORMAT_Z16:
- return 0x10;
+ return NV10_3D_RT_FORMAT_DEPTH_Z16;
case MESA_FORMAT_Z24_S8:
- return 0x0;
+ return NV10_3D_RT_FORMAT_DEPTH_Z24S8;
default:
assert(0);
}
}
static void
-setup_lma_buffer(struct gl_context *ctx)
+setup_hierz_buffer(struct gl_context *ctx)
{
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- struct nouveau_bo_context *bctx = context_bctx(ctx, LMA_DEPTH);
+ struct nouveau_bo_context *bctx = context_bctx(ctx, HIERZ);
struct gl_framebuffer *fb = ctx->DrawBuffer;
struct nouveau_framebuffer *nfb = to_nouveau_framebuffer(fb);
unsigned pitch = align(fb->Width, 128),
@@ -68,20 +69,20 @@ setup_lma_buffer(struct gl_context *ctx)
0, NOUVEAU_BO_TILE_ZETA, &nfb->hierz.bo);
}
- nouveau_bo_markl(bctx, celsius, NV17TCL_LMA_DEPTH_BUFFER_OFFSET,
+ nouveau_bo_markl(bctx, celsius, NV17_3D_HIERZ_OFFSET,
nfb->hierz.bo, 0, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR);
WAIT_RING(chan, 9);
- BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_WINDOW_X, 4);
+ BEGIN_RING(chan, celsius, NV17_3D_HIERZ_WINDOW_X, 4);
OUT_RINGf(chan, - 1792);
OUT_RINGf(chan, - 2304 + fb->Height);
OUT_RINGf(chan, fb->_DepthMaxF / 2);
OUT_RINGf(chan, 0);
- BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_PITCH, 1);
+ BEGIN_RING(chan, celsius, NV17_3D_HIERZ_PITCH, 1);
OUT_RING(chan, pitch);
- BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV17_3D_HIERZ_ENABLE, 1);
OUT_RING(chan, 1);
}
@@ -93,7 +94,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
struct nouveau_bo_context *bctx = context_bctx(ctx, FRAMEBUFFER);
struct gl_framebuffer *fb = ctx->DrawBuffer;
struct nouveau_surface *s;
- unsigned rt_format = NV10TCL_RT_FORMAT_TYPE_LINEAR;
+ unsigned rt_format = NV10_3D_RT_FORMAT_TYPE_LINEAR;
unsigned rt_pitch = 0, zeta_pitch = 0;
unsigned bo_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR;
@@ -106,7 +107,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
int i;
for (i = 0; i < 6; i++) {
- BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+ BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
OUT_RING(chan, 0);
}
}
@@ -119,7 +120,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
rt_format |= get_rt_format(s->format);
zeta_pitch = rt_pitch = s->pitch;
- nouveau_bo_markl(bctx, celsius, NV10TCL_COLOR_OFFSET,
+ nouveau_bo_markl(bctx, celsius, NV10_3D_COLOR_OFFSET,
s->bo, 0, bo_flags);
}
@@ -131,16 +132,16 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
rt_format |= get_rt_format(s->format);
zeta_pitch = s->pitch;
- nouveau_bo_markl(bctx, celsius, NV10TCL_ZETA_OFFSET,
+ nouveau_bo_markl(bctx, celsius, NV10_3D_ZETA_OFFSET,
s->bo, 0, bo_flags);
if (context_chipset(ctx) >= 0x17) {
- setup_lma_buffer(ctx);
+ setup_hierz_buffer(ctx);
context_dirty(ctx, ZCLEAR);
}
}
- BEGIN_RING(chan, celsius, NV10TCL_RT_FORMAT, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_RT_FORMAT, 2);
OUT_RING(chan, rt_format);
OUT_RING(chan, zeta_pitch << 16 | rt_pitch);
@@ -162,7 +163,7 @@ nv10_emit_scissor(struct gl_context *ctx, int emit)
get_scissors(ctx->DrawBuffer, &x, &y, &w, &h);
- BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2);
OUT_RING(chan, w << 16 | x);
OUT_RING(chan, h << 16 | y);
}
@@ -182,12 +183,12 @@ nv10_emit_viewport(struct gl_context *ctx, int emit)
if (nv10_use_viewport_zclear(ctx))
a[2] = nv10_transform_depth(ctx, (vp->Far + vp->Near) / 2);
- BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_TRANSLATE_X, 4);
+ BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_TRANSLATE_X, 4);
OUT_RINGp(chan, a, 4);
- BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1);
OUT_RING(chan, (fb->Width - 1) << 16 | 0x08000800);
- BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1);
OUT_RING(chan, (fb->Height - 1) << 16 | 0x08000800);
context_dirty(ctx, PROJECTION);
@@ -203,12 +204,12 @@ nv10_emit_zclear(struct gl_context *ctx, int emit)
to_nouveau_framebuffer(ctx->DrawBuffer);
if (nfb->hierz.bo) {
- BEGIN_RING(chan, celsius, NV17TCL_ZCLEAR_ENABLE, 2);
- OUT_RING(chan, nctx->hierz.clear_blocked ? 0 : 1);
+ BEGIN_RING(chan, celsius, NV17_3D_ZCLEAR_ENABLE, 2);
+ OUT_RINGb(chan, !nctx->hierz.clear_blocked);
OUT_RING(chan, nfb->hierz.clear_value |
(nctx->hierz.clear_seq & 0xff));
} else {
- BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2);
OUT_RINGf(chan, nv10_transform_depth(ctx, 0));
OUT_RINGf(chan, nv10_transform_depth(ctx, 1));
context_dirty(ctx, VIEWPORT);
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
index 5138c36df7..1adc86086c 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
@@ -27,7 +27,7 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
#include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
#include "nouveau_util.h"
#include "nv10_driver.h"
#include "nv20_driver.h"
@@ -41,24 +41,24 @@
#define RC_IN_SHIFT_G 40
#define RC_IN_SOURCE(source) \
- ((uint64_t)NV10TCL_RC_IN_RGB_D_INPUT_##source)
+ ((uint64_t)NV10_3D_RC_IN_RGB_D_INPUT_##source)
#define RC_IN_USAGE(usage) \
- ((uint64_t)NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_##usage)
+ ((uint64_t)NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_##usage)
#define RC_IN_MAPPING(mapping) \
- ((uint64_t)NV10TCL_RC_IN_RGB_D_MAPPING_##mapping)
+ ((uint64_t)NV10_3D_RC_IN_RGB_D_MAPPING_##mapping)
-#define RC_OUT_BIAS NV10TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF
-#define RC_OUT_SCALE_1 NV10TCL_RC_OUT_RGB_SCALE_NONE
-#define RC_OUT_SCALE_2 NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO
-#define RC_OUT_SCALE_4 NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR
+#define RC_OUT_BIAS NV10_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF
+#define RC_OUT_SCALE_1 NV10_3D_RC_OUT_RGB_SCALE_NONE
+#define RC_OUT_SCALE_2 NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO
+#define RC_OUT_SCALE_4 NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR
/* Make the combiner do: spare0_i = A_i * B_i */
-#define RC_OUT_AB NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0
+#define RC_OUT_AB NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0
/* spare0_i = dot3(A, B) */
-#define RC_OUT_DOT_AB (NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 | \
- NV10TCL_RC_OUT_RGB_AB_DOT_PRODUCT)
+#define RC_OUT_DOT_AB (NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 | \
+ NV10_3D_RC_OUT_RGB_AB_DOT_PRODUCT)
/* spare0_i = A_i * B_i + C_i * D_i */
-#define RC_OUT_SUM NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0
+#define RC_OUT_SUM NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0
struct combiner_state {
struct gl_context *ctx;
@@ -383,15 +383,15 @@ nv10_emit_tex_env(struct gl_context *ctx, int emit)
c_out |= 0x3 << 27;
}
- BEGIN_RING(chan, celsius, NV10TCL_RC_IN_ALPHA(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_RC_IN_ALPHA(i), 1);
OUT_RING(chan, a_in);
- BEGIN_RING(chan, celsius, NV10TCL_RC_IN_RGB(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_RC_IN_RGB(i), 1);
OUT_RING(chan, c_in);
- BEGIN_RING(chan, celsius, NV10TCL_RC_COLOR(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_RC_COLOR(i), 1);
OUT_RING(chan, k);
- BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_ALPHA(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_ALPHA(i), 1);
OUT_RING(chan, a_out);
- BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_RGB(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_RGB(i), 1);
OUT_RING(chan, c_out);
context_dirty(ctx, FRAG);
@@ -407,7 +407,7 @@ nv10_emit_frag(struct gl_context *ctx, int emit)
nv10_get_final_combiner(ctx, &in, &n);
- BEGIN_RING(chan, celsius, NV10TCL_RC_FINAL0, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_RC_FINAL0, 2);
OUT_RING(chan, in);
OUT_RING(chan, in >> 32);
}
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
index 4e49b0278c..3f80790483 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
@@ -27,7 +27,8 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
#include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nouveau_util.h"
+#include "nv10_3d.xml.h"
#include "nv10_driver.h"
void
@@ -37,13 +38,13 @@ nv10_emit_cull_face(struct gl_context *ctx, int emit)
struct nouveau_grobj *celsius = context_eng3d(ctx);
GLenum mode = ctx->Polygon.CullFaceMode;
- BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1);
- OUT_RING(chan, ctx->Polygon.CullFlag ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Polygon.CullFlag);
- BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 1);
- OUT_RING(chan, (mode == GL_FRONT ? NV10TCL_CULL_FACE_FRONT :
- mode == GL_BACK ? NV10TCL_CULL_FACE_BACK :
- NV10TCL_CULL_FACE_FRONT_AND_BACK));
+ BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 1);
+ OUT_RING(chan, (mode == GL_FRONT ? NV10_3D_CULL_FACE_FRONT :
+ mode == GL_BACK ? NV10_3D_CULL_FACE_BACK :
+ NV10_3D_CULL_FACE_FRONT_AND_BACK));
}
void
@@ -52,9 +53,9 @@ nv10_emit_front_face(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_FRONT_FACE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_FRONT_FACE, 1);
OUT_RING(chan, ctx->Polygon.FrontFace == GL_CW ?
- NV10TCL_FRONT_FACE_CW : NV10TCL_FRONT_FACE_CCW);
+ NV10_3D_FRONT_FACE_CW : NV10_3D_FRONT_FACE_CCW);
}
void
@@ -65,11 +66,11 @@ nv10_emit_line_mode(struct gl_context *ctx, int emit)
GLboolean smooth = ctx->Line.SmoothFlag &&
ctx->Hint.LineSmooth == GL_NICEST;
- BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1);
OUT_RING(chan, MAX2(smooth ? 0 : 1,
ctx->Line.Width) * 8);
- BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
- OUT_RING(chan, smooth ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
+ OUT_RINGb(chan, smooth);
}
void
@@ -83,11 +84,11 @@ nv10_emit_point_mode(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1);
OUT_RING(chan, (uint32_t)(ctx->Point.Size * 8));
- BEGIN_RING(chan, celsius, NV10TCL_POINT_SMOOTH_ENABLE, 1);
- OUT_RING(chan, ctx->Point.SmoothFlag ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV10_3D_POINT_SMOOTH_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Point.SmoothFlag);
}
void
@@ -96,12 +97,12 @@ nv10_emit_polygon_mode(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2);
OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.FrontMode));
OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.BackMode));
- BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1);
- OUT_RING(chan, ctx->Polygon.SmoothFlag ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Polygon.SmoothFlag);
}
void
@@ -110,12 +111,12 @@ nv10_emit_polygon_offset(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
- OUT_RING(chan, ctx->Polygon.OffsetPoint ? 1 : 0);
- OUT_RING(chan, ctx->Polygon.OffsetLine ? 1 : 0);
- OUT_RING(chan, ctx->Polygon.OffsetFill ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3);
+ OUT_RINGb(chan, ctx->Polygon.OffsetPoint);
+ OUT_RINGb(chan, ctx->Polygon.OffsetLine);
+ OUT_RINGb(chan, ctx->Polygon.OffsetFill);
- BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2);
OUT_RINGf(chan, ctx->Polygon.OffsetFactor);
OUT_RINGf(chan, ctx->Polygon.OffsetUnits);
}
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
index 99609844a1..bb1084ed11 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
@@ -27,7 +27,8 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
#include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nouveau_util.h"
+#include "nv10_3d.xml.h"
#include "nv10_driver.h"
void
@@ -36,10 +37,10 @@ nv10_emit_alpha_func(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1);
- OUT_RING(chan, ctx->Color.AlphaEnabled ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Color.AlphaEnabled);
- BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2);
OUT_RING(chan, nvgl_comparison_op(ctx->Color.AlphaFunc));
OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.AlphaRef));
}
@@ -50,7 +51,7 @@ nv10_emit_blend_color(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_BLEND_COLOR, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_BLEND_COLOR, 1);
OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.BlendColor[3]) << 24 |
FLOAT_TO_UBYTE(ctx->Color.BlendColor[0]) << 16 |
FLOAT_TO_UBYTE(ctx->Color.BlendColor[1]) << 8 |
@@ -63,10 +64,10 @@ nv10_emit_blend_equation(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1);
- OUT_RING(chan, ctx->Color.BlendEnabled ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Color.BlendEnabled);
- BEGIN_RING(chan, celsius, NV10TCL_BLEND_EQUATION, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_BLEND_EQUATION, 1);
OUT_RING(chan, nvgl_blend_eqn(ctx->Color.BlendEquationRGB));
}
@@ -76,7 +77,7 @@ nv10_emit_blend_func(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 2);
+ BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 2);
OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendSrcRGB));
OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendDstRGB));
}
@@ -87,7 +88,7 @@ nv10_emit_color_mask(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1);
OUT_RING(chan, ((ctx->Color.ColorMask[0][3] ? 1 << 24 : 0) |
(ctx->Color.ColorMask[0][0] ? 1 << 16 : 0) |
(ctx->Color.ColorMask[0][1] ? 1 << 8 : 0) |
@@ -100,11 +101,11 @@ nv10_emit_depth(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1);
- OUT_RING(chan, ctx->Depth.Test ? 1 : 0);
- BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1);
- OUT_RING(chan, ctx->Depth.Mask ? 1 : 0);
- BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Depth.Test);
+ BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Depth.Mask);
+ BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1);
OUT_RING(chan, nvgl_comparison_op(ctx->Depth.Func));
}
@@ -114,8 +115,8 @@ nv10_emit_dither(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 1);
- OUT_RING(chan, ctx->Color.DitherFlag ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Color.DitherFlag);
}
void
@@ -127,8 +128,8 @@ nv10_emit_logic_opcode(struct gl_context *ctx, int emit)
assert(!ctx->Color.ColorLogicOpEnabled
|| context_chipset(ctx) >= 0x11);
- BEGIN_RING(chan, celsius, NV11TCL_COLOR_LOGIC_OP_ENABLE, 2);
- OUT_RING(chan, ctx->Color.ColorLogicOpEnabled ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV11_3D_COLOR_LOGIC_OP_ENABLE, 2);
+ OUT_RINGb(chan, ctx->Color.ColorLogicOpEnabled);
OUT_RING(chan, nvgl_logicop_func(ctx->Color.LogicOp));
}
@@ -138,9 +139,9 @@ nv10_emit_shade_model(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_SHADE_MODEL, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_SHADE_MODEL, 1);
OUT_RING(chan, ctx->Light.ShadeModel == GL_SMOOTH ?
- NV10TCL_SHADE_MODEL_SMOOTH : NV10TCL_SHADE_MODEL_FLAT);
+ NV10_3D_SHADE_MODEL_SMOOTH : NV10_3D_SHADE_MODEL_FLAT);
}
void
@@ -149,10 +150,10 @@ nv10_emit_stencil_func(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_STENCIL_ENABLE, 1);
- OUT_RING(chan, ctx->Stencil.Enabled ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV10_3D_STENCIL_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Stencil.Enabled);
- BEGIN_RING(chan, celsius, NV10TCL_STENCIL_FUNC_FUNC, 3);
+ BEGIN_RING(chan, celsius, NV10_3D_STENCIL_FUNC_FUNC, 3);
OUT_RING(chan, nvgl_comparison_op(ctx->Stencil.Function[0]));
OUT_RING(chan, ctx->Stencil.Ref[0]);
OUT_RING(chan, ctx->Stencil.ValueMask[0]);
@@ -164,7 +165,7 @@ nv10_emit_stencil_mask(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 1);
OUT_RING(chan, ctx->Stencil.WriteMask[0]);
}
@@ -174,7 +175,7 @@ nv10_emit_stencil_op(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *celsius = context_eng3d(ctx);
- BEGIN_RING(chan, celsius, NV10TCL_STENCIL_OP_FAIL, 3);
+ BEGIN_RING(chan, celsius, NV10_3D_STENCIL_OP_FAIL, 3);
OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.FailFunc[0]));
OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZFailFunc[0]));
OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZPassFunc[0]));
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
index 0092ad0c20..fda67b1507 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
@@ -28,14 +28,10 @@
#include "nouveau_context.h"
#include "nouveau_gldefs.h"
#include "nouveau_texture.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
#include "nouveau_util.h"
#include "nv10_driver.h"
-#define TX_GEN_MODE(i, j) (NV10TCL_TX_GEN_MODE_S(i) + 4 * (j))
-#define TX_GEN_COEFF(i, j) (NV10TCL_TX_GEN_COEFF_S_A(i) + 16 * (j))
-#define TX_MATRIX(i) (NV10TCL_TX0_MATRIX(0) + 64 * (i))
-
void
nv10_emit_tex_gen(struct gl_context *ctx, int emit)
{
@@ -53,15 +49,15 @@ nv10_emit_tex_gen(struct gl_context *ctx, int emit)
if (k) {
BEGIN_RING(chan, celsius,
- TX_GEN_COEFF(i, j), 4);
+ NV10_3D_TEX_GEN_COEFF(i, j), 4);
OUT_RINGp(chan, k, 4);
}
- BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i,j), 1);
OUT_RING(chan, nvgl_texgen_mode(coord->Mode));
} else {
- BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i,j), 1);
OUT_RING(chan, 0);
}
}
@@ -80,14 +76,14 @@ nv10_emit_tex_mat(struct gl_context *ctx, int emit)
if (nctx->fallback == HWTNL &&
((ctx->Texture._TexMatEnabled & 1 << i) ||
ctx->Texture.Unit[i]._GenFlags)) {
- BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1);
OUT_RING(chan, 1);
- BEGIN_RING(chan, celsius, TX_MATRIX(i), 16);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX(i, 0), 16);
OUT_RINGm(chan, ctx->TextureMatrixStack[i].Top->m);
} else {
- BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1);
OUT_RING(chan, 0);
}
}
@@ -97,29 +93,29 @@ get_tex_format_pot(struct gl_texture_image *ti)
{
switch (ti->TexFormat) {
case MESA_FORMAT_ARGB8888:
- return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8;
+ return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8;
case MESA_FORMAT_XRGB8888:
- return NV10TCL_TX_FORMAT_FORMAT_X8R8G8B8;
+ return NV10_3D_TEX_FORMAT_FORMAT_X8R8G8B8;
case MESA_FORMAT_ARGB1555:
- return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5;
+ return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5;
case MESA_FORMAT_ARGB4444:
- return NV10TCL_TX_FORMAT_FORMAT_A4R4G4B4;
+ return NV10_3D_TEX_FORMAT_FORMAT_A4R4G4B4;
case MESA_FORMAT_RGB565:
- return NV10TCL_TX_FORMAT_FORMAT_R5G6B5;
+ return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5;
case MESA_FORMAT_A8:
case MESA_FORMAT_I8:
- return NV10TCL_TX_FORMAT_FORMAT_A8;
+ return NV10_3D_TEX_FORMAT_FORMAT_I8;
case MESA_FORMAT_L8:
- return NV10TCL_TX_FORMAT_FORMAT_L8;
+ return NV10_3D_TEX_FORMAT_FORMAT_L8;
case MESA_FORMAT_CI8:
- return NV10TCL_TX_FORMAT_FORMAT_INDEX8;
+ return NV10_3D_TEX_FORMAT_FORMAT_INDEX8;
default:
assert(0);
@@ -131,19 +127,19 @@ get_tex_format_rect(struct gl_texture_image *ti)
{
switch (ti->TexFormat) {
case MESA_FORMAT_ARGB1555:
- return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT;
+ return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT;
case MESA_FORMAT_RGB565:
- return NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT;
+ return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT;
case MESA_FORMAT_ARGB8888:
case MESA_FORMAT_XRGB8888:
- return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT;
+ return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT;
case MESA_FORMAT_A8:
case MESA_FORMAT_L8:
case MESA_FORMAT_I8:
- return NV10TCL_TX_FORMAT_FORMAT_A8_RECT;
+ return NV10_3D_TEX_FORMAT_FORMAT_I8_RECT;
default:
assert(0);
@@ -164,7 +160,7 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
uint32_t tx_format, tx_filter, tx_enable;
if (!ctx->Texture.Unit[i]._ReallyEnabled) {
- BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1);
OUT_RING(chan, 0);
return;
}
@@ -186,13 +182,13 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
tx_filter = nvgl_filter_mode(t->MagFilter) << 28
| nvgl_filter_mode(t->MinFilter) << 24;
- tx_enable = NV10TCL_TX_ENABLE_ENABLE
+ tx_enable = NV10_3D_TEX_ENABLE_ENABLE
| log2i(t->MaxAnisotropy) << 4;
if (t->Target == GL_TEXTURE_RECTANGLE) {
- BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_PITCH(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_PITCH(i), 1);
OUT_RING(chan, s->pitch << 16);
- BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_SIZE(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_SIZE(i), 1);
OUT_RING(chan, align(s->width, 2) << 16 | s->height);
tx_format |= get_tex_format_rect(ti);
@@ -211,26 +207,26 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
lod_min = CLAMP(lod_min, 0, 15);
lod_bias = CLAMP(lod_bias, 0, 15);
- tx_format |= NV10TCL_TX_FORMAT_MIPMAP;
+ tx_format |= NV10_3D_TEX_FORMAT_MIPMAP;
tx_filter |= lod_bias << 8;
tx_enable |= lod_min << 26
| lod_max << 14;
}
/* Write it to the hardware. */
- nouveau_bo_mark(bctx, celsius, NV10TCL_TX_FORMAT(i),
+ nouveau_bo_mark(bctx, celsius, NV10_3D_TEX_FORMAT(i),
s->bo, tx_format, 0,
- NV10TCL_TX_FORMAT_DMA0,
- NV10TCL_TX_FORMAT_DMA1,
+ NV10_3D_TEX_FORMAT_DMA0,
+ NV10_3D_TEX_FORMAT_DMA1,
bo_flags | NOUVEAU_BO_OR);
- nouveau_bo_markl(bctx, celsius, NV10TCL_TX_OFFSET(i),
+ nouveau_bo_markl(bctx, celsius, NV10_3D_TEX_OFFSET(i),
s->bo, s->offset, bo_flags);
- BEGIN_RING(chan, celsius, NV10TCL_TX_FILTER(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_FILTER(i), 1);
OUT_RING(chan, tx_filter);
- BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1);
+ BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1);
OUT_RING(chan, tx_enable);
}
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
index 175abfca5c..e8bd12e6e0 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
@@ -28,7 +28,7 @@
#include "nouveau_context.h"
#include "nouveau_gldefs.h"
#include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
#include "nv10_driver.h"
void
@@ -42,13 +42,13 @@ get_material_bitmask(unsigned m)
unsigned ret = 0;
if (m & MAT_BIT_FRONT_EMISSION)
- ret |= NV10TCL_COLOR_MATERIAL_EMISSION;
+ ret |= NV10_3D_COLOR_MATERIAL_EMISSION;
if (m & MAT_BIT_FRONT_AMBIENT)
- ret |= NV10TCL_COLOR_MATERIAL_AMBIENT;
+ ret |= NV10_3D_COLOR_MATERIAL_AMBIENT;
if (m & MAT_BIT_FRONT_DIFFUSE)
- ret |= NV10TCL_COLOR_MATERIAL_DIFFUSE;
+ ret |= NV10_3D_COLOR_MATERIAL_DIFFUSE;
if (m & MAT_BIT_FRONT_SPECULAR)
- ret |= NV10TCL_COLOR_MATERIAL_SPECULAR;
+ ret |= NV10_3D_COLOR_MATERIAL_SPECULAR;
return ret;
}
@@ -60,7 +60,7 @@ nv10_emit_color_material(struct gl_context *ctx, int emit)
struct nouveau_grobj *celsius = context_eng3d(ctx);
unsigned mask = get_material_bitmask(ctx->Light.ColorMaterialBitmask);
- BEGIN_RING(chan, celsius, NV10TCL_COLOR_MATERIAL, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_COLOR_MATERIAL, 1);
OUT_RING(chan, ctx->Light.ColorMaterialEnabled ? mask : 0);
}
@@ -69,11 +69,11 @@ get_fog_mode(unsigned mode)
{
switch (mode) {
case GL_LINEAR:
- return NV10TCL_FOG_MODE_LINEAR;
+ return NV10_3D_FOG_MODE_LINEAR;
case GL_EXP:
- return NV10TCL_FOG_MODE_EXP;
+ return NV10_3D_FOG_MODE_EXP;
case GL_EXP2:
- return NV10TCL_FOG_MODE_EXP2;
+ return NV10_3D_FOG_MODE_EXP2;
default:
assert(0);
}
@@ -84,9 +84,9 @@ get_fog_source(unsigned source)
{
switch (source) {
case GL_FOG_COORDINATE_EXT:
- return NV10TCL_FOG_COORD_FOG;
+ return NV10_3D_FOG_COORD_FOG;
case GL_FRAGMENT_DEPTH_EXT:
- return NV10TCL_FOG_COORD_DIST_ORTHOGONAL_ABS;
+ return NV10_3D_FOG_COORD_DIST_ORTHOGONAL_ABS;
default:
assert(0);
}
@@ -133,13 +133,13 @@ nv10_emit_fog(struct gl_context *ctx, int emit)
nv10_get_fog_coeff(ctx, k);
- BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 4);
+ BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 4);
OUT_RING(chan, get_fog_mode(f->Mode));
OUT_RING(chan, get_fog_source(source));
- OUT_RING(chan, f->Enabled ? 1 : 0);
+ OUT_RINGb(chan, f->Enabled);
OUT_RING(chan, pack_rgba_f(MESA_FORMAT_RGBA8888_REV, f->Color));
- BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3);
+ BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3);
OUT_RINGp(chan, k, 3);
context_dirty(ctx, FRAG);
@@ -150,13 +150,13 @@ get_light_mode(struct gl_light *l)
{
if (l->Enabled) {
if (l->_Flags & LIGHT_SPOT)
- return NV10TCL_ENABLED_LIGHTS_0_DIRECTIONAL;
+ return NV10_3D_ENABLED_LIGHTS_0_DIRECTIONAL;
else if (l->_Flags & LIGHT_POSITIONAL)
- return NV10TCL_ENABLED_LIGHTS_0_POSITIONAL;
+ return NV10_3D_ENABLED_LIGHTS_0_POSITIONAL;
else
- return NV10TCL_ENABLED_LIGHTS_0_NONPOSITIONAL;
+ return NV10_3D_ENABLED_LIGHTS_0_NONPOSITIONAL;
} else {
- return NV10TCL_ENABLED_LIGHTS_0_DISABLED;
+ return NV10_3D_ENABLED_LIGHTS_0_DISABLED;
}
}
@@ -170,7 +170,7 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit)
int i;
if (nctx->fallback != HWTNL) {
- BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1);
OUT_RING(chan, 0);
return;
}
@@ -178,12 +178,12 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit)
for (i = 0; i < MAX_LIGHTS; i++)
en_lights |= get_light_mode(&ctx->Light.Light[i]) << 2 * i;
- BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1);
OUT_RING(chan, en_lights);
- BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1);
- OUT_RING(chan, ctx->Light.Enabled ? 1 : 0);
- BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1);
- OUT_RING(chan, ctx->Transform.Normalize ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Light.Enabled);
+ BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Transform.Normalize);
}
void
@@ -193,16 +193,16 @@ nv10_emit_light_model(struct gl_context *ctx, int emit)
struct nouveau_grobj *celsius = context_eng3d(ctx);
struct gl_lightmodel *m = &ctx->Light.Model;
- BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1);
- OUT_RING(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR ? 1 : 0);
+ BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1);
+ OUT_RINGb(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR);
- BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1);
OUT_RING(chan, ((m->LocalViewer ?
- NV10TCL_LIGHT_MODEL_LOCAL_VIEWER : 0) |
+ NV10_3D_LIGHT_MODEL_LOCAL_VIEWER : 0) |
(NEED_SECONDARY_COLOR(ctx) ?
- NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR : 0) |
+ NV10_3D_LIGHT_MODEL_SEPARATE_SPECULAR : 0) |
(!ctx->Light.Enabled && ctx->Fog.ColorSumEnabled ?
- NV10TCL_LIGHT_MODEL_VERTEX_SPECULAR : 0)));
+ NV10_3D_LIGHT_MODEL_VERTEX_SPECULAR : 0)));
}
static float
@@ -281,20 +281,20 @@ nv10_emit_light_source(struct gl_context *ctx, int emit)
struct gl_light *l = &ctx->Light.Light[i];
if (l->_Flags & LIGHT_POSITIONAL) {
- BEGIN_RING(chan, celsius, NV10TCL_LIGHT_POSITION_X(i), 3);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHT_POSITION_X(i), 3);
OUT_RINGp(chan, l->_Position, 3);
BEGIN_RING(chan, celsius,
- NV10TCL_LIGHT_ATTENUATION_CONSTANT(i), 3);
+ NV10_3D_LIGHT_ATTENUATION_CONSTANT(i), 3);
OUT_RINGf(chan, l->ConstantAttenuation);
OUT_RINGf(chan, l->LinearAttenuation);
OUT_RINGf(chan, l->QuadraticAttenuation);
} else {
- BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIRECTION_X(i), 3);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIRECTION_X(i), 3);
OUT_RINGp(chan, l->_VP_inf_norm, 3);
- BEGIN_RING(chan, celsius, NV10TCL_LIGHT_HALF_VECTOR_X(i), 3);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHT_HALF_VECTOR_X(i), 3);
OUT_RINGp(chan, l->_h_inf_norm, 3);
}
@@ -303,7 +303,7 @@ nv10_emit_light_source(struct gl_context *ctx, int emit)
nv10_get_spot_coeff(l, k);
- BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPOT_CUTOFF_A(i), 7);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPOT_CUTOFF(i, 0), 7);
OUT_RINGp(chan, k, 7);
}
}
@@ -335,11 +335,11 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit)
ZERO_3V(c_factor);
}
- BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL_AMBIENT_R, 3);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL_AMBIENT_R, 3);
OUT_RINGp(chan, c_scene, 3);
if (ctx->Light.ColorMaterialEnabled) {
- BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_R, 3);
+ BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_R, 3);
OUT_RINGp(chan, c_factor, 3);
}
@@ -349,7 +349,7 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit)
l->Ambient :
l->_MatAmbient[0]);
- BEGIN_RING(chan, celsius, NV10TCL_LIGHT_AMBIENT_R(i), 3);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHT_AMBIENT_R(i), 3);
OUT_RINGp(chan, c_light, 3);
}
}
@@ -362,7 +362,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit)
GLfloat (*mat)[4] = ctx->Light.Material.Attrib;
struct gl_light *l;
- BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_A, 1);
+ BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_A, 1);
OUT_RINGf(chan, mat[MAT_ATTRIB_FRONT_DIFFUSE][3]);
foreach(l, &ctx->Light.EnabledList) {
@@ -371,7 +371,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit)
l->Diffuse :
l->_MatDiffuse[0]);
- BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIFFUSE_R(i), 3);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIFFUSE_R(i), 3);
OUT_RINGp(chan, c_light, 3);
}
}
@@ -389,7 +389,7 @@ nv10_emit_material_specular(struct gl_context *ctx, int emit)
l->Specular :
l->_MatSpecular[0]);
- BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPECULAR_R(i), 3);
+ BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPECULAR_R(i), 3);
OUT_RINGp(chan, c_light, 3);
}
}
@@ -430,7 +430,7 @@ nv10_emit_material_shininess(struct gl_context *ctx, int emit)
CLAMP(mat[MAT_ATTRIB_FRONT_SHININESS][0], 0, 1024),
k);
- BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_SHININESS(0), 6);
+ BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_SHININESS(0), 6);
OUT_RINGp(chan, k, 6);
}
@@ -447,7 +447,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit)
if (ctx->Light._NeedEyeCoords || ctx->Fog.Enabled ||
(ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD)) {
- BEGIN_RING(chan, celsius, NV10TCL_MODELVIEW0_MATRIX(0), 16);
+ BEGIN_RING(chan, celsius, NV10_3D_MODELVIEW_MATRIX(0, 0), 16);
OUT_RINGm(chan, m->m);
}
@@ -456,7 +456,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit)
int i, j;
BEGIN_RING(chan, celsius,
- NV10TCL_INVERSE_MODELVIEW0_MATRIX(0), 12);
+ NV10_3D_INVERSE_MODELVIEW_MATRIX(0, 0), 12);
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
OUT_RINGf(chan, m->inv[4*i + j]);
@@ -485,7 +485,7 @@ nv10_emit_projection(struct gl_context *ctx, int emit)
if (nctx->fallback == HWTNL)
_math_matrix_mul_matrix(&m, &m, &ctx->_ModelProjectMatrix);
- BEGIN_RING(chan, celsius, NV10TCL_PROJECTION_MATRIX(0), 16);
+ BEGIN_RING(chan, celsius, NV10_3D_PROJECTION_MATRIX(0), 16);
OUT_RINGm(chan, m.m);
_math_matrix_dtr(&m);
diff --git a/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h
new file mode 100644
index 0000000000..c8ed861961
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h
@@ -0,0 +1,2076 @@
+#ifndef NV20_3D_XML
+#define NV20_3D_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv20_3d.xml ( 21073 bytes, from 2010-11-15 02:24:38)
+- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58)
+- nv10_3d.xml ( 18449 bytes, from 2010-11-15 02:24:38)
+- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46)
+- nv_3ddefs.xml ( 16394 bytes, from 2010-11-01 00:28:46)
+- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57)
+- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+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.
+*/
+
+
+#define NV20_VERTEX_ATTR_POS 0x00000000
+#define NV20_VERTEX_ATTR_NORMAL 0x00000002
+#define NV20_VERTEX_ATTR_COLOR0 0x00000003
+#define NV20_VERTEX_ATTR_COLOR1 0x00000004
+#define NV20_VERTEX_ATTR_FOG 0x00000005
+#define NV20_VERTEX_ATTR_TEX0 0x00000009
+#define NV20_VERTEX_ATTR_TEX1 0x0000000a
+#define NV20_VERTEX_ATTR_TEX2 0x0000000b
+#define NV20_VERTEX_ATTR_TEX3 0x0000000c
+
+
+
+#define NV20_3D_FLIP_SET_READ 0x00000120
+
+#define NV20_3D_FLIP_SET_WRITE 0x00000124
+
+#define NV20_3D_FLIP_MAX 0x00000128
+
+#define NV20_3D_FLIP_INCR_WRITE 0x0000012c
+
+#define NV20_3D_FLIP_WAIT 0x00000130
+
+#define NV20_3D_DMA_NOTIFY 0x00000180
+
+#define NV20_3D_DMA_TEXTURE0 0x00000184
+
+#define NV20_3D_DMA_TEXTURE1 0x00000188
+
+#define NV20_3D_DMA_COLOR 0x00000194
+
+#define NV20_3D_DMA_ZETA 0x00000198
+
+#define NV20_3D_RT_HORIZ 0x00000200
+#define NV20_3D_RT_HORIZ_X__MASK 0x0000ffff
+#define NV20_3D_RT_HORIZ_X__SHIFT 0
+#define NV20_3D_RT_HORIZ_W__MASK 0xffff0000
+#define NV20_3D_RT_HORIZ_W__SHIFT 16
+
+#define NV20_3D_RT_VERT 0x00000204
+#define NV20_3D_RT_VERT_Y__MASK 0x0000ffff
+#define NV20_3D_RT_VERT_Y__SHIFT 0
+#define NV20_3D_RT_VERT_H__MASK 0xffff0000
+#define NV20_3D_RT_VERT_H__SHIFT 16
+
+#define NV20_3D_RT_FORMAT 0x00000208
+#define NV20_3D_RT_FORMAT_TYPE__MASK 0x00000f00
+#define NV20_3D_RT_FORMAT_TYPE__SHIFT 8
+#define NV20_3D_RT_FORMAT_TYPE_LINEAR 0x00000100
+#define NV20_3D_RT_FORMAT_TYPE_SWIZZLED 0x00000200
+#define NV20_3D_RT_FORMAT_DEPTH__MASK 0x00000030
+#define NV20_3D_RT_FORMAT_DEPTH__SHIFT 4
+#define NV20_3D_RT_FORMAT_DEPTH_Z16 0x00000010
+#define NV20_3D_RT_FORMAT_DEPTH_Z24S8 0x00000020
+#define NV20_3D_RT_FORMAT_COLOR__MASK 0x0000000f
+#define NV20_3D_RT_FORMAT_COLOR__SHIFT 0
+#define NV20_3D_RT_FORMAT_COLOR_R5G6B5 0x00000003
+#define NV20_3D_RT_FORMAT_COLOR_X8R8G8B8 0x00000005
+#define NV20_3D_RT_FORMAT_COLOR_A8R8G8B8 0x00000008
+#define NV20_3D_RT_FORMAT_COLOR_B8 0x00000009
+
+#define NV20_3D_RT_PITCH 0x0000020c
+#define NV20_3D_RT_PITCH_COLOR_PITCH__MASK 0x0000ffff
+#define NV20_3D_RT_PITCH_COLOR_PITCH__SHIFT 0
+#define NV20_3D_RT_PITCH_ZETA_PITCH__MASK 0xffff0000
+#define NV20_3D_RT_PITCH_ZETA_PITCH__SHIFT 16
+
+#define NV20_3D_COLOR_OFFSET 0x00000210
+
+#define NV20_3D_ZETA_OFFSET 0x00000214
+
+#define NV20_3D_UNK0290 0x00000290
+
+#define NV20_3D_VIEWPORT_CLIP_MODE 0x000002b4
+
+#define NV20_3D_VIEWPORT_CLIP_HORIZ(i0) (0x000002c0 + 0x4*(i0))
+#define NV20_3D_VIEWPORT_CLIP_HORIZ__ESIZE 0x00000004
+#define NV20_3D_VIEWPORT_CLIP_HORIZ__LEN 0x00000008
+#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__MASK 0x000007ff
+#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__SHIFT 0
+#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__MASK 0x07ff0000
+#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__SHIFT 16
+
+#define NV20_3D_VIEWPORT_CLIP_VERT(i0) (0x000002e0 + 0x4*(i0))
+#define NV20_3D_VIEWPORT_CLIP_VERT__ESIZE 0x00000004
+#define NV20_3D_VIEWPORT_CLIP_VERT__LEN 0x00000008
+#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_T__MASK 0x000007ff
+#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_T__SHIFT 0
+#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_B__MASK 0x07ff0000
+#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_B__SHIFT 16
+
+#define NV20_3D_ALPHA_FUNC_ENABLE 0x00000300
+
+#define NV20_3D_BLEND_FUNC_ENABLE 0x00000304
+
+#define NV20_3D_CULL_FACE_ENABLE 0x00000308
+
+#define NV20_3D_DEPTH_TEST_ENABLE 0x0000030c
+
+#define NV20_3D_DITHER_ENABLE 0x00000310
+
+#define NV20_3D_LIGHTING_ENABLE 0x00000314
+
+#define NV20_3D_POINT_PARAMETERS_ENABLE 0x00000318
+
+#define NV20_3D_POINT_SMOOTH_ENABLE 0x0000031c
+
+#define NV20_3D_LINE_SMOOTH_ENABLE 0x00000320
+
+#define NV20_3D_POLYGON_SMOOTH_ENABLE 0x00000324
+
+#define NV20_3D_STENCIL_ENABLE 0x0000032c
+
+#define NV20_3D_POLYGON_OFFSET_POINT_ENABLE 0x00000330
+
+#define NV20_3D_POLYGON_OFFSET_LINE_ENABLE 0x00000334
+
+#define NV20_3D_POLYGON_OFFSET_FILL_ENABLE 0x00000338
+
+#define NV20_3D_ALPHA_FUNC_FUNC 0x0000033c
+#define NV20_3D_ALPHA_FUNC_FUNC_NEVER 0x00000200
+#define NV20_3D_ALPHA_FUNC_FUNC_LESS 0x00000201
+#define NV20_3D_ALPHA_FUNC_FUNC_EQUAL 0x00000202
+#define NV20_3D_ALPHA_FUNC_FUNC_LEQUAL 0x00000203
+#define NV20_3D_ALPHA_FUNC_FUNC_GREATER 0x00000204
+#define NV20_3D_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205
+#define NV20_3D_ALPHA_FUNC_FUNC_GEQUAL 0x00000206
+#define NV20_3D_ALPHA_FUNC_FUNC_ALWAYS 0x00000207
+
+#define NV20_3D_ALPHA_FUNC_REF 0x00000340
+
+#define NV20_3D_BLEND_FUNC_SRC 0x00000344
+#define NV20_3D_BLEND_FUNC_SRC_ZERO 0x00000000
+#define NV20_3D_BLEND_FUNC_SRC_ONE 0x00000001
+#define NV20_3D_BLEND_FUNC_SRC_SRC_COLOR 0x00000300
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301
+#define NV20_3D_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303
+#define NV20_3D_BLEND_FUNC_SRC_DST_ALPHA 0x00000304
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305
+#define NV20_3D_BLEND_FUNC_SRC_DST_COLOR 0x00000306
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307
+#define NV20_3D_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308
+#define NV20_3D_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002
+#define NV20_3D_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004
+
+#define NV20_3D_BLEND_FUNC_DST 0x00000348
+#define NV20_3D_BLEND_FUNC_DST_ZERO 0x00000000
+#define NV20_3D_BLEND_FUNC_DST_ONE 0x00000001
+#define NV20_3D_BLEND_FUNC_DST_SRC_COLOR 0x00000300
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301
+#define NV20_3D_BLEND_FUNC_DST_SRC_ALPHA 0x00000302
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303
+#define NV20_3D_BLEND_FUNC_DST_DST_ALPHA 0x00000304
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305
+#define NV20_3D_BLEND_FUNC_DST_DST_COLOR 0x00000306
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307
+#define NV20_3D_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308
+#define NV20_3D_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002
+#define NV20_3D_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004
+
+#define NV20_3D_BLEND_COLOR 0x0000034c
+#define NV20_3D_BLEND_COLOR_B__MASK 0x000000ff
+#define NV20_3D_BLEND_COLOR_B__SHIFT 0
+#define NV20_3D_BLEND_COLOR_G__MASK 0x0000ff00
+#define NV20_3D_BLEND_COLOR_G__SHIFT 8
+#define NV20_3D_BLEND_COLOR_R__MASK 0x00ff0000
+#define NV20_3D_BLEND_COLOR_R__SHIFT 16
+#define NV20_3D_BLEND_COLOR_A__MASK 0xff000000
+#define NV20_3D_BLEND_COLOR_A__SHIFT 24
+
+#define NV20_3D_BLEND_EQUATION 0x00000350
+#define NV20_3D_BLEND_EQUATION_FUNC_ADD 0x00008006
+#define NV20_3D_BLEND_EQUATION_MIN 0x00008007
+#define NV20_3D_BLEND_EQUATION_MAX 0x00008008
+#define NV20_3D_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a
+#define NV20_3D_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b
+
+#define NV20_3D_DEPTH_FUNC 0x00000354
+#define NV20_3D_DEPTH_FUNC_NEVER 0x00000200
+#define NV20_3D_DEPTH_FUNC_LESS 0x00000201
+#define NV20_3D_DEPTH_FUNC_EQUAL 0x00000202
+#define NV20_3D_DEPTH_FUNC_LEQUAL 0x00000203
+#define NV20_3D_DEPTH_FUNC_GREATER 0x00000204
+#define NV20_3D_DEPTH_FUNC_NOTEQUAL 0x00000205
+#define NV20_3D_DEPTH_FUNC_GEQUAL 0x00000206
+#define NV20_3D_DEPTH_FUNC_ALWAYS 0x00000207
+
+#define NV20_3D_COLOR_MASK 0x00000358
+#define NV20_3D_COLOR_MASK_B 0x00000001
+#define NV20_3D_COLOR_MASK_G 0x00000100
+#define NV20_3D_COLOR_MASK_R 0x00010000
+#define NV20_3D_COLOR_MASK_A 0x01000000
+
+#define NV20_3D_DEPTH_WRITE_ENABLE 0x0000035c
+
+#define NV20_3D_STENCIL_MASK 0x00000360
+
+#define NV20_3D_STENCIL_FUNC_FUNC 0x00000364
+#define NV20_3D_STENCIL_FUNC_FUNC_NEVER 0x00000200
+#define NV20_3D_STENCIL_FUNC_FUNC_LESS 0x00000201
+#define NV20_3D_STENCIL_FUNC_FUNC_EQUAL 0x00000202
+#define NV20_3D_STENCIL_FUNC_FUNC_LEQUAL 0x00000203
+#define NV20_3D_STENCIL_FUNC_FUNC_GREATER 0x00000204
+#define NV20_3D_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205
+#define NV20_3D_STENCIL_FUNC_FUNC_GEQUAL 0x00000206
+#define NV20_3D_STENCIL_FUNC_FUNC_ALWAYS 0x00000207
+
+#define NV20_3D_STENCIL_FUNC_REF 0x00000368
+
+#define NV20_3D_STENCIL_FUNC_MASK 0x0000036c
+
+#define NV20_3D_STENCIL_OP_FAIL 0x00000370
+#define NV20_3D_STENCIL_OP_FAIL_ZERO 0x00000000
+#define NV20_3D_STENCIL_OP_FAIL_INVERT 0x0000150a
+#define NV20_3D_STENCIL_OP_FAIL_KEEP 0x00001e00
+#define NV20_3D_STENCIL_OP_FAIL_REPLACE 0x00001e01
+#define NV20_3D_STENCIL_OP_FAIL_INCR 0x00001e02
+#define NV20_3D_STENCIL_OP_FAIL_DECR 0x00001e03
+#define NV20_3D_STENCIL_OP_FAIL_INCR_WRAP 0x00008507
+#define NV20_3D_STENCIL_OP_FAIL_DECR_WRAP 0x00008508
+
+#define NV20_3D_STENCIL_OP_ZFAIL 0x00000374
+#define NV20_3D_STENCIL_OP_ZFAIL_ZERO 0x00000000
+#define NV20_3D_STENCIL_OP_ZFAIL_INVERT 0x0000150a
+#define NV20_3D_STENCIL_OP_ZFAIL_KEEP 0x00001e00
+#define NV20_3D_STENCIL_OP_ZFAIL_REPLACE 0x00001e01
+#define NV20_3D_STENCIL_OP_ZFAIL_INCR 0x00001e02
+#define NV20_3D_STENCIL_OP_ZFAIL_DECR 0x00001e03
+#define NV20_3D_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507
+#define NV20_3D_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508
+
+#define NV20_3D_STENCIL_OP_ZPASS 0x00000378
+#define NV20_3D_STENCIL_OP_ZPASS_ZERO 0x00000000
+#define NV20_3D_STENCIL_OP_ZPASS_INVERT 0x0000150a
+#define NV20_3D_STENCIL_OP_ZPASS_KEEP 0x00001e00
+#define NV20_3D_STENCIL_OP_ZPASS_REPLACE 0x00001e01
+#define NV20_3D_STENCIL_OP_ZPASS_INCR 0x00001e02
+#define NV20_3D_STENCIL_OP_ZPASS_DECR 0x00001e03
+#define NV20_3D_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507
+#define NV20_3D_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508
+
+#define NV20_3D_SHADE_MODEL 0x0000037c
+#define NV20_3D_SHADE_MODEL_FLAT 0x00001d00
+#define NV20_3D_SHADE_MODEL_SMOOTH 0x00001d01
+
+#define NV20_3D_LINE_WIDTH 0x00000380
+
+#define NV20_3D_POLYGON_OFFSET_FACTOR 0x00000384
+
+#define NV20_3D_POLYGON_OFFSET_UNITS 0x00000388
+
+#define NV20_3D_POLYGON_MODE_FRONT 0x0000038c
+#define NV20_3D_POLYGON_MODE_FRONT_POINT 0x00001b00
+#define NV20_3D_POLYGON_MODE_FRONT_LINE 0x00001b01
+#define NV20_3D_POLYGON_MODE_FRONT_FILL 0x00001b02
+
+#define NV20_3D_POLYGON_MODE_BACK 0x00000390
+#define NV20_3D_POLYGON_MODE_BACK_POINT 0x00001b00
+#define NV20_3D_POLYGON_MODE_BACK_LINE 0x00001b01
+#define NV20_3D_POLYGON_MODE_BACK_FILL 0x00001b02
+
+#define NV20_3D_DEPTH_RANGE_NEAR 0x00000394
+
+#define NV20_3D_DEPTH_RANGE_FAR 0x00000398
+
+#define NV20_3D_CULL_FACE 0x0000039c
+#define NV20_3D_CULL_FACE_FRONT 0x00000404
+#define NV20_3D_CULL_FACE_BACK 0x00000405
+#define NV20_3D_CULL_FACE_FRONT_AND_BACK 0x00000408
+
+#define NV20_3D_FRONT_FACE 0x000003a0
+#define NV20_3D_FRONT_FACE_CW 0x00000900
+#define NV20_3D_FRONT_FACE_CCW 0x00000901
+
+#define NV20_3D_DMA_FENCE 0x000001a4
+
+#define NV20_3D_DMA_QUERY 0x000001a8
+
+
+#define NV20_3D_VERTEX_POS_3F 0x00001500
+
+
+#define NV20_3D_VERTEX_POS_3F_X 0x00001500
+
+#define NV20_3D_VERTEX_POS_3F_Y 0x00001504
+
+#define NV20_3D_VERTEX_POS_3F_Z 0x00001508
+
+#define NV20_3D_VERTEX_POS_4F 0x00001518
+
+
+#define NV20_3D_VERTEX_POS_4F_X 0x00001518
+
+#define NV20_3D_VERTEX_POS_4F_Y 0x0000151c
+
+#define NV20_3D_VERTEX_POS_4F_Z 0x00001520
+
+#define NV20_3D_VERTEX_POS_4F_W 0x00001524
+
+#define NV20_3D_VERTEX_POS_3I 0x00001528
+
+
+#define NV20_3D_VERTEX_POS_3I_XY 0x00001528
+#define NV20_3D_VERTEX_POS_3I_XY_X__MASK 0x0000ffff
+#define NV20_3D_VERTEX_POS_3I_XY_X__SHIFT 0
+#define NV20_3D_VERTEX_POS_3I_XY_Y__MASK 0xffff0000
+#define NV20_3D_VERTEX_POS_3I_XY_Y__SHIFT 16
+
+#define NV20_3D_VERTEX_POS_3I_Z 0x0000152c
+#define NV20_3D_VERTEX_POS_3I_Z_Z__MASK 0x0000ffff
+#define NV20_3D_VERTEX_POS_3I_Z_Z__SHIFT 0
+
+#define NV20_3D_VERTEX_NOR_3F 0x00001530
+
+
+#define NV20_3D_VERTEX_NOR_3F_X 0x00001530
+
+#define NV20_3D_VERTEX_NOR_3F_Y 0x00001534
+
+#define NV20_3D_VERTEX_NOR_3F_Z 0x00001538
+
+#define NV20_3D_VERTEX_NOR_3I 0x00001540
+
+
+#define NV20_3D_VERTEX_NOR_3I_XY 0x00001540
+#define NV20_3D_VERTEX_NOR_3I_XY_X__MASK 0x0000ffff
+#define NV20_3D_VERTEX_NOR_3I_XY_X__SHIFT 0
+#define NV20_3D_VERTEX_NOR_3I_XY_Y__MASK 0xffff0000
+#define NV20_3D_VERTEX_NOR_3I_XY_Y__SHIFT 16
+
+#define NV20_3D_VERTEX_NOR_3I_Z 0x00001544
+#define NV20_3D_VERTEX_NOR_3I_Z_Z__MASK 0x0000ffff
+#define NV20_3D_VERTEX_NOR_3I_Z_Z__SHIFT 0
+
+#define NV20_3D_VERTEX_COL_4F 0x00001550
+
+
+#define NV20_3D_VERTEX_COL_4F_R 0x00001550
+
+#define NV20_3D_VERTEX_COL_4F_G 0x00001554
+
+#define NV20_3D_VERTEX_COL_4F_B 0x00001558
+
+#define NV20_3D_VERTEX_COL_4F_A 0x0000155c
+
+#define NV20_3D_VERTEX_COL_3F 0x00001560
+
+
+#define NV20_3D_VERTEX_COL_3F_R 0x00001560
+
+#define NV20_3D_VERTEX_COL_3F_G 0x00001564
+
+#define NV20_3D_VERTEX_COL_3F_B 0x00001568
+
+#define NV20_3D_VERTEX_COL_4I 0x0000156c
+#define NV20_3D_VERTEX_COL_4I_R__MASK 0x000000ff
+#define NV20_3D_VERTEX_COL_4I_R__SHIFT 0
+#define NV20_3D_VERTEX_COL_4I_G__MASK 0x0000ff00
+#define NV20_3D_VERTEX_COL_4I_G__SHIFT 8
+#define NV20_3D_VERTEX_COL_4I_B__MASK 0x00ff0000
+#define NV20_3D_VERTEX_COL_4I_B__SHIFT 16
+#define NV20_3D_VERTEX_COL_4I_A__MASK 0xff000000
+#define NV20_3D_VERTEX_COL_4I_A__SHIFT 24
+
+#define NV20_3D_VERTEX_COL2_3F 0x00001580
+
+
+#define NV20_3D_VERTEX_COL2_3F_R 0x00001580
+
+#define NV20_3D_VERTEX_COL2_3F_G 0x00001584
+
+#define NV20_3D_VERTEX_COL2_3F_B 0x00001588
+
+#define NV20_3D_VERTEX_COL2_3I 0x0000158c
+#define NV20_3D_VERTEX_COL2_3I_R__MASK 0x000000ff
+#define NV20_3D_VERTEX_COL2_3I_R__SHIFT 0
+#define NV20_3D_VERTEX_COL2_3I_G__MASK 0x0000ff00
+#define NV20_3D_VERTEX_COL2_3I_G__SHIFT 8
+#define NV20_3D_VERTEX_COL2_3I_B__MASK 0x00ff0000
+#define NV20_3D_VERTEX_COL2_3I_B__SHIFT 16
+
+#define NV20_3D_VERTEX_TX0_2F 0x00001590
+
+
+#define NV20_3D_VERTEX_TX0_2F_S 0x00001590
+
+#define NV20_3D_VERTEX_TX0_2F_T 0x00001594
+
+#define NV20_3D_VERTEX_TX0_2I 0x00001598
+#define NV20_3D_VERTEX_TX0_2I_S__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX0_2I_S__SHIFT 0
+#define NV20_3D_VERTEX_TX0_2I_T__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX0_2I_T__SHIFT 16
+
+#define NV20_3D_VERTEX_TX0_4F 0x000015a0
+
+
+#define NV20_3D_VERTEX_TX0_4F_S 0x000015a0
+
+#define NV20_3D_VERTEX_TX0_4F_T 0x000015a4
+
+#define NV20_3D_VERTEX_TX0_4F_R 0x000015a8
+
+#define NV20_3D_VERTEX_TX0_4F_Q 0x000015ac
+
+#define NV20_3D_VERTEX_TX0_4I 0x000015b0
+
+
+#define NV20_3D_VERTEX_TX0_4I_ST 0x000015b0
+#define NV20_3D_VERTEX_TX0_4I_ST_S__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX0_4I_ST_S__SHIFT 0
+#define NV20_3D_VERTEX_TX0_4I_ST_T__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX0_4I_ST_T__SHIFT 16
+
+#define NV20_3D_VERTEX_TX0_4I_RQ 0x000015b4
+#define NV20_3D_VERTEX_TX0_4I_RQ_R__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX0_4I_RQ_R__SHIFT 0
+#define NV20_3D_VERTEX_TX0_4I_RQ_Q__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX0_4I_RQ_Q__SHIFT 16
+
+#define NV20_3D_VERTEX_TX1_2F 0x000015b8
+
+
+#define NV20_3D_VERTEX_TX1_2F_S 0x000015b8
+
+#define NV20_3D_VERTEX_TX1_2F_T 0x000015bc
+
+#define NV20_3D_VERTEX_TX1_2I 0x000015c0
+#define NV20_3D_VERTEX_TX1_2I_S__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX1_2I_S__SHIFT 0
+#define NV20_3D_VERTEX_TX1_2I_T__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX1_2I_T__SHIFT 16
+
+#define NV20_3D_VERTEX_TX1_4F 0x000015c8
+
+
+#define NV20_3D_VERTEX_TX1_4F_S 0x000015c8
+
+#define NV20_3D_VERTEX_TX1_4F_T 0x000015cc
+
+#define NV20_3D_VERTEX_TX1_4F_R 0x000015d0
+
+#define NV20_3D_VERTEX_TX1_4F_Q 0x000015d4
+
+#define NV20_3D_VERTEX_TX1_4I 0x000015d8
+
+
+#define NV20_3D_VERTEX_TX1_4I_ST 0x000015d8
+#define NV20_3D_VERTEX_TX1_4I_ST_S__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX1_4I_ST_S__SHIFT 0
+#define NV20_3D_VERTEX_TX1_4I_ST_T__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX1_4I_ST_T__SHIFT 16
+
+#define NV20_3D_VERTEX_TX1_4I_RQ 0x000015dc
+#define NV20_3D_VERTEX_TX1_4I_RQ_R__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX1_4I_RQ_R__SHIFT 0
+#define NV20_3D_VERTEX_TX1_4I_RQ_Q__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX1_4I_RQ_Q__SHIFT 16
+
+#define NV20_3D_VERTEX_TX2_2F 0x000015e0
+
+
+#define NV20_3D_VERTEX_TX2_2F_S 0x000015e0
+
+#define NV20_3D_VERTEX_TX2_2F_T 0x000015e4
+
+#define NV20_3D_VERTEX_TX2_2I 0x000015e8
+#define NV20_3D_VERTEX_TX2_2I_S__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX2_2I_S__SHIFT 0
+#define NV20_3D_VERTEX_TX2_2I_T__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX2_2I_T__SHIFT 16
+
+#define NV20_3D_VERTEX_TX2_4F 0x000015f0
+
+
+#define NV20_3D_VERTEX_TX2_4F_S 0x000015f0
+
+#define NV20_3D_VERTEX_TX2_4F_T 0x000015f4
+
+#define NV20_3D_VERTEX_TX2_4F_R 0x000015f8
+
+#define NV20_3D_VERTEX_TX2_4F_Q 0x000015fc
+
+#define NV20_3D_VERTEX_TX2_4I 0x00001600
+
+
+#define NV20_3D_VERTEX_TX2_4I_ST 0x00001600
+#define NV20_3D_VERTEX_TX2_4I_ST_S__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX2_4I_ST_S__SHIFT 0
+#define NV20_3D_VERTEX_TX2_4I_ST_T__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX2_4I_ST_T__SHIFT 16
+
+#define NV20_3D_VERTEX_TX2_4I_RQ 0x00001604
+#define NV20_3D_VERTEX_TX2_4I_RQ_R__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX2_4I_RQ_R__SHIFT 0
+#define NV20_3D_VERTEX_TX2_4I_RQ_Q__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX2_4I_RQ_Q__SHIFT 16
+
+#define NV20_3D_VERTEX_TX3_2F 0x00001608
+
+
+#define NV20_3D_VERTEX_TX3_2F_S 0x00001608
+
+#define NV20_3D_VERTEX_TX3_2F_T 0x0000160c
+
+#define NV20_3D_VERTEX_TX3_2I 0x00001610
+#define NV20_3D_VERTEX_TX3_2I_S__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX3_2I_S__SHIFT 0
+#define NV20_3D_VERTEX_TX3_2I_T__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX3_2I_T__SHIFT 16
+
+#define NV20_3D_VERTEX_TX3_4F 0x00001620
+
+
+#define NV20_3D_VERTEX_TX3_4F_S 0x00001620
+
+#define NV20_3D_VERTEX_TX3_4F_T 0x00001624
+
+#define NV20_3D_VERTEX_TX3_4F_R 0x00001628
+
+#define NV20_3D_VERTEX_TX3_4F_Q 0x0000162c
+
+#define NV20_3D_VERTEX_TX3_4I 0x00001630
+
+
+#define NV20_3D_VERTEX_TX3_4I_ST 0x00001630
+#define NV20_3D_VERTEX_TX3_4I_ST_S__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX3_4I_ST_S__SHIFT 0
+#define NV20_3D_VERTEX_TX3_4I_ST_T__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX3_4I_ST_T__SHIFT 16
+
+#define NV20_3D_VERTEX_TX3_4I_RQ 0x00001634
+#define NV20_3D_VERTEX_TX3_4I_RQ_R__MASK 0x0000ffff
+#define NV20_3D_VERTEX_TX3_4I_RQ_R__SHIFT 0
+#define NV20_3D_VERTEX_TX3_4I_RQ_Q__MASK 0xffff0000
+#define NV20_3D_VERTEX_TX3_4I_RQ_Q__SHIFT 16
+
+#define NV20_3D_VERTEX_FOG_1F 0x00001698
+
+#define NV20_3D_EDGEFLAG_ENABLE 0x000016bc
+
+#define NV20_3D_VERTEX_ATTR_4F(i0) (0x00001a00 + 0x10*(i0))
+#define NV20_3D_VERTEX_ATTR_4F__ESIZE 0x00000010
+#define NV20_3D_VERTEX_ATTR_4F__LEN 0x00000010
+
+
+#define NV20_3D_VERTEX_ATTR_4F_X(i0) (0x00001a00 + 0x10*(i0))
+
+#define NV20_3D_VERTEX_ATTR_4F_Y(i0) (0x00001a04 + 0x10*(i0))
+
+#define NV20_3D_VERTEX_ATTR_4F_Z(i0) (0x00001a08 + 0x10*(i0))
+
+#define NV20_3D_VERTEX_ATTR_4F_W(i0) (0x00001a0c + 0x10*(i0))
+
+
+#define NV20_3D_DMA_VTXBUF0 0x0000019c
+
+#define NV20_3D_DMA_VTXBUF1 0x000001a0
+
+#define NV20_3D_VTXBUF_VALIDATE 0x00001710
+
+
+#define NV20_3D_VTXBUF_OFFSET(i0) (0x00001720 + 0x4*(i0))
+#define NV20_3D_VTXBUF_OFFSET_DMA1 0x80000000
+#define NV20_3D_VTXBUF_OFFSET_OFFSET__MASK 0x0fffffff
+#define NV20_3D_VTXBUF_OFFSET_OFFSET__SHIFT 0
+
+#define NV20_3D_VTXBUF_FMT(i0) (0x00001760 + 0x4*(i0))
+#define NV20_3D_VTXBUF_FMT_TYPE__MASK 0x0000000f
+#define NV20_3D_VTXBUF_FMT_TYPE__SHIFT 0
+#define NV20_3D_VTXBUF_FMT_TYPE_FLOAT 0x00000002
+#define NV20_3D_VTXBUF_FMT_TYPE_UBYTE 0x00000004
+#define NV20_3D_VTXBUF_FMT_TYPE_USHORT 0x00000005
+#define NV20_3D_VTXBUF_FMT_SIZE__MASK 0x000000f0
+#define NV20_3D_VTXBUF_FMT_SIZE__SHIFT 4
+#define NV20_3D_VTXBUF_FMT_STRIDE__MASK 0x0000ff00
+#define NV20_3D_VTXBUF_FMT_STRIDE__SHIFT 8
+
+#define NV20_3D_VERTEX_BEGIN_END 0x000017fc
+#define NV20_3D_VERTEX_BEGIN_END_STOP 0x00000000
+#define NV20_3D_VERTEX_BEGIN_END_POINTS 0x00000001
+#define NV20_3D_VERTEX_BEGIN_END_LINES 0x00000002
+#define NV20_3D_VERTEX_BEGIN_END_LINE_LOOP 0x00000003
+#define NV20_3D_VERTEX_BEGIN_END_LINE_STRIP 0x00000004
+#define NV20_3D_VERTEX_BEGIN_END_TRIANGLES 0x00000005
+#define NV20_3D_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006
+#define NV20_3D_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007
+#define NV20_3D_VERTEX_BEGIN_END_QUADS 0x00000008
+#define NV20_3D_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009
+#define NV20_3D_VERTEX_BEGIN_END_POLYGON 0x0000000a
+
+#define NV20_3D_VTXBUF_ELEMENT_U16 0x00001800
+#define NV20_3D_VTXBUF_ELEMENT_U16_I0__MASK 0x0000ffff
+#define NV20_3D_VTXBUF_ELEMENT_U16_I0__SHIFT 0
+#define NV20_3D_VTXBUF_ELEMENT_U16_I1__MASK 0xffff0000
+#define NV20_3D_VTXBUF_ELEMENT_U16_I1__SHIFT 16
+
+#define NV20_3D_VTXBUF_ELEMENT_U32 0x00001808
+
+#define NV20_3D_VTXBUF_BATCH 0x00001810
+#define NV20_3D_VTXBUF_BATCH_OFFSET__MASK 0x00ffffff
+#define NV20_3D_VTXBUF_BATCH_OFFSET__SHIFT 0
+#define NV20_3D_VTXBUF_BATCH_COUNT__MASK 0xff000000
+#define NV20_3D_VTXBUF_BATCH_COUNT__SHIFT 24
+
+#define NV20_3D_VTXBUF_DATA 0x00001818
+
+
+#define NV20_3D_ENGINE 0x00001e94
+#define NV20_3D_ENGINE_VP 0x00000002
+#define NV20_3D_ENGINE_FIXED 0x00000004
+
+#define NV20_3D_VP_UPLOAD_INST(i0) (0x00000b00 + 0x4*(i0))
+#define NV20_3D_VP_UPLOAD_INST__ESIZE 0x00000004
+#define NV20_3D_VP_UPLOAD_INST__LEN 0x00000004
+
+#define NV20_3D_VP_UPLOAD_CONST(i0) (0x00000b80 + 0x4*(i0))
+#define NV20_3D_VP_UPLOAD_CONST__ESIZE 0x00000004
+#define NV20_3D_VP_UPLOAD_CONST__LEN 0x00000004
+
+#define NV20_3D_VP_UPLOAD_FROM_ID 0x00001e9c
+
+#define NV20_3D_VP_START_FROM_ID 0x00001ea0
+
+#define NV20_3D_VP_UPLOAD_CONST_ID 0x00001ea4
+
+
+
+#define NV20_3D_MODELVIEW_MATRIX(i0, i1) (0x00000480 + 0x40*(i0) + 0x4*(i1))
+#define NV20_3D_MODELVIEW_MATRIX__ESIZE 0x00000004
+#define NV20_3D_MODELVIEW_MATRIX__LEN 0x00000010
+
+#define NV20_3D_INVERSE_MODELVIEW_MATRIX(i0, i1) (0x00000580 + 0x40*(i0) + 0x4*(i1))
+#define NV20_3D_INVERSE_MODELVIEW_MATRIX__ESIZE 0x00000004
+#define NV20_3D_INVERSE_MODELVIEW_MATRIX__LEN 0x00000010
+
+#define NV20_3D_PROJECTION_MATRIX(i0) (0x00000680 + 0x4*(i0))
+#define NV20_3D_PROJECTION_MATRIX__ESIZE 0x00000004
+#define NV20_3D_PROJECTION_MATRIX__LEN 0x00000010
+
+#define NV20_3D_VIEWPORT_TRANSLATE 0x00000a20
+
+
+#define NV20_3D_VIEWPORT_TRANSLATE_X 0x00000a20
+
+#define NV20_3D_VIEWPORT_TRANSLATE_Y 0x00000a24
+
+#define NV20_3D_VIEWPORT_TRANSLATE_Z 0x00000a28
+
+#define NV20_3D_VIEWPORT_TRANSLATE_W 0x00000a2c
+
+#define NV20_3D_VIEWPORT_SCALE 0x00000af0
+
+
+#define NV20_3D_VIEWPORT_SCALE_X 0x00000af0
+
+#define NV20_3D_VIEWPORT_SCALE_Y 0x00000af4
+
+#define NV20_3D_VIEWPORT_SCALE_Z 0x00000af8
+
+#define NV20_3D_VIEWPORT_SCALE_W 0x00000afc
+
+
+#define NV20_3D_NORMALIZE_ENABLE 0x000003a4
+
+#define NV20_3D_SEPARATE_SPECULAR_ENABLE 0x000003b8
+
+#define NV20_3D_LIGHT_MODEL_TWO_SIDE_ENABLE 0x000017c4
+
+#define NV20_3D_LIGHT_MODEL 0x00000294
+#define NV20_3D_LIGHT_MODEL_VIEWER__MASK 0x00030000
+#define NV20_3D_LIGHT_MODEL_VIEWER__SHIFT 16
+#define NV20_3D_LIGHT_MODEL_VIEWER_NONLOCAL 0x00020000
+#define NV20_3D_LIGHT_MODEL_VIEWER_LOCAL 0x00030000
+#define NV20_3D_LIGHT_MODEL_SEPARATE_SPECULAR 0x00000001
+
+#define NV20_3D_ENABLED_LIGHTS 0x000003bc
+#define NV20_3D_ENABLED_LIGHTS_0__MASK 0x00000003
+#define NV20_3D_ENABLED_LIGHTS_0__SHIFT 0
+#define NV20_3D_ENABLED_LIGHTS_0_DISABLED 0x00000000
+#define NV20_3D_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001
+#define NV20_3D_ENABLED_LIGHTS_0_POSITIONAL 0x00000002
+#define NV20_3D_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003
+#define NV20_3D_ENABLED_LIGHTS_1__MASK 0x0000000c
+#define NV20_3D_ENABLED_LIGHTS_1__SHIFT 2
+#define NV20_3D_ENABLED_LIGHTS_1_DISABLED 0x00000000
+#define NV20_3D_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004
+#define NV20_3D_ENABLED_LIGHTS_1_POSITIONAL 0x00000008
+#define NV20_3D_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c
+#define NV20_3D_ENABLED_LIGHTS_2__MASK 0x00000030
+#define NV20_3D_ENABLED_LIGHTS_2__SHIFT 4
+#define NV20_3D_ENABLED_LIGHTS_2_DISABLED 0x00000000
+#define NV20_3D_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010
+#define NV20_3D_ENABLED_LIGHTS_2_POSITIONAL 0x00000020
+#define NV20_3D_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030
+#define NV20_3D_ENABLED_LIGHTS_3__MASK 0x000000c0
+#define NV20_3D_ENABLED_LIGHTS_3__SHIFT 6
+#define NV20_3D_ENABLED_LIGHTS_3_DISABLED 0x00000000
+#define NV20_3D_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040
+#define NV20_3D_ENABLED_LIGHTS_3_POSITIONAL 0x00000080
+#define NV20_3D_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0
+#define NV20_3D_ENABLED_LIGHTS_4__MASK 0x00000300
+#define NV20_3D_ENABLED_LIGHTS_4__SHIFT 8
+#define NV20_3D_ENABLED_LIGHTS_4_DISABLED 0x00000000
+#define NV20_3D_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100
+#define NV20_3D_ENABLED_LIGHTS_4_POSITIONAL 0x00000200
+#define NV20_3D_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300
+#define NV20_3D_ENABLED_LIGHTS_5__MASK 0x00000c00
+#define NV20_3D_ENABLED_LIGHTS_5__SHIFT 10
+#define NV20_3D_ENABLED_LIGHTS_5_DISABLED 0x00000000
+#define NV20_3D_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400
+#define NV20_3D_ENABLED_LIGHTS_5_POSITIONAL 0x00000800
+#define NV20_3D_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00
+#define NV20_3D_ENABLED_LIGHTS_6__MASK 0x00003000
+#define NV20_3D_ENABLED_LIGHTS_6__SHIFT 12
+#define NV20_3D_ENABLED_LIGHTS_6_DISABLED 0x00000000
+#define NV20_3D_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000
+#define NV20_3D_ENABLED_LIGHTS_6_POSITIONAL 0x00002000
+#define NV20_3D_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000
+#define NV20_3D_ENABLED_LIGHTS_7__MASK 0x0000c000
+#define NV20_3D_ENABLED_LIGHTS_7__SHIFT 14
+#define NV20_3D_ENABLED_LIGHTS_7_DISABLED 0x00000000
+#define NV20_3D_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000
+#define NV20_3D_ENABLED_LIGHTS_7_POSITIONAL 0x00008000
+#define NV20_3D_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000
+
+#define NV20_3D_COLOR_MATERIAL 0x00000298
+#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION__MASK 0x00000003
+#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION__SHIFT 0
+#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_OFF 0x00000000
+#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_COL1 0x00000001
+#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_COL2 0x00000002
+#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT__MASK 0x0000000c
+#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT__SHIFT 2
+#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_OFF 0x00000000
+#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_COL1 0x00000004
+#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_COL2 0x00000008
+#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE__MASK 0x00000030
+#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE__SHIFT 4
+#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_OFF 0x00000000
+#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_COL1 0x00000010
+#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_COL2 0x00000020
+#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR__MASK 0x000000c0
+#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR__SHIFT 6
+#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_OFF 0x00000000
+#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_COL1 0x00000040
+#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_COL2 0x00000080
+#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION__MASK 0x00000300
+#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION__SHIFT 8
+#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_OFF 0x00000000
+#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_COL1 0x00000100
+#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_COL2 0x00000200
+#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT__MASK 0x00000c00
+#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT__SHIFT 10
+#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_OFF 0x00000000
+#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_COL1 0x00000400
+#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_COL2 0x00000800
+#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE__MASK 0x00003000
+#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE__SHIFT 12
+#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_OFF 0x00000000
+#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_COL1 0x00001000
+#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_COL2 0x00002000
+#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR__MASK 0x0000c000
+#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR__SHIFT 14
+#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_OFF 0x00000000
+#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_COL1 0x00004000
+#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_COL2 0x00008000
+
+#define NV20_3D_MATERIAL_FACTOR_FRONT 0x000003a8
+
+
+#define NV20_3D_MATERIAL_FACTOR_FRONT_R 0x000003a8
+
+#define NV20_3D_MATERIAL_FACTOR_FRONT_G 0x000003ac
+
+#define NV20_3D_MATERIAL_FACTOR_FRONT_B 0x000003b0
+
+#define NV20_3D_MATERIAL_FACTOR_BACK 0x000017b0
+
+
+#define NV20_3D_MATERIAL_FACTOR_BACK_R 0x000017b0
+
+#define NV20_3D_MATERIAL_FACTOR_BACK_G 0x000017b4
+
+#define NV20_3D_MATERIAL_FACTOR_BACK_B 0x000017b8
+
+#define NV20_3D_MATERIAL_FACTOR_FRONT_A 0x000003b4
+
+#define NV20_3D_MATERIAL_FACTOR_BACK_A 0x000017ac
+
+#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT 0x00000a10
+
+
+#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_R 0x00000a10
+
+#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_G 0x00000a14
+
+#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_B 0x00000a18
+
+#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT 0x000017a0
+
+
+#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_R 0x000017a0
+
+#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_G 0x000017a4
+
+#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_B 0x000017a8
+
+#define NV20_3D_FRONT_MATERIAL_SHININESS(i0) (0x000009e0 + 0x4*(i0))
+#define NV20_3D_FRONT_MATERIAL_SHININESS__ESIZE 0x00000004
+#define NV20_3D_FRONT_MATERIAL_SHININESS__LEN 0x00000006
+
+#define NV20_3D_BACK_MATERIAL_SHININESS(i0) (0x00001e28 + 0x4*(i0))
+#define NV20_3D_BACK_MATERIAL_SHININESS__ESIZE 0x00000004
+#define NV20_3D_BACK_MATERIAL_SHININESS__LEN 0x00000006
+
+
+
+#define NV20_3D_LIGHT_FRONT_AMBIENT(i0) (0x00001000 + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_FRONT_AMBIENT_R(i0) (0x00001000 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_AMBIENT_G(i0) (0x00001004 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_AMBIENT_B(i0) (0x00001008 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_DIFFUSE(i0) (0x0000100c + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_FRONT_DIFFUSE_R(i0) (0x0000100c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_DIFFUSE_G(i0) (0x00001010 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_DIFFUSE_B(i0) (0x00001014 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_SPECULAR(i0) (0x00001018 + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_FRONT_SPECULAR_R(i0) (0x00001018 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_SPECULAR_G(i0) (0x0000101c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_SPECULAR_B(i0) (0x00001020 + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_BACK_AMBIENT(i0) (0x00000c00 + 0x40*(i0))
+
+
+#define NV20_3D_LIGHT_BACK_AMBIENT_R(i0) (0x00000c00 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_AMBIENT_G(i0) (0x00000c04 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_AMBIENT_B(i0) (0x00000c08 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_DIFFUSE(i0) (0x00000c0c + 0x40*(i0))
+
+
+#define NV20_3D_LIGHT_BACK_DIFFUSE_R(i0) (0x00000c0c + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_DIFFUSE_G(i0) (0x00000c10 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_DIFFUSE_B(i0) (0x00000c14 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_SPECULAR(i0) (0x00000c18 + 0x40*(i0))
+
+
+#define NV20_3D_LIGHT_BACK_SPECULAR_R(i0) (0x00000c18 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_SPECULAR_G(i0) (0x00000c1c + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_SPECULAR_B(i0) (0x00000c20 + 0x40*(i0))
+
+
+#define NV20_3D_LIGHT_HALF_VECTOR(i0) (0x00001028 + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_HALF_VECTOR_X(i0) (0x00001028 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_HALF_VECTOR_Y(i0) (0x0000102c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_HALF_VECTOR_Z(i0) (0x00001030 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_DIRECTION(i0) (0x00001034 + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_DIRECTION_X(i0) (0x00001034 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_DIRECTION_Y(i0) (0x00001038 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_DIRECTION_Z(i0) (0x0000103c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_SPOT_CUTOFF(i0, i1) (0x00001040 + 0x80*(i0) + 0x4*(i1))
+#define NV20_3D_LIGHT_SPOT_CUTOFF__ESIZE 0x00000004
+#define NV20_3D_LIGHT_SPOT_CUTOFF__LEN 0x00000007
+
+#define NV20_3D_LIGHT_POSITION(i0) (0x0000105c + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_POSITION_X(i0) (0x0000105c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_POSITION_Y(i0) (0x00001060 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_POSITION_Z(i0) (0x00001064 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_ATTENUATION(i0) (0x00001068 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_ATTENUATION_CONSTANT(i0) (0x00001068 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_ATTENUATION_LINEAR(i0) (0x0000106c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_ATTENUATION_QUADRATIC(i0) (0x00001070 + 0x80*(i0))
+
+
+#define NV20_3D_FOG_MODE 0x0000029c
+#define NV20_3D_FOG_MODE_LINEAR_UNSIGNED 0x00000804
+#define NV20_3D_FOG_MODE_LINEAR_SIGNED 0x00002601
+#define NV20_3D_FOG_MODE_EXP_UNSIGNED 0x00000802
+#define NV20_3D_FOG_MODE_EXP_SIGNED 0x00000800
+#define NV20_3D_FOG_MODE_EXP2_UNSIGNED 0x00000803
+#define NV20_3D_FOG_MODE_EXP2_SIGNED 0x00000801
+
+#define NV20_3D_FOG_COORD 0x000002a0
+#define NV20_3D_FOG_COORD_DIST_RADIAL 0x00000001
+#define NV20_3D_FOG_COORD_DIST_ORTHOGONAL 0x00000002
+#define NV20_3D_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003
+#define NV20_3D_FOG_COORD_FOG 0x00000006
+
+#define NV20_3D_FOG_ENABLE 0x000002a4
+
+#define NV20_3D_FOG_COLOR 0x000002a8
+#define NV20_3D_FOG_COLOR_R__MASK 0x000000ff
+#define NV20_3D_FOG_COLOR_R__SHIFT 0
+#define NV20_3D_FOG_COLOR_G__MASK 0x0000ff00
+#define NV20_3D_FOG_COLOR_G__SHIFT 8
+#define NV20_3D_FOG_COLOR_B__MASK 0x00ff0000
+#define NV20_3D_FOG_COLOR_B__SHIFT 16
+#define NV20_3D_FOG_COLOR_A__MASK 0xff000000
+#define NV20_3D_FOG_COLOR_A__SHIFT 24
+
+#define NV20_3D_FOG_COEFF(i0) (0x000009c0 + 0x4*(i0))
+#define NV20_3D_FOG_COEFF__ESIZE 0x00000004
+#define NV20_3D_FOG_COEFF__LEN 0x00000003
+
+
+
+#define NV20_3D_TEX_GEN_MODE(i0, i1) (0x000003c0 + 0x10*(i0) + 0x4*(i1))
+#define NV20_3D_TEX_GEN_MODE__ESIZE 0x00000004
+#define NV20_3D_TEX_GEN_MODE__LEN 0x00000004
+#define NV20_3D_TEX_GEN_MODE_FALSE 0x00000000
+#define NV20_3D_TEX_GEN_MODE_EYE_LINEAR 0x00002400
+#define NV20_3D_TEX_GEN_MODE_OBJECT_LINEAR 0x00002401
+#define NV20_3D_TEX_GEN_MODE_SPHERE_MAP 0x00002402
+#define NV20_3D_TEX_GEN_MODE_NORMAL_MAP 0x00008511
+#define NV20_3D_TEX_GEN_MODE_REFLECTION_MAP 0x00008512
+
+
+#define NV20_3D_TEX_GEN_COEFF(i0, i1) (0x00000840 + 0x40*(i0) + 0x10*(i1))
+#define NV20_3D_TEX_GEN_COEFF__ESIZE 0x00000010
+#define NV20_3D_TEX_GEN_COEFF__LEN 0x00000004
+
+#define NV20_3D_TEX_GEN_COEFF_A(i0, i1) (0x00000840 + 0x40*(i0) + 0x10*(i1))
+
+#define NV20_3D_TEX_GEN_COEFF_B(i0, i1) (0x00000844 + 0x40*(i0) + 0x10*(i1))
+
+#define NV20_3D_TEX_GEN_COEFF_C(i0, i1) (0x00000848 + 0x40*(i0) + 0x10*(i1))
+
+#define NV20_3D_TEX_GEN_COEFF_D(i0, i1) (0x0000084c + 0x40*(i0) + 0x10*(i1))
+
+#define NV20_3D_TEX_MATRIX_ENABLE(i0) (0x00000420 + 0x4*(i0))
+#define NV20_3D_TEX_MATRIX_ENABLE__ESIZE 0x00000004
+#define NV20_3D_TEX_MATRIX_ENABLE__LEN 0x00000004
+
+
+#define NV20_3D_TEX_MATRIX(i0, i1) (0x000006c0 + 0x40*(i0) + 0x4*(i1))
+#define NV20_3D_TEX_MATRIX__ESIZE 0x00000004
+#define NV20_3D_TEX_MATRIX__LEN 0x00000010
+
+#define NV20_3D_TEX_SHADER_CULL_MODE 0x000017f8
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S__MASK 0x00000001
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S__SHIFT 0
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S_LESS 0x00000001
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T__MASK 0x00000002
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T__SHIFT 1
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T_LESS 0x00000002
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R__MASK 0x00000004
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R__SHIFT 2
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R_LESS 0x00000004
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q__MASK 0x00000008
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q__SHIFT 3
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q_LESS 0x00000008
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S__MASK 0x00000010
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S__SHIFT 4
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S_LESS 0x00000010
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T__MASK 0x00000020
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T__SHIFT 5
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T_LESS 0x00000020
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R__MASK 0x00000040
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R__SHIFT 6
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R_LESS 0x00000040
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q__MASK 0x00000080
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q__SHIFT 7
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q_LESS 0x00000080
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S__MASK 0x00000100
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S__SHIFT 8
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S_LESS 0x00000100
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T__MASK 0x00000200
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T__SHIFT 9
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T_LESS 0x00000200
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R__MASK 0x00000400
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R__SHIFT 10
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R_LESS 0x00000400
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q__MASK 0x00000800
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q__SHIFT 11
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q_LESS 0x00000800
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S__MASK 0x00001000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S__SHIFT 12
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S_LESS 0x00001000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T__MASK 0x00002000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T__SHIFT 13
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T_LESS 0x00002000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R__MASK 0x00004000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R__SHIFT 14
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R_LESS 0x00004000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q__MASK 0x00008000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q__SHIFT 15
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q_GEQUAL 0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q_LESS 0x00008000
+
+#define NV20_3D_TEX_SHADER_CONST_EYE 0x0000181c
+
+
+#define NV20_3D_TEX_SHADER_CONST_EYE_X 0x0000181c
+
+#define NV20_3D_TEX_SHADER_CONST_EYE_Y 0x00001820
+
+#define NV20_3D_TEX_SHADER_CONST_EYE_Z 0x00001824
+
+
+#define NV20_3D_TEX_SHADER_OFFSET_MATRIX(i0, i1) (0x00001b28 + 0x40*(i0) + 0x4*(i1))
+#define NV20_3D_TEX_SHADER_OFFSET_MATRIX__ESIZE 0x00000004
+#define NV20_3D_TEX_SHADER_OFFSET_MATRIX__LEN 0x00000004
+
+#define NV20_3D_TEX_RCOMP 0x00001e6c
+#define NV20_3D_TEX_RCOMP_NEVER 0x00000000
+#define NV20_3D_TEX_RCOMP_GREATER 0x00000001
+#define NV20_3D_TEX_RCOMP_EQUAL 0x00000002
+#define NV20_3D_TEX_RCOMP_GEQUAL 0x00000003
+#define NV20_3D_TEX_RCOMP_LESS 0x00000004
+#define NV20_3D_TEX_RCOMP_NOTEQUAL 0x00000005
+#define NV20_3D_TEX_RCOMP_LEQUAL 0x00000006
+#define NV20_3D_TEX_RCOMP_ALWAYS 0x00000007
+
+#define NV20_3D_TEX_SHADER_OP 0x00001e70
+#define NV20_3D_TEX_SHADER_OP_TX0__MASK 0x0000001f
+#define NV20_3D_TEX_SHADER_OP_TX0__SHIFT 0
+#define NV20_3D_TEX_SHADER_OP_TX0_NONE 0x00000000
+#define NV20_3D_TEX_SHADER_OP_TX0_TEXTURE_2D 0x00000001
+#define NV20_3D_TEX_SHADER_OP_TX0_PASS_THROUGH 0x00000004
+#define NV20_3D_TEX_SHADER_OP_TX0_CULL_FRAGMENT 0x00000005
+#define NV20_3D_TEX_SHADER_OP_TX0_OFFSET_TEXTURE_2D 0x00000006
+#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT_TEXTURE_2D 0x00000009
+#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT_DEPTH_REPLACE 0x0000000a
+#define NV20_3D_TEX_SHADER_OP_TX0_DEPENDANT_AR_TEXTURE_2D 0x0000000f
+#define NV20_3D_TEX_SHADER_OP_TX0_DEPENDANT_GB_TEXTURE_2D 0x00000010
+#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT 0x00000011
+#define NV20_3D_TEX_SHADER_OP_TX1__MASK 0x000003e0
+#define NV20_3D_TEX_SHADER_OP_TX1__SHIFT 5
+#define NV20_3D_TEX_SHADER_OP_TX1_NONE 0x00000000
+#define NV20_3D_TEX_SHADER_OP_TX1_TEXTURE_2D 0x00000020
+#define NV20_3D_TEX_SHADER_OP_TX1_PASS_THROUGH 0x00000080
+#define NV20_3D_TEX_SHADER_OP_TX1_CULL_FRAGMENT 0x000000a0
+#define NV20_3D_TEX_SHADER_OP_TX1_OFFSET_TEXTURE_2D 0x000000c0
+#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT_TEXTURE_2D 0x00000120
+#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT_DEPTH_REPLACE 0x00000140
+#define NV20_3D_TEX_SHADER_OP_TX1_DEPENDANT_AR_TEXTURE_2D 0x000001e0
+#define NV20_3D_TEX_SHADER_OP_TX1_DEPENDANT_GB_TEXTURE_2D 0x00000200
+#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT 0x00000220
+#define NV20_3D_TEX_SHADER_OP_TX2__MASK 0x00007c00
+#define NV20_3D_TEX_SHADER_OP_TX2__SHIFT 10
+#define NV20_3D_TEX_SHADER_OP_TX2_NONE 0x00000000
+#define NV20_3D_TEX_SHADER_OP_TX2_TEXTURE_2D 0x00000400
+#define NV20_3D_TEX_SHADER_OP_TX2_PASS_THROUGH 0x00001000
+#define NV20_3D_TEX_SHADER_OP_TX2_CULL_FRAGMENT 0x00001400
+#define NV20_3D_TEX_SHADER_OP_TX2_OFFSET_TEXTURE_2D 0x00001800
+#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT_TEXTURE_2D 0x00002400
+#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT_DEPTH_REPLACE 0x00002800
+#define NV20_3D_TEX_SHADER_OP_TX2_DEPENDANT_AR_TEXTURE_2D 0x00003c00
+#define NV20_3D_TEX_SHADER_OP_TX2_DEPENDANT_GB_TEXTURE_2D 0x00004000
+#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT 0x00004400
+#define NV20_3D_TEX_SHADER_OP_TX3__MASK 0x000f8000
+#define NV20_3D_TEX_SHADER_OP_TX3__SHIFT 15
+#define NV20_3D_TEX_SHADER_OP_TX3_NONE 0x00000000
+#define NV20_3D_TEX_SHADER_OP_TX3_TEXTURE_2D 0x00008000
+#define NV20_3D_TEX_SHADER_OP_TX3_PASS_THROUGH 0x00020000
+#define NV20_3D_TEX_SHADER_OP_TX3_CULL_FRAGMENT 0x00028000
+#define NV20_3D_TEX_SHADER_OP_TX3_OFFSET_TEXTURE_2D 0x00030000
+#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT_TEXTURE_2D 0x00048000
+#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT_DEPTH_REPLACE 0x00050000
+#define NV20_3D_TEX_SHADER_OP_TX3_DEPENDANT_AR_TEXTURE_2D 0x00078000
+#define NV20_3D_TEX_SHADER_OP_TX3_DEPENDANT_GB_TEXTURE_2D 0x00080000
+#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT 0x00088000
+
+#define NV20_3D_TEX_SHADER_DOTMAPPING 0x00001e74
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX0__MASK 0x0000000f
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX0__SHIFT 0
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX1__MASK 0x000000f0
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX1__SHIFT 4
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX2__MASK 0x00000f00
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX2__SHIFT 8
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX3__MASK 0x0000f000
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX3__SHIFT 12
+
+#define NV20_3D_TEX_SHADER_PREVIOUS 0x00001e78
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX0__MASK 0x00000f00
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX0__SHIFT 8
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX1__MASK 0x0000f000
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX1__SHIFT 12
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX2__MASK 0x00030000
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX2__SHIFT 16
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX3__MASK 0x00300000
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX3__SHIFT 20
+
+#define NV20_3D_TEX(i0) (0x00000000 + 0x40*(i0))
+#define NV20_3D_TEX__ESIZE 0x00000040
+#define NV20_3D_TEX__LEN 0x00000004
+
+#define NV20_3D_TEX_OFFSET(i0) (0x00001b00 + 0x40*(i0))
+
+#define NV20_3D_TEX_FORMAT(i0) (0x00001b04 + 0x40*(i0))
+#define NV20_3D_TEX_FORMAT_DMA0 0x00000001
+#define NV20_3D_TEX_FORMAT_DMA1 0x00000002
+#define NV20_3D_TEX_FORMAT_CUBIC 0x00000004
+#define NV20_3D_TEX_FORMAT_NO_BORDER 0x00000008
+#define NV20_3D_TEX_FORMAT_DIMS__MASK 0x000000f0
+#define NV20_3D_TEX_FORMAT_DIMS__SHIFT 4
+#define NV20_3D_TEX_FORMAT_DIMS_1D 0x00000010
+#define NV20_3D_TEX_FORMAT_DIMS_2D 0x00000020
+#define NV20_3D_TEX_FORMAT_DIMS_3D 0x00000030
+#define NV20_3D_TEX_FORMAT_FORMAT__MASK 0x0000ff00
+#define NV20_3D_TEX_FORMAT_FORMAT__SHIFT 8
+#define NV20_3D_TEX_FORMAT_FORMAT_L8 0x00000000
+#define NV20_3D_TEX_FORMAT_FORMAT_I8 0x00000100
+#define NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5 0x00000200
+#define NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4 0x00000400
+#define NV20_3D_TEX_FORMAT_FORMAT_R5G6B5 0x00000500
+#define NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8 0x00000600
+#define NV20_3D_TEX_FORMAT_FORMAT_X8R8G8B8 0x00000700
+#define NV20_3D_TEX_FORMAT_FORMAT_INDEX8 0x00000b00
+#define NV20_3D_TEX_FORMAT_FORMAT_DXT1 0x00000c00
+#define NV20_3D_TEX_FORMAT_FORMAT_DXT3 0x00000e00
+#define NV20_3D_TEX_FORMAT_FORMAT_DXT5 0x00000f00
+#define NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00001000
+#define NV20_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT 0x00001100
+#define NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00001200
+#define NV20_3D_TEX_FORMAT_FORMAT_L8_RECT 0x00001300
+#define NV20_3D_TEX_FORMAT_FORMAT_DSDT8_RECT 0x00001700
+#define NV20_3D_TEX_FORMAT_FORMAT_A8L8 0x00001a00
+#define NV20_3D_TEX_FORMAT_FORMAT_I8_RECT 0x00001b00
+#define NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4_RECT 0x00001d00
+#define NV20_3D_TEX_FORMAT_FORMAT_R8G8B8_RECT 0x00001e00
+#define NV20_3D_TEX_FORMAT_FORMAT_A8L8_RECT 0x00002000
+#define NV20_3D_TEX_FORMAT_FORMAT_Z24 0x00002a00
+#define NV20_3D_TEX_FORMAT_FORMAT_Z24_RECT 0x00002b00
+#define NV20_3D_TEX_FORMAT_FORMAT_Z16 0x00002c00
+#define NV20_3D_TEX_FORMAT_FORMAT_Z16_RECT 0x00002d00
+#define NV20_3D_TEX_FORMAT_FORMAT_DSDT8 0x00002800
+#define NV20_3D_TEX_FORMAT_FORMAT_HILO16 0x00003300
+#define NV20_3D_TEX_FORMAT_FORMAT_HILO16_RECT 0x00003600
+#define NV20_3D_TEX_FORMAT_FORMAT_HILO8 0x00004400
+#define NV20_3D_TEX_FORMAT_FORMAT_SIGNED_HILO8 0x00004500
+#define NV20_3D_TEX_FORMAT_FORMAT_HILO8_RECT 0x00004600
+#define NV20_3D_TEX_FORMAT_FORMAT_SIGNED_HILO8_RECT 0x00004700
+#define NV20_3D_TEX_FORMAT_MIPMAP 0x00080000
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_U__MASK 0x00f00000
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_U__SHIFT 20
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_V__MASK 0x0f000000
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_V__SHIFT 24
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_W__MASK 0xf0000000
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_W__SHIFT 28
+
+#define NV20_3D_TEX_WRAP(i0) (0x00001b08 + 0x40*(i0))
+#define NV20_3D_TEX_WRAP_S__MASK 0x000000ff
+#define NV20_3D_TEX_WRAP_S__SHIFT 0
+#define NV20_3D_TEX_WRAP_S_REPEAT 0x00000001
+#define NV20_3D_TEX_WRAP_S_MIRRORED_REPEAT 0x00000002
+#define NV20_3D_TEX_WRAP_S_CLAMP_TO_EDGE 0x00000003
+#define NV20_3D_TEX_WRAP_S_CLAMP_TO_BORDER 0x00000004
+#define NV20_3D_TEX_WRAP_S_CLAMP 0x00000005
+#define NV20_3D_TEX_WRAP_T__MASK 0x00000f00
+#define NV20_3D_TEX_WRAP_T__SHIFT 8
+#define NV20_3D_TEX_WRAP_T_REPEAT 0x00000100
+#define NV20_3D_TEX_WRAP_T_MIRRORED_REPEAT 0x00000200
+#define NV20_3D_TEX_WRAP_T_CLAMP_TO_EDGE 0x00000300
+#define NV20_3D_TEX_WRAP_T_CLAMP_TO_BORDER 0x00000400
+#define NV20_3D_TEX_WRAP_T_CLAMP 0x00000500
+#define NV20_3D_TEX_WRAP_R__MASK 0x000f0000
+#define NV20_3D_TEX_WRAP_R__SHIFT 16
+#define NV20_3D_TEX_WRAP_R_REPEAT 0x00010000
+#define NV20_3D_TEX_WRAP_R_MIRRORED_REPEAT 0x00020000
+#define NV20_3D_TEX_WRAP_R_CLAMP_TO_EDGE 0x00030000
+#define NV20_3D_TEX_WRAP_R_CLAMP_TO_BORDER 0x00040000
+#define NV20_3D_TEX_WRAP_R_CLAMP 0x00050000
+
+#define NV20_3D_TEX_ENABLE(i0) (0x00001b0c + 0x40*(i0))
+#define NV20_3D_TEX_ENABLE_ANISO__MASK 0x00000030
+#define NV20_3D_TEX_ENABLE_ANISO__SHIFT 4
+#define NV20_3D_TEX_ENABLE_ANISO_NONE 0x00000000
+#define NV20_3D_TEX_ENABLE_ANISO_2X 0x00000010
+#define NV20_3D_TEX_ENABLE_ANISO_4X 0x00000020
+#define NV20_3D_TEX_ENABLE_ANISO_8X 0x00000030
+#define NV20_3D_TEX_ENABLE_MIPMAP_MAX_LOD__MASK 0x0003c000
+#define NV20_3D_TEX_ENABLE_MIPMAP_MAX_LOD__SHIFT 14
+#define NV20_3D_TEX_ENABLE_MIPMAP_MIN_LOD__MASK 0x3c000000
+#define NV20_3D_TEX_ENABLE_MIPMAP_MIN_LOD__SHIFT 26
+#define NV20_3D_TEX_ENABLE_ENABLE 0x40000000
+
+#define NV20_3D_TEX_NPOT_PITCH(i0) (0x00001b10 + 0x40*(i0))
+#define NV20_3D_TEX_NPOT_PITCH_PITCH__MASK 0xffff0000
+#define NV20_3D_TEX_NPOT_PITCH_PITCH__SHIFT 16
+
+#define NV20_3D_TEX_FILTER(i0) (0x00001b14 + 0x40*(i0))
+#define NV20_3D_TEX_FILTER_LOD_BIAS__MASK 0x00000f00
+#define NV20_3D_TEX_FILTER_LOD_BIAS__SHIFT 8
+#define NV20_3D_TEX_FILTER_MINIFY__MASK 0x000f0000
+#define NV20_3D_TEX_FILTER_MINIFY__SHIFT 16
+#define NV20_3D_TEX_FILTER_MINIFY_NEAREST 0x00010000
+#define NV20_3D_TEX_FILTER_MINIFY_LINEAR 0x00020000
+#define NV20_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x00030000
+#define NV20_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x00040000
+#define NV20_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x00050000
+#define NV20_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x00060000
+#define NV20_3D_TEX_FILTER_MAGNIFY__MASK 0x0f000000
+#define NV20_3D_TEX_FILTER_MAGNIFY__SHIFT 24
+#define NV20_3D_TEX_FILTER_MAGNIFY_NEAREST 0x01000000
+#define NV20_3D_TEX_FILTER_MAGNIFY_LINEAR 0x02000000
+
+#define NV20_3D_TEX_NPOT_SIZE(i0) (0x00001b1c + 0x40*(i0))
+#define NV20_3D_TEX_NPOT_SIZE_H__MASK 0x0000ffff
+#define NV20_3D_TEX_NPOT_SIZE_H__SHIFT 0
+#define NV20_3D_TEX_NPOT_SIZE_W__MASK 0xffff0000
+#define NV20_3D_TEX_NPOT_SIZE_W__SHIFT 16
+
+#define NV20_3D_TEX_PALETTE_OFFSET(i0) (0x00001b20 + 0x40*(i0))
+
+#define NV20_3D_TEX_BORDER_COLOR(i0) (0x00001b24 + 0x40*(i0))
+#define NV20_3D_TEX_BORDER_COLOR_B__MASK 0x000000ff
+#define NV20_3D_TEX_BORDER_COLOR_B__SHIFT 0
+#define NV20_3D_TEX_BORDER_COLOR_G__MASK 0x0000ff00
+#define NV20_3D_TEX_BORDER_COLOR_G__SHIFT 8
+#define NV20_3D_TEX_BORDER_COLOR_R__MASK 0x00ff0000
+#define NV20_3D_TEX_BORDER_COLOR_R__SHIFT 16
+#define NV20_3D_TEX_BORDER_COLOR_A__MASK 0xff000000
+#define NV20_3D_TEX_BORDER_COLOR_A__SHIFT 24
+
+
+
+#define NV20_3D_RC_IN_ALPHA(i0) (0x00000260 + 0x4*(i0))
+#define NV20_3D_RC_IN_ALPHA_D_INPUT__MASK 0x0000000f
+#define NV20_3D_RC_IN_ALPHA_D_INPUT__SHIFT 0
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_FOG 0x00000003
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f
+#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__MASK 0x00000010
+#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__SHIFT 4
+#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000
+#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING__MASK 0x000000e0
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING__SHIFT 5
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0
+#define NV20_3D_RC_IN_ALPHA_C_INPUT__MASK 0x00000f00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT__SHIFT 8
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_FOG 0x00000300
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00
+#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__MASK 0x00001000
+#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__SHIFT 12
+#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000
+#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING__MASK 0x0000e000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING__SHIFT 13
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT__MASK 0x000f0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT__SHIFT 16
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_FOG 0x00030000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000
+#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__MASK 0x00100000
+#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__SHIFT 20
+#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000
+#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING__MASK 0x00e00000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING__SHIFT 21
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT__MASK 0x0f000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT__SHIFT 24
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_FOG 0x03000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000
+#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__MASK 0x10000000
+#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__SHIFT 28
+#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000
+#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING__MASK 0xe0000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING__SHIFT 29
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000
+
+#define NV20_3D_RC_IN_RGB(i0) (0x00000ac0 + 0x4*(i0))
+#define NV20_3D_RC_IN_RGB_D_INPUT__MASK 0x0000000f
+#define NV20_3D_RC_IN_RGB_D_INPUT__SHIFT 0
+#define NV20_3D_RC_IN_RGB_D_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001
+#define NV20_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002
+#define NV20_3D_RC_IN_RGB_D_INPUT_FOG 0x00000003
+#define NV20_3D_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004
+#define NV20_3D_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005
+#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008
+#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009
+#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a
+#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b
+#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c
+#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d
+#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
+#define NV20_3D_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f
+#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE__MASK 0x00000010
+#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE__SHIFT 4
+#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000
+#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010
+#define NV20_3D_RC_IN_RGB_D_MAPPING__MASK 0x000000e0
+#define NV20_3D_RC_IN_RGB_D_MAPPING__SHIFT 5
+#define NV20_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020
+#define NV20_3D_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040
+#define NV20_3D_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060
+#define NV20_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
+#define NV20_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
+#define NV20_3D_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0
+#define NV20_3D_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0
+#define NV20_3D_RC_IN_RGB_C_INPUT__MASK 0x00000f00
+#define NV20_3D_RC_IN_RGB_C_INPUT__SHIFT 8
+#define NV20_3D_RC_IN_RGB_C_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100
+#define NV20_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200
+#define NV20_3D_RC_IN_RGB_C_INPUT_FOG 0x00000300
+#define NV20_3D_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400
+#define NV20_3D_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500
+#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800
+#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900
+#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00
+#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00
+#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00
+#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00
+#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV20_3D_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00
+#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE__MASK 0x00001000
+#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE__SHIFT 12
+#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000
+#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000
+#define NV20_3D_RC_IN_RGB_C_MAPPING__MASK 0x0000e000
+#define NV20_3D_RC_IN_RGB_C_MAPPING__SHIFT 13
+#define NV20_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000
+#define NV20_3D_RC_IN_RGB_B_INPUT__MASK 0x000f0000
+#define NV20_3D_RC_IN_RGB_B_INPUT__SHIFT 16
+#define NV20_3D_RC_IN_RGB_B_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000
+#define NV20_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000
+#define NV20_3D_RC_IN_RGB_B_INPUT_FOG 0x00030000
+#define NV20_3D_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000
+#define NV20_3D_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000
+#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000
+#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000
+#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000
+#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000
+#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000
+#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000
+#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
+#define NV20_3D_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000
+#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE__MASK 0x00100000
+#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE__SHIFT 20
+#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000
+#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000
+#define NV20_3D_RC_IN_RGB_B_MAPPING__MASK 0x00e00000
+#define NV20_3D_RC_IN_RGB_B_MAPPING__SHIFT 21
+#define NV20_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000
+#define NV20_3D_RC_IN_RGB_A_INPUT__MASK 0x0f000000
+#define NV20_3D_RC_IN_RGB_A_INPUT__SHIFT 24
+#define NV20_3D_RC_IN_RGB_A_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_FOG 0x03000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000
+#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE__MASK 0x10000000
+#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE__SHIFT 28
+#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000
+#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING__MASK 0xe0000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING__SHIFT 29
+#define NV20_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000
+
+#define NV20_3D_RC_CONSTANT_COLOR0(i0) (0x00000a60 + 0x4*(i0))
+#define NV20_3D_RC_CONSTANT_COLOR0_B__MASK 0x000000ff
+#define NV20_3D_RC_CONSTANT_COLOR0_B__SHIFT 0
+#define NV20_3D_RC_CONSTANT_COLOR0_G__MASK 0x0000ff00
+#define NV20_3D_RC_CONSTANT_COLOR0_G__SHIFT 8
+#define NV20_3D_RC_CONSTANT_COLOR0_R__MASK 0x00ff0000
+#define NV20_3D_RC_CONSTANT_COLOR0_R__SHIFT 16
+#define NV20_3D_RC_CONSTANT_COLOR0_A__MASK 0xff000000
+#define NV20_3D_RC_CONSTANT_COLOR0_A__SHIFT 24
+
+#define NV20_3D_RC_CONSTANT_COLOR1(i0) (0x00000a80 + 0x4*(i0))
+#define NV20_3D_RC_CONSTANT_COLOR1_B__MASK 0x000000ff
+#define NV20_3D_RC_CONSTANT_COLOR1_B__SHIFT 0
+#define NV20_3D_RC_CONSTANT_COLOR1_G__MASK 0x0000ff00
+#define NV20_3D_RC_CONSTANT_COLOR1_G__SHIFT 8
+#define NV20_3D_RC_CONSTANT_COLOR1_R__MASK 0x00ff0000
+#define NV20_3D_RC_CONSTANT_COLOR1_R__SHIFT 16
+#define NV20_3D_RC_CONSTANT_COLOR1_A__MASK 0xff000000
+#define NV20_3D_RC_CONSTANT_COLOR1_A__SHIFT 24
+
+#define NV20_3D_RC_OUT_ALPHA(i0) (0x00000aa0 + 0x4*(i0))
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT__MASK 0x0000000f
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT__SHIFT 0
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT__MASK 0x000000f0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT__SHIFT 4
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT__MASK 0x00000f00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT__SHIFT 8
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00
+#define NV20_3D_RC_OUT_ALPHA_CD_DOT_PRODUCT 0x00001000
+#define NV20_3D_RC_OUT_ALPHA_AB_DOT_PRODUCT 0x00002000
+#define NV20_3D_RC_OUT_ALPHA_MUX_SUM 0x00004000
+#define NV20_3D_RC_OUT_ALPHA_BIAS__MASK 0x00008000
+#define NV20_3D_RC_OUT_ALPHA_BIAS__SHIFT 15
+#define NV20_3D_RC_OUT_ALPHA_BIAS_NONE 0x00000000
+#define NV20_3D_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000
+#define NV20_3D_RC_OUT_ALPHA_SCALE__MASK 0x00030000
+#define NV20_3D_RC_OUT_ALPHA_SCALE__SHIFT 16
+#define NV20_3D_RC_OUT_ALPHA_SCALE_NONE 0x00000000
+#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000
+#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000
+#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000
+
+#define NV20_3D_RC_OUT_RGB(i0) (0x00001e40 + 0x4*(i0))
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT__MASK 0x0000000f
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT__SHIFT 0
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT__MASK 0x000000f0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT__SHIFT 4
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT__MASK 0x00000f00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT__SHIFT 8
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00
+#define NV20_3D_RC_OUT_RGB_CD_DOT_PRODUCT 0x00001000
+#define NV20_3D_RC_OUT_RGB_AB_DOT_PRODUCT 0x00002000
+#define NV20_3D_RC_OUT_RGB_MUX_SUM 0x00004000
+#define NV20_3D_RC_OUT_RGB_BIAS__MASK 0x00008000
+#define NV20_3D_RC_OUT_RGB_BIAS__SHIFT 15
+#define NV20_3D_RC_OUT_RGB_BIAS_NONE 0x00000000
+#define NV20_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000
+#define NV20_3D_RC_OUT_RGB_SCALE__MASK 0x00030000
+#define NV20_3D_RC_OUT_RGB_SCALE__SHIFT 16
+#define NV20_3D_RC_OUT_RGB_SCALE_NONE 0x00000000
+#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000
+#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000
+#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000
+
+#define NV20_3D_RC_FINAL0 0x00000288
+#define NV20_3D_RC_FINAL0_D_INPUT__MASK 0x0000000f
+#define NV20_3D_RC_FINAL0_D_INPUT__SHIFT 0
+#define NV20_3D_RC_FINAL0_D_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001
+#define NV20_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002
+#define NV20_3D_RC_FINAL0_D_INPUT_FOG 0x00000003
+#define NV20_3D_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004
+#define NV20_3D_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005
+#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008
+#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009
+#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a
+#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b
+#define NV20_3D_RC_FINAL0_D_INPUT_SPARE0 0x0000000c
+#define NV20_3D_RC_FINAL0_D_INPUT_SPARE1 0x0000000d
+#define NV20_3D_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e
+#define NV20_3D_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f
+#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE__MASK 0x00000010
+#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE__SHIFT 4
+#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000
+#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010
+#define NV20_3D_RC_FINAL0_D_MAPPING__MASK 0x000000e0
+#define NV20_3D_RC_FINAL0_D_MAPPING__SHIFT 5
+#define NV20_3D_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020
+#define NV20_3D_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040
+#define NV20_3D_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060
+#define NV20_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080
+#define NV20_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0
+#define NV20_3D_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0
+#define NV20_3D_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0
+#define NV20_3D_RC_FINAL0_C_INPUT__MASK 0x00000f00
+#define NV20_3D_RC_FINAL0_C_INPUT__SHIFT 8
+#define NV20_3D_RC_FINAL0_C_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100
+#define NV20_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200
+#define NV20_3D_RC_FINAL0_C_INPUT_FOG 0x00000300
+#define NV20_3D_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400
+#define NV20_3D_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500
+#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800
+#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900
+#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00
+#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00
+#define NV20_3D_RC_FINAL0_C_INPUT_SPARE0 0x00000c00
+#define NV20_3D_RC_FINAL0_C_INPUT_SPARE1 0x00000d00
+#define NV20_3D_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV20_3D_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00
+#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE__MASK 0x00001000
+#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE__SHIFT 12
+#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000
+#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000
+#define NV20_3D_RC_FINAL0_C_MAPPING__MASK 0x0000e000
+#define NV20_3D_RC_FINAL0_C_MAPPING__SHIFT 13
+#define NV20_3D_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000
+#define NV20_3D_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000
+#define NV20_3D_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000
+#define NV20_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000
+#define NV20_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000
+#define NV20_3D_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000
+#define NV20_3D_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000
+#define NV20_3D_RC_FINAL0_B_INPUT__MASK 0x000f0000
+#define NV20_3D_RC_FINAL0_B_INPUT__SHIFT 16
+#define NV20_3D_RC_FINAL0_B_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000
+#define NV20_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000
+#define NV20_3D_RC_FINAL0_B_INPUT_FOG 0x00030000
+#define NV20_3D_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000
+#define NV20_3D_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000
+#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000
+#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000
+#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000
+#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000
+#define NV20_3D_RC_FINAL0_B_INPUT_SPARE0 0x000c0000
+#define NV20_3D_RC_FINAL0_B_INPUT_SPARE1 0x000d0000
+#define NV20_3D_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
+#define NV20_3D_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000
+#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE__MASK 0x00100000
+#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE__SHIFT 20
+#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000
+#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000
+#define NV20_3D_RC_FINAL0_B_MAPPING__MASK 0x00e00000
+#define NV20_3D_RC_FINAL0_B_MAPPING__SHIFT 21
+#define NV20_3D_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000
+#define NV20_3D_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000
+#define NV20_3D_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000
+#define NV20_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000
+#define NV20_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000
+#define NV20_3D_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000
+#define NV20_3D_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000
+#define NV20_3D_RC_FINAL0_A_INPUT__MASK 0x0f000000
+#define NV20_3D_RC_FINAL0_A_INPUT__SHIFT 24
+#define NV20_3D_RC_FINAL0_A_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000
+#define NV20_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000
+#define NV20_3D_RC_FINAL0_A_INPUT_FOG 0x03000000
+#define NV20_3D_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000
+#define NV20_3D_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000
+#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000
+#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000
+#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000
+#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000
+#define NV20_3D_RC_FINAL0_A_INPUT_SPARE0 0x0c000000
+#define NV20_3D_RC_FINAL0_A_INPUT_SPARE1 0x0d000000
+#define NV20_3D_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
+#define NV20_3D_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000
+#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE__MASK 0x10000000
+#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE__SHIFT 28
+#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000
+#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000
+#define NV20_3D_RC_FINAL0_A_MAPPING__MASK 0xe0000000
+#define NV20_3D_RC_FINAL0_A_MAPPING__SHIFT 29
+#define NV20_3D_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000
+
+#define NV20_3D_RC_FINAL1 0x0000028c
+#define NV20_3D_RC_FINAL1_COLOR_SUM_CLAMP 0x00000080
+#define NV20_3D_RC_FINAL1_G_INPUT__MASK 0x00000f00
+#define NV20_3D_RC_FINAL1_G_INPUT__SHIFT 8
+#define NV20_3D_RC_FINAL1_G_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100
+#define NV20_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200
+#define NV20_3D_RC_FINAL1_G_INPUT_FOG 0x00000300
+#define NV20_3D_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400
+#define NV20_3D_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500
+#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800
+#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900
+#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00
+#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00
+#define NV20_3D_RC_FINAL1_G_INPUT_SPARE0 0x00000c00
+#define NV20_3D_RC_FINAL1_G_INPUT_SPARE1 0x00000d00
+#define NV20_3D_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00
+#define NV20_3D_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00
+#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE__MASK 0x00001000
+#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE__SHIFT 12
+#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000
+#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000
+#define NV20_3D_RC_FINAL1_G_MAPPING__MASK 0x0000e000
+#define NV20_3D_RC_FINAL1_G_MAPPING__SHIFT 13
+#define NV20_3D_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000
+#define NV20_3D_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000
+#define NV20_3D_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000
+#define NV20_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000
+#define NV20_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000
+#define NV20_3D_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000
+#define NV20_3D_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000
+#define NV20_3D_RC_FINAL1_F_INPUT__MASK 0x000f0000
+#define NV20_3D_RC_FINAL1_F_INPUT__SHIFT 16
+#define NV20_3D_RC_FINAL1_F_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000
+#define NV20_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000
+#define NV20_3D_RC_FINAL1_F_INPUT_FOG 0x00030000
+#define NV20_3D_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000
+#define NV20_3D_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000
+#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000
+#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000
+#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000
+#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000
+#define NV20_3D_RC_FINAL1_F_INPUT_SPARE0 0x000c0000
+#define NV20_3D_RC_FINAL1_F_INPUT_SPARE1 0x000d0000
+#define NV20_3D_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000
+#define NV20_3D_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000
+#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE__MASK 0x00100000
+#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE__SHIFT 20
+#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000
+#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000
+#define NV20_3D_RC_FINAL1_F_MAPPING__MASK 0x00e00000
+#define NV20_3D_RC_FINAL1_F_MAPPING__SHIFT 21
+#define NV20_3D_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000
+#define NV20_3D_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000
+#define NV20_3D_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000
+#define NV20_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000
+#define NV20_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000
+#define NV20_3D_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000
+#define NV20_3D_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000
+#define NV20_3D_RC_FINAL1_E_INPUT__MASK 0x0f000000
+#define NV20_3D_RC_FINAL1_E_INPUT__SHIFT 24
+#define NV20_3D_RC_FINAL1_E_INPUT_ZERO 0x00000000
+#define NV20_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000
+#define NV20_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000
+#define NV20_3D_RC_FINAL1_E_INPUT_FOG 0x03000000
+#define NV20_3D_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000
+#define NV20_3D_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000
+#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000
+#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000
+#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000
+#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000
+#define NV20_3D_RC_FINAL1_E_INPUT_SPARE0 0x0c000000
+#define NV20_3D_RC_FINAL1_E_INPUT_SPARE1 0x0d000000
+#define NV20_3D_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000
+#define NV20_3D_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000
+#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE__MASK 0x10000000
+#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE__SHIFT 28
+#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000
+#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000
+#define NV20_3D_RC_FINAL1_E_MAPPING__MASK 0xe0000000
+#define NV20_3D_RC_FINAL1_E_MAPPING__SHIFT 29
+#define NV20_3D_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000
+
+#define NV20_3D_RC_COLOR0 0x00001e20
+#define NV20_3D_RC_COLOR0_B__MASK 0x000000ff
+#define NV20_3D_RC_COLOR0_B__SHIFT 0
+#define NV20_3D_RC_COLOR0_G__MASK 0x0000ff00
+#define NV20_3D_RC_COLOR0_G__SHIFT 8
+#define NV20_3D_RC_COLOR0_R__MASK 0x00ff0000
+#define NV20_3D_RC_COLOR0_R__SHIFT 16
+#define NV20_3D_RC_COLOR0_A__MASK 0xff000000
+#define NV20_3D_RC_COLOR0_A__SHIFT 24
+
+#define NV20_3D_RC_COLOR1 0x00001e24
+#define NV20_3D_RC_COLOR1_B__MASK 0x000000ff
+#define NV20_3D_RC_COLOR1_B__SHIFT 0
+#define NV20_3D_RC_COLOR1_G__MASK 0x0000ff00
+#define NV20_3D_RC_COLOR1_G__SHIFT 8
+#define NV20_3D_RC_COLOR1_R__MASK 0x00ff0000
+#define NV20_3D_RC_COLOR1_R__SHIFT 16
+#define NV20_3D_RC_COLOR1_A__MASK 0xff000000
+#define NV20_3D_RC_COLOR1_A__SHIFT 24
+
+#define NV20_3D_RC_ENABLE 0x00001e60
+#define NV20_3D_RC_ENABLE_NUM_COMBINERS__MASK 0x0000000f
+#define NV20_3D_RC_ENABLE_NUM_COMBINERS__SHIFT 0
+
+
+#define NV20_3D_POINT_SIZE 0x0000043c
+
+#define NV20_3D_POINT_PARAMETER(i0) (0x00000a30 + 0x4*(i0))
+#define NV20_3D_POINT_PARAMETER__ESIZE 0x00000004
+#define NV20_3D_POINT_PARAMETER__LEN 0x00000008
+
+#define NV20_3D_POLYGON_STIPPLE_ENABLE 0x0000147c
+
+#define NV20_3D_POLYGON_STIPPLE_PATTERN(i0) (0x00001480 + 0x4*(i0))
+#define NV20_3D_POLYGON_STIPPLE_PATTERN__ESIZE 0x00000004
+#define NV20_3D_POLYGON_STIPPLE_PATTERN__LEN 0x00000020
+
+#define NV20_3D_COLOR_LOGIC_OP_ENABLE 0x000017bc
+
+#define NV20_3D_COLOR_LOGIC_OP_OP 0x000017c0
+#define NV20_3D_COLOR_LOGIC_OP_OP_CLEAR 0x00001500
+#define NV20_3D_COLOR_LOGIC_OP_OP_AND 0x00001501
+#define NV20_3D_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502
+#define NV20_3D_COLOR_LOGIC_OP_OP_COPY 0x00001503
+#define NV20_3D_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504
+#define NV20_3D_COLOR_LOGIC_OP_OP_NOOP 0x00001505
+#define NV20_3D_COLOR_LOGIC_OP_OP_XOR 0x00001506
+#define NV20_3D_COLOR_LOGIC_OP_OP_OR 0x00001507
+#define NV20_3D_COLOR_LOGIC_OP_OP_NOR 0x00001508
+#define NV20_3D_COLOR_LOGIC_OP_OP_EQUIV 0x00001509
+#define NV20_3D_COLOR_LOGIC_OP_OP_INVERT 0x0000150a
+#define NV20_3D_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b
+#define NV20_3D_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c
+#define NV20_3D_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d
+#define NV20_3D_COLOR_LOGIC_OP_OP_NAND 0x0000150e
+#define NV20_3D_COLOR_LOGIC_OP_OP_SET 0x0000150f
+
+#define NV20_3D_DEPTH_CLAMP 0x00001d78
+
+#define NV20_3D_MULTISAMPLE_CONTROL 0x00001d7c
+
+
+#define NV20_3D_CLEAR_DEPTH_VALUE 0x00001d8c
+
+#define NV20_3D_CLEAR_VALUE 0x00001d90
+
+#define NV20_3D_CLEAR_BUFFERS 0x00001d94
+#define NV20_3D_CLEAR_BUFFERS_COLOR_A 0x00000080
+#define NV20_3D_CLEAR_BUFFERS_COLOR_B 0x00000040
+#define NV20_3D_CLEAR_BUFFERS_COLOR_G 0x00000020
+#define NV20_3D_CLEAR_BUFFERS_COLOR_R 0x00000010
+#define NV20_3D_CLEAR_BUFFERS_STENCIL 0x00000002
+#define NV20_3D_CLEAR_BUFFERS_DEPTH 0x00000001
+
+
+#define NV25_3D_DMA_HIERZ 0x000001b0
+
+#define NV25_3D_HIERZ_PITCH 0x0000022c
+
+#define NV25_3D_HIERZ_OFFSET 0x00000230
+
+#define NV20_3D_UNK09F8 0x000009f8
+
+#define NV20_3D_UNK09FC 0x000009fc
+
+#define NV20_3D_UNK17CC 0x000017cc
+
+#define NV20_3D_UNK17E0 0x000017e0
+
+#define NV20_3D_UNK17E4 0x000017e4
+
+#define NV20_3D_UNK17E8 0x000017e8
+
+#define NV20_3D_UNK17EC 0x000017ec
+
+#define NV20_3D_UNK17F0 0x000017f0
+
+#define NV20_3D_UNK17F4 0x000017f4
+
+#define NV20_3D_UNK1D80 0x00001d80
+
+#define NV20_3D_UNK1D84 0x00001d84
+
+#define NV20_3D_UNK1E68 0x00001e68
+
+#define NV20_3D_UNK1E98 0x00001e98
+
+
+#define NV25_3D_UNK01AC 0x000001ac
+
+#define NV25_3D_UNK0A1C 0x00000a1c
+
+#define NV25_3D_UNK1D88 0x00001d88
+
+#define NV25_3D_UNK1DA4 0x00001da4
+
+
+#endif /* NV20_3D_XML */
diff --git a/src/mesa/drivers/dri/nouveau/nv20_context.c b/src/mesa/drivers/dri/nouveau/nv20_context.c
index c6111a2a9a..e0483b261e 100644
--- a/src/mesa/drivers/dri/nouveau/nv20_context.c
+++ b/src/mesa/drivers/dri/nouveau/nv20_context.c
@@ -26,7 +26,10 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
-#include "nouveau_class.h"
+#include "nouveau_fbo.h"
+#include "nouveau_util.h"
+#include "nv_object.xml.h"
+#include "nv20_3d.xml.h"
#include "nv04_driver.h"
#include "nv10_driver.h"
#include "nv20_driver.h"
@@ -40,6 +43,57 @@ static const struct dri_extension nv20_extensions[] = {
};
static void
+nv20_clear(struct gl_context *ctx, GLbitfield buffers)
+{
+ struct nouveau_channel *chan = context_chan(ctx);
+ struct nouveau_grobj *kelvin = context_eng3d(ctx);
+ struct gl_framebuffer *fb = ctx->DrawBuffer;
+ uint32_t clear = 0;
+
+ nouveau_validate_framebuffer(ctx);
+
+ if (buffers & BUFFER_BITS_COLOR) {
+ struct nouveau_surface *s = &to_nouveau_renderbuffer(
+ fb->_ColorDrawBuffers[0])->surface;
+
+ if (ctx->Color.ColorMask[0][RCOMP])
+ clear |= NV20_3D_CLEAR_BUFFERS_COLOR_R;
+ if (ctx->Color.ColorMask[0][GCOMP])
+ clear |= NV20_3D_CLEAR_BUFFERS_COLOR_G;
+ if (ctx->Color.ColorMask[0][BCOMP])
+ clear |= NV20_3D_CLEAR_BUFFERS_COLOR_B;
+ if (ctx->Color.ColorMask[0][ACOMP])
+ clear |= NV20_3D_CLEAR_BUFFERS_COLOR_A;
+
+ BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_VALUE, 1);
+ OUT_RING(chan, pack_rgba_f(s->format, ctx->Color.ClearColor));
+
+ buffers &= ~BUFFER_BITS_COLOR;
+ }
+
+ if (buffers & (BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL)) {
+ struct nouveau_surface *s = &to_nouveau_renderbuffer(
+ fb->_DepthBuffer->Wrapped)->surface;
+
+ if (buffers & BUFFER_BIT_DEPTH && ctx->Depth.Mask)
+ clear |= NV20_3D_CLEAR_BUFFERS_DEPTH;
+ if (buffers & BUFFER_BIT_STENCIL && ctx->Stencil.WriteMask[0])
+ clear |= NV20_3D_CLEAR_BUFFERS_STENCIL;
+
+ BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_DEPTH_VALUE, 1);
+ OUT_RING(chan, pack_zs_f(s->format, ctx->Depth.Clear,
+ ctx->Stencil.Clear));
+
+ buffers &= ~(BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL);
+ }
+
+ BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_BUFFERS, 1);
+ OUT_RING(chan, clear);
+
+ nouveau_clear(ctx, buffers);
+}
+
+static void
nv20_hwctx_init(struct gl_context *ctx)
{
struct nouveau_channel *chan = context_chan(ctx);
@@ -47,38 +101,38 @@ nv20_hwctx_init(struct gl_context *ctx)
struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw;
int i;
- BEGIN_RING(chan, kelvin, NV20TCL_DMA_NOTIFY, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_DMA_NOTIFY, 1);
OUT_RING (chan, hw->ntfy->handle);
- BEGIN_RING(chan, kelvin, NV20TCL_DMA_TEXTURE0, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_DMA_TEXTURE0, 2);
OUT_RING (chan, chan->vram->handle);
OUT_RING (chan, chan->gart->handle);
- BEGIN_RING(chan, kelvin, NV20TCL_DMA_COLOR, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_DMA_COLOR, 2);
OUT_RING (chan, chan->vram->handle);
OUT_RING (chan, chan->vram->handle);
- BEGIN_RING(chan, kelvin, NV20TCL_DMA_VTXBUF0, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_DMA_VTXBUF0, 2);
OUT_RING(chan, chan->vram->handle);
OUT_RING(chan, chan->gart->handle);
- BEGIN_RING(chan, kelvin, NV20TCL_DMA_QUERY, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_DMA_QUERY, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_RT_HORIZ, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_RT_HORIZ, 2);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_HORIZ(0), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_HORIZ(0), 1);
OUT_RING (chan, 0xfff << 16 | 0x0);
- BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_VERT(0), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_VERT(0), 1);
OUT_RING (chan, 0xfff << 16 | 0x0);
- for (i = 1; i < NV20TCL_VIEWPORT_CLIP_HORIZ__SIZE; i++) {
- BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_HORIZ(i), 1);
+ for (i = 1; i < NV20_3D_VIEWPORT_CLIP_HORIZ__LEN; i++) {
+ BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_HORIZ(i), 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_VERT(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_VERT(i), 1);
OUT_RING (chan, 0);
}
- BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_MODE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_MODE, 1);
OUT_RING (chan, 0);
BEGIN_RING(chan, kelvin, 0x17e0, 3);
@@ -87,13 +141,13 @@ nv20_hwctx_init(struct gl_context *ctx)
OUT_RINGf (chan, 1.0);
if (context_chipset(ctx) >= 0x25) {
- BEGIN_RING(chan, kelvin, NV20TCL_TX_RCOMP, 1);
- OUT_RING (chan, NV20TCL_TX_RCOMP_LEQUAL | 0xdb0);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_RCOMP, 1);
+ OUT_RING (chan, NV20_3D_TEX_RCOMP_LEQUAL | 0xdb0);
} else {
BEGIN_RING(chan, kelvin, 0x1e68, 1);
OUT_RING (chan, 0x4b800000); /* 16777216.000000 */
- BEGIN_RING(chan, kelvin, NV20TCL_TX_RCOMP, 1);
- OUT_RING (chan, NV20TCL_TX_RCOMP_LEQUAL);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_RCOMP, 1);
+ OUT_RING (chan, NV20_3D_TEX_RCOMP_LEQUAL);
}
BEGIN_RING(chan, kelvin, 0x290, 1);
@@ -113,19 +167,19 @@ nv20_hwctx_init(struct gl_context *ctx)
BEGIN_RING(chan, kelvin, 0x1d88, 1);
OUT_RING (chan, 3);
- BEGIN_RING(chan, kelvin, NV25TCL_DMA_IN_MEMORY9, 1);
+ BEGIN_RING(chan, kelvin, NV25_3D_DMA_HIERZ, 1);
OUT_RING (chan, chan->vram->handle);
- BEGIN_RING(chan, kelvin, NV25TCL_DMA_IN_MEMORY8, 1);
+ BEGIN_RING(chan, kelvin, NV25_3D_UNK01AC, 1);
OUT_RING (chan, chan->vram->handle);
}
- BEGIN_RING(chan, kelvin, NV20TCL_DMA_FENCE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_DMA_FENCE, 1);
OUT_RING (chan, 0);
BEGIN_RING(chan, kelvin, 0x1e98, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_NOTIFY, 1);
+ BEGIN_RING(chan, kelvin, NV01_GRAPH_NOTIFY, 1);
OUT_RING (chan, 0);
BEGIN_RING(chan, kelvin, 0x120, 3);
@@ -134,197 +188,193 @@ nv20_hwctx_init(struct gl_context *ctx)
OUT_RING (chan, 2);
if (context_chipset(ctx) >= 0x25) {
- BEGIN_RING(chan, kelvin, 0x022c, 2);
- OUT_RING (chan, 0x280);
- OUT_RING (chan, 0x07d28000);
-
BEGIN_RING(chan, kelvin, 0x1da4, 1);
OUT_RING (chan, 0);
}
- BEGIN_RING(chan, kelvin, NV20TCL_RT_HORIZ, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_RT_HORIZ, 2);
OUT_RING (chan, 0 << 16 | 0);
OUT_RING (chan, 0 << 16 | 0);
- BEGIN_RING(chan, kelvin, NV20TCL_ALPHA_FUNC_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_ALPHA_FUNC_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_ALPHA_FUNC_FUNC, 2);
- OUT_RING (chan, NV20TCL_ALPHA_FUNC_FUNC_ALWAYS);
+ BEGIN_RING(chan, kelvin, NV20_3D_ALPHA_FUNC_FUNC, 2);
+ OUT_RING (chan, NV20_3D_ALPHA_FUNC_FUNC_ALWAYS);
OUT_RING (chan, 0);
- for (i = 0; i < NV20TCL_TX_ENABLE__SIZE; i++) {
- BEGIN_RING(chan, kelvin, NV20TCL_TX_ENABLE(i), 1);
+ for (i = 0; i < NV20_3D_TEX__LEN; i++) {
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_ENABLE(i), 1);
OUT_RING (chan, 0);
}
- BEGIN_RING(chan, kelvin, NV20TCL_TX_SHADER_OP, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_SHADER_OP, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_TX_SHADER_CULL_MODE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_SHADER_CULL_MODE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_ALPHA(0), 4);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_ALPHA(0), 4);
OUT_RING (chan, 0x30d410d0);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_RGB(0), 4);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_RGB(0), 4);
OUT_RING (chan, 0x00000c00);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_ENABLE, 1);
OUT_RING (chan, 0x00011101);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_FINAL0, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_FINAL0, 2);
OUT_RING (chan, 0x130e0300);
OUT_RING (chan, 0x0c091c80);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_ALPHA(0), 4);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_ALPHA(0), 4);
OUT_RING (chan, 0x00000c00);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_RGB(0), 4);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_RGB(0), 4);
OUT_RING (chan, 0x20c400c0);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_COLOR0, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_COLOR0, 2);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_CONSTANT_COLOR0(0), 4);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_CONSTANT_COLOR0(0), 4);
OUT_RING (chan, 0x035125a0);
OUT_RING (chan, 0);
OUT_RING (chan, 0x40002000);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_MULTISAMPLE_CONTROL, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_MULTISAMPLE_CONTROL, 1);
OUT_RING (chan, 0xffff0000);
- BEGIN_RING(chan, kelvin, NV20TCL_BLEND_FUNC_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_BLEND_FUNC_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_DITHER_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_DITHER_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_STENCIL_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_STENCIL_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_BLEND_FUNC_SRC, 4);
- OUT_RING (chan, NV20TCL_BLEND_FUNC_SRC_ONE);
- OUT_RING (chan, NV20TCL_BLEND_FUNC_DST_ZERO);
+ BEGIN_RING(chan, kelvin, NV20_3D_BLEND_FUNC_SRC, 4);
+ OUT_RING (chan, NV20_3D_BLEND_FUNC_SRC_ONE);
+ OUT_RING (chan, NV20_3D_BLEND_FUNC_DST_ZERO);
OUT_RING (chan, 0);
- OUT_RING (chan, NV20TCL_BLEND_EQUATION_FUNC_ADD);
- BEGIN_RING(chan, kelvin, NV20TCL_STENCIL_MASK, 7);
+ OUT_RING (chan, NV20_3D_BLEND_EQUATION_FUNC_ADD);
+ BEGIN_RING(chan, kelvin, NV20_3D_STENCIL_MASK, 7);
OUT_RING (chan, 0xff);
- OUT_RING (chan, NV20TCL_STENCIL_FUNC_FUNC_ALWAYS);
+ OUT_RING (chan, NV20_3D_STENCIL_FUNC_FUNC_ALWAYS);
OUT_RING (chan, 0);
OUT_RING (chan, 0xff);
- OUT_RING (chan, NV20TCL_STENCIL_OP_FAIL_KEEP);
- OUT_RING (chan, NV20TCL_STENCIL_OP_ZFAIL_KEEP);
- OUT_RING (chan, NV20TCL_STENCIL_OP_ZPASS_KEEP);
+ OUT_RING (chan, NV20_3D_STENCIL_OP_FAIL_KEEP);
+ OUT_RING (chan, NV20_3D_STENCIL_OP_ZFAIL_KEEP);
+ OUT_RING (chan, NV20_3D_STENCIL_OP_ZPASS_KEEP);
- BEGIN_RING(chan, kelvin, NV20TCL_COLOR_LOGIC_OP_ENABLE, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_COLOR_LOGIC_OP_ENABLE, 2);
OUT_RING (chan, 0);
- OUT_RING (chan, NV20TCL_COLOR_LOGIC_OP_OP_COPY);
+ OUT_RING (chan, NV20_3D_COLOR_LOGIC_OP_OP_COPY);
BEGIN_RING(chan, kelvin, 0x17cc, 1);
OUT_RING (chan, 0);
if (context_chipset(ctx) >= 0x25) {
BEGIN_RING(chan, kelvin, 0x1d84, 1);
OUT_RING (chan, 1);
}
- BEGIN_RING(chan, kelvin, NV20TCL_LIGHTING_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_LIGHTING_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL, 1);
- OUT_RING (chan, NV20TCL_LIGHT_MODEL_VIEWER_NONLOCAL);
- BEGIN_RING(chan, kelvin, NV20TCL_SEPARATE_SPECULAR_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL, 1);
+ OUT_RING (chan, NV20_3D_LIGHT_MODEL_VIEWER_NONLOCAL);
+ BEGIN_RING(chan, kelvin, NV20_3D_SEPARATE_SPECULAR_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL_TWO_SIDE_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL_TWO_SIDE_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_ENABLED_LIGHTS, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_ENABLED_LIGHTS, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_NORMALIZE_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_NORMALIZE_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_STIPPLE_PATTERN(0),
- NV20TCL_POLYGON_STIPPLE_PATTERN__SIZE);
- for (i = 0; i < NV20TCL_POLYGON_STIPPLE_PATTERN__SIZE; i++) {
+ BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_STIPPLE_PATTERN(0),
+ NV20_3D_POLYGON_STIPPLE_PATTERN__LEN);
+ for (i = 0; i < NV20_3D_POLYGON_STIPPLE_PATTERN__LEN; i++) {
OUT_RING(chan, 0xffffffff);
}
- BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
+ BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_OFFSET_POINT_ENABLE, 3);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_FUNC, 1);
- OUT_RING (chan, NV20TCL_DEPTH_FUNC_LESS);
- BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_WRITE_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_FUNC, 1);
+ OUT_RING (chan, NV20_3D_DEPTH_FUNC_LESS);
+ BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_WRITE_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_TEST_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_TEST_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_OFFSET_FACTOR, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_OFFSET_FACTOR, 2);
OUT_RINGf (chan, 0.0);
OUT_RINGf (chan, 0.0);
- BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_UNK17D8, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_CLAMP, 1);
OUT_RING (chan, 1);
if (context_chipset(ctx) < 0x25) {
BEGIN_RING(chan, kelvin, 0x1d84, 1);
OUT_RING (chan, 3);
}
- BEGIN_RING(chan, kelvin, NV20TCL_POINT_SIZE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_POINT_SIZE, 1);
if (context_chipset(ctx) >= 0x25)
OUT_RINGf (chan, 1.0);
else
OUT_RING (chan, 8);
if (context_chipset(ctx) >= 0x25) {
- BEGIN_RING(chan, kelvin, NV20TCL_POINT_PARAMETERS_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_POINT_PARAMETERS_ENABLE, 1);
OUT_RING (chan, 0);
BEGIN_RING(chan, kelvin, 0x0a1c, 1);
OUT_RING (chan, 0x800);
} else {
- BEGIN_RING(chan, kelvin, NV20TCL_POINT_PARAMETERS_ENABLE, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_POINT_PARAMETERS_ENABLE, 2);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
}
- BEGIN_RING(chan, kelvin, NV20TCL_LINE_WIDTH, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_LINE_WIDTH, 1);
OUT_RING (chan, 8);
- BEGIN_RING(chan, kelvin, NV20TCL_LINE_SMOOTH_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_LINE_SMOOTH_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_MODE_FRONT, 2);
- OUT_RING (chan, NV20TCL_POLYGON_MODE_FRONT_FILL);
- OUT_RING (chan, NV20TCL_POLYGON_MODE_BACK_FILL);
- BEGIN_RING(chan, kelvin, NV20TCL_CULL_FACE, 2);
- OUT_RING (chan, NV20TCL_CULL_FACE_BACK);
- OUT_RING (chan, NV20TCL_FRONT_FACE_CCW);
- BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_SMOOTH_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_MODE_FRONT, 2);
+ OUT_RING (chan, NV20_3D_POLYGON_MODE_FRONT_FILL);
+ OUT_RING (chan, NV20_3D_POLYGON_MODE_BACK_FILL);
+ BEGIN_RING(chan, kelvin, NV20_3D_CULL_FACE, 2);
+ OUT_RING (chan, NV20_3D_CULL_FACE_BACK);
+ OUT_RING (chan, NV20_3D_FRONT_FACE_CCW);
+ BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_SMOOTH_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_CULL_FACE_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_CULL_FACE_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_SHADE_MODEL, 1);
- OUT_RING (chan, NV20TCL_SHADE_MODEL_SMOOTH);
- BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_STIPPLE_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_SHADE_MODEL, 1);
+ OUT_RING (chan, NV20_3D_SHADE_MODEL_SMOOTH);
+ BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_STIPPLE_ENABLE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_TX_GEN_MODE_S(0),
- 4 * NV20TCL_TX_GEN_MODE_S__SIZE);
- for (i=0; i < 4 * NV20TCL_TX_GEN_MODE_S__SIZE; i++)
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_GEN_MODE(0,0),
+ 4 * NV20_3D_TEX_GEN_MODE__ESIZE);
+ for (i=0; i < 4 * NV20_3D_TEX_GEN_MODE__LEN; i++)
OUT_RING(chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_FOG_EQUATION_CONSTANT, 3);
+ BEGIN_RING(chan, kelvin, NV20_3D_FOG_COEFF(0), 3);
OUT_RINGf (chan, 1.5);
OUT_RINGf (chan, -0.090168);
OUT_RINGf (chan, 0.0);
- BEGIN_RING(chan, kelvin, NV20TCL_FOG_MODE, 2);
- OUT_RING (chan, NV20TCL_FOG_MODE_EXP_SIGNED);
- OUT_RING (chan, NV20TCL_FOG_COORD_FOG);
- BEGIN_RING(chan, kelvin, NV20TCL_FOG_ENABLE, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_FOG_MODE, 2);
+ OUT_RING (chan, NV20_3D_FOG_MODE_EXP_SIGNED);
+ OUT_RING (chan, NV20_3D_FOG_COORD_FOG);
+ BEGIN_RING(chan, kelvin, NV20_3D_FOG_ENABLE, 2);
OUT_RING (chan, 0);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_ENGINE, 1);
- OUT_RING (chan, NV20TCL_ENGINE_FIXED);
+ BEGIN_RING(chan, kelvin, NV20_3D_ENGINE, 1);
+ OUT_RING (chan, NV20_3D_ENGINE_FIXED);
- for (i = 0; i < NV20TCL_TX_MATRIX_ENABLE__SIZE; i++) {
- BEGIN_RING(chan, kelvin, NV20TCL_TX_MATRIX_ENABLE(i), 1);
+ for (i = 0; i < NV20_3D_TEX_MATRIX_ENABLE__LEN; i++) {
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX_ENABLE(i), 1);
OUT_RING (chan, 0);
}
- BEGIN_RING(chan, kelvin, NV20TCL_VTX_ATTR_4F_X(1), 4 * 15);
+ BEGIN_RING(chan, kelvin, NV20_3D_VERTEX_ATTR_4F_X(1), 4 * 15);
OUT_RINGf(chan, 1.0);
OUT_RINGf(chan, 0.0);
OUT_RINGf(chan, 0.0);
@@ -344,24 +394,24 @@ nv20_hwctx_init(struct gl_context *ctx)
OUT_RINGf(chan, 1.0);
}
- BEGIN_RING(chan, kelvin, NV20TCL_EDGEFLAG_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_EDGEFLAG_ENABLE, 1);
OUT_RING (chan, 1);
- BEGIN_RING(chan, kelvin, NV20TCL_COLOR_MASK, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_COLOR_MASK, 1);
OUT_RING (chan, 0x00010101);
- BEGIN_RING(chan, kelvin, NV20TCL_CLEAR_VALUE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_VALUE, 1);
OUT_RING (chan, 0);
- BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_RANGE_NEAR, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_RANGE_NEAR, 2);
OUT_RINGf (chan, 0.0);
OUT_RINGf (chan, 16777216.0);
- BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_TRANSLATE_X, 4);
+ BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_TRANSLATE_X, 4);
OUT_RINGf (chan, 0.0);
OUT_RINGf (chan, 0.0);
OUT_RINGf (chan, 0.0);
OUT_RINGf (chan, 16777215.0);
- BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_SCALE_X, 4);
+ BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_SCALE_X, 4);
OUT_RINGf (chan, 0.0);
OUT_RINGf (chan, 0.0);
OUT_RINGf (chan, 16777215.0 * 0.5);
@@ -376,7 +426,8 @@ nv20_context_destroy(struct gl_context *ctx)
struct nouveau_context *nctx = to_nouveau_context(ctx);
nv04_surface_takedown(ctx);
- nv20_render_destroy(ctx);
+ nv20_swtnl_destroy(ctx);
+ nv20_vbo_destroy(ctx);
nouveau_grobj_free(&nctx->hw.eng3d);
@@ -410,6 +461,7 @@ nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visua
ctx->Const.MaxTextureUnits = NV20_TEXTURE_UNITS;
ctx->Const.MaxTextureMaxAnisotropy = 8;
ctx->Const.MaxTextureLodBias = 15;
+ ctx->Driver.Clear = nv20_clear;
/* 2D engine. */
ret = nv04_surface_init(ctx);
@@ -418,9 +470,9 @@ nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visua
/* 3D engine. */
if (context_chipset(ctx) >= 0x25)
- kelvin_class = NV25TCL;
+ kelvin_class = NV25_3D;
else
- kelvin_class = NV20TCL;
+ kelvin_class = NV20_3D;
ret = nouveau_grobj_alloc(context_chan(ctx), 0xbeef0001, kelvin_class,
&nctx->hw.eng3d);
@@ -428,7 +480,8 @@ nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visua
goto fail;
nv20_hwctx_init(ctx);
- nv20_render_init(ctx);
+ nv20_vbo_init(ctx);
+ nv20_swtnl_init(ctx);
return ctx;
diff --git a/src/mesa/drivers/dri/nouveau/nv20_driver.h b/src/mesa/drivers/dri/nouveau/nv20_driver.h
index 7fbe6ccfa6..f2a6097b93 100644
--- a/src/mesa/drivers/dri/nouveau/nv20_driver.h
+++ b/src/mesa/drivers/dri/nouveau/nv20_driver.h
@@ -39,10 +39,16 @@ extern const struct nouveau_driver nv20_driver;
/* nv20_render.c */
void
-nv20_render_init(struct gl_context *ctx);
+nv20_vbo_init(struct gl_context *ctx);
void
-nv20_render_destroy(struct gl_context *ctx);
+nv20_vbo_destroy(struct gl_context *ctx);
+
+void
+nv20_swtnl_init(struct gl_context *ctx);
+
+void
+nv20_swtnl_destroy(struct gl_context *ctx);
/* nv20_state_fb.c */
void
diff --git a/src/mesa/drivers/dri/nouveau/nv20_render.c b/src/mesa/drivers/dri/nouveau/nv20_render.c
index 6b66854462..2bdc85cda4 100644
--- a/src/mesa/drivers/dri/nouveau/nv20_render.c
+++ b/src/mesa/drivers/dri/nouveau/nv20_render.c
@@ -26,60 +26,60 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
-#include "nouveau_class.h"
+#include "nv20_3d.xml.h"
#include "nv20_driver.h"
#define NUM_VERTEX_ATTRS 16
static void
-nv20_emit_material(struct gl_context *ctx, struct nouveau_array_state *a,
+nv20_emit_material(struct gl_context *ctx, struct nouveau_array *a,
const void *v);
/* Vertex attribute format. */
static struct nouveau_attr_info nv20_vertex_attrs[VERT_ATTRIB_MAX] = {
[VERT_ATTRIB_POS] = {
.vbo_index = 0,
- .imm_method = NV20TCL_VERTEX_POS_4F_X,
+ .imm_method = NV20_3D_VERTEX_POS_4F_X,
.imm_fields = 4,
},
[VERT_ATTRIB_NORMAL] = {
.vbo_index = 2,
- .imm_method = NV20TCL_VERTEX_NOR_3F_X,
+ .imm_method = NV20_3D_VERTEX_NOR_3F_X,
.imm_fields = 3,
},
[VERT_ATTRIB_COLOR0] = {
.vbo_index = 3,
- .imm_method = NV20TCL_VERTEX_COL_4F_X,
+ .imm_method = NV20_3D_VERTEX_COL_4F,
.imm_fields = 4,
},
[VERT_ATTRIB_COLOR1] = {
.vbo_index = 4,
- .imm_method = NV20TCL_VERTEX_COL2_3F_X,
+ .imm_method = NV20_3D_VERTEX_COL2_3F,
.imm_fields = 3,
},
[VERT_ATTRIB_FOG] = {
.vbo_index = 5,
- .imm_method = NV20TCL_VERTEX_FOG_1F,
+ .imm_method = NV20_3D_VERTEX_FOG_1F,
.imm_fields = 1,
},
[VERT_ATTRIB_TEX0] = {
.vbo_index = 9,
- .imm_method = NV20TCL_VERTEX_TX0_4F_S,
+ .imm_method = NV20_3D_VERTEX_TX0_4F_S,
.imm_fields = 4,
},
[VERT_ATTRIB_TEX1] = {
.vbo_index = 10,
- .imm_method = NV20TCL_VERTEX_TX1_4F_S,
+ .imm_method = NV20_3D_VERTEX_TX1_4F_S,
.imm_fields = 4,
},
[VERT_ATTRIB_TEX2] = {
.vbo_index = 11,
- .imm_method = NV20TCL_VERTEX_TX2_4F_S,
+ .imm_method = NV20_3D_VERTEX_TX2_4F_S,
.imm_fields = 4,
},
[VERT_ATTRIB_TEX3] = {
.vbo_index = 12,
- .imm_method = NV20TCL_VERTEX_TX3_4F_S,
+ .imm_method = NV20_3D_VERTEX_TX3_4F_S,
.imm_fields = 4,
},
[VERT_ATTRIB_GENERIC0] = {
@@ -119,11 +119,11 @@ get_hw_format(int type)
{
switch (type) {
case GL_FLOAT:
- return NV20TCL_VTXFMT_TYPE_FLOAT;
+ return NV20_3D_VTXBUF_FMT_TYPE_FLOAT;
case GL_UNSIGNED_SHORT:
- return NV20TCL_VTXFMT_TYPE_USHORT;
+ return NV20_3D_VTXBUF_FMT_TYPE_USHORT;
case GL_UNSIGNED_BYTE:
- return NV20TCL_VTXFMT_TYPE_UBYTE;
+ return NV20_3D_VTXBUF_FMT_TYPE_UBYTE;
default:
assert(0);
}
@@ -135,13 +135,11 @@ nv20_render_set_format(struct gl_context *ctx)
struct nouveau_render_state *render = to_render_state(ctx);
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *kelvin = context_eng3d(ctx);
- int i, hw_format;
-
- for (i = 0; i < NUM_VERTEX_ATTRS; i++) {
- int attr = render->map[i];
+ int i, attr, hw_format;
+ FOR_EACH_ATTR(render, i, attr) {
if (attr >= 0) {
- struct nouveau_array_state *a = &render->attrs[attr];
+ struct nouveau_array *a = &render->attrs[attr];
hw_format = a->stride << 8 |
a->fields << 4 |
@@ -149,10 +147,10 @@ nv20_render_set_format(struct gl_context *ctx)
} else {
/* Unused attribute. */
- hw_format = NV10TCL_VTXFMT_TYPE_FLOAT;
+ hw_format = NV20_3D_VTXBUF_FMT_TYPE_FLOAT;
}
- BEGIN_RING(chan, kelvin, NV20TCL_VTXFMT(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_VTXBUF_FMT(i), 1);
OUT_RING(chan, hw_format);
}
}
@@ -162,57 +160,53 @@ nv20_render_bind_vertices(struct gl_context *ctx)
{
struct nouveau_render_state *render = to_render_state(ctx);
struct nouveau_bo_context *bctx = context_bctx(ctx, VERTEX);
- struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *kelvin = context_eng3d(ctx);
- int i;
+ int i, attr;
- for (i = 0; i < NUM_VERTEX_ATTRS; i++) {
- int attr = render->map[i];
+ FOR_EACH_BOUND_ATTR(render, i, attr) {
+ struct nouveau_array *a = &render->attrs[attr];
- if (attr >= 0) {
- struct nouveau_array_state *a = &render->attrs[attr];
-
- nouveau_bo_mark(bctx, kelvin,
- NV20TCL_VTXBUF_ADDRESS(i),
- a->bo, a->offset, 0,
- 0, NV20TCL_VTXBUF_ADDRESS_DMA1,
- NOUVEAU_BO_LOW | NOUVEAU_BO_OR |
- NOUVEAU_BO_GART | NOUVEAU_BO_RD);
- }
+ nouveau_bo_mark(bctx, kelvin,
+ NV20_3D_VTXBUF_OFFSET(i),
+ a->bo, a->offset, 0,
+ 0, NV20_3D_VTXBUF_OFFSET_DMA1,
+ NOUVEAU_BO_LOW | NOUVEAU_BO_OR |
+ NOUVEAU_BO_GART | NOUVEAU_BO_RD);
}
-
- BEGIN_RING(chan, kelvin, NV20TCL_VTX_CACHE_INVALIDATE, 1);
- OUT_RING(chan, 0);
}
/* Vertex array rendering defs. */
#define RENDER_LOCALS(ctx) \
struct nouveau_grobj *kelvin = context_eng3d(ctx)
+#define BATCH_VALIDATE() \
+ BEGIN_RING(chan, kelvin, NV20_3D_VTXBUF_VALIDATE, 1); \
+ OUT_RING(chan, 0)
+
#define BATCH_BEGIN(prim) \
- BEGIN_RING(chan, kelvin, NV20TCL_VERTEX_BEGIN_END, 1); \
+ BEGIN_RING(chan, kelvin, NV20_3D_VERTEX_BEGIN_END, 1); \
OUT_RING(chan, prim)
#define BATCH_END() \
- BEGIN_RING(chan, kelvin, NV20TCL_VERTEX_BEGIN_END, 1); \
+ BEGIN_RING(chan, kelvin, NV20_3D_VERTEX_BEGIN_END, 1); \
OUT_RING(chan, 0)
#define MAX_PACKET 0x400
#define MAX_OUT_L 0x100
#define BATCH_PACKET_L(n) \
- BEGIN_RING_NI(chan, kelvin, NV20TCL_VB_VERTEX_BATCH, n)
+ BEGIN_RING_NI(chan, kelvin, NV20_3D_VTXBUF_BATCH, n)
#define BATCH_OUT_L(i, n) \
OUT_RING(chan, ((n) - 1) << 24 | (i))
#define MAX_OUT_I16 0x2
#define BATCH_PACKET_I16(n) \
- BEGIN_RING_NI(chan, kelvin, NV20TCL_VB_ELEMENT_U16, n)
+ BEGIN_RING_NI(chan, kelvin, NV20_3D_VTXBUF_ELEMENT_U16, n)
#define BATCH_OUT_I16(i0, i1) \
OUT_RING(chan, (i1) << 16 | (i0))
#define MAX_OUT_I32 0x1
#define BATCH_PACKET_I32(n) \
- BEGIN_RING_NI(chan, kelvin, NV20TCL_VB_ELEMENT_U32, n)
+ BEGIN_RING_NI(chan, kelvin, NV20_3D_VTXBUF_ELEMENT_U32, n)
#define BATCH_OUT_I32(i) \
OUT_RING(chan, i)
@@ -223,3 +217,5 @@ nv20_render_bind_vertices(struct gl_context *ctx)
#define TAG(x) nv20_##x
#include "nouveau_render_t.c"
+#include "nouveau_vbo_t.c"
+#include "nouveau_swtnl_t.c"
diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_fb.c b/src/mesa/drivers/dri/nouveau/nv20_state_fb.c
index 7822ca2a09..cbde74e4fc 100644
--- a/src/mesa/drivers/dri/nouveau/nv20_state_fb.c
+++ b/src/mesa/drivers/dri/nouveau/nv20_state_fb.c
@@ -29,7 +29,7 @@
#include "nouveau_fbo.h"
#include "nouveau_gldefs.h"
#include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv20_3d.xml.h"
#include "nv20_driver.h"
static inline unsigned
@@ -37,20 +37,45 @@ get_rt_format(gl_format format)
{
switch (format) {
case MESA_FORMAT_XRGB8888:
- return 0x05;
+ return NV20_3D_RT_FORMAT_COLOR_X8R8G8B8;
case MESA_FORMAT_ARGB8888:
- return 0x08;
+ return NV20_3D_RT_FORMAT_COLOR_A8R8G8B8;
case MESA_FORMAT_RGB565:
- return 0x03;
+ return NV20_3D_RT_FORMAT_COLOR_R5G6B5;
case MESA_FORMAT_Z16:
- return 0x10;
+ return NV20_3D_RT_FORMAT_DEPTH_Z16;
case MESA_FORMAT_Z24_S8:
- return 0x20;
+ return NV20_3D_RT_FORMAT_DEPTH_Z24S8;
default:
assert(0);
}
}
+static void
+setup_hierz_buffer(struct gl_context *ctx)
+{
+ struct nouveau_channel *chan = context_chan(ctx);
+ struct nouveau_grobj *kelvin = context_eng3d(ctx);
+ struct nouveau_bo_context *bctx = context_bctx(ctx, HIERZ);
+ struct gl_framebuffer *fb = ctx->DrawBuffer;
+ struct nouveau_framebuffer *nfb = to_nouveau_framebuffer(fb);
+ unsigned pitch = align(fb->Width, 128),
+ height = align(fb->Height, 2),
+ size = pitch * height;
+
+ if (!nfb->hierz.bo || nfb->hierz.bo->size != size) {
+ nouveau_bo_ref(NULL, &nfb->hierz.bo);
+ nouveau_bo_new(context_dev(ctx), NOUVEAU_BO_VRAM, 0, size,
+ &nfb->hierz.bo);
+ }
+
+ BEGIN_RING(chan, kelvin, NV25_3D_HIERZ_PITCH, 1);
+ OUT_RING(chan, pitch);
+
+ nouveau_bo_markl(bctx, kelvin, NV25_3D_HIERZ_OFFSET, nfb->hierz.bo,
+ 0, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR);
+}
+
void
nv20_emit_framebuffer(struct gl_context *ctx, int emit)
{
@@ -59,7 +84,7 @@ nv20_emit_framebuffer(struct gl_context *ctx, int emit)
struct nouveau_bo_context *bctx = context_bctx(ctx, FRAMEBUFFER);
struct gl_framebuffer *fb = ctx->DrawBuffer;
struct nouveau_surface *s;
- unsigned rt_format = NV20TCL_RT_FORMAT_TYPE_LINEAR;
+ unsigned rt_format = NV20_3D_RT_FORMAT_TYPE_LINEAR;
unsigned rt_pitch = 0, zeta_pitch = 0;
unsigned bo_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR;
@@ -74,7 +99,7 @@ nv20_emit_framebuffer(struct gl_context *ctx, int emit)
rt_format |= get_rt_format(s->format);
rt_pitch = s->pitch;
- nouveau_bo_markl(bctx, kelvin, NV20TCL_COLOR_OFFSET,
+ nouveau_bo_markl(bctx, kelvin, NV20_3D_COLOR_OFFSET,
s->bo, 0, bo_flags);
}
@@ -86,14 +111,17 @@ nv20_emit_framebuffer(struct gl_context *ctx, int emit)
rt_format |= get_rt_format(s->format);
zeta_pitch = s->pitch;
- nouveau_bo_markl(bctx, kelvin, NV20TCL_ZETA_OFFSET,
+ nouveau_bo_markl(bctx, kelvin, NV20_3D_ZETA_OFFSET,
s->bo, 0, bo_flags);
+
+ if (context_chipset(ctx) >= 0x25)
+ setup_hierz_buffer(ctx);
} else {
rt_format |= get_rt_format(MESA_FORMAT_Z24_S8);
zeta_pitch = rt_pitch;
}
- BEGIN_RING(chan, kelvin, NV20TCL_RT_FORMAT, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_RT_FORMAT, 2);
OUT_RING(chan, rt_format);
OUT_RING(chan, zeta_pitch << 16 | rt_pitch);
@@ -112,12 +140,12 @@ nv20_emit_viewport(struct gl_context *ctx, int emit)
get_viewport_translate(ctx, a);
- BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_TRANSLATE_X, 4);
+ BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_TRANSLATE_X, 4);
OUT_RINGp(chan, a, 4);
- BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_HORIZ(0), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_HORIZ(0), 1);
OUT_RING(chan, (fb->Width - 1) << 16);
- BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_VERT(0), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_VERT(0), 1);
OUT_RING(chan, (fb->Height - 1) << 16);
context_dirty(ctx, PROJECTION);
diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_frag.c b/src/mesa/drivers/dri/nouveau/nv20_state_frag.c
index f9212d8b39..0624de442b 100644
--- a/src/mesa/drivers/dri/nouveau/nv20_state_frag.c
+++ b/src/mesa/drivers/dri/nouveau/nv20_state_frag.c
@@ -26,7 +26,7 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
-#include "nouveau_class.h"
+#include "nv20_3d.xml.h"
#include "nv10_driver.h"
#include "nv20_driver.h"
@@ -40,15 +40,15 @@ nv20_emit_tex_env(struct gl_context *ctx, int emit)
nv10_get_general_combiner(ctx, i, &a_in, &a_out, &c_in, &c_out, &k);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_ALPHA(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_ALPHA(i), 1);
OUT_RING(chan, a_in);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_ALPHA(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_ALPHA(i), 1);
OUT_RING(chan, a_out);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_RGB(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_RGB(i), 1);
OUT_RING(chan, c_in);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_RGB(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_RGB(i), 1);
OUT_RING(chan, c_out);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_CONSTANT_COLOR0(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_CONSTANT_COLOR0(i), 1);
OUT_RING(chan, k);
context_dirty(ctx, FRAG);
@@ -64,10 +64,10 @@ nv20_emit_frag(struct gl_context *ctx, int emit)
nv10_get_final_combiner(ctx, &in, &n);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_FINAL0, 2);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_FINAL0, 2);
OUT_RING(chan, in);
OUT_RING(chan, in >> 32);
- BEGIN_RING(chan, kelvin, NV20TCL_RC_ENABLE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_RC_ENABLE, 1);
OUT_RING(chan, n);
}
diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c b/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c
index a6e237f8c4..85f30dc4d4 100644
--- a/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c
+++ b/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c
@@ -27,7 +27,7 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
#include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv20_3d.xml.h"
#include "nv20_driver.h"
void
@@ -36,7 +36,7 @@ nv20_emit_point_mode(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *kelvin = context_eng3d(ctx);
- BEGIN_RING(chan, kelvin, NV20TCL_POINT_SIZE, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_POINT_SIZE, 1);
if (context_chipset(ctx) >= 0x25)
OUT_RINGf(chan, ctx->Point.Size);
else
diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_raster.c b/src/mesa/drivers/dri/nouveau/nv20_state_raster.c
index 0fc7a3259d..3fb4ecae89 100644
--- a/src/mesa/drivers/dri/nouveau/nv20_state_raster.c
+++ b/src/mesa/drivers/dri/nouveau/nv20_state_raster.c
@@ -27,7 +27,8 @@
#include "nouveau_driver.h"
#include "nouveau_context.h"
#include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nouveau_util.h"
+#include "nv20_3d.xml.h"
#include "nv20_driver.h"
void
@@ -36,7 +37,7 @@ nv20_emit_logic_opcode(struct gl_context *ctx, int emit)
struct nouveau_channel *chan = context_chan(ctx);
struct nouveau_grobj *kelvin = context_eng3d(ctx);
- BEGIN_RING(chan, kelvin, NV20TCL_COLOR_LOGIC_OP_ENABLE, 2);
- OUT_RING(chan, ctx->Color.ColorLogicOpEnabled ? 1 : 0);
+ BEGIN_RING(chan, kelvin, NV20_3D_COLOR_LOGIC_OP_ENABLE, 2);
+ OUT_RINGb(chan, ctx->Color.ColorLogicOpEnabled);
OUT_RING(chan, nvgl_logicop_func(ctx->Color.LogicOp));
}
diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c
index cfff1fe839..c362aca0fd 100644
--- a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c
@@ -28,14 +28,10 @@
#include "nouveau_context.h"
#include "nouveau_gldefs.h"
#include "nouveau_texture.h"
-#include "nouveau_class.h"
+#include "nv20_3d.xml.h"
#include "nouveau_util.h"
#include "nv20_driver.h"
-#define TX_GEN_MODE(i, j) (NV20TCL_TX_GEN_MODE_S(i) + 4 * (j))
-#define TX_GEN_COEFF(i, j) (NV20TCL_TX_GEN_COEFF_S_A(i) + 16 * (j))
-#define TX_MATRIX(i) (NV20TCL_TX0_MATRIX(0) + 64 * (i))
-
void
nv20_emit_tex_gen(struct gl_context *ctx, int emit)
{
@@ -52,15 +48,16 @@ nv20_emit_tex_gen(struct gl_context *ctx, int emit)
float *k = get_texgen_coeff(coord);
if (k) {
- BEGIN_RING(chan, kelvin, TX_GEN_COEFF(i, j), 4);
+ BEGIN_RING(chan, kelvin,
+ NV20_3D_TEX_GEN_COEFF(i, j), 4);
OUT_RINGp(chan, k, 4);
}
- BEGIN_RING(chan, kelvin, TX_GEN_MODE(i, j), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_GEN_MODE(i, j), 1);
OUT_RING(chan, nvgl_texgen_mode(coord->Mode));
} else {
- BEGIN_RING(chan, kelvin, TX_GEN_MODE(i, j), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_GEN_MODE(i, j), 1);
OUT_RING(chan, 0);
}
}
@@ -76,14 +73,14 @@ nv20_emit_tex_mat(struct gl_context *ctx, int emit)
if (nctx->fallback == HWTNL &&
(ctx->Texture._TexMatEnabled & 1 << i)) {
- BEGIN_RING(chan, kelvin, NV20TCL_TX_MATRIX_ENABLE(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX_ENABLE(i), 1);
OUT_RING(chan, 1);
- BEGIN_RING(chan, kelvin, TX_MATRIX(i), 16);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX(i,0), 16);
OUT_RINGm(chan, ctx->TextureMatrixStack[i].Top->m);
} else {
- BEGIN_RING(chan, kelvin, NV20TCL_TX_MATRIX_ENABLE(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX_ENABLE(i), 1);
OUT_RING(chan, 0);
}
}
@@ -93,29 +90,29 @@ get_tex_format_pot(struct gl_texture_image *ti)
{
switch (ti->TexFormat) {
case MESA_FORMAT_ARGB8888:
- return NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8;
+ return NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8;
case MESA_FORMAT_ARGB1555:
- return NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5;
+ return NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5;
case MESA_FORMAT_ARGB4444:
- return NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4;
+ return NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4;
case MESA_FORMAT_XRGB8888:
- return NV20TCL_TX_FORMAT_FORMAT_X8R8G8B8;
+ return NV20_3D_TEX_FORMAT_FORMAT_X8R8G8B8;
case MESA_FORMAT_RGB565:
- return NV20TCL_TX_FORMAT_FORMAT_R5G6B5;
+ return NV20_3D_TEX_FORMAT_FORMAT_R5G6B5;
case MESA_FORMAT_A8:
case MESA_FORMAT_I8:
- return NV20TCL_TX_FORMAT_FORMAT_A8;
+ return NV20_3D_TEX_FORMAT_FORMAT_I8;
case MESA_FORMAT_L8:
- return NV20TCL_TX_FORMAT_FORMAT_L8;
+ return NV20_3D_TEX_FORMAT_FORMAT_L8;
case MESA_FORMAT_CI8:
- return NV20TCL_TX_FORMAT_FORMAT_INDEX8;
+ return NV20_3D_TEX_FORMAT_FORMAT_INDEX8;
default:
assert(0);
@@ -127,26 +124,26 @@ get_tex_format_rect(struct gl_texture_image *ti)
{
switch (ti->TexFormat) {
case MESA_FORMAT_ARGB8888:
- return NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT;
+ return NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT;
case MESA_FORMAT_ARGB1555:
- return NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT;
+ return NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT;
case MESA_FORMAT_ARGB4444:
- return NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4_RECT;
+ return NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4_RECT;
case MESA_FORMAT_XRGB8888:
- return NV20TCL_TX_FORMAT_FORMAT_R8G8B8_RECT;
+ return NV20_3D_TEX_FORMAT_FORMAT_R8G8B8_RECT;
case MESA_FORMAT_RGB565:
- return NV20TCL_TX_FORMAT_FORMAT_R5G6B5_RECT;
+ return NV20_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT;
case MESA_FORMAT_L8:
- return NV20TCL_TX_FORMAT_FORMAT_L8_RECT;
+ return NV20_3D_TEX_FORMAT_FORMAT_L8_RECT;
case MESA_FORMAT_A8:
case MESA_FORMAT_I8:
- return NV20TCL_TX_FORMAT_FORMAT_A8_RECT;
+ return NV20_3D_TEX_FORMAT_FORMAT_I8_RECT;
default:
assert(0);
@@ -167,7 +164,7 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit)
uint32_t tx_format, tx_filter, tx_wrap, tx_enable;
if (!ctx->Texture.Unit[i]._ReallyEnabled) {
- BEGIN_RING(chan, kelvin, NV20TCL_TX_ENABLE(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_ENABLE(i), 1);
OUT_RING(chan, 0);
context_dirty(ctx, TEX_SHADER);
@@ -185,8 +182,8 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit)
tx_format = ti->DepthLog2 << 28
| ti->HeightLog2 << 24
| ti->WidthLog2 << 20
- | NV20TCL_TX_FORMAT_DIMS_2D
- | NV20TCL_TX_FORMAT_NO_BORDER
+ | NV20_3D_TEX_FORMAT_DIMS_2D
+ | NV20_3D_TEX_FORMAT_NO_BORDER
| 1 << 16;
tx_wrap = nvgl_wrap_mode(t->WrapR) << 16
@@ -197,13 +194,13 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit)
| nvgl_filter_mode(t->MinFilter) << 16
| 2 << 12;
- tx_enable = NV20TCL_TX_ENABLE_ENABLE
+ tx_enable = NV20_3D_TEX_ENABLE_ENABLE
| log2i(t->MaxAnisotropy) << 4;
if (t->Target == GL_TEXTURE_RECTANGLE) {
- BEGIN_RING(chan, kelvin, NV20TCL_TX_NPOT_PITCH(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_NPOT_PITCH(i), 1);
OUT_RING(chan, s->pitch << 16);
- BEGIN_RING(chan, kelvin, NV20TCL_TX_NPOT_SIZE(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_NPOT_SIZE(i), 1);
OUT_RING(chan, s->width << 16 | s->height);
tx_format |= get_tex_format_rect(ti);
@@ -222,29 +219,29 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit)
lod_min = CLAMP(lod_min, 0, 15);
lod_bias = CLAMP(lod_bias, 0, 15);
- tx_format |= NV20TCL_TX_FORMAT_MIPMAP;
+ tx_format |= NV20_3D_TEX_FORMAT_MIPMAP;
tx_filter |= lod_bias << 8;
tx_enable |= lod_min << 26
| lod_max << 14;
}
/* Write it to the hardware. */
- nouveau_bo_mark(bctx, kelvin, NV20TCL_TX_FORMAT(i),
+ nouveau_bo_mark(bctx, kelvin, NV20_3D_TEX_FORMAT(i),
s->bo, tx_format, 0,
- NV20TCL_TX_FORMAT_DMA0,
- NV20TCL_TX_FORMAT_DMA1,
+ NV20_3D_TEX_FORMAT_DMA0,
+ NV20_3D_TEX_FORMAT_DMA1,
bo_flags | NOUVEAU_BO_OR);
- nouveau_bo_markl(bctx, kelvin, NV20TCL_TX_OFFSET(i),
+ nouveau_bo_markl(bctx, kelvin, NV20_3D_TEX_OFFSET(i),
s->bo, s->offset, bo_flags);
- BEGIN_RING(chan, kelvin, NV20TCL_TX_WRAP(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_WRAP(i), 1);
OUT_RING(chan, tx_wrap);
- BEGIN_RING(chan, kelvin, NV20TCL_TX_FILTER(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_FILTER(i), 1);
OUT_RING(chan, tx_filter);
- BEGIN_RING(chan, kelvin, NV20TCL_TX_ENABLE(i), 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_ENABLE(i), 1);
OUT_RING(chan, tx_enable);
context_dirty(ctx, TEX_SHADER);
@@ -262,9 +259,9 @@ nv20_emit_tex_shader(struct gl_context *ctx, int emit)
if (!ctx->Texture.Unit[i]._ReallyEnabled)
continue;
- tx_shader_op |= NV20TCL_TX_SHADER_OP_TX0_TEXTURE_2D << 5 * i;
+ tx_shader_op |= NV20_3D_TEX_SHADER_OP_TX0_TEXTURE_2D << 5 * i;
}
- BEGIN_RING(chan, kelvin, NV20TCL_TX_SHADER_OP, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_TEX_SHADER_OP, 1);
OUT_RING(chan, tx_shader_op);
}
diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c
index b65cd9ad87..4677198dd0 100644
--- a/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c
+++ b/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c
@@ -28,31 +28,31 @@
#include "nouveau_context.h"
#include "nouveau_gldefs.h"
#include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv20_3d.xml.h"
#include "nv10_driver.h"
#include "nv20_driver.h"
#define LIGHT_MODEL_AMBIENT_R(side) \
- ((side) ? NV20TCL_LIGHT_MODEL_BACK_AMBIENT_R : \
- NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_R)
+ ((side) ? NV20_3D_LIGHT_MODEL_BACK_AMBIENT_R : \
+ NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_R)
#define LIGHT_AMBIENT_R(side, i) \
- ((side) ? NV20TCL_LIGHT_BACK_AMBIENT_R(i) : \
- NV20TCL_LIGHT_FRONT_AMBIENT_R(i))
+ ((side) ? NV20_3D_LIGHT_BACK_AMBIENT_R(i) : \
+ NV20_3D_LIGHT_FRONT_AMBIENT_R(i))
#define LIGHT_DIFFUSE_R(side, i) \
- ((side) ? NV20TCL_LIGHT_BACK_DIFFUSE_R(i) : \
- NV20TCL_LIGHT_FRONT_DIFFUSE_R(i))
+ ((side) ? NV20_3D_LIGHT_BACK_DIFFUSE_R(i) : \
+ NV20_3D_LIGHT_FRONT_DIFFUSE_R(i))
#define LIGHT_SPECULAR_R(side, i) \
- ((side) ? NV20TCL_LIGHT_BACK_SPECULAR_R(i) : \
- NV20TCL_LIGHT_FRONT_SPECULAR_R(i))
+ ((side) ? NV20_3D_LIGHT_BACK_SPECULAR_R(i) : \
+ NV20_3D_LIGHT_FRONT_SPECULAR_R(i))
#define MATERIAL_FACTOR_R(side) \
- ((side) ? NV20TCL_MATERIAL_FACTOR_BACK_R : \
- NV20TCL_MATERIAL_FACTOR_FRONT_R)
+ ((side) ? NV20_3D_MATERIAL_FACTOR_BACK_R : \
+ NV20_3D_MATERIAL_FACTOR_FRONT_R)
#define MATERIAL_FACTOR_A(side) \
- ((side) ? NV20TCL_MATERIAL_FACTOR_BACK_A : \
- NV20TCL_MATERIAL_FACTOR_FRONT_A)
+ ((side) ? NV20_3D_MATERIAL_FACTOR_BACK_A : \
+ NV20_3D_MATERIAL_FACTOR_FRONT_A)
#define MATERIAL_SHININESS(side) \
- ((side) ? NV20TCL_BACK_MATERIAL_SHININESS(0) : \
- NV20TCL_FRONT_MATERIAL_SHININESS(0))
+ ((side) ? NV20_3D_BACK_MATERIAL_SHININESS(0) : \
+ NV20_3D_FRONT_MATERIAL_SHININESS(0))
void
nv20_emit_clip_plane(struct gl_context *ctx, int emit)
@@ -65,22 +65,22 @@ get_material_bitmask(unsigned m)
unsigned ret = 0;
if (m & MAT_BIT_FRONT_EMISSION)
- ret |= NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_COL1;
+ ret |= NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_COL1;
if (m & MAT_BIT_FRONT_AMBIENT)
- ret |= NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_COL1;
+ ret |= NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_COL1;
if (m & MAT_BIT_FRONT_DIFFUSE)
- ret |= NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_COL1;
+ ret |= NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_COL1;
if (m & MAT_BIT_FRONT_SPECULAR)
- ret |= NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_COL1;
+ ret |= NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_COL1;
if (m & MAT_BIT_BACK_EMISSION)
- ret |= NV20TCL_COLOR_MATERIAL_BACK_EMISSION_COL1;
+ ret |= NV20_3D_COLOR_MATERIAL_BACK_EMISSION_COL1;
if (m & MAT_BIT_BACK_AMBIENT)
- ret |= NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_COL1;
+ ret |= NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_COL1;
if (m & MAT_BIT_BACK_DIFFUSE)
- ret |= NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_COL1;
+ ret |= NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_COL1;
if (m & MAT_BIT_BACK_SPECULAR)
- ret |= NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_COL1;
+ ret |= NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_COL1;
return ret;
}
@@ -92,7 +92,7 @@ nv20_emit_color_material(struct gl_context *ctx, int emit)
struct nouveau_grobj *kelvin = context_eng3d(ctx);
unsigned mask = get_material_bitmask(ctx->Light.ColorMaterialBitmask);
- BEGIN_RING(chan, kelvin, NV20TCL_COLOR_MATERIAL, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_COLOR_MATERIAL, 1);
OUT_RING(chan, ctx->Light.ColorMaterialEnabled ? mask : 0);
}
@@ -101,11 +101,11 @@ get_fog_mode_signed(unsigned mode)
{
switch (mode) {
case GL_LINEAR:
- return NV20TCL_FOG_MODE_LINEAR_SIGNED;
+ return NV20_3D_FOG_MODE_LINEAR_SIGNED;
case GL_EXP:
- return NV20TCL_FOG_MODE_EXP_SIGNED;
+ return NV20_3D_FOG_MODE_EXP_SIGNED;
case GL_EXP2:
- return NV20TCL_FOG_MODE_EXP2_SIGNED;
+ return NV20_3D_FOG_MODE_EXP2_SIGNED;
default:
assert(0);
}
@@ -116,11 +116,11 @@ get_fog_mode_unsigned(unsigned mode)
{
switch (mode) {
case GL_LINEAR:
- return NV20TCL_FOG_MODE_LINEAR_UNSIGNED;
+ return NV20_3D_FOG_MODE_LINEAR_UNSIGNED;
case GL_EXP:
- return NV20TCL_FOG_MODE_EXP_UNSIGNED;
+ return NV20_3D_FOG_MODE_EXP_UNSIGNED;
case GL_EXP2:
- return NV20TCL_FOG_MODE_EXP2_UNSIGNED;
+ return NV20_3D_FOG_MODE_EXP2_UNSIGNED;
default:
assert(0);
}
@@ -131,9 +131,9 @@ get_fog_source(unsigned source)
{
switch (source) {
case GL_FOG_COORDINATE_EXT:
- return NV20TCL_FOG_COORD_FOG;
+ return NV20_3D_FOG_COORD_FOG;
case GL_FRAGMENT_DEPTH_EXT:
- return NV20TCL_FOG_COORD_DIST_ORTHOGONAL_ABS;
+ return NV20_3D_FOG_COORD_DIST_ORTHOGONAL_ABS;
default:
assert(0);
}
@@ -152,15 +152,15 @@ nv20_emit_fog(struct gl_context *ctx, int emit)
nv10_get_fog_coeff(ctx, k);
- BEGIN_RING(chan, kelvin, NV20TCL_FOG_MODE, 4);
+ BEGIN_RING(chan, kelvin, NV20_3D_FOG_MODE, 4);
OUT_RING(chan, (source == GL_FOG_COORDINATE_EXT ?
get_fog_mode_signed(f->Mode) :
get_fog_mode_unsigned(f->Mode)));
OUT_RING(chan, get_fog_source(source));
- OUT_RING(chan, f->Enabled ? 1 : 0);
+ OUT_RINGb(chan, f->Enabled);
OUT_RING(chan, pack_rgba_f(MESA_FORMAT_RGBA8888_REV, f->Color));
- BEGIN_RING(chan, kelvin, NV20TCL_FOG_EQUATION_CONSTANT, 3);
+ BEGIN_RING(chan, kelvin, NV20_3D_FOG_COEFF(0), 3);
OUT_RINGp(chan, k, 3);
}
@@ -171,19 +171,19 @@ nv20_emit_light_model(struct gl_context *ctx, int emit)
struct nouveau_grobj *kelvin = context_eng3d(ctx);
struct gl_lightmodel *m = &ctx->Light.Model;
- BEGIN_RING(chan, kelvin, NV20TCL_SEPARATE_SPECULAR_ENABLE, 1);
- OUT_RING(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR ? 1 : 0);
+ BEGIN_RING(chan, kelvin, NV20_3D_SEPARATE_SPECULAR_ENABLE, 1);
+ OUT_RINGb(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR);
- BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL, 1);
+ BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL, 1);
OUT_RING(chan, ((m->LocalViewer ?
- NV20TCL_LIGHT_MODEL_VIEWER_LOCAL :
- NV20TCL_LIGHT_MODEL_VIEWER_NONLOCAL) |
+ NV20_3D_LIGHT_MODEL_VIEWER_LOCAL :
+ NV20_3D_LIGHT_MODEL_VIEWER_NONLOCAL) |
(NEED_SECONDARY_COLOR(ctx) ?
- NV20TCL_LIGHT_MODEL_SEPARATE_SPECULAR :
+ NV20_3D_LIGHT_MODEL_SEPARATE_SPECULAR :
0)));
- BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL_TWO_SIDE_ENABLE, 1);
- OUT_RING(chan, ctx->Light.Model.TwoSide ? 1 : 0);
+ BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL_TWO_SIDE_ENABLE, 1);
+ OUT_RINGb(chan, ctx->Light.Model.TwoSide);
}
void
@@ -195,19 +195,19 @@ nv20_emit_light_source(struct gl_context *ctx, int emit)
struct gl_light *l = &ctx->Light.Light[i];
if (l->_Flags & LIGHT_POSITIONAL) {
- BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_POSITION_X(i), 3);
+ BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_POSITION_X(i), 3);
OUT_RINGp(chan, l->_Position, 3);
- BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_ATTENUATION_CONSTANT(i), 3);
+ BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_ATTENUATION_CONSTANT(i), 3);
OUT_RINGf(chan, l->ConstantAttenuation);
OUT_RINGf(chan, l->LinearAttenuation);
OUT_RINGf(chan, l->QuadraticAttenuation);
} else {
- BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_DIRECTION_X(i), 3);
+ BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_DIRECTION_X(i), 3);
OUT_RINGp(chan, l->_VP_inf_norm, 3);
- BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_HALF_VECTOR_X(i), 3);
+ BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_HALF_VECTOR_X(i), 3);
OUT_RINGp(chan, l->_h_inf_norm, 3);
}
@@ -216,7 +216,7 @@ nv20_emit_light_source(struct gl_context *ctx, int emit)
nv10_get_spot_coeff(l, k);
- BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_SPOT_CUTOFF_A(i), 7);
+ BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_SPOT_CUTOFF(i, 0), 7);
OUT_RINGp(chan, k, 7);
}
}
@@ -340,7 +340,7 @@ nv20_emit_modelview(struct gl_context *ctx, int emit)
if (ctx->Light._NeedEyeCoords || ctx->Fog.Enabled ||
(ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD)) {
- BEGIN_RING(chan, kelvin, NV20TCL_MODELVIEW0_MATRIX(0), 16);
+ BEGIN_RING(chan, kelvin, NV20_3D_MODELVIEW_MATRIX(0, 0), 16);
OUT_RINGm(chan, m->m);
}
@@ -349,7 +349,7 @@ nv20_emit_modelview(struct gl_context *ctx, int emit)
int i, j;
BEGIN_RING(chan, kelvin,
- NV20TCL_INVERSE_MODELVIEW0_MATRIX(0), 12);
+ NV20_3D_INVERSE_MODELVIEW_MATRIX(0, 0), 12);
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
OUT_RINGf(chan, m->inv[4*i + j]);
@@ -370,7 +370,7 @@ nv20_emit_projection(struct gl_context *ctx, int emit)
if (nctx->fallback == HWTNL)
_math_matrix_mul_matrix(&m, &m, &ctx->_ModelProjectMatrix);
- BEGIN_RING(chan, kelvin, NV20TCL_PROJECTION_MATRIX(0), 16);
+ BEGIN_RING(chan, kelvin, NV20_3D_PROJECTION_MATRIX(0), 16);
OUT_RINGm(chan, m.m);
_math_matrix_dtr(&m);
diff --git a/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h b/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h
new file mode 100644
index 0000000000..e370a1ca06
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h
@@ -0,0 +1,155 @@
+#ifndef NV_M2MF_XML
+#define NV_M2MF_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv_m2mf.xml ( 2710 bytes, from 2010-11-01 00:28:46)
+- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58)
+- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57)
+- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57)
+- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+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.
+*/
+
+
+
+#define NV04_M2MF_DMA_NOTIFY 0x00000180
+
+#define NV04_M2MF_DMA_BUFFER_IN 0x00000184
+
+#define NV04_M2MF_DMA_BUFFER_OUT 0x00000188
+
+
+#define NV50_M2MF_LINEAR_IN 0x00000200
+
+#define NV50_M2MF_TILING_MODE_IN 0x00000204
+
+#define NV50_M2MF_TILING_PITCH_IN 0x00000208
+
+#define NV50_M2MF_TILING_HEIGHT_IN 0x0000020c
+
+#define NV50_M2MF_TILING_DEPTH_IN 0x00000210
+
+#define NV50_M2MF_TILING_POSITION_IN_Z 0x00000214
+
+#define NV50_M2MF_TILING_POSITION_IN 0x00000218
+#define NV50_M2MF_TILING_POSITION_IN_X__MASK 0x0000ffff
+#define NV50_M2MF_TILING_POSITION_IN_X__SHIFT 0
+#define NV50_M2MF_TILING_POSITION_IN_Y__MASK 0xffff0000
+#define NV50_M2MF_TILING_POSITION_IN_Y__SHIFT 16
+
+#define NV50_M2MF_LINEAR_OUT 0x0000021c
+
+#define NV50_M2MF_TILING_MODE_OUT 0x00000220
+
+#define NV50_M2MF_TILING_PITCH_OUT 0x00000224
+
+#define NV50_M2MF_TILING_HEIGHT_OUT 0x00000228
+
+#define NV50_M2MF_TILING_DEPTH_OUT 0x0000022c
+
+#define NV50_M2MF_TILING_POSITION_OUT_Z 0x00000230
+
+#define NV50_M2MF_TILING_POSITION_OUT 0x00000234
+#define NV50_M2MF_TILING_POSITION_OUT_X__MASK 0x0000ffff
+#define NV50_M2MF_TILING_POSITION_OUT_X__SHIFT 0
+#define NV50_M2MF_TILING_POSITION_OUT_Y__MASK 0xffff0000
+#define NV50_M2MF_TILING_POSITION_OUT_Y__SHIFT 16
+
+#define NV50_M2MF_OFFSET_IN_HIGH 0x00000238
+
+#define NV50_M2MF_OFFSET_OUT_HIGH 0x0000023c
+
+#define NV04_M2MF_OFFSET_IN 0x0000030c
+
+#define NV04_M2MF_OFFSET_OUT 0x00000310
+
+#define NV04_M2MF_PITCH_IN 0x00000314
+
+#define NV04_M2MF_PITCH_OUT 0x00000318
+
+#define NV04_M2MF_LINE_LENGTH_IN 0x0000031c
+
+#define NV04_M2MF_LINE_COUNT 0x00000320
+
+#define NV04_M2MF_FORMAT 0x00000324
+#define NV04_M2MF_FORMAT_INPUT_INC__MASK 0x000000ff
+#define NV04_M2MF_FORMAT_INPUT_INC__SHIFT 0
+#define NV04_M2MF_FORMAT_INPUT_INC_1 0x00000001
+#define NV04_M2MF_FORMAT_INPUT_INC_2 0x00000002
+#define NV04_M2MF_FORMAT_INPUT_INC_4 0x00000004
+#define NV50_M2MF_FORMAT_INPUT_INC_8 0x00000008
+#define NV50_M2MF_FORMAT_INPUT_INC_16 0x00000010
+#define NV04_M2MF_FORMAT_OUTPUT_INC__MASK 0x0000ff00
+#define NV04_M2MF_FORMAT_OUTPUT_INC__SHIFT 8
+#define NV04_M2MF_FORMAT_OUTPUT_INC_1 0x00000100
+#define NV04_M2MF_FORMAT_OUTPUT_INC_2 0x00000200
+#define NV04_M2MF_FORMAT_OUTPUT_INC_4 0x00000400
+#define NV50_M2MF_FORMAT_OUTPUT_INC_8 0x00000800
+#define NV50_M2MF_FORMAT_OUTPUT_INC_16 0x00001000
+
+#define NV04_M2MF_BUF_NOTIFY 0x00000328
+
+
+#endif /* NV_M2MF_XML */
diff --git a/src/mesa/drivers/dri/nouveau/nv_object.xml.h b/src/mesa/drivers/dri/nouveau/nv_object.xml.h
new file mode 100644
index 0000000000..d5ed4bceb5
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv_object.xml.h
@@ -0,0 +1,268 @@
+#ifndef NV_OBJECT_XML
+#define NV_OBJECT_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57)
+- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58)
+- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57)
+- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+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.
+*/
+
+
+#define NV01_ROOT 0x00000001
+#define NV01_CONTEXT_DMA 0x00000002
+#define NV01_DEVICE 0x00000003
+#define NV01_TIMER 0x00000004
+#define NV01_NULL 0x00000030
+#define NV01_MEMORY_LOCAL_BANKED 0x0000003d
+#define NV01_MAPPING_SYSTEM 0x0000003e
+#define NV03_MEMORY_LOCAL_CURSOR 0x0000003f
+#define NV01_MEMORY_LOCAL_LINEAR 0x00000040
+#define NV01_MAPPING_LOCAL 0x00000041
+#define NV03_VIDEO_LUT_CURSOR_DAC 0x00000046
+#define NV03_CHANNEL_PIO 0x0000006a
+#define NV03_CHANNEL_DMA 0x0000006b
+#define NV10_VIDEO_DISPLAY 0x0000007c
+#define NV01_CONTEXT_BETA1 0x00000012
+#define NV04_BETA_SOLID 0x00000072
+#define NV01_CONTEXT_COLOR_KEY 0x00000017
+#define NV04_CONTEXT_COLOR_KEY 0x00000057
+#define NV01_CONTEXT_PATTERN 0x00000018
+#define NV01_CONTEXT_CLIP_RECTANGLE 0x00000019
+#define NV03_CONTEXT_ROP 0x00000043
+#define NV04_IMAGE_PATTERN 0x00000044
+#define NV01_RENDER_SOLID_LINE 0x0000001c
+#define NV04_RENDER_SOLID_LINE 0x0000005c
+#define NV30_RENDER_SOLID_LINE 0x0000035c
+#define NV40_RENDER_SOLID_LINE 0x0000305c
+#define NV01_RENDER_SOLID_TRIANGLE 0x0000001d
+#define NV04_RENDER_SOLID_TRIANGLE 0x0000005d
+#define NV01_RENDER_SOLID_RECTANGLE 0x0000001e
+#define NV04_RENDER_SOLID_RECTANGLE 0x0000005e
+#define NV01_IMAGE_BLIT 0x0000001f
+#define NV04_IMAGE_BLIT 0x0000005f
+#define NV11_IMAGE_BLIT 0x0000009f
+#define NV01_IMAGE_FROM_CPU 0x00000021
+#define NV04_IMAGE_FROM_CPU 0x00000061
+#define NV05_IMAGE_FROM_CPU 0x00000065
+#define NV10_IMAGE_FROM_CPU 0x0000008a
+#define NV30_IMAGE_FROM_CPU 0x0000038a
+#define NV40_IMAGE_FROM_CPU 0x0000308a
+#define NV03_STRETCHED_IMAGE_FROM_CPU 0x00000036
+#define NV04_STRETCHED_IMAGE_FROM_CPU 0x00000076
+#define NV05_STRETCHED_IMAGE_FROM_CPU 0x00000066
+#define NV30_STRETCHED_IMAGE_FROM_CPU 0x00000366
+#define NV40_STRETCHED_IMAGE_FROM_CPU 0x00003066
+#define NV03_SCALED_IMAGE_FROM_MEMORY 0x00000037
+#define NV04_SCALED_IMAGE_FROM_MEMORY 0x00000077
+#define NV05_SCALED_IMAGE_FROM_MEMORY 0x00000063
+#define NV10_SCALED_IMAGE_FROM_MEMORY 0x00000089
+#define NV30_SCALED_IMAGE_FROM_MEMORY 0x00000389
+#define NV40_SCALED_IMAGE_FROM_MEMORY 0x00003089
+#define NV50_SCALED_IMAGE_FROM_MEMORY 0x00005089
+#define NV04_DVD_SUBPICTURE 0x00000038
+#define NV10_DVD_SUBPICTURE 0x00000088
+#define NV03_GDI_RECTANGLE_TEXT 0x0000004b
+#define NV04_GDI_RECTANGLE_TEXT 0x0000004a
+#define NV04_SWIZZLED_SURFACE 0x00000052
+#define NV20_SWIZZLED_SURFACE 0x0000009e
+#define NV30_SWIZZLED_SURFACE 0x0000039e
+#define NV40_SWIZZLED_SURFACE 0x0000309e
+#define NV03_CONTEXT_SURFACE_DST 0x00000058
+#define NV03_CONTEXT_SURFACE_SRC 0x00000059
+#define NV04_CONTEXT_SURFACES_2D 0x00000042
+#define NV10_CONTEXT_SURFACES_2D 0x00000062
+#define NV30_CONTEXT_SURFACES_2D 0x00000362
+#define NV40_CONTEXT_SURFACES_2D 0x00003062
+#define NV50_CONTEXT_SURFACES_2D 0x00005062
+#define NV04_INDEXED_IMAGE_FROM_CPU 0x00000060
+#define NV05_INDEXED_IMAGE_FROM_CPU 0x00000064
+#define NV30_INDEXED_IMAGE_FROM_CPU 0x00000364
+#define NV40_INDEXED_IMAGE_FROM_CPU 0x00003064
+#define NV10_TEXTURE_FROM_CPU 0x0000007b
+#define NV30_TEXTURE_FROM_CPU 0x0000037b
+#define NV40_TEXTURE_FROM_CPU 0x0000307b
+#define NV04_M2MF 0x00000039
+#define NV50_M2MF 0x00005039
+#define NVC0_M2MF 0x00009039
+#define NV03_TEXTURED_TRIANGLE 0x00000048
+#define NV04_TEXTURED_TRIANGLE 0x00000054
+#define NV10_TEXTURED_TRIANGLE 0x00000094
+#define NV04_MULTITEX_TRIANGLE 0x00000055
+#define NV10_MULTITEX_TRIANGLE 0x00000095
+#define NV03_CONTEXT_SURFACE_COLOR 0x0000005a
+#define NV03_CONTEXT_SURFACE_ZETA 0x0000005b
+#define NV04_CONTEXT_SURFACES_3D 0x00000053
+#define NV10_CONTEXT_SURFACES_3D 0x00000093
+#define NV10_3D 0x00000056
+#define NV11_3D 0x00000096
+#define NV17_3D 0x00000099
+#define NV20_3D 0x00000097
+#define NV25_3D 0x00000597
+#define NV30_3D 0x00000397
+#define NV35_3D 0x00000497
+#define NV34_3D 0x00000697
+#define NV40_3D 0x00004097
+#define NV44_3D 0x00004497
+#define NV50_3D 0x00005097
+#define NV84_3D 0x00008297
+#define NVA0_3D 0x00008397
+#define NVA3_3D 0x00008597
+#define NVAF_3D 0x00008697
+#define NVC0_3D 0x00009097
+#define NV50_2D 0x0000502d
+#define NVC0_2D 0x0000902d
+#define NV50_COMPUTE 0x000050c0
+#define NVA3_COMPUTE 0x000085c0
+#define NVC0_COMPUTE 0x000090c0
+#define NV84_CRYPT 0x000074c1
+#define NV01_SUBCHAN__SIZE 0x00002000
+#define NV01_SUBCHAN 0x00000000
+
+#define NV01_SUBCHAN_OBJECT 0x00000000
+
+
+#define NV84_SUBCHAN_QUERY_ADDRESS_HIGH 0x00000010
+
+#define NV84_SUBCHAN_QUERY_ADDRESS_LOW 0x00000014
+
+#define NV84_SUBCHAN_QUERY_COUNTER 0x00000018
+
+#define NV84_SUBCHAN_QUERY_GET 0x0000001c
+
+#define NV84_SUBCHAN_QUERY_INTR 0x00000020
+
+#define NV84_SUBCHAN_WRCACHE_FLUSH 0x00000024
+
+#define NV10_SUBCHAN_REF_CNT 0x00000050
+
+
+#define NV11_SUBCHAN_DMA_SEMAPHORE 0x00000060
+
+#define NV11_SUBCHAN_SEMAPHORE_OFFSET 0x00000064
+
+#define NV11_SUBCHAN_SEMAPHORE_ACQUIRE 0x00000068
+
+#define NV11_SUBCHAN_SEMAPHORE_RELEASE 0x0000006c
+
+#define NV40_SUBCHAN_YIELD 0x00000080
+
+#define NV01_GRAPH 0x00000000
+
+#define NV04_GRAPH_NOP 0x00000100
+
+#define NV01_GRAPH_NOTIFY 0x00000104
+#define NV01_GRAPH_NOTIFY_WRITE 0x00000000
+#define NV01_GRAPH_NOTIFY_WRITE_AND_AWAKEN 0x00000001
+
+#define NV50_GRAPH_WAIT_FOR_IDLE 0x00000110
+
+#define NVA3_GRAPH_UNK0120 0x00000120
+
+#define NVA3_GRAPH_UNK0124 0x00000124
+
+#define NV40_GRAPH_PM_TRIGGER 0x00000140
+
+#define NVC0_SUBCHAN__SIZE 0x00008000
+#define NVC0_SUBCHAN 0x00000000
+
+#define NVC0_SUBCHAN_OBJECT 0x00000000
+
+
+#define NVC0_SUBCHAN_QUERY_ADDRESS_HIGH 0x00000010
+
+#define NVC0_SUBCHAN_QUERY_ADDRESS_LOW 0x00000014
+
+#define NVC0_SUBCHAN_QUERY_SEQUENCE 0x00000018
+
+#define NVC0_SUBCHAN_QUERY_GET 0x0000001c
+
+#define NVC0_SUBCHAN_REF_CNT 0x00000050
+
+#define NVC0_GRAPH 0x00000000
+
+#define NVC0_GRAPH_NOP 0x00000100
+
+#define NVC0_GRAPH_NOTIFY_ADDRESS_HIGH 0x00000104
+
+#define NVC0_GRAPH_NOTIFY_ADDRESS_LOW 0x00000108
+
+#define NVC0_GRAPH_NOTIFY 0x0000010c
+#define NVC0_GRAPH_NOTIFY_WRITE 0x00000000
+#define NVC0_GRAPH_NOTIFY_WRITE_AND_AWAKEN 0x00000001
+
+#define NVC0_GRAPH_SERIALIZE 0x00000110
+
+#define NVC0_GRAPH_MACRO_UPLOAD_POS 0x00000114
+
+#define NVC0_GRAPH_MACRO_UPLOAD_DATA 0x00000118
+
+#define NVC0_GRAPH_MACRO_ID 0x0000011c
+
+#define NVC0_GRAPH_MACRO_POS 0x00000120
+
+
+#endif /* NV_OBJECT_XML */
diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c
index 723e31401d..5abfc9dac5 100644
--- a/src/mesa/drivers/dri/r200/r200_context.c
+++ b/src/mesa/drivers/dri/r200/r200_context.c
@@ -71,6 +71,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define need_GL_NV_vertex_program
#define need_GL_ARB_point_parameters
#define need_GL_EXT_framebuffer_object
+#define need_GL_OES_EGL_image
+
#include "main/remap_helper.h"
#define DRIVER_DATE "20060602"
@@ -137,6 +139,9 @@ static const struct dri_extension card_extensions[] =
{ "GL_ATI_texture_mirror_once", NULL },
{ "GL_MESA_pack_invert", NULL },
{ "GL_NV_blend_square", NULL },
+#if FEATURE_OES_EGL_image
+ { "GL_OES_EGL_image", GL_OES_EGL_image_functions },
+#endif
{ NULL, NULL }
};
diff --git a/src/mesa/drivers/dri/r200/r200_swtcl.c b/src/mesa/drivers/dri/r200/r200_swtcl.c
index 38864162ce..c56a49d5ad 100644
--- a/src/mesa/drivers/dri/r200/r200_swtcl.c
+++ b/src/mesa/drivers/dri/r200/r200_swtcl.c
@@ -319,10 +319,9 @@ static INLINE GLuint reduced_hw_prim( struct gl_context *ctx, GLuint prim)
{
switch (prim) {
case GL_POINTS:
- return (ctx->Point.PointSprite ||
- ((ctx->_TriangleCaps & (DD_POINT_SIZE | DD_POINT_ATTEN)) &&
- !(ctx->_TriangleCaps & (DD_POINT_SMOOTH)))) ?
- R200_VF_PRIM_POINT_SPRITES : R200_VF_PRIM_POINTS;
+ return (((R200_CONTEXT(ctx))->radeon.radeonScreen->drmSupportsPointSprites &&
+ !(ctx->_TriangleCaps & DD_POINT_SMOOTH)) ?
+ R200_VF_PRIM_POINT_SPRITES : R200_VF_PRIM_POINTS);
case GL_LINES:
/* fallthrough */
case GL_LINE_LOOP:
diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c b/src/mesa/drivers/dri/r200/r200_tcl.c
index 84db7c9d4e..7aed116f0b 100644
--- a/src/mesa/drivers/dri/r200/r200_tcl.c
+++ b/src/mesa/drivers/dri/r200/r200_tcl.c
@@ -68,9 +68,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define HAVE_ELTS 1
-#define HW_POINTS ((ctx->Point.PointSprite || \
- ((ctx->_TriangleCaps & (DD_POINT_SIZE | DD_POINT_ATTEN)) && \
- !(ctx->_TriangleCaps & (DD_POINT_SMOOTH)))) ? \
+#define HW_POINTS (((R200_CONTEXT(ctx))->radeon.radeonScreen->drmSupportsPointSprites && \
+ !(ctx->_TriangleCaps & DD_POINT_SMOOTH)) ? \
R200_VF_PRIM_POINT_SPRITES : R200_VF_PRIM_POINTS)
#define HW_LINES R200_VF_PRIM_LINES
#define HW_LINE_LOOP 0
diff --git a/src/mesa/drivers/dri/r200/r200_tex.c b/src/mesa/drivers/dri/r200/r200_tex.c
index 5207c2901a..064324731b 100644
--- a/src/mesa/drivers/dri/r200/r200_tex.c
+++ b/src/mesa/drivers/dri/r200/r200_tex.c
@@ -537,6 +537,10 @@ void r200InitTextureFuncs( radeonContextPtr radeon, struct dd_function_table *fu
functions->MapTexture = radeonMapTexture;
functions->UnmapTexture = radeonUnmapTexture;
+#if FEATURE_OES_EGL_image
+ functions->EGLImageTargetTexture2D = radeon_image_target_texture_2d;
+#endif
+
driInitTextureFormats();
}
diff --git a/src/mesa/drivers/dri/r200/r200_texstate.c b/src/mesa/drivers/dri/r200/r200_texstate.c
index 690bec640b..24fb031ecb 100644
--- a/src/mesa/drivers/dri/r200/r200_texstate.c
+++ b/src/mesa/drivers/dri/r200/r200_texstate.c
@@ -778,6 +778,7 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format
radeonTexObjPtr t;
uint32_t pitch_val;
uint32_t internalFormat, type, format;
+ gl_format texFormat;
type = GL_BGRA;
format = GL_UNSIGNED_BYTE;
@@ -817,10 +818,6 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format
radeon_miptree_unreference(&t->mt);
radeon_miptree_unreference(&rImage->mt);
- _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
- rb->base.Width, rb->base.Height, 1, 0, rb->cpp);
- texImage->RowStride = rb->pitch / rb->cpp;
-
rImage->bo = rb->bo;
radeon_bo_ref(rImage->bo);
t->bo = rb->bo;
@@ -832,22 +829,35 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format
pitch_val = rb->pitch;
switch (rb->cpp) {
case 4:
- if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
+ if (texture_format == __DRI_TEXTURE_FORMAT_RGB) {
+ texFormat = MESA_FORMAT_RGB888;
t->pp_txformat = tx_table_le[MESA_FORMAT_RGB888].format;
- else
+ }
+ else {
+ texFormat = MESA_FORMAT_ARGB8888;
t->pp_txformat = tx_table_le[MESA_FORMAT_ARGB8888].format;
+ }
t->pp_txfilter |= tx_table_le[MESA_FORMAT_ARGB8888].filter;
break;
case 3:
default:
+ texFormat = MESA_FORMAT_RGB888;
t->pp_txformat = tx_table_le[MESA_FORMAT_RGB888].format;
t->pp_txfilter |= tx_table_le[MESA_FORMAT_RGB888].filter;
break;
case 2:
+ texFormat = MESA_FORMAT_RGB565;
t->pp_txformat = tx_table_le[MESA_FORMAT_RGB565].format;
t->pp_txfilter |= tx_table_le[MESA_FORMAT_RGB565].filter;
break;
}
+
+ _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
+ rb->base.Width, rb->base.Height, 1, 0,
+ rb->cpp, texFormat);
+ texImage->RowStride = rb->pitch / rb->cpp;
+
+
t->pp_txsize = ((rb->base.Width - 1) << RADEON_TEX_USIZE_SHIFT)
| ((rb->base.Height - 1) << RADEON_TEX_VSIZE_SHIFT);
t->pp_txformat |= R200_TXFORMAT_NON_POWER2;
diff --git a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c
index 8be32ea91f..1db8678e89 100644
--- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c
+++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c
@@ -76,6 +76,9 @@ static void use_temporary(struct r300_fragment_program_code *code, unsigned int
static unsigned int use_source(struct r300_fragment_program_code* code, struct rc_pair_instruction_source src)
{
+ if (!src.Used)
+ return 0;
+
if (src.File == RC_FILE_CONSTANT) {
return src.Index | (1 << 5);
} else if (src.File == RC_FILE_TEMPORARY) {
diff --git a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c
index 2d28b06539..05d3da8a10 100644
--- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c
+++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c
@@ -94,6 +94,7 @@ static const struct swizzle_data* lookup_native_swizzle(unsigned int swizzle)
*/
static int r300_swizzle_is_native(rc_opcode opcode, struct rc_src_register reg)
{
+ const struct swizzle_data* sd;
unsigned int relevant;
int j;
@@ -127,7 +128,8 @@ static int r300_swizzle_is_native(rc_opcode opcode, struct rc_src_register reg)
if ((reg.Negate & relevant) && ((reg.Negate & relevant) != relevant))
return 0;
- if (!lookup_native_swizzle(reg.Swizzle))
+ sd = lookup_native_swizzle(reg.Swizzle);
+ if (!sd || (reg.File == RC_FILE_PRESUB && sd->srcp_stride == 0))
return 0;
return 1;
@@ -201,7 +203,7 @@ unsigned int r300FPTranslateRGBSwizzle(unsigned int src, unsigned int swizzle)
{
const struct swizzle_data* sd = lookup_native_swizzle(swizzle);
- if (!sd) {
+ if (!sd || (src == RC_PAIR_PRESUB_SRC && sd->srcp_stride == 0)) {
fprintf(stderr, "Not a native swizzle: %08x\n", swizzle);
return 0;
}
diff --git a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c
index 2f130198d3..7b9c316794 100644
--- a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c
+++ b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c
@@ -137,7 +137,7 @@ void r3xx_compile_fragment_program(struct r300_fragment_program_compiler* c)
/* This pass makes it easier for the scheduler to group TEX
* instructions and reduces the chances of creating too
* many texture indirections.*/
- {"register rename", 1, !is_r500, rc_rename_regs, NULL},
+ {"register rename", 1, !is_r500 || opt, rc_rename_regs, NULL},
{"pair translate", 1, 1, rc_pair_translate, NULL},
{"pair scheduling", 1, 1, rc_pair_schedule, NULL},
{"register allocation", 1, opt, rc_pair_regalloc, NULL},
diff --git a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c
index 6f101c68eb..5da82d90f6 100644
--- a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c
+++ b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c
@@ -45,9 +45,6 @@
#include "radeon_program_pair.h"
-#define MAX_BRANCH_DEPTH_FULL 32
-#define MAX_BRANCH_DEPTH_PARTIAL 4
-
#define PROG_CODE \
struct r500_fragment_program_code *code = &c->code->code.r500
@@ -200,6 +197,9 @@ static void use_temporary(struct r500_fragment_program_code* code, unsigned int
static unsigned int use_source(struct r500_fragment_program_code* code, struct rc_pair_instruction_source src)
{
+ if (!src.Used)
+ return 0;
+
if (src.File == RC_FILE_CONSTANT) {
return src.Index | 0x100;
} else if (src.File == RC_FILE_TEMPORARY) {
@@ -506,7 +506,7 @@ static void emit_flowcontrol(struct emit_state * s, struct rc_instruction * inst
break;
}
case RC_OPCODE_IF:
- if ( s->CurrentBranchDepth >= MAX_BRANCH_DEPTH_FULL) {
+ if ( s->CurrentBranchDepth >= R500_PFS_MAX_BRANCH_DEPTH_FULL) {
rc_error(s->C, "Branch depth exceeds hardware limit");
return;
}
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_code.h b/src/mesa/drivers/dri/r300/compiler/radeon_code.h
index cfb6df2cd7..b69e81698a 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_code.h
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_code.h
@@ -34,6 +34,8 @@
#define R500_PFS_MAX_INST 512
#define R500_PFS_NUM_TEMP_REGS 128
#define R500_PFS_NUM_CONST_REGS 256
+#define R500_PFS_MAX_BRANCH_DEPTH_FULL 32
+#define R500_PFS_MAX_BRANCH_DEPTH_PARTIAL 4
#define STATE_R300_WINDOW_DIMENSION (STATE_INTERNAL_DRIVER+0)
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c
index 97f4c75849..2b8d284ce9 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c
@@ -31,6 +31,8 @@
#include "radeon_compiler_util.h"
+#include "radeon_compiler.h"
+#include "radeon_dataflow.h"
/**
*/
unsigned int rc_swizzle_to_writemask(unsigned int swz)
@@ -59,3 +61,123 @@ unsigned int rc_src_reads_dst_mask(
}
return dst_mask & rc_swizzle_to_writemask(src_swz);
}
+
+unsigned int rc_source_type_swz(unsigned int swizzle, unsigned int channels)
+{
+ unsigned int chan;
+ unsigned int swz = RC_SWIZZLE_UNUSED;
+ unsigned int ret = RC_SOURCE_NONE;
+
+ for(chan = 0; chan < channels; chan++) {
+ swz = GET_SWZ(swizzle, chan);
+ if (swz == RC_SWIZZLE_W) {
+ ret |= RC_SOURCE_ALPHA;
+ } else if (swz == RC_SWIZZLE_X || swz == RC_SWIZZLE_Y
+ || swz == RC_SWIZZLE_Z) {
+ ret |= RC_SOURCE_RGB;
+ }
+ }
+ return ret;
+}
+
+unsigned int rc_source_type_mask(unsigned int mask)
+{
+ unsigned int ret = RC_SOURCE_NONE;
+
+ if (mask & RC_MASK_XYZ)
+ ret |= RC_SOURCE_RGB;
+
+ if (mask & RC_MASK_W)
+ ret |= RC_SOURCE_ALPHA;
+
+ return ret;
+}
+
+struct can_use_presub_data {
+ struct rc_src_register RemoveSrcs[3];
+ unsigned int RGBCount;
+ unsigned int AlphaCount;
+};
+
+static void can_use_presub_read_cb(
+ void * userdata,
+ struct rc_instruction * inst,
+ rc_register_file file,
+ unsigned int index,
+ unsigned int mask)
+{
+ struct can_use_presub_data * d = userdata;
+ unsigned int src_type = rc_source_type_mask(mask);
+ unsigned int i;
+
+ if (file == RC_FILE_NONE)
+ return;
+
+ for(i = 0; i < 3; i++) {
+ if (d->RemoveSrcs[i].File == file
+ && d->RemoveSrcs[i].Index == index) {
+ src_type &=
+ ~rc_source_type_swz(d->RemoveSrcs[i].Swizzle, 4);
+ }
+ }
+
+ if (src_type & RC_SOURCE_RGB)
+ d->RGBCount++;
+
+ if (src_type & RC_SOURCE_ALPHA)
+ d->AlphaCount++;
+}
+
+unsigned int rc_inst_can_use_presub(
+ struct rc_instruction * inst,
+ rc_presubtract_op presub_op,
+ unsigned int presub_writemask,
+ struct rc_src_register replace_reg,
+ struct rc_src_register presub_src0,
+ struct rc_src_register presub_src1)
+{
+ struct can_use_presub_data d;
+ unsigned int num_presub_srcs;
+ unsigned int presub_src_type = rc_source_type_mask(presub_writemask);
+ const struct rc_opcode_info * info =
+ rc_get_opcode_info(inst->U.I.Opcode);
+
+ if (presub_op == RC_PRESUB_NONE) {
+ return 1;
+ }
+
+ if (info->HasTexture) {
+ return 0;
+ }
+
+ /* We can't use more than one presubtract value in an
+ * instruction, unless the two prsubtract operations
+ * are the same and read from the same registers.
+ * XXX For now we will limit instructions to only one presubtract
+ * value.*/
+ if (inst->U.I.PreSub.Opcode != RC_PRESUB_NONE) {
+ return 0;
+ }
+
+ memset(&d, 0, sizeof(d));
+ d.RemoveSrcs[0] = replace_reg;
+ d.RemoveSrcs[1] = presub_src0;
+ d.RemoveSrcs[2] = presub_src1;
+
+ rc_for_all_reads_mask(inst, can_use_presub_read_cb, &d);
+
+ num_presub_srcs = rc_presubtract_src_reg_count(presub_op);
+
+ if ((presub_src_type & RC_SOURCE_RGB)
+ && d.RGBCount + num_presub_srcs > 3) {
+ return 0;
+ }
+
+ if ((presub_src_type & RC_SOURCE_ALPHA)
+ && d.AlphaCount + num_presub_srcs > 3) {
+ return 0;
+ }
+
+ return 1;
+}
+
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h
index 1a14e7cb0e..e50dfbd4fb 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h
@@ -3,6 +3,9 @@
#ifndef RADEON_PROGRAM_UTIL_H
#define RADEON_PROGRAM_UTIL_H
+struct rc_instruction;
+struct rc_src_register;
+
unsigned int rc_swizzle_to_writemask(unsigned int swz);
unsigned int rc_src_reads_dst_mask(
@@ -13,4 +16,16 @@ unsigned int rc_src_reads_dst_mask(
unsigned int dst_idx,
unsigned int dst_mask);
+unsigned int rc_source_type_swz(unsigned int swizzle, unsigned int channels);
+
+unsigned int rc_source_type_mask(unsigned int mask);
+
+unsigned int rc_inst_can_use_presub(
+ struct rc_instruction * inst,
+ rc_presubtract_op presub_op,
+ unsigned int presub_writemask,
+ struct rc_src_register replace_reg,
+ struct rc_src_register presub_src0,
+ struct rc_src_register presub_src1);
+
#endif /* RADEON_PROGRAM_UTIL_H */
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c
index 5927498818..9df07edf2b 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c
@@ -139,7 +139,46 @@ static void pair_sub_for_all_args(
const struct rc_opcode_info * info = rc_get_opcode_info(sub->Opcode);
for(i = 0; i < info->NumSrcRegs; i++) {
- cb(userdata, fullinst, &sub->Arg[i]);
+ unsigned int src_type;
+ unsigned int channels = 0;
+ if (&fullinst->U.P.RGB == sub)
+ channels = 3;
+ else if (&fullinst->U.P.Alpha == sub)
+ channels = 1;
+
+ assert(channels > 0);
+ src_type = rc_source_type_swz(sub->Arg[i].Swizzle, channels);
+
+ if (src_type == RC_SOURCE_NONE)
+ continue;
+
+ if (sub->Arg[i].Source == RC_PAIR_PRESUB_SRC) {
+ unsigned int presub_type;
+ unsigned int presub_src_count;
+ struct rc_pair_instruction_source * src_array;
+ unsigned int j;
+ if (src_type & RC_SOURCE_RGB) {
+ presub_type = fullinst->
+ U.P.RGB.Src[RC_PAIR_PRESUB_SRC].Index;
+ src_array = fullinst->U.P.RGB.Src;
+ } else {
+ presub_type = fullinst->
+ U.P.Alpha.Src[RC_PAIR_PRESUB_SRC].Index;
+ src_array = fullinst->U.P.Alpha.Src;
+ }
+ presub_src_count
+ = rc_presubtract_src_reg_count(presub_type);
+ for(j = 0; j < presub_src_count; j++) {
+ cb(userdata, fullinst, &sub->Arg[i],
+ &src_array[j]);
+ }
+ } else {
+ struct rc_pair_instruction_source * src =
+ rc_pair_get_src(&fullinst->U.P, &sub->Arg[i]);
+ if (src) {
+ cb(userdata, fullinst, &sub->Arg[i], src);
+ }
+ }
}
}
@@ -430,12 +469,29 @@ static rc_opcode get_flow_control_inst(struct rc_instruction * inst)
}
+struct branch_write_mask {
+ unsigned int IfWriteMask:4;
+ unsigned int ElseWriteMask:4;
+ unsigned int HasElse:1;
+};
+
+union get_readers_read_cb {
+ rc_read_src_fn I;
+ rc_pair_read_arg_fn P;
+};
+
struct get_readers_callback_data {
struct radeon_compiler * C;
struct rc_reader_data * ReaderData;
- rc_read_src_fn ReadCB;
+ rc_read_src_fn ReadNormalCB;
+ rc_pair_read_arg_fn ReadPairCB;
rc_read_write_mask_fn WriteCB;
+ rc_register_file DstFile;
+ unsigned int DstIndex;
+ unsigned int DstMask;
unsigned int AliveWriteMask;
+ /* For convenience, this is indexed starting at 1 */
+ struct branch_write_mask BranchMasks[R500_PFS_MAX_BRANCH_DEPTH_FULL + 1];
};
static void add_reader(
@@ -443,7 +499,7 @@ static void add_reader(
struct rc_reader_data * data,
struct rc_instruction * inst,
unsigned int mask,
- struct rc_src_register * src)
+ void * arg_or_src)
{
struct rc_reader * new;
memory_pool_array_reserve(pool, struct rc_reader, data->Readers,
@@ -451,7 +507,74 @@ static void add_reader(
new = &data->Readers[data->ReaderCount++];
new->Inst = inst;
new->WriteMask = mask;
- new->Src = src;
+ if (inst->Type == RC_INSTRUCTION_NORMAL) {
+ new->U.Src = arg_or_src;
+ } else {
+ new->U.Arg = arg_or_src;
+ }
+}
+
+static unsigned int get_readers_read_callback(
+ struct get_readers_callback_data * cb_data,
+ unsigned int has_rel_addr,
+ rc_register_file file,
+ unsigned int index,
+ unsigned int swizzle)
+{
+ unsigned int shared_mask, read_mask;
+
+ if (has_rel_addr) {
+ cb_data->ReaderData->Abort = 1;
+ return RC_MASK_NONE;
+ }
+
+ shared_mask = rc_src_reads_dst_mask(file, index, swizzle,
+ cb_data->DstFile, cb_data->DstIndex, cb_data->AliveWriteMask);
+
+ if (shared_mask == RC_MASK_NONE)
+ return shared_mask;
+
+ /* If we make it this far, it means that this source reads from the
+ * same register written to by d->ReaderData->Writer. */
+
+ read_mask = rc_swizzle_to_writemask(swizzle);
+ if (cb_data->ReaderData->AbortOnRead & read_mask) {
+ cb_data->ReaderData->Abort = 1;
+ return shared_mask;
+ }
+
+ /* XXX The behavior in this case should be configurable. */
+ if ((read_mask & cb_data->AliveWriteMask) != read_mask) {
+ cb_data->ReaderData->Abort = 1;
+ return shared_mask;
+ }
+
+ return shared_mask;
+}
+
+static void get_readers_pair_read_callback(
+ void * userdata,
+ struct rc_instruction * inst,
+ struct rc_pair_instruction_arg * arg,
+ struct rc_pair_instruction_source * src)
+{
+ unsigned int shared_mask;
+ struct get_readers_callback_data * d = userdata;
+
+ shared_mask = get_readers_read_callback(d,
+ 0 /*Pair Instructions don't use RelAddr*/,
+ src->File, src->Index, arg->Swizzle);
+
+ if (shared_mask == RC_MASK_NONE)
+ return;
+
+ if (d->ReadPairCB)
+ d->ReadPairCB(d->ReaderData, inst, arg, src);
+
+ if (d->ReaderData->Abort)
+ return;
+
+ add_reader(&d->C->Pool, d->ReaderData, inst, shared_mask, arg);
}
/**
@@ -464,36 +587,18 @@ static void get_readers_normal_read_callback(
struct rc_src_register * src)
{
struct get_readers_callback_data * d = userdata;
- unsigned int read_mask;
-
- if (src->RelAddr)
- d->ReaderData->Abort = 1;
+ unsigned int shared_mask;
- unsigned int shared_mask = rc_src_reads_dst_mask(src->File, src->Index,
- src->Swizzle,
- d->ReaderData->Writer->U.I.DstReg.File,
- d->ReaderData->Writer->U.I.DstReg.Index,
- d->AliveWriteMask);
+ shared_mask = get_readers_read_callback(d,
+ src->RelAddr, src->File, src->Index, src->Swizzle);
if (shared_mask == RC_MASK_NONE)
return;
+ /* The callback function could potentially clear d->ReaderData->Abort,
+ * so we need to call it before we return. */
+ if (d->ReadNormalCB)
+ d->ReadNormalCB(d->ReaderData, inst, src);
- /* If we make it this far, it means that this source reads from the
- * same register written to by d->ReaderData->Writer. */
-
- if (d->ReaderData->AbortOnRead) {
- d->ReaderData->Abort = 1;
- return;
- }
-
- read_mask = rc_swizzle_to_writemask(src->Swizzle);
- /* XXX The behavior in this case should be configurable. */
- if ((read_mask & d->AliveWriteMask) != read_mask) {
- d->ReaderData->Abort = 1;
- return;
- }
-
- d->ReadCB(d->ReaderData, inst, src);
if (d->ReaderData->Abort)
return;
@@ -514,29 +619,132 @@ static void get_readers_write_callback(
{
struct get_readers_callback_data * d = userdata;
- if (index == d->ReaderData->Writer->U.I.DstReg.Index
- && file == d->ReaderData->Writer->U.I.DstReg.File) {
- unsigned int shared_mask = mask
- & d->ReaderData->Writer->U.I.DstReg.WriteMask;
- if (d->ReaderData->InElse) {
- if (shared_mask & d->AliveWriteMask) {
- /* We set AbortOnRead here because the
- * destination register of d->ReaderData->Writer
- * is written to in both the IF and the
- * ELSE block of this IF/ELSE statement.
- * This means that readers of this
- * destination register that follow this IF/ELSE
- * statement use the value of different
- * instructions depending on the control flow
- * decisions made by the program. */
- d->ReaderData->AbortOnRead = 1;
+ if (index == d->DstIndex && file == d->DstFile) {
+ unsigned int shared_mask = mask & d->DstMask;
+ d->ReaderData->AbortOnRead &= ~shared_mask;
+ d->AliveWriteMask &= ~shared_mask;
+ }
+
+ if(d->WriteCB)
+ d->WriteCB(d->ReaderData, inst, file, index, mask);
+}
+
+static void get_readers_for_single_write(
+ void * userdata,
+ struct rc_instruction * writer,
+ rc_register_file dst_file,
+ unsigned int dst_index,
+ unsigned int dst_mask)
+{
+ struct rc_instruction * tmp;
+ unsigned int branch_depth = 0;
+ struct get_readers_callback_data * d = userdata;
+
+ d->ReaderData->Writer = writer;
+ d->ReaderData->AbortOnRead = 0;
+ d->ReaderData->InElse = 0;
+ d->DstFile = dst_file;
+ d->DstIndex = dst_index;
+ d->DstMask = dst_mask;
+ d->AliveWriteMask = dst_mask;
+ memset(d->BranchMasks, 0, sizeof(d->BranchMasks));
+
+ if (!dst_mask)
+ return;
+
+ for(tmp = writer->Next; tmp != &d->C->Program.Instructions;
+ tmp = tmp->Next){
+ rc_opcode opcode = get_flow_control_inst(tmp);
+ switch(opcode) {
+ case RC_OPCODE_BGNLOOP:
+ /* XXX We can do better when we see a BGNLOOP if we
+ * add a flag called AbortOnWrite to struct
+ * rc_reader_data and leave it set until the next
+ * ENDLOOP. */
+ case RC_OPCODE_ENDLOOP:
+ /* XXX We can do better when we see an ENDLOOP by
+ * searching backwards from writer and looking for
+ * readers of writer's destination index. If we find a
+ * reader before we get to the BGNLOOP, we must abort
+ * unless there is another writer between that reader
+ * and the BGNLOOP. */
+ case RC_OPCODE_BRK:
+ case RC_OPCODE_CONT:
+ d->ReaderData->Abort = 1;
+ return;
+ case RC_OPCODE_IF:
+ branch_depth++;
+ if (branch_depth > R500_PFS_MAX_BRANCH_DEPTH_FULL) {
+ d->ReaderData->Abort = 1;
+ return;
+ }
+ d->BranchMasks[branch_depth].IfWriteMask =
+ d->AliveWriteMask;
+ break;
+ case RC_OPCODE_ELSE:
+ if (branch_depth == 0) {
+ d->ReaderData->InElse = 1;
+ } else {
+ unsigned int temp_mask = d->AliveWriteMask;
+ d->AliveWriteMask =
+ d->BranchMasks[branch_depth].IfWriteMask;
+ d->BranchMasks[branch_depth].ElseWriteMask =
+ temp_mask;
+ d->BranchMasks[branch_depth].HasElse = 1;
+ }
+ break;
+ case RC_OPCODE_ENDIF:
+ if (branch_depth == 0) {
+ d->ReaderData->AbortOnRead = d->AliveWriteMask;
+ d->ReaderData->InElse = 0;
+ }
+ else {
+ struct branch_write_mask * masks =
+ &d->BranchMasks[branch_depth];
+
+ if (masks->HasElse) {
+ d->ReaderData->AbortOnRead |=
+ masks->IfWriteMask
+ & ~masks->ElseWriteMask;
+ d->AliveWriteMask = masks->IfWriteMask
+ ^ ((masks->IfWriteMask ^
+ masks->ElseWriteMask)
+ & (masks->IfWriteMask
+ ^ d->AliveWriteMask));
+ } else {
+ d->ReaderData->AbortOnRead |=
+ masks->IfWriteMask
+ & ~d->AliveWriteMask;
+ d->AliveWriteMask = masks->IfWriteMask;
+
+ }
+ memset(masks, 0,
+ sizeof(struct branch_write_mask));
+ branch_depth--;
}
+ break;
+ default:
+ break;
+ }
+
+ if (d->ReaderData->InElse)
+ continue;
+
+ if (tmp->Type == RC_INSTRUCTION_NORMAL) {
+ rc_for_all_reads_src(tmp,
+ get_readers_normal_read_callback, d);
} else {
- d->AliveWriteMask &= ~shared_mask;
+ rc_pair_for_all_reads_arg(tmp,
+ get_readers_pair_read_callback, d);
}
- }
+ rc_for_all_writes_mask(tmp, get_readers_write_callback, d);
+
+ if (d->ReaderData->Abort)
+ return;
- d->WriteCB(d->ReaderData, inst, file, index, mask);
+ if (branch_depth == 0 && !d->AliveWriteMask)
+ return;
+ }
}
/**
@@ -577,80 +785,26 @@ static void get_readers_write_callback(
* @param write_cb This function will be called for every instruction after
* writer.
*/
-void rc_get_readers_normal(
+void rc_get_readers(
struct radeon_compiler * c,
struct rc_instruction * writer,
struct rc_reader_data * data,
- rc_read_src_fn read_cb,
+ rc_read_src_fn read_normal_cb,
+ rc_pair_read_arg_fn read_pair_cb,
rc_read_write_mask_fn write_cb)
{
- struct rc_instruction * tmp;
struct get_readers_callback_data d;
- unsigned int branch_depth = 0;
- data->Writer = writer;
data->Abort = 0;
- data->AbortOnRead = 0;
- data->InElse = 0;
data->ReaderCount = 0;
data->ReadersReserved = 0;
data->Readers = NULL;
d.C = c;
- d.AliveWriteMask = writer->U.I.DstReg.WriteMask;
d.ReaderData = data;
- d.ReadCB = read_cb;
+ d.ReadNormalCB = read_normal_cb;
+ d.ReadPairCB = read_pair_cb;
d.WriteCB = write_cb;
- if (!writer->U.I.DstReg.WriteMask)
- return;
-
- for(tmp = writer->Next; tmp != &c->Program.Instructions;
- tmp = tmp->Next){
- rc_opcode opcode = get_flow_control_inst(tmp);
- switch(opcode) {
- case RC_OPCODE_BGNLOOP:
- /* XXX We can do better when we see a BGNLOOP if we
- * add a flag called AbortOnWrite to struct
- * rc_reader_data and leave it set until the next
- * ENDLOOP. */
- case RC_OPCODE_ENDLOOP:
- /* XXX We can do better when we see an ENDLOOP by
- * searching backwards from writer and looking for
- * readers of writer's destination index. If we find a
- * reader before we get to the BGNLOOP, we must abort
- * unless there is another writer between that reader
- * and the BGNLOOP. */
- data->Abort = 1;
- return;
- case RC_OPCODE_IF:
- branch_depth++;
- break;
- case RC_OPCODE_ELSE:
- if (branch_depth == 0)
- data->InElse = 1;
- break;
- case RC_OPCODE_ENDIF:
- if (branch_depth == 0) {
- data->AbortOnRead = 1;
- data->InElse = 0;
- }
- else {
- branch_depth--;
- }
- break;
- default:
- break;
- }
-
- if (!data->InElse)
- rc_for_all_reads_src(tmp, get_readers_normal_read_callback, &d);
- rc_for_all_writes_mask(tmp, get_readers_write_callback, &d);
-
- if (data->Abort)
- return;
-
- if (!d.AliveWriteMask)
- return;
- }
+ rc_for_all_writes_mask(writer, get_readers_for_single_write, &d);
}
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h
index 7de6b98f76..ef971c5b23 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h
@@ -36,6 +36,7 @@ struct rc_instruction;
struct rc_swizzle_caps;
struct rc_src_register;
struct rc_pair_instruction_arg;
+struct rc_pair_instruction_source;
struct rc_compiler;
@@ -59,7 +60,8 @@ void rc_for_all_reads_src(struct rc_instruction * inst, rc_read_src_fn cb,
void * userdata);
typedef void (*rc_pair_read_arg_fn)(void * userdata,
- struct rc_instruction * inst, struct rc_pair_instruction_arg * arg);
+ struct rc_instruction * inst, struct rc_pair_instruction_arg * arg,
+ struct rc_pair_instruction_source * src);
void rc_pair_for_all_reads_arg(struct rc_instruction * inst,
rc_pair_read_arg_fn cb, void * userdata);
@@ -71,7 +73,10 @@ void rc_remap_registers(struct rc_instruction * inst, rc_remap_register_fn cb, v
struct rc_reader {
struct rc_instruction * Inst;
unsigned int WriteMask;
- struct rc_src_register * Src;
+ union {
+ struct rc_src_register * Src;
+ struct rc_pair_instruction_arg * Arg;
+ } U;
};
struct rc_reader_data {
@@ -87,14 +92,13 @@ struct rc_reader_data {
void * CbData;
};
-void rc_get_readers_normal(
+void rc_get_readers(
struct radeon_compiler * c,
- struct rc_instruction * inst,
+ struct rc_instruction * writer,
struct rc_reader_data * data,
- /*XXX: These should be their own function types. */
- rc_read_src_fn read_cb,
+ rc_read_src_fn read_normal_cb,
+ rc_pair_read_arg_fn read_pair_cb,
rc_read_write_mask_fn write_cb);
-
/**
* Compiler passes based on dataflow analysis.
*/
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
index 4d9120ffd0..27b10ffbd6 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
@@ -32,15 +32,14 @@
#include "radeon_compiler_util.h"
#include "radeon_swizzle.h"
-struct peephole_state {
- struct rc_instruction * Inst;
- /** Stores a bitmask of the components that are still "alive" (i.e.
- * they have not been written to since Inst was executed.)
- */
- unsigned int WriteMask;
+struct src_clobbered_reads_cb_data {
+ rc_register_file File;
+ unsigned int Index;
+ unsigned int Mask;
+ struct rc_reader_data * ReaderData;
};
-typedef void (*rc_presub_replace_fn)(struct peephole_state *,
+typedef void (*rc_presub_replace_fn)(struct rc_instruction *,
struct rc_instruction *,
unsigned int);
@@ -67,38 +66,18 @@ static struct rc_src_register chain_srcregs(struct rc_src_register outer, struct
return combine;
}
-struct copy_propagate_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 copy_propagate_scan_read(void * data, struct rc_instruction * inst,
struct rc_src_register * src)
{
rc_register_file file = src->File;
struct rc_reader_data * reader_data = data;
- const struct rc_opcode_info * info = rc_get_opcode_info(inst->U.I.Opcode);
- /* It is possible to do copy propigation in this situation,
- * just not right now, see peephole_add_presub_inv() */
- if (reader_data->Writer->U.I.PreSub.Opcode != RC_PRESUB_NONE &&
- (info->NumSrcRegs > 2 || info->HasTexture)) {
+ if(!rc_inst_can_use_presub(inst,
+ reader_data->Writer->U.I.PreSub.Opcode,
+ rc_swizzle_to_writemask(src->Swizzle),
+ *src,
+ reader_data->Writer->U.I.PreSub.SrcReg[0],
+ reader_data->Writer->U.I.PreSub.SrcReg[1])) {
reader_data->Abort = 1;
return;
}
@@ -123,23 +102,44 @@ static void copy_propagate_scan_read(void * data, struct rc_instruction * inst,
}
}
-static void copy_propagate_scan_write(void * data, struct rc_instruction * inst,
- rc_register_file file, unsigned int index, unsigned int mask)
+static void src_clobbered_reads_cb(
+ void * data,
+ struct rc_instruction * inst,
+ struct rc_src_register * src)
{
- struct rc_reader_data * reader_data = data;
- struct copy_propagate_state * s = reader_data->CbData;
+ struct src_clobbered_reads_cb_data * sc_data = data;
+
+ if (src->File == sc_data->File
+ && src->Index == sc_data->Index
+ && (rc_swizzle_to_writemask(src->Swizzle) & sc_data->Mask)) {
- if (file == reader_data->Writer->U.I.SrcReg[0].File && index == reader_data->Writer->U.I.SrcReg[0].Index) {
- if (mask & s->SourcedMask)
- reader_data->AbortOnRead = 1;
- } else if (s->Mov->U.I.SrcReg[0].RelAddr && file == RC_FILE_ADDRESS) {
- reader_data->AbortOnRead = 1;
+ sc_data->ReaderData->AbortOnRead = RC_MASK_XYZW;
}
+
+ if (src->RelAddr && sc_data->File == RC_FILE_ADDRESS) {
+ sc_data->ReaderData->AbortOnRead = RC_MASK_XYZW;
+ }
+}
+
+static void is_src_clobbered_scan_write(
+ void * data,
+ struct rc_instruction * inst,
+ rc_register_file file,
+ unsigned int index,
+ unsigned int mask)
+{
+ struct src_clobbered_reads_cb_data sc_data;
+ struct rc_reader_data * reader_data = data;
+ sc_data.File = file;
+ sc_data.Index = index;
+ sc_data.Mask = mask;
+ sc_data.ReaderData = reader_data;
+ rc_for_all_reads_src(reader_data->Writer,
+ src_clobbered_reads_cb, &sc_data);
}
static void copy_propagate(struct radeon_compiler * c, struct rc_instruction * inst_mov)
{
- struct copy_propagate_state s;
struct rc_reader_data reader_data;
unsigned int i;
@@ -149,22 +149,10 @@ static void copy_propagate(struct radeon_compiler * c, struct rc_instruction * i
inst_mov->U.I.SaturateMode)
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;
-
- reader_data.CbData = &s;
-
- 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;
- }
-
/* Get a list of all the readers of this MOV instruction. */
- rc_get_readers_normal(c, inst_mov, &reader_data,
- copy_propagate_scan_read, copy_propagate_scan_write);
+ rc_get_readers(c, inst_mov, &reader_data,
+ copy_propagate_scan_read, NULL,
+ is_src_clobbered_scan_write);
if (reader_data.Abort || reader_data.ReaderCount == 0)
return;
@@ -172,10 +160,10 @@ static void copy_propagate(struct radeon_compiler * c, struct rc_instruction * i
/* Propagate the MOV instruction. */
for (i = 0; i < reader_data.ReaderCount; i++) {
struct rc_instruction * inst = reader_data.Readers[i].Inst;
- *reader_data.Readers[i].Src = chain_srcregs(*reader_data.Readers[i].Src, s.Mov->U.I.SrcReg[0]);
+ *reader_data.Readers[i].U.Src = chain_srcregs(*reader_data.Readers[i].U.Src, inst_mov->U.I.SrcReg[0]);
- if (s.Mov->U.I.SrcReg[0].File == RC_FILE_PRESUB)
- inst->U.I.PreSub = s.Mov->U.I.PreSub;
+ if (inst_mov->U.I.SrcReg[0].File == RC_FILE_PRESUB)
+ inst->U.I.PreSub = inst_mov->U.I.PreSub;
}
/* Finally, remove the original MOV instruction */
@@ -222,8 +210,8 @@ static int is_src_uniform_constant(struct rc_src_register src,
static void constant_folding_mad(struct rc_instruction * inst)
{
- rc_swizzle swz;
- unsigned int negate;
+ rc_swizzle swz = 0;
+ unsigned int negate= 0;
if (is_src_uniform_constant(inst->U.I.SrcReg[2], &swz, &negate)) {
if (swz == RC_SWIZZLE_ZERO) {
@@ -263,8 +251,8 @@ static void constant_folding_mad(struct rc_instruction * inst)
static void constant_folding_mul(struct rc_instruction * inst)
{
- rc_swizzle swz;
- unsigned int negate;
+ rc_swizzle swz = 0;
+ unsigned int negate = 0;
if (is_src_uniform_constant(inst->U.I.SrcReg[0], &swz, &negate)) {
if (swz == RC_SWIZZLE_ONE) {
@@ -296,8 +284,8 @@ static void constant_folding_mul(struct rc_instruction * inst)
static void constant_folding_add(struct rc_instruction * inst)
{
- rc_swizzle swz;
- unsigned int negate;
+ rc_swizzle swz = 0;
+ unsigned int negate = 0;
if (is_src_uniform_constant(inst->U.I.SrcReg[0], &swz, &negate)) {
if (swz == RC_SWIZZLE_ZERO) {
@@ -431,132 +419,88 @@ static int src_has_const_swz(struct rc_src_register src) {
return 0;
}
-static void peephole_scan_write(void * data, struct rc_instruction * inst,
- rc_register_file file, unsigned int index, unsigned int mask)
+static void presub_scan_read(
+ void * data,
+ struct rc_instruction * inst,
+ struct rc_src_register * src)
{
- struct peephole_state * s = data;
- if(s->Inst->U.I.DstReg.File == file
- && s->Inst->U.I.DstReg.Index == index) {
- unsigned int common_mask = s->WriteMask & mask;
- s->WriteMask &= ~common_mask;
+ struct rc_reader_data * reader_data = data;
+ rc_presubtract_op * presub_opcode = reader_data->CbData;
+
+ if (!rc_inst_can_use_presub(inst, *presub_opcode,
+ reader_data->Writer->U.I.DstReg.WriteMask,
+ *src,
+ reader_data->Writer->U.I.SrcReg[0],
+ reader_data->Writer->U.I.SrcReg[1])) {
+ reader_data->Abort = 1;
+ return;
}
}
static int presub_helper(
struct radeon_compiler * c,
- struct peephole_state * s,
+ struct rc_instruction * inst_add,
rc_presubtract_op presub_opcode,
rc_presub_replace_fn presub_replace)
{
- struct rc_instruction * inst;
- unsigned int can_remove = 0;
- unsigned int cant_sub = 0;
-
- for(inst = s->Inst->Next; inst != &c->Program.Instructions;
- inst = inst->Next) {
- unsigned int i;
- unsigned char can_use_presub = 1;
- const struct rc_opcode_info * info =
- rc_get_opcode_info(inst->U.I.Opcode);
- /* XXX: There are some situations where instructions
- * with more than 2 src registers can use the
- * presubtract select, but to keep things simple we
- * will disable presubtract on these instructions for
- * now. */
- if (info->NumSrcRegs > 2 || info->HasTexture) {
- can_use_presub = 0;
- }
+ struct rc_reader_data reader_data;
+ unsigned int i;
+ rc_presubtract_op cb_op = presub_opcode;
- /* We can't use more than one presubtract value in an
- * instruction, unless the two prsubtract operations
- * are the same and read from the same registers. */
- if (inst->U.I.PreSub.Opcode != RC_PRESUB_NONE) {
- if (inst->U.I.PreSub.Opcode != presub_opcode
- || inst->U.I.PreSub.SrcReg[0].File !=
- s->Inst->U.I.SrcReg[1].File
- || inst->U.I.PreSub.SrcReg[0].Index !=
- s->Inst->U.I.SrcReg[1].Index) {
- can_use_presub = 0;
- }
- }
+ reader_data.CbData = &cb_op;
+ rc_get_readers(c, inst_add, &reader_data, presub_scan_read, NULL,
+ is_src_clobbered_scan_write);
- /* Even if the instruction can't use a presubtract operation
- * we still need to check if the instruction reads from
- * s->Inst->U.I.DstReg, because if it does we must not
- * remove s->Inst. */
- for(i = 0; i < info->NumSrcRegs; i++) {
- unsigned int mask = src_reads_dst_mask(
- inst->U.I.SrcReg[i], s->Inst->U.I.DstReg);
- /* XXX We could be more aggressive here using
- * presubtract. It is okay if SrcReg[i] only reads
- * from some of the mask components. */
- if(s->Inst->U.I.DstReg.WriteMask != mask) {
- if (s->Inst->U.I.DstReg.WriteMask & mask) {
- can_remove = 0;
- break;
- } else {
- continue;
- }
- }
- if (cant_sub || !can_use_presub) {
- can_remove = 0;
- break;
- }
- presub_replace(s, inst, i);
- can_remove = 1;
- }
- if(!can_remove)
- break;
- rc_for_all_writes_mask(inst, peephole_scan_write, s);
- /* If all components of inst_add's destination register have
- * been written to by subsequent instructions, the original
- * value of the destination register is no longer valid and
- * we can't keep doing substitutions. */
- if (!s->WriteMask){
- break;
- }
- /* Make this instruction doesn't write to the presubtract source. */
- if (inst->U.I.DstReg.WriteMask &
- src_reads_dst_mask(s->Inst->U.I.SrcReg[1],
- inst->U.I.DstReg)
- || src_reads_dst_mask(s->Inst->U.I.SrcReg[0],
- inst->U.I.DstReg)
- || info->IsFlowControl) {
- cant_sub = 1;
+ if (reader_data.Abort || reader_data.ReaderCount == 0)
+ return 0;
+
+ for(i = 0; i < reader_data.ReaderCount; i++) {
+ unsigned int src_index;
+ struct rc_reader reader = reader_data.Readers[i];
+ const struct rc_opcode_info * info =
+ rc_get_opcode_info(reader.Inst->U.I.Opcode);
+
+ for (src_index = 0; src_index < info->NumSrcRegs; src_index++) {
+ if (&reader.Inst->U.I.SrcReg[src_index] == reader.U.Src)
+ presub_replace(inst_add, reader.Inst, src_index);
}
}
- return can_remove;
+ return 1;
}
-/* This function assumes that s->Inst->U.I.SrcReg[0] and
- * s->Inst->U.I.SrcReg[1] aren't both negative. */
-static void presub_replace_add(struct peephole_state *s,
- struct rc_instruction * inst,
- unsigned int src_index)
+/* This function assumes that inst_add->U.I.SrcReg[0] and
+ * inst_add->U.I.SrcReg[1] aren't both negative. */
+static void presub_replace_add(
+ struct rc_instruction * inst_add,
+ struct rc_instruction * inst_reader,
+ unsigned int src_index)
{
rc_presubtract_op presub_opcode;
- if (s->Inst->U.I.SrcReg[1].Negate || s->Inst->U.I.SrcReg[0].Negate)
+ if (inst_add->U.I.SrcReg[1].Negate || inst_add->U.I.SrcReg[0].Negate)
presub_opcode = RC_PRESUB_SUB;
else
presub_opcode = RC_PRESUB_ADD;
- if (s->Inst->U.I.SrcReg[1].Negate) {
- inst->U.I.PreSub.SrcReg[0] = s->Inst->U.I.SrcReg[1];
- inst->U.I.PreSub.SrcReg[1] = s->Inst->U.I.SrcReg[0];
+ if (inst_add->U.I.SrcReg[1].Negate) {
+ inst_reader->U.I.PreSub.SrcReg[0] = inst_add->U.I.SrcReg[1];
+ inst_reader->U.I.PreSub.SrcReg[1] = inst_add->U.I.SrcReg[0];
} else {
- inst->U.I.PreSub.SrcReg[0] = s->Inst->U.I.SrcReg[0];
- inst->U.I.PreSub.SrcReg[1] = s->Inst->U.I.SrcReg[1];
+ inst_reader->U.I.PreSub.SrcReg[0] = inst_add->U.I.SrcReg[0];
+ inst_reader->U.I.PreSub.SrcReg[1] = inst_add->U.I.SrcReg[1];
}
- inst->U.I.PreSub.SrcReg[0].Negate = 0;
- inst->U.I.PreSub.SrcReg[1].Negate = 0;
- inst->U.I.PreSub.Opcode = presub_opcode;
- inst->U.I.SrcReg[src_index] = chain_srcregs(inst->U.I.SrcReg[src_index],
- inst->U.I.PreSub.SrcReg[0]);
- inst->U.I.SrcReg[src_index].File = RC_FILE_PRESUB;
- inst->U.I.SrcReg[src_index].Index = presub_opcode;
+ inst_reader->U.I.PreSub.SrcReg[0].Negate = 0;
+ inst_reader->U.I.PreSub.SrcReg[1].Negate = 0;
+ inst_reader->U.I.PreSub.Opcode = presub_opcode;
+ inst_reader->U.I.SrcReg[src_index] =
+ chain_srcregs(inst_reader->U.I.SrcReg[src_index],
+ inst_reader->U.I.PreSub.SrcReg[0]);
+ inst_reader->U.I.SrcReg[src_index].File = RC_FILE_PRESUB;
+ inst_reader->U.I.SrcReg[src_index].Index = presub_opcode;
}
-static int is_presub_candidate(struct rc_instruction * inst)
+static int is_presub_candidate(
+ struct radeon_compiler * c,
+ struct rc_instruction * inst)
{
const struct rc_opcode_info * info = rc_get_opcode_info(inst->U.I.Opcode);
unsigned int i;
@@ -565,7 +509,12 @@ static int is_presub_candidate(struct rc_instruction * inst)
return 0;
for(i = 0; i < info->NumSrcRegs; i++) {
- if (src_reads_dst_mask(inst->U.I.SrcReg[i], inst->U.I.DstReg))
+ struct rc_src_register src = inst->U.I.SrcReg[i];
+ if (src_reads_dst_mask(src, inst->U.I.DstReg))
+ return 0;
+
+ src.File = RC_FILE_PRESUB;
+ if (!c->SwizzleCaps->IsNative(inst->U.I.Opcode, src))
return 0;
}
return 1;
@@ -578,9 +527,8 @@ static int peephole_add_presub_add(
struct rc_src_register * src0 = NULL;
struct rc_src_register * src1 = NULL;
unsigned int i;
- struct peephole_state s;
- if (!is_presub_candidate(inst_add))
+ if (!is_presub_candidate(c, inst_add))
return 0;
if (inst_add->U.I.SrcReg[0].Swizzle != inst_add->U.I.SrcReg[1].Swizzle)
@@ -604,30 +552,28 @@ static int peephole_add_presub_add(
if (!src1)
return 0;
- s.Inst = inst_add;
- s.WriteMask = inst_add->U.I.DstReg.WriteMask;
- if (presub_helper(c, &s, RC_PRESUB_ADD, presub_replace_add)) {
+ if (presub_helper(c, inst_add, RC_PRESUB_ADD, presub_replace_add)) {
rc_remove_instruction(inst_add);
return 1;
}
return 0;
}
-static void presub_replace_inv(struct peephole_state * s,
- struct rc_instruction * inst,
- unsigned int src_index)
+static void presub_replace_inv(
+ struct rc_instruction * inst_add,
+ struct rc_instruction * inst_reader,
+ unsigned int src_index)
{
- /* We must be careful not to modify s->Inst, since it
- * is possible it will remain part of the program.
- * XXX Maybe pass a struct instead of a pointer for s->Inst.*/
- inst->U.I.PreSub.SrcReg[0] = s->Inst->U.I.SrcReg[1];
- inst->U.I.PreSub.SrcReg[0].Negate = 0;
- inst->U.I.PreSub.Opcode = RC_PRESUB_INV;
- inst->U.I.SrcReg[src_index] = chain_srcregs(inst->U.I.SrcReg[src_index],
- inst->U.I.PreSub.SrcReg[0]);
-
- inst->U.I.SrcReg[src_index].File = RC_FILE_PRESUB;
- inst->U.I.SrcReg[src_index].Index = RC_PRESUB_INV;
+ /* We must be careful not to modify inst_add, since it
+ * is possible it will remain part of the program.*/
+ inst_reader->U.I.PreSub.SrcReg[0] = inst_add->U.I.SrcReg[1];
+ inst_reader->U.I.PreSub.SrcReg[0].Negate = 0;
+ inst_reader->U.I.PreSub.Opcode = RC_PRESUB_INV;
+ inst_reader->U.I.SrcReg[src_index] = chain_srcregs(inst_reader->U.I.SrcReg[src_index],
+ inst_reader->U.I.PreSub.SrcReg[0]);
+
+ inst_reader->U.I.SrcReg[src_index].File = RC_FILE_PRESUB;
+ inst_reader->U.I.SrcReg[src_index].Index = RC_PRESUB_INV;
}
/**
@@ -645,9 +591,8 @@ static int peephole_add_presub_inv(
struct rc_instruction * inst_add)
{
unsigned int i, swz, mask;
- struct peephole_state s;
- if (!is_presub_candidate(inst_add))
+ if (!is_presub_candidate(c, inst_add))
return 0;
mask = inst_add->U.I.DstReg.WriteMask;
@@ -674,11 +619,7 @@ static int peephole_add_presub_inv(
return 0;
}
- /* Setup the peephole_state information. */
- s.Inst = inst_add;
- s.WriteMask = inst_add->U.I.DstReg.WriteMask;
-
- if (presub_helper(c, &s, RC_PRESUB_INV, presub_replace_inv)) {
+ if (presub_helper(c, inst_add, RC_PRESUB_INV, presub_replace_inv)) {
rc_remove_instruction(inst_add);
return 1;
}
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c
index 91524f5ec6..3f880c88fa 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c
@@ -66,10 +66,13 @@ struct regalloc_state {
struct hardware_register * HwTemporary;
unsigned int NumHwTemporaries;
/**
- * If an instruction is inside of a loop, end_loop will be the
- * IP of the ENDLOOP instruction, otherwise end_loop will be 0
+ * If an instruction is inside of a loop, EndLoop will be the
+ * IP of the ENDLOOP instruction, and BeginLoop will be the IP
+ * of the BGNLOOP instruction. Otherwise, EndLoop and BeginLoop
+ * will be -1.
*/
- int end_loop;
+ int EndLoop;
+ int BeginLoop;
};
static void print_live_intervals(struct live_intervals * src)
@@ -180,11 +183,13 @@ static void scan_callback(void * data, struct rc_instruction * inst,
reg->Used = 1;
if (file == RC_FILE_INPUT)
reg->Live.Start = -1;
+ else if (s->BeginLoop >= 0)
+ reg->Live.Start = s->BeginLoop;
else
reg->Live.Start = inst->IP;
reg->Live.End = inst->IP;
- } else if (s->end_loop)
- reg->Live.End = s->end_loop;
+ } else if (s->EndLoop >= 0)
+ reg->Live.End = s->EndLoop;
else if (inst->IP > reg->Live.End)
reg->Live.End = inst->IP;
}
@@ -195,6 +200,8 @@ static void compute_live_intervals(struct radeon_compiler *c,
memset(s, 0, sizeof(*s));
s->C = c;
s->NumHwTemporaries = c->max_temp_regs;
+ s->BeginLoop = -1;
+ s->EndLoop = -1;
s->HwTemporary =
memory_pool_malloc(&c->Pool,
s->NumHwTemporaries * sizeof(struct hardware_register));
@@ -207,8 +214,10 @@ static void compute_live_intervals(struct radeon_compiler *c,
inst = inst->Next) {
/* For all instructions inside of a loop, the ENDLOOP
- * instruction is used as the end of the live interval. */
- if (inst->U.I.Opcode == RC_OPCODE_BGNLOOP && !s->end_loop) {
+ * instruction is used as the end of the live interval and
+ * the BGNLOOP instruction is used as the beginning. */
+ if (inst->U.I.Opcode == RC_OPCODE_BGNLOOP && s->EndLoop < 0) {
+ s->BeginLoop = inst->IP;
int loops = 1;
struct rc_instruction * tmp;
for(tmp = inst->Next;
@@ -219,15 +228,17 @@ static void compute_live_intervals(struct radeon_compiler *c,
} else if (tmp->U.I.Opcode
== RC_OPCODE_ENDLOOP) {
if(!--loops) {
- s->end_loop = tmp->IP;
+ s->EndLoop = tmp->IP;
break;
}
}
}
}
- if (inst->IP == s->end_loop)
- s->end_loop = 0;
+ if (inst->IP == s->EndLoop) {
+ s->EndLoop = -1;
+ s->BeginLoop = -1;
+ }
rc_for_all_reads_mask(inst, scan_callback, s);
rc_for_all_writes_mask(inst, scan_callback, s);
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c
index d4a38607d9..cbb5ef6237 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c
@@ -30,6 +30,7 @@
#include <stdio.h>
#include "radeon_compiler.h"
+#include "radeon_compiler_util.h"
#include "radeon_dataflow.h"
@@ -54,6 +55,11 @@ struct schedule_instruction {
* this instruction can be scheduled.
*/
unsigned int NumDependencies:5;
+
+ /** List of all readers (see rc_get_readers() for the definition of
+ * "all readers"), even those outside the basic block this instruction
+ * lives in. */
+ struct rc_reader_data GlobalReaders;
};
@@ -94,6 +100,16 @@ struct register_state {
struct reg_value * Values[4];
};
+struct remap_reg {
+ struct rc_instruciont * Inst;
+ unsigned int OldIndex:(RC_REGISTER_INDEX_BITS+1);
+ unsigned int OldSwizzle:3;
+ unsigned int NewIndex:(RC_REGISTER_INDEX_BITS+1);
+ unsigned int NewSwizzle:3;
+ unsigned int OnlyTexReads:1;
+ struct remap_reg * Next;
+};
+
struct schedule_state {
struct radeon_compiler * C;
struct schedule_instruction * Current;
@@ -126,15 +142,6 @@ static struct reg_value ** get_reg_valuep(struct schedule_state * s,
return &s->Temporary[index].Values[chan];
}
-static struct reg_value * get_reg_value(struct schedule_state * s,
- rc_register_file file, unsigned int index, unsigned int chan)
-{
- struct reg_value ** pv = get_reg_valuep(s, file, index, chan);
- if (!pv)
- return 0;
- return *pv;
-}
-
static void add_inst_to_list(struct schedule_instruction ** list, struct schedule_instruction * inst)
{
inst->NextReady = *list;
@@ -290,16 +297,17 @@ static int merge_presub_sources(
{
unsigned int srcp_src, srcp_regs, is_rgb, is_alpha;
struct rc_pair_sub_instruction * dst_sub;
+ const struct rc_opcode_info * info;
assert(dst_full->Alpha.Opcode == RC_OPCODE_NOP);
switch(type) {
- case RC_PAIR_SOURCE_RGB:
+ case RC_SOURCE_RGB:
is_rgb = 1;
is_alpha = 0;
dst_sub = &dst_full->RGB;
break;
- case RC_PAIR_SOURCE_ALPHA:
+ case RC_SOURCE_ALPHA:
is_rgb = 0;
is_alpha = 1;
dst_sub = &dst_full->Alpha;
@@ -309,8 +317,8 @@ static int merge_presub_sources(
return 0;
}
- const struct rc_opcode_info * info =
- rc_get_opcode_info(dst_full->RGB.Opcode);
+ info = rc_get_opcode_info(dst_full->RGB.Opcode);
+
if (dst_sub->Src[RC_PAIR_PRESUB_SRC].Used)
return 0;
@@ -340,6 +348,8 @@ static int merge_presub_sources(
continue;
free_source = rc_pair_alloc_source(dst_full, is_rgb,
is_alpha, temp.File, temp.Index);
+ if (free_source < 0)
+ return 0;
one_way = 1;
} else {
dst_sub->Src[free_source] = temp;
@@ -355,11 +365,11 @@ static int merge_presub_sources(
for(arg = 0; arg < info->NumSrcRegs; arg++) {
/*If this arg does not read from an rgb source,
* do nothing. */
- if (!(rc_source_type_that_arg_reads(
- dst_full->RGB.Arg[arg].Source,
- dst_full->RGB.Arg[arg].Swizzle) & type)) {
+ if (!(rc_source_type_swz(dst_full->RGB.Arg[arg].Swizzle,
+ 3) & type)) {
continue;
}
+
if (dst_full->RGB.Arg[arg].Source == srcp_src)
dst_full->RGB.Arg[arg].Source = free_source;
/* We need to do this just in case register
@@ -391,13 +401,13 @@ static int destructive_merge_instructions(
/* Merge the rgb presubtract registers. */
if (alpha->RGB.Src[RC_PAIR_PRESUB_SRC].Used) {
- if (!merge_presub_sources(rgb, alpha->RGB, RC_PAIR_SOURCE_RGB)) {
+ if (!merge_presub_sources(rgb, alpha->RGB, RC_SOURCE_RGB)) {
return 0;
}
}
/* Merge the alpha presubtract registers */
if (alpha->Alpha.Src[RC_PAIR_PRESUB_SRC].Used) {
- if(!merge_presub_sources(rgb, alpha->Alpha, RC_PAIR_SOURCE_ALPHA)){
+ if(!merge_presub_sources(rgb, alpha->Alpha, RC_SOURCE_ALPHA)){
return 0;
}
}
@@ -524,6 +534,222 @@ static void presub_nop(struct rc_instruction * emitted) {
}
}
}
+
+static void rgb_to_alpha_remap (
+ struct rc_instruction * inst,
+ struct rc_pair_instruction_arg * arg,
+ rc_register_file old_file,
+ rc_swizzle old_swz,
+ unsigned int new_index)
+{
+ int new_src_index;
+ unsigned int i;
+ struct rc_pair_instruction_source * old_src =
+ rc_pair_get_src(&inst->U.P, arg);
+ if (!old_src) {
+ return;
+ }
+
+ for (i = 0; i < 3; i++) {
+ if (get_swz(arg->Swizzle, i) == old_swz) {
+ SET_SWZ(arg->Swizzle, i, RC_SWIZZLE_W);
+ }
+ }
+ memset(old_src, 0, sizeof(struct rc_pair_instruction_source));
+ new_src_index = rc_pair_alloc_source(&inst->U.P, 0, 1,
+ old_file, new_index);
+ /* This conversion is not possible, we must have made a mistake in
+ * is_rgb_to_alpha_possible. */
+ if (new_src_index < 0) {
+ assert(0);
+ return;
+ }
+
+ arg->Source = new_src_index;
+}
+
+static int can_remap(unsigned int opcode)
+{
+ switch(opcode) {
+ case RC_OPCODE_DDX:
+ case RC_OPCODE_DDY:
+ return 0;
+ default:
+ return 1;
+ }
+}
+
+static int can_convert_opcode_to_alpha(unsigned int opcode)
+{
+ switch(opcode) {
+ case RC_OPCODE_DDX:
+ case RC_OPCODE_DDY:
+ case RC_OPCODE_DP2:
+ case RC_OPCODE_DP3:
+ case RC_OPCODE_DP4:
+ case RC_OPCODE_DPH:
+ return 0;
+ default:
+ return 1;
+ }
+}
+
+static void is_rgb_to_alpha_possible(
+ void * userdata,
+ struct rc_instruction * inst,
+ struct rc_pair_instruction_arg * arg,
+ struct rc_pair_instruction_source * src)
+{
+ unsigned int chan_count = 0;
+ unsigned int alpha_sources = 0;
+ unsigned int i;
+ struct rc_reader_data * reader_data = userdata;
+
+ if (!can_remap(inst->U.P.RGB.Opcode)
+ || !can_remap(inst->U.P.Alpha.Opcode)) {
+ reader_data->Abort = 1;
+ return;
+ }
+
+ if (!src)
+ return;
+
+ /* XXX There are some cases where we can still do the conversion if
+ * a reader reads from a presubtract source, but for now we'll prevent
+ * it. */
+ if (arg->Source == RC_PAIR_PRESUB_SRC) {
+ reader_data->Abort = 1;
+ return;
+ }
+
+ /* Make sure the source only reads from one component.
+ * XXX We should allow the source to read from the same component twice.
+ * XXX If the index we will be converting to is the same as the
+ * current index, then it is OK to read from more than one component.
+ */
+ for (i = 0; i < 3; i++) {
+ rc_swizzle swz = get_swz(arg->Swizzle, i);
+ switch(swz) {
+ case RC_SWIZZLE_X:
+ case RC_SWIZZLE_Y:
+ case RC_SWIZZLE_Z:
+ case RC_SWIZZLE_W:
+ chan_count++;
+ break;
+ default:
+ break;
+ }
+ }
+ if (chan_count > 1) {
+ reader_data->Abort = 1;
+ return;
+ }
+
+ /* Make sure there are enough alpha sources.
+ * XXX If we know what register all the readers are going
+ * to be remapped to, then in some situations we can still do
+ * the subsitution, even if all 3 alpha sources are being used.*/
+ for (i = 0; i < 3; i++) {
+ if (inst->U.P.Alpha.Src[i].Used) {
+ alpha_sources++;
+ }
+ }
+ if (alpha_sources > 2) {
+ reader_data->Abort = 1;
+ return;
+ }
+}
+
+static int convert_rgb_to_alpha(
+ struct schedule_state * s,
+ struct schedule_instruction * sched_inst)
+{
+ struct rc_pair_instruction * pair_inst = &sched_inst->Instruction->U.P;
+ unsigned int old_mask = pair_inst->RGB.WriteMask;
+ unsigned int old_swz = rc_mask_to_swizzle(old_mask);
+ const struct rc_opcode_info * info =
+ rc_get_opcode_info(pair_inst->RGB.Opcode);
+ int new_index = -1;
+ unsigned int i;
+
+ if (sched_inst->GlobalReaders.Abort)
+ return 0;
+
+ if (!pair_inst->RGB.WriteMask)
+ return 0;
+
+ if (!can_convert_opcode_to_alpha(pair_inst->RGB.Opcode)
+ || !can_convert_opcode_to_alpha(pair_inst->Alpha.Opcode)) {
+ return 0;
+ }
+
+ assert(sched_inst->NumWriteValues == 1);
+
+ if (!sched_inst->WriteValues[0]) {
+ assert(0);
+ return 0;
+ }
+
+ /* We start at the old index, because if we can reuse the same
+ * register and just change the swizzle then it is more likely we
+ * will be able to convert all the readers. */
+ for (i = pair_inst->RGB.DestIndex; i < RC_REGISTER_MAX_INDEX; i++) {
+ struct reg_value ** new_regvalp = get_reg_valuep(
+ s, RC_FILE_TEMPORARY, i, 3);
+ if (!*new_regvalp) {
+ struct reg_value ** old_regvalp =
+ get_reg_valuep(s,
+ RC_FILE_TEMPORARY,
+ pair_inst->RGB.DestIndex,
+ rc_mask_to_swz(old_mask));
+ new_index = i;
+ *new_regvalp = *old_regvalp;
+ *old_regvalp = NULL;
+ new_regvalp = get_reg_valuep(s, RC_FILE_TEMPORARY, i, 3);
+ break;
+ }
+ }
+ if (new_index < 0) {
+ return 0;
+ }
+
+ pair_inst->Alpha.Opcode = pair_inst->RGB.Opcode;
+ pair_inst->Alpha.DestIndex = new_index;
+ pair_inst->Alpha.WriteMask = 1;
+ pair_inst->Alpha.Target = pair_inst->RGB.Target;
+ pair_inst->Alpha.OutputWriteMask = pair_inst->RGB.OutputWriteMask;
+ pair_inst->Alpha.DepthWriteMask = pair_inst->RGB.DepthWriteMask;
+ pair_inst->Alpha.Saturate = pair_inst->RGB.Saturate;
+ memcpy(pair_inst->Alpha.Arg, pair_inst->RGB.Arg,
+ sizeof(pair_inst->Alpha.Arg));
+ /* Move the swizzles into the first chan */
+ for (i = 0; i < info->NumSrcRegs; i++) {
+ unsigned int j;
+ for (j = 0; j < 3; j++) {
+ unsigned int swz = get_swz(pair_inst->Alpha.Arg[i].Swizzle, j);
+ if (swz != RC_SWIZZLE_UNUSED) {
+ pair_inst->Alpha.Arg[i].Swizzle = swz;
+ break;
+ }
+ }
+ }
+ pair_inst->RGB.Opcode = RC_OPCODE_NOP;
+ pair_inst->RGB.DestIndex = 0;
+ pair_inst->RGB.WriteMask = 0;
+ pair_inst->RGB.Target = 0;
+ pair_inst->RGB.OutputWriteMask = 0;
+ pair_inst->RGB.DepthWriteMask = 0;
+ pair_inst->RGB.Saturate = 0;
+ memset(pair_inst->RGB.Arg, 0, sizeof(pair_inst->RGB.Arg));
+
+ for(i = 0; i < sched_inst->GlobalReaders.ReaderCount; i++) {
+ struct rc_reader reader = sched_inst->GlobalReaders.Readers[i];
+ rgb_to_alpha_remap(reader.Inst, reader.U.Arg,
+ RC_FILE_TEMPORARY, old_swz, new_index);
+ }
+ return 1;
+}
+
/**
* Find a good ALU instruction or pair of ALU instruction and emit it.
*
@@ -535,24 +761,16 @@ static void emit_one_alu(struct schedule_state *s, struct rc_instruction * befor
{
struct schedule_instruction * sinst;
- if (s->ReadyFullALU || !(s->ReadyRGB && s->ReadyAlpha)) {
- if (s->ReadyFullALU) {
- sinst = s->ReadyFullALU;
- s->ReadyFullALU = s->ReadyFullALU->NextReady;
- } else if (s->ReadyRGB) {
- sinst = s->ReadyRGB;
- s->ReadyRGB = s->ReadyRGB->NextReady;
- } else {
- sinst = s->ReadyAlpha;
- s->ReadyAlpha = s->ReadyAlpha->NextReady;
- }
-
+ if (s->ReadyFullALU) {
+ sinst = s->ReadyFullALU;
+ s->ReadyFullALU = s->ReadyFullALU->NextReady;
rc_insert_instruction(before->Prev, sinst->Instruction);
commit_alu_instruction(s, sinst);
} else {
struct schedule_instruction **prgb;
struct schedule_instruction **palpha;
-
+ struct schedule_instruction *prev;
+pair:
/* Some pairings might fail because they require too
* many source slots; try all possible pairings if necessary */
for(prgb = &s->ReadyRGB; *prgb; prgb = &(*prgb)->NextReady) {
@@ -571,10 +789,43 @@ static void emit_one_alu(struct schedule_state *s, struct rc_instruction * befor
goto success;
}
}
-
- /* No success in pairing; just take the first RGB instruction */
- sinst = s->ReadyRGB;
- s->ReadyRGB = s->ReadyRGB->NextReady;
+ prev = NULL;
+ /* No success in pairing, now try to convert one of the RGB
+ * instructions to an Alpha so we can pair it with another RGB.
+ */
+ if (s->ReadyRGB && s->ReadyRGB->NextReady) {
+ for(prgb = &s->ReadyRGB; *prgb; prgb = &(*prgb)->NextReady) {
+ if ((*prgb)->NumWriteValues == 1) {
+ struct schedule_instruction * prgb_next;
+ if (!convert_rgb_to_alpha(s, *prgb))
+ goto cont_loop;
+ prgb_next = (*prgb)->NextReady;
+ /* Add instruction to the Alpha ready list. */
+ (*prgb)->NextReady = s->ReadyAlpha;
+ s->ReadyAlpha = *prgb;
+ /* Remove instruction from the RGB ready list.*/
+ if (prev)
+ prev->NextReady = prgb_next;
+ else
+ s->ReadyRGB = prgb_next;
+ goto pair;
+ }
+cont_loop:
+ prev = *prgb;
+ }
+ }
+ /* Still no success in pairing, just take the first RGB
+ * or alpha instruction. */
+ if (s->ReadyRGB) {
+ sinst = s->ReadyRGB;
+ s->ReadyRGB = s->ReadyRGB->NextReady;
+ } else if (s->ReadyAlpha) {
+ sinst = s->ReadyAlpha;
+ s->ReadyAlpha = s->ReadyAlpha->NextReady;
+ } else {
+ /*XXX Something real bad has happened. */
+ assert(0);
+ }
rc_insert_instruction(before->Prev, sinst->Instruction);
commit_alu_instruction(s, sinst);
@@ -590,13 +841,13 @@ static void scan_read(void * data, struct rc_instruction * inst,
rc_register_file file, unsigned int index, unsigned int chan)
{
struct schedule_state * s = data;
- struct reg_value * v = get_reg_value(s, file, index, chan);
+ struct reg_value ** v = get_reg_valuep(s, file, index, chan);
struct reg_value_reader * reader;
if (!v)
return;
- if (v->Writer == s->Current) {
+ if (*v && (*v)->Writer == s->Current) {
/* The instruction reads and writes to a register component.
* In this case, we only want to increment dependencies by one.
*/
@@ -607,16 +858,28 @@ static void scan_read(void * data, struct rc_instruction * inst,
reader = memory_pool_malloc(&s->C->Pool, sizeof(*reader));
reader->Reader = s->Current;
- reader->Next = v->Readers;
- v->Readers = reader;
- v->NumReaders++;
-
- s->Current->NumDependencies++;
+ if (!*v) {
+ /* In this situation, the instruction reads from a register
+ * that hasn't been written to or read from in the current
+ * block. */
+ *v = memory_pool_malloc(&s->C->Pool, sizeof(struct reg_value));
+ memset(*v, 0, sizeof(struct reg_value));
+ (*v)->Readers = reader;
+ } else {
+ reader->Next = (*v)->Readers;
+ (*v)->Readers = reader;
+ /* Only update the current instruction's dependencies if the
+ * register it reads from has been written to in this block. */
+ if ((*v)->Writer) {
+ s->Current->NumDependencies++;
+ }
+ }
+ (*v)->NumReaders++;
if (s->Current->NumReadValues >= 12) {
rc_error(s->C, "%s: NumReadValues overflow\n", __FUNCTION__);
} else {
- s->Current->ReadValues[s->Current->NumReadValues++] = v;
+ s->Current->ReadValues[s->Current->NumReadValues++] = *v;
}
}
@@ -651,6 +914,16 @@ static void scan_write(void * data, struct rc_instruction * inst,
}
}
+static void is_rgb_to_alpha_possible_normal(
+ void * userdata,
+ struct rc_instruction * inst,
+ struct rc_src_register * src)
+{
+ struct rc_reader_data * reader_data = userdata;
+ reader_data->Abort = 1;
+
+}
+
static void schedule_block(struct r300_fragment_program_compiler * c,
struct rc_instruction * begin, struct rc_instruction * end)
{
@@ -682,6 +955,11 @@ static void schedule_block(struct r300_fragment_program_compiler * c,
if (!s.Current->NumDependencies)
instruction_ready(&s, s.Current);
+
+ /* Get global readers for possible RGB->Alpha conversion. */
+ rc_get_readers(s.C, inst, &s.Current->GlobalReaders,
+ is_rgb_to_alpha_possible_normal,
+ is_rgb_to_alpha_possible, NULL);
}
/* Temporarily unlink all instructions */
@@ -710,8 +988,13 @@ static int is_controlflow(struct rc_instruction * inst)
void rc_pair_schedule(struct radeon_compiler *cc, void *user)
{
+ struct schedule_state s;
+
struct r300_fragment_program_compiler *c = (struct r300_fragment_program_compiler*)cc;
struct rc_instruction * inst = c->Base.Program.Instructions.Next;
+
+ memset(&s, 0, sizeof(s));
+ s.C = &c->Base;
while(inst != &c->Base.Program.Instructions) {
struct rc_instruction * first;
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c
index c549be5218..fc05366f50 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c
@@ -280,9 +280,12 @@ static void set_pair_instruction(struct r300_fragment_program_compiler *c,
pair->RGB.DestIndex = inst->DstReg.Index;
pair->RGB.WriteMask |= inst->DstReg.WriteMask & RC_MASK_XYZ;
}
+
if (needalpha) {
- pair->Alpha.DestIndex = inst->DstReg.Index;
pair->Alpha.WriteMask |= GET_BIT(inst->DstReg.WriteMask, 3);
+ if (pair->Alpha.WriteMask) {
+ pair->Alpha.DestIndex = inst->DstReg.Index;
+ }
}
}
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program.c b/src/mesa/drivers/dri/r300/compiler/radeon_program.c
index 24b685fbeb..d7bedc5729 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_program.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_program.c
@@ -30,6 +30,7 @@
#include <stdio.h>
#include "radeon_compiler.h"
+#include "radeon_dataflow.h"
/**
@@ -91,37 +92,98 @@ struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register
return tmp;
}
-unsigned int rc_find_free_temporary(struct radeon_compiler * c)
+struct get_used_temporaries_data {
+ unsigned char * Used;
+ unsigned int UsedLength;
+};
+
+static void get_used_temporaries_cb(
+ void * userdata,
+ struct rc_instruction * inst,
+ rc_register_file file,
+ unsigned int index,
+ unsigned int mask)
{
- char used[RC_REGISTER_MAX_INDEX];
- unsigned int i;
- struct rc_instruction * rcinst;
+ struct get_used_temporaries_data * d = userdata;
- memset(used, 0, sizeof(used));
+ if (file != RC_FILE_TEMPORARY)
+ return;
- for (rcinst = c->Program.Instructions.Next; rcinst != &c->Program.Instructions; rcinst = rcinst->Next) {
- const struct rc_sub_instruction *inst = &rcinst->U.I;
- const struct rc_opcode_info *opcode = rc_get_opcode_info(inst->Opcode);
- unsigned int k;
+ if (index >= d->UsedLength)
+ return;
- for (k = 0; k < opcode->NumSrcRegs; k++) {
- if (inst->SrcReg[k].File == RC_FILE_TEMPORARY)
- used[inst->SrcReg[k].Index] = 1;
- }
+ d->Used[index] |= mask;
+}
- if (opcode->HasDstReg) {
- if (inst->DstReg.File == RC_FILE_TEMPORARY)
- used[inst->DstReg.Index] = 1;
- }
+/**
+ * This function fills in the parameter 'used' with a writemask that
+ * represent which components of each temporary register are used by the
+ * program. This is meant to be combined with rc_find_free_temporary_list as a
+ * more efficient version of rc_find_free_temporary.
+ * @param used The function does not initialize this parameter.
+ */
+void rc_get_used_temporaries(
+ struct radeon_compiler * c,
+ unsigned char * used,
+ unsigned int used_length)
+{
+ struct rc_instruction * inst;
+ struct get_used_temporaries_data d;
+ d.Used = used;
+ d.UsedLength = used_length;
+
+ for(inst = c->Program.Instructions.Next;
+ inst != &c->Program.Instructions; inst = inst->Next) {
+
+ rc_for_all_reads_mask(inst, get_used_temporaries_cb, &d);
+ rc_for_all_writes_mask(inst, get_used_temporaries_cb, &d);
}
+}
- for (i = 0; i < RC_REGISTER_MAX_INDEX; i++) {
- if (!used[i])
+/* Search a list of used temporaries for a free one
+ * \sa rc_get_used_temporaries
+ * @note If this functions finds a free temporary, it will mark it as used
+ * in the used temporary list (param 'used')
+ * @param used list of used temporaries
+ * @param used_length number of items in param 'used'
+ * @param mask which components must be free in the temporary index that is
+ * returned.
+ * @return -1 If there are no more free temporaries, otherwise the index of
+ * a temporary register where the components specified in param 'mask' are
+ * not being used.
+ */
+int rc_find_free_temporary_list(
+ struct radeon_compiler * c,
+ unsigned char * used,
+ unsigned int used_length,
+ unsigned int mask)
+{
+ int i;
+ for(i = 0; i < used_length; i++) {
+ if ((~used[i] & mask) == mask) {
+ used[i] |= mask;
return i;
+ }
}
+ return -1;
+}
- rc_error(c, "Ran out of temporary registers\n");
- return 0;
+unsigned int rc_find_free_temporary(struct radeon_compiler * c)
+{
+ unsigned char used[RC_REGISTER_MAX_INDEX];
+ int free;
+
+ memset(used, 0, sizeof(used));
+
+ rc_get_used_temporaries(c, used, RC_REGISTER_MAX_INDEX);
+
+ free = rc_find_free_temporary_list(c, used, RC_REGISTER_MAX_INDEX,
+ RC_MASK_XYZW);
+ if (free < 0) {
+ rc_error(c, "Ran out of temporary registers\n");
+ return 0;
+ }
+ return free;
}
@@ -182,3 +244,14 @@ unsigned int rc_recompute_ips(struct radeon_compiler * c)
return ip;
}
+
+rc_swizzle rc_mask_to_swizzle(unsigned int mask)
+{
+ switch(mask) {
+ case RC_MASK_X: return RC_SWIZZLE_X;
+ case RC_MASK_Y: return RC_SWIZZLE_Y;
+ case RC_MASK_Z: return RC_SWIZZLE_Z;
+ case RC_MASK_W: return RC_SWIZZLE_W;
+ default: return RC_SWIZZLE_UNUSED;
+ }
+}
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program.h b/src/mesa/drivers/dri/r300/compiler/radeon_program.h
index f0a77d7b53..be078b4f4f 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_program.h
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_program.h
@@ -191,6 +191,20 @@ static inline unsigned int combine_swizzles(unsigned int src, unsigned int swz)
return ret;
}
+/**
+ * @param mask Must be either RC_MASK_X, RC_MASK_Y, RC_MASK_Z, or RC_MASK_W
+ */
+static inline rc_swizzle rc_mask_to_swz(unsigned int mask)
+{
+ switch (mask) {
+ case RC_MASK_X: return RC_SWIZZLE_X;
+ case RC_MASK_Y: return RC_SWIZZLE_Y;
+ case RC_MASK_Z: return RC_SWIZZLE_Z;
+ case RC_MASK_W: return RC_SWIZZLE_W;
+ default: assert(0);
+ }
+ return RC_SWIZZLE_UNUSED;
+}
struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register srcreg);
static inline void reset_srcreg(struct rc_src_register* reg)
@@ -222,6 +236,17 @@ void rc_local_transform(
struct radeon_compiler *c,
void *user);
+void rc_get_used_temporaries(
+ struct radeon_compiler * c,
+ unsigned char * used,
+ unsigned int used_length);
+
+int rc_find_free_temporary_list(
+ struct radeon_compiler * c,
+ unsigned char * used,
+ unsigned int used_length,
+ unsigned int mask);
+
unsigned int rc_find_free_temporary(struct radeon_compiler * c);
struct rc_instruction *rc_alloc_instruction(struct radeon_compiler * c);
@@ -233,4 +258,5 @@ unsigned int rc_recompute_ips(struct radeon_compiler * c);
void rc_print_program(const struct rc_program *prog);
+rc_swizzle rc_mask_to_swizzle(unsigned int mask);
#endif
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h b/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h
index 9dcd44c522..45f79ece5b 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h
@@ -181,4 +181,9 @@ static inline int rc_presubtract_src_reg_count(rc_presubtract_op op){
return 0;
}
}
+
+#define RC_SOURCE_NONE 0x0
+#define RC_SOURCE_RGB 0x1
+#define RC_SOURCE_ALPHA 0x2
+
#endif /* RADEON_PROGRAM_CONSTANTS_H */
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c
index a21fe8d3df..5905d26e52 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c
@@ -27,6 +27,9 @@
#include "radeon_program_pair.h"
+#include "radeon_compiler_util.h"
+
+#include <stdlib.h>
/**
* Return the source slot where we installed the given register access,
@@ -204,24 +207,37 @@ void rc_pair_foreach_source_that_rgb_reads(
}
}
-/*return 0 for rgb, 1 for alpha -1 for error. */
-
-unsigned int rc_source_type_that_arg_reads(
- unsigned int source,
- unsigned int swizzle)
+struct rc_pair_instruction_source * rc_pair_get_src(
+ struct rc_pair_instruction * pair_inst,
+ struct rc_pair_instruction_arg * arg)
{
- unsigned int chan;
- unsigned int swz = RC_SWIZZLE_UNUSED;
- unsigned int ret = RC_PAIR_SOURCE_NONE;
-
- for(chan = 0; chan < 3; chan++) {
- swz = GET_SWZ(swizzle, chan);
- if (swz == RC_SWIZZLE_W) {
- ret |= RC_PAIR_SOURCE_ALPHA;
- } else if (swz == RC_SWIZZLE_X || swz == RC_SWIZZLE_Y
- || swz == RC_SWIZZLE_Z) {
- ret |= RC_PAIR_SOURCE_RGB;
+ unsigned int i, type;
+ unsigned int channels = 0;
+
+ for(i = 0; i < 3; i++) {
+ if (arg == pair_inst->RGB.Arg + i) {
+ channels = 3;
+ break;
}
}
- return ret;
+
+ if (channels == 0) {
+ for (i = 0; i < 3; i++) {
+ if (arg == pair_inst->Alpha.Arg + i) {
+ channels = 1;
+ break;
+ }
+ }
+ }
+
+ assert(channels > 0);
+ type = rc_source_type_swz(arg->Swizzle, channels);
+
+ if (type & RC_SOURCE_RGB) {
+ return &pair_inst->RGB.Src[arg->Source];
+ } else if (type & RC_SOURCE_ALPHA) {
+ return &pair_inst->Alpha.Src[arg->Source];
+ } else {
+ return NULL;
+ }
}
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h
index 54d44a2098..ccf7a0070c 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h
@@ -55,10 +55,6 @@ struct radeon_compiler;
*/
#define RC_PAIR_PRESUB_SRC 3
-#define RC_PAIR_SOURCE_NONE 0x0
-#define RC_PAIR_SOURCE_RGB 0x1
-#define RC_PAIR_SOURCE_ALPHA 0x2
-
struct rc_pair_instruction_source {
unsigned int Used:1;
unsigned int File:3;
@@ -115,9 +111,9 @@ void rc_pair_foreach_source_that_rgb_reads(
void * data,
rc_pair_foreach_src_fn cb);
-unsigned int rc_source_type_that_arg_reads(
- unsigned int source,
- unsigned int swizzle);
+struct rc_pair_instruction_source * rc_pair_get_src(
+ struct rc_pair_instruction * pair_inst,
+ struct rc_pair_instruction_arg * arg);
/*@}*/
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c
index 618ab5a099..ae13f6742f 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c
@@ -129,6 +129,7 @@ static char rc_swizzle_char(unsigned int swz)
case RC_SWIZZLE_HALF: return 'H';
case RC_SWIZZLE_UNUSED: return '_';
}
+ fprintf(stderr, "bad swz: %u\n", swz);
return '?';
}
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c b/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c
index 60e228be5b..88165f7895 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c
@@ -33,100 +33,51 @@
#include "radeon_compiler.h"
#include "radeon_dataflow.h"
-
-struct reg_rename {
- int old_index;
- int new_index;
- int temp_index;
-};
-
-static void rename_reg(void * data, struct rc_instruction * inst,
- rc_register_file * file, unsigned int * index)
-{
- struct reg_rename *r = data;
-
- if(r->old_index == *index && *file == RC_FILE_TEMPORARY) {
- *index = r->new_index;
- }
- else if(r->new_index == *index && *file == RC_FILE_TEMPORARY) {
- *index = r->temp_index;
- }
-}
-
-static void rename_all(
- struct radeon_compiler *c,
- struct rc_instruction * start,
- unsigned int old,
- unsigned int new,
- unsigned int temp)
-{
- struct rc_instruction * inst;
- struct reg_rename r;
- r.old_index = old;
- r.new_index = new;
- r.temp_index = temp;
- for(inst = start; inst != &c->Program.Instructions;
- inst = inst->Next) {
- rc_remap_registers(inst, rename_reg, &r);
- }
-}
+#include "radeon_program.h"
/**
* This function renames registers in an attempt to get the code close to
* SSA form. After this function has completed, most of the register are only
- * written to one time, with a few exceptions. For example, this block of code
- * will not be modified by this function:
- * Mov Temp[0].x Const[0].x
- * Mov Temp[0].y Const[0].y
- * Basically, destination registers will be renamed if:
- * 1. There have been no previous writes to that register
- * or
- * 2. If the instruction is writting to the exact components (no more, no less)
- * of a register that has been written to by previous instructions.
+ * written to one time, with a few exceptions.
*
* This function assumes all the instructions are still of type
* RC_INSTRUCTION_NORMAL.
*/
void rc_rename_regs(struct radeon_compiler *c, void *user)
{
- unsigned int cur_index = 0;
- unsigned int icount;
+ unsigned int i, used_length;
+ int new_index;
struct rc_instruction * inst;
- unsigned int * masks;
+ struct rc_reader_data reader_data;
+ unsigned char * used;
- /* The number of instructions in the program is also the maximum
- * number of temp registers that could potentially be used. */
- icount = rc_recompute_ips(c);
- masks = memory_pool_malloc(&c->Pool, icount * sizeof(unsigned int));
- memset(masks, 0, icount * sizeof(unsigned int));
+ used_length = 2 * rc_recompute_ips(c);
+ used = memory_pool_malloc(&c->Pool, sizeof(unsigned char) * used_length);
+ memset(used, 0, sizeof(unsigned char) * used_length);
+ rc_get_used_temporaries(c, used, used_length);
for(inst = c->Program.Instructions.Next;
inst != &c->Program.Instructions;
inst = inst->Next) {
- const struct rc_opcode_info * info;
- unsigned int old_index, temp_index;
- struct rc_dst_register * dst;
- if(inst->Type != RC_INSTRUCTION_NORMAL) {
- rc_error(c, "%s only works with normal instructions.",
- __FUNCTION__);
- return;
- }
- dst = &inst->U.I.DstReg;
- info = rc_get_opcode_info(inst->U.I.Opcode);
- if(!info->HasDstReg || dst->File != RC_FILE_TEMPORARY) {
+
+ if (inst->U.I.DstReg.File != RC_FILE_TEMPORARY)
continue;
+
+ rc_get_readers(c, inst, &reader_data, NULL, NULL, NULL);
+
+ if (reader_data.Abort || reader_data.ReaderCount == 0)
+ continue;
+
+ new_index = rc_find_free_temporary_list(c, used, used_length,
+ RC_MASK_XYZW);
+ if (new_index < 0) {
+ rc_error(c, "Ran out of temporary registers\n");
+ return;
}
- if(dst->Index >= icount || !masks[dst->Index] ||
- masks[dst->Index] == dst->WriteMask) {
- old_index = dst->Index;
- /* We need to set dst->Index here so get free temporary
- * will work. */
- dst->Index = cur_index++;
- temp_index = rc_find_free_temporary(c);
- rename_all(c, inst->Next, old_index,
- dst->Index, temp_index);
+
+ reader_data.Writer->U.I.DstReg.Index = new_index;
+ for(i = 0; i < reader_data.ReaderCount; i++) {
+ reader_data.Readers[i].U.Src->Index = new_index;
}
- assert(dst->Index < icount);
- masks[dst->Index] |= dst->WriteMask;
}
}
diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c
index 9fbd36bfe6..c288834d24 100644
--- a/src/mesa/drivers/dri/r300/r300_context.c
+++ b/src/mesa/drivers/dri/r300/r300_context.c
@@ -86,6 +86,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define need_GL_EXT_stencil_two_side
#define need_GL_ATI_separate_stencil
#define need_GL_NV_vertex_program
+#define need_GL_OES_EGL_image
#include "main/remap_helper.h"
@@ -134,6 +135,9 @@ static const struct dri_extension card_extensions[] = {
{"GL_MESAX_texture_float", NULL},
{"GL_NV_blend_square", NULL},
{"GL_NV_vertex_program", GL_NV_vertex_program_functions},
+#if FEATURE_OES_EGL_image
+ {"GL_OES_EGL_image", GL_OES_EGL_image_functions },
+#endif
{NULL, NULL}
/* *INDENT-ON* */
};
diff --git a/src/mesa/drivers/dri/r300/r300_draw.c b/src/mesa/drivers/dri/r300/r300_draw.c
index 81769e1ee5..0c4d8537c6 100644
--- a/src/mesa/drivers/dri/r300/r300_draw.c
+++ b/src/mesa/drivers/dri/r300/r300_draw.c
@@ -717,6 +717,10 @@ static void r300DrawPrims(struct gl_context *ctx,
GLuint max_index)
{
GLboolean retval;
+ struct r300_context *r300 = R300_CONTEXT(ctx);
+ radeonContextPtr radeon = &r300->radeon;
+
+ radeon_prepare_render(radeon);
/* This check should get folded into just the places that
* min/max index are really needed.
diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c
index 821318e7a5..44090ec289 100644
--- a/src/mesa/drivers/dri/r300/r300_render.c
+++ b/src/mesa/drivers/dri/r300/r300_render.c
@@ -327,8 +327,6 @@ void r300RunRenderPrimitive(struct gl_context * ctx, int start, int end, int pri
BATCH_LOCALS(&rmesa->radeon);
int type, num_verts;
- radeon_prepare_render(&rmesa->radeon);
-
type = r300PrimitiveType(rmesa, prim);
num_verts = r300NumVerts(rmesa, end - start, prim);
diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c
index a6bda0e499..de66293999 100644
--- a/src/mesa/drivers/dri/r300/r300_tex.c
+++ b/src/mesa/drivers/dri/r300/r300_tex.c
@@ -382,5 +382,9 @@ void r300InitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *fun
functions->GenerateMipmap = radeonGenerateMipmap;
+#if FEATURE_OES_EGL_image
+ functions->EGLImageTargetTexture2D = radeon_image_target_texture_2d;
+#endif
+
driInitTextureFormats();
}
diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c
index 0116c5d2fa..ed9955b05d 100644
--- a/src/mesa/drivers/dri/r300/r300_texstate.c
+++ b/src/mesa/drivers/dri/r300/r300_texstate.c
@@ -428,6 +428,7 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format
radeonTexObjPtr t;
uint32_t pitch_val;
uint32_t internalFormat, type, format;
+ gl_format texFormat;
type = GL_BGRA;
format = GL_UNSIGNED_BYTE;
@@ -467,9 +468,6 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format
radeon_miptree_unreference(&t->mt);
radeon_miptree_unreference(&rImage->mt);
- _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
- rb->base.Width, rb->base.Height, 1, 0, rb->cpp);
- texImage->RowStride = rb->pitch / rb->cpp;
rImage->bo = rb->bo;
radeon_bo_ref(rImage->bo);
t->bo = rb->bo;
@@ -481,22 +479,35 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format
pitch_val = rb->pitch;
switch (rb->cpp) {
case 4:
- if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
+ if (texture_format == __DRI_TEXTURE_FORMAT_RGB) {
+ texFormat = MESA_FORMAT_RGB888;
t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, ONE, W8Z8Y8X8);
- else
+ }
+ else {
+ texFormat = MESA_FORMAT_ARGB8888;
t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, W, W8Z8Y8X8);
+ }
pitch_val /= 4;
break;
case 3:
default:
+ texFormat = MESA_FORMAT_RGB888;
t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, ONE, W8Z8Y8X8);
pitch_val /= 4;
break;
case 2:
+ texFormat = MESA_FORMAT_RGB565;
t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5);
pitch_val /= 2;
break;
}
+
+ _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
+ rb->base.Width, rb->base.Height, 1, 0,
+ rb->cpp, texFormat);
+ texImage->RowStride = rb->pitch / rb->cpp;
+
+
pitch_val--;
t->pp_txsize = (((R300_TX_WIDTHMASK_MASK & ((rb->base.Width - 1) << R300_TX_WIDTHMASK_SHIFT)))
| ((R300_TX_HEIGHTMASK_MASK & ((rb->base.Height - 1) << R300_TX_HEIGHTMASK_SHIFT))));
diff --git a/src/mesa/drivers/dri/r600/evergreen_render.c b/src/mesa/drivers/dri/r600/evergreen_render.c
index 0c0eeca1fc..6e51832c87 100644
--- a/src/mesa/drivers/dri/r600/evergreen_render.c
+++ b/src/mesa/drivers/dri/r600/evergreen_render.c
@@ -909,6 +909,10 @@ static void evergreenDrawPrims(struct gl_context *ctx,
{
GLboolean retval = GL_FALSE;
+ context_t *context = EVERGREEN_CONTEXT(ctx);
+ radeonContextPtr radeon = &context->radeon;
+ radeon_prepare_render(radeon);
+
/* This check should get folded into just the places that
* min/max index are really needed.
*/
diff --git a/src/mesa/drivers/dri/r600/evergreen_tex.c b/src/mesa/drivers/dri/r600/evergreen_tex.c
index 58420ed123..3b5448a0e4 100644
--- a/src/mesa/drivers/dri/r600/evergreen_tex.c
+++ b/src/mesa/drivers/dri/r600/evergreen_tex.c
@@ -31,9 +31,7 @@
#include "main/enums.h"
#include "main/image.h"
#include "main/teximage.h"
-#include "main/mipmap.h"
#include "main/simple_list.h"
-#include "main/texstore.h"
#include "main/texobj.h"
#include "texmem.h"
@@ -1024,15 +1022,15 @@ static GLboolean evergreen_setup_hardware_state(struct gl_context * ctx, struct
SETfield(t->SQ_TEX_RESOURCE5, t->maxLod - t->minLod, LAST_LEVEL_shift, LAST_LEVEL_mask);
SETfield(t->SQ_TEX_SAMPLER1,
- EG_S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 6),
+ EG_S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 8),
EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_shift,
EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_mask);
SETfield(t->SQ_TEX_SAMPLER1,
- EG_S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 6),
+ EG_S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 8),
EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_shift,
EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_mask);
SETfield(t->SQ_TEX_SAMPLER2,
- EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 6),
+ EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 8),
EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_shift,
EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_mask);
@@ -1152,6 +1150,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur
radeonTexObjPtr t;
uint32_t pitch_val;
uint32_t internalFormat, type, format;
+ gl_format texFormat;
type = GL_BGRA;
format = GL_UNSIGNED_BYTE;
@@ -1191,10 +1190,6 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur
radeon_miptree_unreference(&t->mt);
radeon_miptree_unreference(&rImage->mt);
- _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
- rb->base.Width, rb->base.Height, 1, 0, rb->cpp);
- texImage->RowStride = rb->pitch / rb->cpp;
-
rImage->bo = rb->bo;
radeon_bo_ref(rImage->bo);
t->bo = rb->bo;
@@ -1205,6 +1200,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur
switch (rb->cpp) {
case 4:
if (glx_texture_format == __DRI_TEXTURE_FORMAT_RGB) {
+ texFormat = MESA_FORMAT_RGB888;
SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
@@ -1218,6 +1214,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
} else {
+ texFormat = MESA_FORMAT_ARGB8888;
SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
@@ -1236,6 +1233,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur
case 3:
default:
// FMT_8_8_8 ???
+ texFormat = MESA_FORMAT_RGB888;
SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
@@ -1251,6 +1249,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur
pitch_val /= 4;
break;
case 2:
+ texFormat = MESA_FORMAT_RGB565;
SETfield(t->SQ_TEX_RESOURCE7, FMT_5_6_5,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
@@ -1267,6 +1266,11 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur
break;
}
+ _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
+ rb->base.Width, rb->base.Height, 1, 0,
+ rb->cpp, texFormat);
+ texImage->RowStride = rb->pitch / rb->cpp;
+
pitch_val = (pitch_val + R700_TEXEL_PITCH_ALIGNMENT_MASK)
& ~R700_TEXEL_PITCH_ALIGNMENT_MASK;
diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c
index c882a9cce9..b6443bf0c5 100644
--- a/src/mesa/drivers/dri/r600/r600_context.c
+++ b/src/mesa/drivers/dri/r600/r600_context.c
@@ -94,6 +94,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define need_GL_EXT_stencil_two_side
#define need_GL_ATI_separate_stencil
#define need_GL_NV_vertex_program
+#define need_GL_OES_EGL_image
#include "main/remap_helper.h"
@@ -148,6 +149,9 @@ static const struct dri_extension card_extensions[] = {
{"GL_NV_vertex_program", GL_NV_vertex_program_functions},
{"GL_ARB_pixel_buffer_object", NULL},
{"GL_ARB_draw_elements_base_vertex", GL_ARB_draw_elements_base_vertex_functions },
+#if FEATURE_OES_EGL_image
+ {"GL_OES_EGL_image", GL_OES_EGL_image_functions},
+#endif
{NULL, NULL}
/* *INDENT-ON* */
};
diff --git a/src/mesa/drivers/dri/r600/r600_tex.c b/src/mesa/drivers/dri/r600/r600_tex.c
index d6a58f410c..c3d68c41e5 100644
--- a/src/mesa/drivers/dri/r600/r600_tex.c
+++ b/src/mesa/drivers/dri/r600/r600_tex.c
@@ -475,5 +475,9 @@ void r600InitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *fun
functions->GenerateMipmap = radeonGenerateMipmap;
+#if FEATURE_OES_EGL_image
+ functions->EGLImageTargetTexture2D = radeon_image_target_texture_2d;
+#endif
+
driInitTextureFormats();
}
diff --git a/src/mesa/drivers/dri/r600/r600_texstate.c b/src/mesa/drivers/dri/r600/r600_texstate.c
index 3869768bf0..aafa687577 100644
--- a/src/mesa/drivers/dri/r600/r600_texstate.c
+++ b/src/mesa/drivers/dri/r600/r600_texstate.c
@@ -1001,6 +1001,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
radeonTexObjPtr t;
uint32_t pitch_val;
uint32_t internalFormat, type, format;
+ gl_format texFormat;
type = GL_BGRA;
format = GL_UNSIGNED_BYTE;
@@ -1046,10 +1047,6 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
radeon_miptree_unreference(&t->mt);
radeon_miptree_unreference(&rImage->mt);
- _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
- rb->base.Width, rb->base.Height, 1, 0, rb->cpp);
- texImage->RowStride = rb->pitch / rb->cpp;
-
rImage->bo = rb->bo;
radeon_bo_ref(rImage->bo);
t->bo = rb->bo;
@@ -1060,6 +1057,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
switch (rb->cpp) {
case 4:
if (glx_texture_format == __DRI_TEXTURE_FORMAT_RGB) {
+ texFormat = MESA_FORMAT_RGB888;
SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
@@ -1072,6 +1070,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
} else {
+ texFormat = MESA_FORMAT_ARGB8888;
SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
@@ -1089,6 +1088,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
case 3:
default:
// FMT_8_8_8 ???
+ texFormat = MESA_FORMAT_RGB888;
SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
@@ -1103,6 +1103,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
pitch_val /= 4;
break;
case 2:
+ texFormat = MESA_FORMAT_RGB565;
SETfield(t->SQ_TEX_RESOURCE1, FMT_5_6_5,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
@@ -1118,6 +1119,11 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
break;
}
+ _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
+ rb->base.Width, rb->base.Height, 1, 0,
+ rb->cpp, texFormat);
+ texImage->RowStride = rb->pitch / rb->cpp;
+
pitch_val = (pitch_val + R700_TEXEL_PITCH_ALIGNMENT_MASK)
& ~R700_TEXEL_PITCH_ALIGNMENT_MASK;
diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c
index 43a6355ad8..7361adffcf 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common.c
@@ -171,6 +171,10 @@ void radeonSetCliprects(radeonContextPtr radeon)
{
__DRIdrawable *const drawable = radeon_get_drawable(radeon);
__DRIdrawable *const readable = radeon_get_readable(radeon);
+
+ if(drawable == NULL && readable == NULL)
+ return;
+
struct radeon_framebuffer *const draw_rfb = drawable->driverPrivate;
struct radeon_framebuffer *const read_rfb = readable->driverPrivate;
int x_off, y_off;
diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c
index 40544860b3..fecdd11905 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c
@@ -39,6 +39,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "drirenderbuffer.h"
#include "drivers/common/meta.h"
#include "main/context.h"
+#include "main/framebuffer.h"
#include "main/renderbuffer.h"
#include "main/state.h"
#include "main/simple_list.h"
@@ -245,16 +246,9 @@ GLboolean radeonInitContext(radeonContextPtr radeon,
DRI_CONF_TEXTURE_DEPTH_32 : DRI_CONF_TEXTURE_DEPTH_16;
if (IS_R600_CLASS(radeon->radeonScreen)) {
- int chip_family = radeon->radeonScreen->chip_family;
- if (chip_family >= CHIP_FAMILY_CEDAR) {
- radeon->texture_row_align = 512;
- radeon->texture_rect_row_align = 512;
- radeon->texture_compressed_row_align = 512;
- } else {
- radeon->texture_row_align = 256;
- radeon->texture_rect_row_align = 256;
- radeon->texture_compressed_row_align = 256;
- }
+ radeon->texture_row_align = radeon->radeonScreen->group_bytes;
+ radeon->texture_rect_row_align = radeon->radeonScreen->group_bytes;
+ radeon->texture_compressed_row_align = radeon->radeonScreen->group_bytes;
} else if (IS_R200_CLASS(radeon->radeonScreen) ||
IS_R100_CLASS(radeon->radeonScreen)) {
radeon->texture_row_align = 32;
@@ -379,12 +373,12 @@ GLboolean radeonUnbindContext(__DRIcontext * driContextPriv)
static void
radeon_make_kernel_renderbuffer_current(radeonContextPtr radeon,
- struct radeon_framebuffer *draw)
+ struct gl_framebuffer *draw)
{
/* if radeon->fake */
struct radeon_renderbuffer *rb;
- if ((rb = (void *)draw->base.Attachment[BUFFER_FRONT_LEFT].Renderbuffer)) {
+ if ((rb = (void *)draw->Attachment[BUFFER_FRONT_LEFT].Renderbuffer)) {
if (!rb->bo) {
rb->bo = radeon_bo_open(radeon->radeonScreen->bom,
radeon->radeonScreen->frontOffset,
@@ -396,7 +390,7 @@ radeon_make_kernel_renderbuffer_current(radeonContextPtr radeon,
rb->cpp = radeon->radeonScreen->cpp;
rb->pitch = radeon->radeonScreen->frontPitch * rb->cpp;
}
- if ((rb = (void *)draw->base.Attachment[BUFFER_BACK_LEFT].Renderbuffer)) {
+ if ((rb = (void *)draw->Attachment[BUFFER_BACK_LEFT].Renderbuffer)) {
if (!rb->bo) {
rb->bo = radeon_bo_open(radeon->radeonScreen->bom,
radeon->radeonScreen->backOffset,
@@ -408,7 +402,7 @@ radeon_make_kernel_renderbuffer_current(radeonContextPtr radeon,
rb->cpp = radeon->radeonScreen->cpp;
rb->pitch = radeon->radeonScreen->backPitch * rb->cpp;
}
- if ((rb = (void *)draw->base.Attachment[BUFFER_DEPTH].Renderbuffer)) {
+ if ((rb = (void *)draw->Attachment[BUFFER_DEPTH].Renderbuffer)) {
if (!rb->bo) {
rb->bo = radeon_bo_open(radeon->radeonScreen->bom,
radeon->radeonScreen->depthOffset,
@@ -420,7 +414,7 @@ radeon_make_kernel_renderbuffer_current(radeonContextPtr radeon,
rb->cpp = radeon->radeonScreen->cpp;
rb->pitch = radeon->radeonScreen->depthPitch * rb->cpp;
}
- if ((rb = (void *)draw->base.Attachment[BUFFER_STENCIL].Renderbuffer)) {
+ if ((rb = (void *)draw->Attachment[BUFFER_STENCIL].Renderbuffer)) {
if (!rb->bo) {
rb->bo = radeon_bo_open(radeon->radeonScreen->bom,
radeon->radeonScreen->depthOffset,
@@ -436,7 +430,7 @@ radeon_make_kernel_renderbuffer_current(radeonContextPtr radeon,
static void
radeon_make_renderbuffer_current(radeonContextPtr radeon,
- struct radeon_framebuffer *draw)
+ struct gl_framebuffer *draw)
{
int size = 4096*4096*4;
/* if radeon->fake */
@@ -448,7 +442,7 @@ radeon_make_renderbuffer_current(radeonContextPtr radeon,
}
- if ((rb = (void *)draw->base.Attachment[BUFFER_FRONT_LEFT].Renderbuffer)) {
+ if ((rb = (void *)draw->Attachment[BUFFER_FRONT_LEFT].Renderbuffer)) {
if (!rb->bo) {
rb->bo = radeon_bo_open(radeon->radeonScreen->bom,
radeon->radeonScreen->frontOffset +
@@ -461,7 +455,7 @@ radeon_make_renderbuffer_current(radeonContextPtr radeon,
rb->cpp = radeon->radeonScreen->cpp;
rb->pitch = radeon->radeonScreen->frontPitch * rb->cpp;
}
- if ((rb = (void *)draw->base.Attachment[BUFFER_BACK_LEFT].Renderbuffer)) {
+ if ((rb = (void *)draw->Attachment[BUFFER_BACK_LEFT].Renderbuffer)) {
if (!rb->bo) {
rb->bo = radeon_bo_open(radeon->radeonScreen->bom,
radeon->radeonScreen->backOffset +
@@ -474,7 +468,7 @@ radeon_make_renderbuffer_current(radeonContextPtr radeon,
rb->cpp = radeon->radeonScreen->cpp;
rb->pitch = radeon->radeonScreen->backPitch * rb->cpp;
}
- if ((rb = (void *)draw->base.Attachment[BUFFER_DEPTH].Renderbuffer)) {
+ if ((rb = (void *)draw->Attachment[BUFFER_DEPTH].Renderbuffer)) {
if (!rb->bo) {
rb->bo = radeon_bo_open(radeon->radeonScreen->bom,
radeon->radeonScreen->depthOffset +
@@ -487,7 +481,7 @@ radeon_make_renderbuffer_current(radeonContextPtr radeon,
rb->cpp = radeon->radeonScreen->cpp;
rb->pitch = radeon->radeonScreen->depthPitch * rb->cpp;
}
- if ((rb = (void *)draw->base.Attachment[BUFFER_STENCIL].Renderbuffer)) {
+ if ((rb = (void *)draw->Attachment[BUFFER_STENCIL].Renderbuffer)) {
if (!rb->bo) {
rb->bo = radeon_bo_open(radeon->radeonScreen->bom,
radeon->radeonScreen->depthOffset +
@@ -740,10 +734,9 @@ radeon_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable,
buffers[i].flags);
if (bo == NULL) {
-
fprintf(stderr, "failed to attach %s %d\n",
regname, buffers[i].name);
-
+ continue;
}
ret = radeon_bo_get_tiling(bo, &tiling_flags, &pitch);
@@ -793,8 +786,8 @@ GLboolean radeonMakeCurrent(__DRIcontext * driContextPriv,
__DRIdrawable * driReadPriv)
{
radeonContextPtr radeon;
- struct radeon_framebuffer *drfb;
- struct gl_framebuffer *readfb;
+ struct radeon_framebuffer *rdrfb;
+ struct gl_framebuffer *drfb, *readfb;
if (!driContextPriv) {
if (RADEON_DEBUG & RADEON_DRI)
@@ -804,17 +797,25 @@ GLboolean radeonMakeCurrent(__DRIcontext * driContextPriv,
}
radeon = (radeonContextPtr) driContextPriv->driverPrivate;
- drfb = driDrawPriv->driverPrivate;
- readfb = driReadPriv->driverPrivate;
+
+ if(driDrawPriv == NULL && driReadPriv == NULL) {
+ drfb = _mesa_create_framebuffer(&radeon->glCtx->Visual);
+ readfb = drfb;
+ }
+ else {
+ drfb = driDrawPriv->driverPrivate;
+ readfb = driReadPriv->driverPrivate;
+ }
if (driContextPriv->driScreenPriv->dri2.enabled) {
- radeon_update_renderbuffers(driContextPriv, driDrawPriv, GL_FALSE);
+ if(driDrawPriv)
+ radeon_update_renderbuffers(driContextPriv, driDrawPriv, GL_FALSE);
if (driDrawPriv != driReadPriv)
radeon_update_renderbuffers(driContextPriv, driReadPriv, GL_FALSE);
_mesa_reference_renderbuffer(&radeon->state.color.rb,
- &(radeon_get_renderbuffer(&drfb->base, BUFFER_BACK_LEFT)->base));
+ &(radeon_get_renderbuffer(drfb, BUFFER_BACK_LEFT)->base));
_mesa_reference_renderbuffer(&radeon->state.depth.rb,
- &(radeon_get_renderbuffer(&drfb->base, BUFFER_DEPTH)->base));
+ &(radeon_get_renderbuffer(drfb, BUFFER_DEPTH)->base));
} else {
radeon_make_renderbuffer_current(radeon, drfb);
}
@@ -822,35 +823,40 @@ GLboolean radeonMakeCurrent(__DRIcontext * driContextPriv,
if (RADEON_DEBUG & RADEON_DRI)
fprintf(stderr, "%s ctx %p dfb %p rfb %p\n", __FUNCTION__, radeon->glCtx, drfb, readfb);
- driUpdateFramebufferSize(radeon->glCtx, driDrawPriv);
+ if(driDrawPriv)
+ driUpdateFramebufferSize(radeon->glCtx, driDrawPriv);
if (driReadPriv != driDrawPriv)
driUpdateFramebufferSize(radeon->glCtx, driReadPriv);
- _mesa_make_current(radeon->glCtx, &drfb->base, readfb);
+ _mesa_make_current(radeon->glCtx, drfb, readfb);
+ if (driDrawPriv == NULL && driReadPriv == NULL)
+ _mesa_reference_framebuffer(&drfb, NULL);
_mesa_update_state(radeon->glCtx);
- if (radeon->glCtx->DrawBuffer == &drfb->base) {
- if (driDrawPriv->swap_interval == (unsigned)-1) {
- int i;
- driDrawPriv->vblFlags =
- (radeon->radeonScreen->irq != 0)
- ? driGetDefaultVBlankFlags(&radeon->
- optionCache)
- : VBLANK_FLAG_NO_IRQ;
-
- driDrawableInitVBlank(driDrawPriv);
- drfb->vbl_waited = driDrawPriv->vblSeq;
-
- for (i = 0; i < 2; i++) {
- if (drfb->color_rb[i])
- drfb->color_rb[i]->vbl_pending = driDrawPriv->vblSeq;
+ if (radeon->glCtx->DrawBuffer == drfb) {
+ if(driDrawPriv != NULL) {
+ rdrfb = (struct radeon_framebuffer *)drfb;
+ if (driDrawPriv->swap_interval == (unsigned)-1) {
+ int i;
+ driDrawPriv->vblFlags =
+ (radeon->radeonScreen->irq != 0)
+ ? driGetDefaultVBlankFlags(&radeon->
+ optionCache)
+ : VBLANK_FLAG_NO_IRQ;
+
+ driDrawableInitVBlank(driDrawPriv);
+ rdrfb->vbl_waited = driDrawPriv->vblSeq;
+
+ for (i = 0; i < 2; i++) {
+ if (rdrfb->color_rb[i])
+ rdrfb->color_rb[i]->vbl_pending = driDrawPriv->vblSeq;
+ }
}
-
+ radeon_window_moved(radeon);
}
- radeon_window_moved(radeon);
- radeon_draw_buffer(radeon->glCtx, &drfb->base);
+ radeon_draw_buffer(radeon->glCtx, drfb);
}
diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c
index cc9590213c..e3de534b5f 100644
--- a/src/mesa/drivers/dri/radeon/radeon_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_context.c
@@ -66,6 +66,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define need_GL_EXT_fog_coord
#define need_GL_EXT_secondary_color
#define need_GL_EXT_framebuffer_object
+#define need_GL_OES_EGL_image
#include "main/remap_helper.h"
#define DRIVER_DATE "20061018"
@@ -101,6 +102,9 @@ static const struct dri_extension card_extensions[] =
{ "GL_ATI_texture_mirror_once", NULL },
{ "GL_MESA_ycbcr_texture", NULL },
{ "GL_NV_blend_square", NULL },
+#if FEATURE_OES_EGL_image
+ { "GL_OES_EGL_image", GL_OES_EGL_image_functions },
+#endif
{ NULL, NULL }
};
diff --git a/src/mesa/drivers/dri/radeon/radeon_fbo.c b/src/mesa/drivers/dri/radeon/radeon_fbo.c
index 2a6fbaeaf0..a36a1dc94a 100644
--- a/src/mesa/drivers/dri/radeon/radeon_fbo.c
+++ b/src/mesa/drivers/dri/radeon/radeon_fbo.c
@@ -199,6 +199,48 @@ radeon_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffe
}
+#if FEATURE_OES_EGL_image
+static void
+radeon_image_target_renderbuffer_storage(struct gl_context *ctx,
+ struct gl_renderbuffer *rb,
+ void *image_handle)
+{
+ radeonContextPtr radeon = RADEON_CONTEXT(ctx);
+ struct radeon_renderbuffer *rrb;
+ __DRIscreen *screen;
+ __DRIimage *image;
+
+ screen = radeon->radeonScreen->driScreen;
+ image = screen->dri2.image->lookupEGLImage(screen, image_handle,
+ screen->loaderPrivate);
+ if (image == NULL)
+ return;
+
+ rrb = radeon_renderbuffer(rb);
+
+ if (ctx->Driver.Flush)
+ ctx->Driver.Flush(ctx); /* +r6/r7 */
+
+ if (rrb->bo)
+ radeon_bo_unref(rrb->bo);
+ rrb->bo = image->bo;
+ radeon_bo_ref(rrb->bo);
+ fprintf(stderr, "image->bo: %p, name: %d, rbs: w %d -> p %d\n", image->bo, image->bo->handle,
+ image->width, image->pitch);
+
+ rrb->cpp = image->cpp;
+ rrb->pitch = image->pitch * image->cpp;
+
+ rb->Format = image->format;
+ rb->InternalFormat = image->internal_format;
+ rb->Width = image->width;
+ rb->Height = image->height;
+ rb->Format = image->format;
+ rb->DataType = image->data_type;
+ rb->_BaseFormat = _mesa_base_fbo_format(radeon->glCtx,
+ image->internal_format);
+}
+#endif
/**
* Called for each hardware renderbuffer when a _window_ is resized.
@@ -622,6 +664,10 @@ void radeon_fbo_init(struct radeon_context *radeon)
#if FEATURE_EXT_framebuffer_blit
radeon->glCtx->Driver.BlitFramebuffer = _mesa_meta_BlitFramebuffer;
#endif
+#if FEATURE_OES_EGL_image
+ radeon->glCtx->Driver.EGLImageTargetRenderbufferStorage =
+ radeon_image_target_renderbuffer_storage;
+#endif
}
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 43ebc81093..b379240579 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -41,12 +41,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "main/mtypes.h"
#include "main/framebuffer.h"
#include "main/renderbuffer.h"
+#include "main/fbobject.h"
#define STANDALONE_MMIO
#include "radeon_chipset.h"
#include "radeon_macros.h"
#include "radeon_screen.h"
#include "radeon_common.h"
+#include "radeon_common_context.h"
#if defined(RADEON_R100)
#include "radeon_context.h"
#include "radeon_tex.h"
@@ -398,6 +400,188 @@ static const struct __DRI2flushExtensionRec radeonFlushExtension = {
dri2InvalidateDrawable,
};
+static __DRIimage *
+radeon_create_image_from_name(__DRIcontext *context,
+ int width, int height, int format,
+ int name, int pitch, void *loaderPrivate)
+{
+ __DRIimage *image;
+ radeonContextPtr radeon = context->driverPrivate;
+
+ if (name == 0)
+ return NULL;
+
+ image = CALLOC(sizeof *image);
+ if (image == NULL)
+ return NULL;
+
+ switch (format) {
+ case __DRI_IMAGE_FORMAT_RGB565:
+ image->format = MESA_FORMAT_RGB565;
+ image->internal_format = GL_RGB;
+ image->data_type = GL_UNSIGNED_BYTE;
+ break;
+ case __DRI_IMAGE_FORMAT_XRGB8888:
+ image->format = MESA_FORMAT_XRGB8888;
+ image->internal_format = GL_RGB;
+ image->data_type = GL_UNSIGNED_BYTE;
+ break;
+ case __DRI_IMAGE_FORMAT_ARGB8888:
+ image->format = MESA_FORMAT_ARGB8888;
+ image->internal_format = GL_RGBA;
+ image->data_type = GL_UNSIGNED_BYTE;
+ break;
+ default:
+ free(image);
+ return NULL;
+ }
+
+ image->data = loaderPrivate;
+ image->cpp = _mesa_get_format_bytes(image->format);
+ image->width = width;
+ image->pitch = pitch;
+ image->height = height;
+
+ image->bo = radeon_bo_open(radeon->radeonScreen->bom,
+ (uint32_t)name,
+ image->pitch * image->height * image->cpp,
+ 0,
+ RADEON_GEM_DOMAIN_VRAM,
+ 0);
+
+ if (image->bo == NULL) {
+ FREE(image);
+ return NULL;
+ }
+
+ return image;
+}
+
+static __DRIimage *
+radeon_create_image_from_renderbuffer(__DRIcontext *context,
+ int renderbuffer, void *loaderPrivate)
+{
+ __DRIimage *image;
+ radeonContextPtr radeon = context->driverPrivate;
+ struct gl_renderbuffer *rb;
+ struct radeon_renderbuffer *rrb;
+
+ rb = _mesa_lookup_renderbuffer(radeon->glCtx, renderbuffer);
+ if (!rb) {
+ _mesa_error(radeon->glCtx,
+ GL_INVALID_OPERATION, "glRenderbufferExternalMESA");
+ return NULL;
+ }
+
+ rrb = radeon_renderbuffer(rb);
+ image = CALLOC(sizeof *image);
+ if (image == NULL)
+ return NULL;
+
+ image->internal_format = rb->InternalFormat;
+ image->format = rb->Format;
+ image->cpp = rrb->cpp;
+ image->data_type = rb->DataType;
+ image->data = loaderPrivate;
+ radeon_bo_ref(rrb->bo);
+ image->bo = rrb->bo;
+
+ image->width = rb->Width;
+ image->height = rb->Height;
+ image->pitch = rrb->pitch / image->cpp;
+
+ return image;
+}
+
+static void
+radeon_destroy_image(__DRIimage *image)
+{
+ radeon_bo_unref(image->bo);
+ FREE(image);
+}
+
+static __DRIimage *
+radeon_create_image(__DRIscreen *screen,
+ int width, int height, int format,
+ unsigned int use,
+ void *loaderPrivate)
+{
+ __DRIimage *image;
+ radeonScreenPtr radeonScreen = screen->private;
+
+ image = CALLOC(sizeof *image);
+ if (image == NULL)
+ return NULL;
+
+ switch (format) {
+ case __DRI_IMAGE_FORMAT_RGB565:
+ image->format = MESA_FORMAT_RGB565;
+ image->internal_format = GL_RGB;
+ image->data_type = GL_UNSIGNED_BYTE;
+ break;
+ case __DRI_IMAGE_FORMAT_XRGB8888:
+ image->format = MESA_FORMAT_XRGB8888;
+ image->internal_format = GL_RGB;
+ image->data_type = GL_UNSIGNED_BYTE;
+ break;
+ case __DRI_IMAGE_FORMAT_ARGB8888:
+ image->format = MESA_FORMAT_ARGB8888;
+ image->internal_format = GL_RGBA;
+ image->data_type = GL_UNSIGNED_BYTE;
+ break;
+ default:
+ free(image);
+ return NULL;
+ }
+
+ image->data = loaderPrivate;
+ image->cpp = _mesa_get_format_bytes(image->format);
+ image->width = width;
+ image->height = height;
+ image->pitch = ((image->cpp * image->width + 255) & ~255) / image->cpp;
+
+ image->bo = radeon_bo_open(radeonScreen->bom,
+ 0,
+ image->pitch * image->height * image->cpp,
+ 0,
+ RADEON_GEM_DOMAIN_VRAM,
+ 0);
+
+ if (image->bo == NULL) {
+ FREE(image);
+ return NULL;
+ }
+
+ return image;
+}
+
+static GLboolean
+radeon_query_image(__DRIimage *image, int attrib, int *value)
+{
+ switch (attrib) {
+ case __DRI_IMAGE_ATTRIB_STRIDE:
+ *value = image->pitch * image->cpp;
+ return GL_TRUE;
+ case __DRI_IMAGE_ATTRIB_HANDLE:
+ *value = image->bo->handle;
+ return GL_TRUE;
+ case __DRI_IMAGE_ATTRIB_NAME:
+ radeon_gem_get_kernel_name(image->bo, (uint32_t *) value);
+ return GL_TRUE;
+ default:
+ return GL_FALSE;
+ }
+}
+
+static struct __DRIimageExtensionRec radeonImageExtension = {
+ { __DRI_IMAGE, __DRI_IMAGE_VERSION },
+ radeon_create_image_from_name,
+ radeon_create_image_from_renderbuffer,
+ radeon_destroy_image,
+ radeon_create_image,
+ radeon_query_image
+};
+
static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id)
{
screen->device_id = device_id;
@@ -1138,6 +1322,12 @@ radeonCreateScreen( __DRIscreen *sPriv )
else
screen->chip_flags |= RADEON_CLASS_R600;
+ /* set group bytes for r6xx+ */
+ if (screen->chip_family >= CHIP_FAMILY_CEDAR)
+ screen->group_bytes = 512;
+ else
+ screen->group_bytes = 256;
+
screen->cpp = dri_priv->bpp / 8;
screen->AGPMode = dri_priv->AGPMode;
@@ -1382,8 +1572,13 @@ radeonCreateScreen2(__DRIscreen *sPriv)
else
screen->chip_flags |= RADEON_CLASS_R600;
- /* r6xx+ tiling */
- if (IS_R600_CLASS(screen) && (sPriv->drm_version.minor >= 6)) {
+ /* r6xx+ tiling, default group bytes */
+ if (screen->chip_family >= CHIP_FAMILY_CEDAR)
+ screen->group_bytes = 512;
+ else
+ screen->group_bytes = 256;
+ if (IS_R600_CLASS(screen) && (sPriv->drm_version.minor >= 6) &&
+ (screen->chip_family < CHIP_FAMILY_CEDAR)) {
ret = radeonGetParam(sPriv, RADEON_INFO_TILE_CONFIG, &temp);
if (ret)
fprintf(stderr, "failed to get tiling info\n");
@@ -1507,6 +1702,7 @@ radeonCreateScreen2(__DRIscreen *sPriv)
#endif
screen->extensions[i++] = &radeonFlushExtension.base;
+ screen->extensions[i++] = &radeonImageExtension.base;
screen->extensions[i++] = NULL;
sPriv->extensions = screen->extensions;
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.h b/src/mesa/drivers/dri/radeon/radeon_screen.h
index 2b33201a53..417ebf3b06 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.h
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.h
@@ -121,6 +121,17 @@ typedef struct radeon_screen {
GLint r7xx_bank_op;
} radeonScreenRec, *radeonScreenPtr;
+struct __DRIimageRec {
+ struct radeon_bo *bo;
+ GLenum internal_format;
+ GLuint format;
+ GLenum data_type;
+ int width, height; /* in pixels */
+ int pitch; /* in pixels */
+ int cpp;
+ void *data;
+};
+
#define IS_R100_CLASS(screen) \
((screen->chip_flags & RADEON_CLASS_MASK) == RADEON_CLASS_R100)
#define IS_R200_CLASS(screen) \
diff --git a/src/mesa/drivers/dri/radeon/radeon_swtcl.c b/src/mesa/drivers/dri/radeon/radeon_swtcl.c
index f5b0df6ef5..ff3506b225 100644
--- a/src/mesa/drivers/dri/radeon/radeon_swtcl.c
+++ b/src/mesa/drivers/dri/radeon/radeon_swtcl.c
@@ -412,6 +412,8 @@ static GLboolean radeon_run_render( struct gl_context *ctx,
return GL_TRUE;
radeon_prepare_render(&rmesa->radeon);
+ if (rmesa->radeon.NewGLState)
+ radeonValidateState( ctx );
tnl->Driver.Render.Start( ctx );
diff --git a/src/mesa/drivers/dri/radeon/radeon_tcl.c b/src/mesa/drivers/dri/radeon/radeon_tcl.c
index c59b413012..5d2e8f4870 100644
--- a/src/mesa/drivers/dri/radeon/radeon_tcl.c
+++ b/src/mesa/drivers/dri/radeon/radeon_tcl.c
@@ -253,6 +253,8 @@ void radeonTclPrimitive( struct gl_context *ctx,
GLuint newprim = hw_prim | RADEON_CP_VC_CNTL_TCL_ENABLE;
radeon_prepare_render(&rmesa->radeon);
+ if (rmesa->radeon.NewGLState)
+ radeonValidateState( ctx );
if (newprim != rmesa->tcl.hw_primitive ||
!discrete_prim[hw_prim&0xf]) {
diff --git a/src/mesa/drivers/dri/radeon/radeon_tex.c b/src/mesa/drivers/dri/radeon/radeon_tex.c
index d5285e24cd..83b1d1b1d7 100644
--- a/src/mesa/drivers/dri/radeon/radeon_tex.c
+++ b/src/mesa/drivers/dri/radeon/radeon_tex.c
@@ -465,5 +465,9 @@ void radeonInitTextureFuncs( radeonContextPtr radeon, struct dd_function_table *
functions->MapTexture = radeonMapTexture;
functions->UnmapTexture = radeonUnmapTexture;
+#if FEATURE_OES_EGL_image
+ functions->EGLImageTargetTexture2D = radeon_image_target_texture_2d;
+#endif
+
driInitTextureFormats();
}
diff --git a/src/mesa/drivers/dri/radeon/radeon_texstate.c b/src/mesa/drivers/dri/radeon/radeon_texstate.c
index dd8ecdd500..32c021cb54 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texstate.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texstate.c
@@ -653,6 +653,7 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_form
radeonTexObjPtr t;
uint32_t pitch_val;
uint32_t internalFormat, type, format;
+ gl_format texFormat;
type = GL_BGRA;
format = GL_UNSIGNED_BYTE;
@@ -692,10 +693,6 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_form
radeon_miptree_unreference(&t->mt);
radeon_miptree_unreference(&rImage->mt);
- _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
- rb->base.Width, rb->base.Height, 1, 0, rb->cpp);
- texImage->RowStride = rb->pitch / rb->cpp;
-
rImage->bo = rb->bo;
radeon_bo_ref(rImage->bo);
t->bo = rb->bo;
@@ -705,23 +702,34 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_form
t->override_offset = 0;
switch (rb->cpp) {
case 4:
- if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
+ if (texture_format == __DRI_TEXTURE_FORMAT_RGB) {
t->pp_txformat = tx_table[MESA_FORMAT_RGB888].format;
- else
+ texFormat = MESA_FORMAT_RGB888;
+ }
+ else {
t->pp_txformat = tx_table[MESA_FORMAT_ARGB8888].format;
+ texFormat = MESA_FORMAT_ARGB8888;
+ }
t->pp_txfilter |= tx_table[MESA_FORMAT_ARGB8888].filter;
break;
case 3:
default:
+ texFormat = MESA_FORMAT_RGB888;
t->pp_txformat = tx_table[MESA_FORMAT_RGB888].format;
t->pp_txfilter |= tx_table[MESA_FORMAT_RGB888].filter;
break;
case 2:
+ texFormat = MESA_FORMAT_RGB565;
t->pp_txformat = tx_table[MESA_FORMAT_RGB565].format;
t->pp_txfilter |= tx_table[MESA_FORMAT_RGB565].filter;
break;
}
+ _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
+ rb->base.Width, rb->base.Height, 1, 0,
+ rb->cpp, texFormat);
+ texImage->RowStride = rb->pitch / rb->cpp;
+
t->pp_txpitch &= (1 << 13) -1;
pitch_val = rb->pitch;
diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c
index 18ccb512d7..8b1e34fe76 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texture.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texture.c
@@ -1007,3 +1007,67 @@ unsigned radeonIsFormatRenderable(gl_format mesa_format)
return 0;
}
}
+
+#if FEATURE_OES_EGL_image
+void radeon_image_target_texture_2d(struct gl_context *ctx, GLenum target,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage,
+ GLeglImageOES image_handle)
+{
+ radeonContextPtr radeon = RADEON_CONTEXT(ctx);
+ radeonTexObj *t = radeon_tex_obj(texObj);
+ radeon_texture_image *radeonImage = get_radeon_texture_image(texImage);
+ __DRIscreen *screen;
+ __DRIimage *image;
+
+ screen = radeon->dri.screen;
+ image = screen->dri2.image->lookupEGLImage(screen, image_handle,
+ screen->loaderPrivate);
+ if (image == NULL)
+ return;
+
+ radeonFreeTexImageData(ctx, texImage);
+
+ texImage->Width = image->width;
+ texImage->Height = image->height;
+ texImage->Depth = 1;
+ texImage->_BaseFormat = GL_RGBA;
+ texImage->TexFormat = image->format;
+ texImage->RowStride = image->pitch;
+ texImage->InternalFormat = image->internal_format;
+
+ if(t->mt)
+ {
+ radeon_miptree_unreference(&t->mt);
+ t->mt = NULL;
+ }
+
+ /* NOTE: The following is *very* ugly and will probably break. But
+ I don't know how to deal with it, without creating a whole new
+ function like radeon_miptree_from_bo() so I'm going with the
+ easy but error-prone way. */
+
+ radeon_try_alloc_miptree(radeon, t);
+
+ radeonImage->mtface = _mesa_tex_target_to_face(target);
+ radeonImage->mtlevel = 0;
+ radeon_miptree_reference(t->mt, &radeonImage->mt);
+
+ if (t->mt == NULL)
+ {
+ radeon_print(RADEON_TEXTURE, RADEON_VERBOSE,
+ "%s Failed to allocate miptree.\n", __func__);
+ return;
+ }
+
+ /* Particularly ugly: this is guaranteed to break, if image->bo is
+ not of the required size for a miptree. */
+ radeon_bo_unref(t->mt->bo);
+ radeon_bo_ref(image->bo);
+ t->mt->bo = image->bo;
+
+ if (!radeon_miptree_matches_image(t->mt, &radeonImage->base,
+ radeonImage->mtface, 0))
+ fprintf(stderr, "miptree doesn't match image\n");
+}
+#endif
diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.h b/src/mesa/drivers/dri/radeon/radeon_texture.h
index 9138a7d554..a1908c6bc7 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texture.h
+++ b/src/mesa/drivers/dri/radeon/radeon_texture.h
@@ -137,4 +137,11 @@ void radeonCopyTexSubImage2D(struct gl_context *ctx, GLenum target, GLint level,
unsigned radeonIsFormatRenderable(gl_format mesa_format);
+#if FEATURE_OES_EGL_image
+void radeon_image_target_texture_2d(struct gl_context *ctx, GLenum target,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage,
+ GLeglImageOES image_handle);
+#endif
+
#endif
diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c
index b3aaa0e504..92fb4f4488 100644
--- a/src/mesa/drivers/dri/savage/savage_xmesa.c
+++ b/src/mesa/drivers/dri/savage/savage_xmesa.c
@@ -50,7 +50,6 @@
#include "savagespan.h"
#include "savagetris.h"
#include "savageioctl.h"
-#include "savage_bci.h"
#include "savage_dri.h"
diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c
index 52ba3acf65..c7940e9c0d 100644
--- a/src/mesa/drivers/dri/swrast/swrast.c
+++ b/src/mesa/drivers/dri/swrast/swrast.c
@@ -48,7 +48,6 @@
#include "utils.h"
#include "main/teximage.h"
-#include "main/texfetch.h"
#include "main/texformat.h"
#include "main/texstate.h"
@@ -69,6 +68,7 @@ static void swrastSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
struct gl_texture_object *texObj;
struct gl_texture_image *texImage;
uint32_t internalFormat;
+ gl_format texFormat;
dri_ctx = pDRICtx->driverPrivate;
@@ -82,15 +82,13 @@ static void swrastSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
sPriv->swrast_loader->getDrawableInfo(dPriv, &x, &y, &w, &h, dPriv->loaderPrivate);
- _mesa_init_teximage_fields(&dri_ctx->Base, target, texImage,
- w, h, 1, 0, internalFormat);
-
if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
- texImage->TexFormat = MESA_FORMAT_XRGB8888;
+ texFormat = MESA_FORMAT_XRGB8888;
else
- texImage->TexFormat = MESA_FORMAT_ARGB8888;
+ texFormat = MESA_FORMAT_ARGB8888;
- _mesa_set_fetch_functions(texImage, 2);
+ _mesa_init_teximage_fields(&dri_ctx->Base, target, texImage,
+ w, h, 1, 0, internalFormat, texFormat);
sPriv->swrast_loader->getImage(dPriv, x, y, w, h, (char *)texImage->Data,
dPriv->loaderPrivate);
diff --git a/src/mesa/drivers/dri/tdfx/tdfx_tex.c b/src/mesa/drivers/dri/tdfx/tdfx_tex.c
index 0326b847cb..4cca243d07 100644
--- a/src/mesa/drivers/dri/tdfx/tdfx_tex.c
+++ b/src/mesa/drivers/dri/tdfx/tdfx_tex.c
@@ -698,8 +698,8 @@ convertPalette(FxU32 data[256], const struct gl_color_table *table)
return GR_TEXTABLE_PALETTE_6666_EXT;
default:
/* XXX fixme: how can this happen? */
- _mesa_error(NULL, GL_INVALID_ENUM, "convertPalette: table->Format == %s",
- _mesa_lookup_enum_by_nr(table->Format));
+ _mesa_error(NULL, GL_INVALID_ENUM, "convertPalette: table->_BaseFormat == %s",
+ _mesa_lookup_enum_by_nr(table->_BaseFormat));
return GR_TEXTABLE_PALETTE;
}
}
diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c
index 37dc35cbed..10ba6b7931 100644
--- a/src/mesa/drivers/osmesa/osmesa.c
+++ b/src/mesa/drivers/osmesa/osmesa.c
@@ -1327,10 +1327,12 @@ OSMesaMakeCurrent( OSMesaContext osmesa, void *buffer, GLenum type,
* that converts rendering from CHAN_BITS to the user-requested channel
* size.
*/
- osmesa->rb = new_osmesa_renderbuffer(&osmesa->mesa, osmesa->format, type);
- _mesa_remove_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT);
- _mesa_add_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT, osmesa->rb);
- assert(osmesa->rb->RefCount == 2);
+ if (!osmesa->rb) {
+ osmesa->rb = new_osmesa_renderbuffer(&osmesa->mesa, osmesa->format, type);
+ _mesa_remove_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT);
+ _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()
diff --git a/src/mesa/drivers/x11/fakeglx.c b/src/mesa/drivers/x11/fakeglx.c
index f1e62b6bd4..577e27d4da 100644
--- a/src/mesa/drivers/x11/fakeglx.c
+++ b/src/mesa/drivers/x11/fakeglx.c
@@ -868,6 +868,7 @@ register_with_display(Display *dpy)
XExtCodes *c = XAddExtension(dpy);
ext = dpy->ext_procs; /* new extension is at head of list */
assert(c->extension == ext->codes.extension);
+ (void) c; /* silence warning */
ext->name = _mesa_strdup(extName);
ext->close_display = close_display_callback;
}
diff --git a/src/mesa/drivers/x11/glxapi.c b/src/mesa/drivers/x11/glxapi.c
index 8c3f2730f3..255a37bf29 100644
--- a/src/mesa/drivers/x11/glxapi.c
+++ b/src/mesa/drivers/x11/glxapi.c
@@ -58,7 +58,6 @@ struct display_dispatch {
#ifdef GLX_INDIRECT_RENDERING
#include "glapi/glapitable.h"
-#include "glapi/glapidispatch.h"
#define KEYWORD1 PUBLIC
@@ -69,10 +68,10 @@ struct display_dispatch {
#endif
#define DISPATCH(FUNC, ARGS, MESSAGE) \
- CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+ GET_DISPATCH()->FUNC ARGS
#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
- return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+ return GET_DISPATCH()->FUNC ARGS
/* skip normal ones */
#define _GLAPI_SKIP_NORMAL_ENTRY_POINTS
diff --git a/src/mesa/main/accum.h b/src/mesa/main/accum.h
index def692a73a..9344244497 100644
--- a/src/mesa/main/accum.h
+++ b/src/mesa/main/accum.h
@@ -37,8 +37,11 @@
#ifndef ACCUM_H
#define ACCUM_H
+#include "main/glheader.h"
+#include "main/mfeatures.h"
-#include "main/mtypes.h"
+struct _glapi_table;
+struct gl_context;
#if FEATURE_accum
diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c
index 172c33b47b..c22e18c9fb 100644
--- a/src/mesa/main/api_arrayelt.c
+++ b/src/mesa/main/api_arrayelt.c
@@ -22,6 +22,14 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+/**
+ * This file implements the glArrayElement() function.
+ * It involves looking at the format/type of all the enabled vertex arrays
+ * and emitting a list of pointers to functions which set the per-vertex
+ * state for the element/index.
+ */
+
+
/* Author:
* Keith Whitwell <keith@tungstengraphics.com>
*/
@@ -70,11 +78,13 @@ typedef struct {
*/
#define TYPE_IDX(t) ( (t) == GL_DOUBLE ? 7 : (t) & 7 )
+#define NUM_TYPES 8
+
#if FEATURE_arrayelt
-static const int ColorFuncs[2][8] = {
+static const int ColorFuncs[2][NUM_TYPES] = {
{
_gloffset_Color3bv,
_gloffset_Color3ubv,
@@ -97,7 +107,7 @@ static const int ColorFuncs[2][8] = {
},
};
-static const int VertexFuncs[3][8] = {
+static const int VertexFuncs[3][NUM_TYPES] = {
{
-1,
-1,
@@ -130,7 +140,7 @@ static const int VertexFuncs[3][8] = {
},
};
-static const int IndexFuncs[8] = {
+static const int IndexFuncs[NUM_TYPES] = {
-1,
_gloffset_Indexubv,
_gloffset_Indexsv,
@@ -141,7 +151,7 @@ static const int IndexFuncs[8] = {
_gloffset_Indexdv,
};
-static const int NormalFuncs[8] = {
+static const int NormalFuncs[NUM_TYPES] = {
_gloffset_Normal3bv,
-1,
_gloffset_Normal3sv,
@@ -153,8 +163,8 @@ static const int NormalFuncs[8] = {
};
/* Note: _gloffset_* for these may not be a compile-time constant. */
-static int SecondaryColorFuncs[8];
-static int FogCoordFuncs[8];
+static int SecondaryColorFuncs[NUM_TYPES];
+static int FogCoordFuncs[NUM_TYPES];
/**
@@ -163,39 +173,46 @@ static int FogCoordFuncs[8];
/* GL_BYTE attributes */
-static void GLAPIENTRY VertexAttrib1NbvNV(GLuint index, const GLbyte *v)
+static void
+VertexAttrib1NbvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1bvNV(GLuint index, const GLbyte *v)
+static void
+VertexAttrib1bvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NbvNV(GLuint index, const GLbyte *v)
+static void
+VertexAttrib2NbvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2bvNV(GLuint index, const GLbyte *v)
+static void
+VertexAttrib2bvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NbvNV(GLuint index, const GLbyte *v)
+static void
+VertexAttrib3NbvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]),
BYTE_TO_FLOAT(v[1]),
BYTE_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3bvNV(GLuint index, const GLbyte *v)
+static void
+VertexAttrib3bvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NbvNV(GLuint index, const GLbyte *v)
+static void
+VertexAttrib4NbvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]),
BYTE_TO_FLOAT(v[1]),
@@ -203,94 +220,114 @@ static void GLAPIENTRY VertexAttrib4NbvNV(GLuint index, const GLbyte *v)
BYTE_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4bvNV(GLuint index, const GLbyte *v)
+static void
+VertexAttrib4bvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
}
/* GL_UNSIGNED_BYTE attributes */
-static void GLAPIENTRY VertexAttrib1NubvNV(GLuint index, const GLubyte *v)
+static void
+VertexAttrib1NubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1ubvNV(GLuint index, const GLubyte *v)
+static void
+VertexAttrib1ubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NubvNV(GLuint index, const GLubyte *v)
+static void
+VertexAttrib2NubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]),
- UBYTE_TO_FLOAT(v[1])));
+ UBYTE_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2ubvNV(GLuint index, const GLubyte *v)
+static void
+VertexAttrib2ubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NubvNV(GLuint index, const GLubyte *v)
+static void
+VertexAttrib3NubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]),
UBYTE_TO_FLOAT(v[1]),
UBYTE_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3ubvNV(GLuint index, const GLubyte *v)
+static void
+VertexAttrib3ubvNV(GLuint index, const GLubyte *v)
{
- CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
+ CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0],
+ (GLfloat)v[1], (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NubvNV(GLuint index, const GLubyte *v)
+static void
+VertexAttrib4NubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]),
- UBYTE_TO_FLOAT(v[1]),
- UBYTE_TO_FLOAT(v[2]),
- UBYTE_TO_FLOAT(v[3])));
+ UBYTE_TO_FLOAT(v[1]),
+ UBYTE_TO_FLOAT(v[2]),
+ UBYTE_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
+static void
+VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
{
- CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
+ CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0],
+ (GLfloat)v[1], (GLfloat)v[2],
+ (GLfloat)v[3]));
}
/* GL_SHORT attributes */
-static void GLAPIENTRY VertexAttrib1NsvNV(GLuint index, const GLshort *v)
+static void
+VertexAttrib1NsvNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1svNV(GLuint index, const GLshort *v)
+static void
+VertexAttrib1svNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NsvNV(GLuint index, const GLshort *v)
+static void
+VertexAttrib2NsvNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]),
- SHORT_TO_FLOAT(v[1])));
+ SHORT_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2svNV(GLuint index, const GLshort *v)
+static void
+VertexAttrib2svNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NsvNV(GLuint index, const GLshort *v)
+static void
+VertexAttrib3NsvNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]),
SHORT_TO_FLOAT(v[1]),
SHORT_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3svNV(GLuint index, const GLshort *v)
+static void
+VertexAttrib3svNV(GLuint index, const GLshort *v)
{
- CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
+ CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NsvNV(GLuint index, const GLshort *v)
+static void
+VertexAttrib4NsvNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]),
SHORT_TO_FLOAT(v[1]),
@@ -298,47 +335,58 @@ static void GLAPIENTRY VertexAttrib4NsvNV(GLuint index, const GLshort *v)
SHORT_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4svNV(GLuint index, const GLshort *v)
+static void
+VertexAttrib4svNV(GLuint index, const GLshort *v)
{
- CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
+ CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2], (GLfloat)v[3]));
}
/* GL_UNSIGNED_SHORT attributes */
-static void GLAPIENTRY VertexAttrib1NusvNV(GLuint index, const GLushort *v)
+static void
+VertexAttrib1NusvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1usvNV(GLuint index, const GLushort *v)
+static void
+VertexAttrib1usvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NusvNV(GLuint index, const GLushort *v)
+static void
+VertexAttrib2NusvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
USHORT_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2usvNV(GLuint index, const GLushort *v)
+static void
+VertexAttrib2usvNV(GLuint index, const GLushort *v)
{
- CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
+ CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0],
+ (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NusvNV(GLuint index, const GLushort *v)
+static void
+VertexAttrib3NusvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
USHORT_TO_FLOAT(v[1]),
USHORT_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3usvNV(GLuint index, const GLushort *v)
+static void
+VertexAttrib3usvNV(GLuint index, const GLushort *v)
{
- CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
+ CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NusvNV(GLuint index, const GLushort *v)
+static void
+VertexAttrib4NusvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
USHORT_TO_FLOAT(v[1]),
@@ -346,95 +394,116 @@ static void GLAPIENTRY VertexAttrib4NusvNV(GLuint index, const GLushort *v)
USHORT_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4usvNV(GLuint index, const GLushort *v)
+static void
+VertexAttrib4usvNV(GLuint index, const GLushort *v)
{
- CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
+ CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2], (GLfloat)v[3]));
}
/* GL_INT attributes */
-static void GLAPIENTRY VertexAttrib1NivNV(GLuint index, const GLint *v)
+static void
+VertexAttrib1NivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1ivNV(GLuint index, const GLint *v)
+static void
+VertexAttrib1ivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NivNV(GLuint index, const GLint *v)
+static void
+VertexAttrib2NivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
INT_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2ivNV(GLuint index, const GLint *v)
+static void
+VertexAttrib2ivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NivNV(GLuint index, const GLint *v)
+static void
+VertexAttrib3NivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
INT_TO_FLOAT(v[1]),
INT_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3ivNV(GLuint index, const GLint *v)
+static void
+VertexAttrib3ivNV(GLuint index, const GLint *v)
{
- CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
+ CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NivNV(GLuint index, const GLint *v)
+static void
+VertexAttrib4NivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
- INT_TO_FLOAT(v[1]),
- INT_TO_FLOAT(v[2]),
- INT_TO_FLOAT(v[3])));
+ INT_TO_FLOAT(v[1]),
+ INT_TO_FLOAT(v[2]),
+ INT_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4ivNV(GLuint index, const GLint *v)
+static void
+VertexAttrib4ivNV(GLuint index, const GLint *v)
{
- CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
+ CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2], (GLfloat)v[3]));
}
/* GL_UNSIGNED_INT attributes */
-static void GLAPIENTRY VertexAttrib1NuivNV(GLuint index, const GLuint *v)
+static void
+VertexAttrib1NuivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1uivNV(GLuint index, const GLuint *v)
+static void
+VertexAttrib1uivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NuivNV(GLuint index, const GLuint *v)
+static void
+VertexAttrib2NuivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
- UINT_TO_FLOAT(v[1])));
+ UINT_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2uivNV(GLuint index, const GLuint *v)
+static void
+VertexAttrib2uivNV(GLuint index, const GLuint *v)
{
- CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
+ CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0],
+ (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NuivNV(GLuint index, const GLuint *v)
+static void
+VertexAttrib3NuivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
UINT_TO_FLOAT(v[1]),
UINT_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3uivNV(GLuint index, const GLuint *v)
+static void
+VertexAttrib3uivNV(GLuint index, const GLuint *v)
{
- CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
+ CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NuivNV(GLuint index, const GLuint *v)
+static void
+VertexAttrib4NuivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
UINT_TO_FLOAT(v[1]),
@@ -442,51 +511,61 @@ static void GLAPIENTRY VertexAttrib4NuivNV(GLuint index, const GLuint *v)
UINT_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4uivNV(GLuint index, const GLuint *v)
+static void
+VertexAttrib4uivNV(GLuint index, const GLuint *v)
{
- CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
+ CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2], (GLfloat)v[3]));
}
/* GL_FLOAT attributes */
-static void GLAPIENTRY VertexAttrib1fvNV(GLuint index, const GLfloat *v)
+static void
+VertexAttrib1fvNV(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib1fvNV(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib2fvNV(GLuint index, const GLfloat *v)
+static void
+VertexAttrib2fvNV(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib2fvNV(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib3fvNV(GLuint index, const GLfloat *v)
+static void
+VertexAttrib3fvNV(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib3fvNV(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib4fvNV(GLuint index, const GLfloat *v)
+static void
+VertexAttrib4fvNV(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib4fvNV(GET_DISPATCH(), (index, v));
}
/* GL_DOUBLE attributes */
-static void GLAPIENTRY VertexAttrib1dvNV(GLuint index, const GLdouble *v)
+static void
+VertexAttrib1dvNV(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib1dvNV(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib2dvNV(GLuint index, const GLdouble *v)
+static void
+VertexAttrib2dvNV(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib2dvNV(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib3dvNV(GLuint index, const GLdouble *v)
+static void
+VertexAttrib3dvNV(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib3dvNV(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib4dvNV(GLuint index, const GLdouble *v)
+static void
+VertexAttrib4dvNV(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib4dvNV(GET_DISPATCH(), (index, v));
}
@@ -495,7 +574,7 @@ static void GLAPIENTRY VertexAttrib4dvNV(GLuint index, const GLdouble *v)
/*
* Array [size][type] of VertexAttrib functions
*/
-static attrib_func AttribFuncsNV[2][4][8] = {
+static attrib_func AttribFuncsNV[2][4][NUM_TYPES] = {
{
/* non-normalized */
{
@@ -599,39 +678,46 @@ static attrib_func AttribFuncsNV[2][4][8] = {
/* GL_BYTE attributes */
-static void GLAPIENTRY VertexAttrib1NbvARB(GLuint index, const GLbyte *v)
+static void
+VertexAttrib1NbvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1bvARB(GLuint index, const GLbyte *v)
+static void
+VertexAttrib1bvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NbvARB(GLuint index, const GLbyte *v)
+static void
+VertexAttrib2NbvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2bvARB(GLuint index, const GLbyte *v)
+static void
+VertexAttrib2bvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NbvARB(GLuint index, const GLbyte *v)
+static void
+VertexAttrib3NbvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]),
BYTE_TO_FLOAT(v[1]),
BYTE_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3bvARB(GLuint index, const GLbyte *v)
+static void
+VertexAttrib3bvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NbvARB(GLuint index, const GLbyte *v)
+static void
+VertexAttrib4NbvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]),
BYTE_TO_FLOAT(v[1]),
@@ -639,142 +725,188 @@ static void GLAPIENTRY VertexAttrib4NbvARB(GLuint index, const GLbyte *v)
BYTE_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4bvARB(GLuint index, const GLbyte *v)
+static void
+VertexAttrib4bvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
}
/* GL_UNSIGNED_BYTE attributes */
-static void GLAPIENTRY VertexAttrib1NubvARB(GLuint index, const GLubyte *v)
+static void
+VertexAttrib1NubvARB(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1ubvARB(GLuint index, const GLubyte *v)
+static void
+VertexAttrib1ubvARB(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NubvARB(GLuint index, const GLubyte *v)
+static void
+VertexAttrib2NubvARB(GLuint index, const GLubyte *v)
{
- CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]),
- UBYTE_TO_FLOAT(v[1])));
+ CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,
+ UBYTE_TO_FLOAT(v[0]),
+ UBYTE_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2ubvARB(GLuint index, const GLubyte *v)
+static void
+VertexAttrib2ubvARB(GLuint index, const GLubyte *v)
{
- CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
+ CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,
+ (GLfloat)v[0], (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NubvARB(GLuint index, const GLubyte *v)
+static void
+VertexAttrib3NubvARB(GLuint index, const GLubyte *v)
{
- CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]),
- UBYTE_TO_FLOAT(v[1]),
- UBYTE_TO_FLOAT(v[2])));
+ CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,
+ UBYTE_TO_FLOAT(v[0]),
+ UBYTE_TO_FLOAT(v[1]),
+ UBYTE_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3ubvARB(GLuint index, const GLubyte *v)
+static void
+VertexAttrib3ubvARB(GLuint index, const GLubyte *v)
{
- CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
+ CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,
+ (GLfloat)v[0],
+ (GLfloat)v[1],
+ (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NubvARB(GLuint index, const GLubyte *v)
+static void
+VertexAttrib4NubvARB(GLuint index, const GLubyte *v)
{
- CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]),
- UBYTE_TO_FLOAT(v[1]),
- UBYTE_TO_FLOAT(v[2]),
- UBYTE_TO_FLOAT(v[3])));
+ CALL_VertexAttrib4fARB(GET_DISPATCH(),
+ (index,
+ UBYTE_TO_FLOAT(v[0]),
+ UBYTE_TO_FLOAT(v[1]),
+ UBYTE_TO_FLOAT(v[2]),
+ UBYTE_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4ubvARB(GLuint index, const GLubyte *v)
+static void
+VertexAttrib4ubvARB(GLuint index, const GLubyte *v)
{
- CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
+ CALL_VertexAttrib4fARB(GET_DISPATCH(),
+ (index,
+ (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2], (GLfloat)v[3]));
}
/* GL_SHORT attributes */
-static void GLAPIENTRY VertexAttrib1NsvARB(GLuint index, const GLshort *v)
+static void
+VertexAttrib1NsvARB(GLuint index, const GLshort *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1svARB(GLuint index, const GLshort *v)
+static void
+VertexAttrib1svARB(GLuint index, const GLshort *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NsvARB(GLuint index, const GLshort *v)
+static void
+VertexAttrib2NsvARB(GLuint index, const GLshort *v)
{
- CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]),
- SHORT_TO_FLOAT(v[1])));
+ CALL_VertexAttrib2fARB(GET_DISPATCH(),
+ (index, SHORT_TO_FLOAT(v[0]),
+ SHORT_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2svARB(GLuint index, const GLshort *v)
+static void
+VertexAttrib2svARB(GLuint index, const GLshort *v)
{
- CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
+ CALL_VertexAttrib2fARB(GET_DISPATCH(),
+ (index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NsvARB(GLuint index, const GLshort *v)
+static void
+VertexAttrib3NsvARB(GLuint index, const GLshort *v)
{
- CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]),
- SHORT_TO_FLOAT(v[1]),
- SHORT_TO_FLOAT(v[2])));
+ CALL_VertexAttrib3fARB(GET_DISPATCH(),
+ (index,
+ SHORT_TO_FLOAT(v[0]),
+ SHORT_TO_FLOAT(v[1]),
+ SHORT_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3svARB(GLuint index, const GLshort *v)
+static void
+VertexAttrib3svARB(GLuint index, const GLshort *v)
{
- CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
+ CALL_VertexAttrib3fARB(GET_DISPATCH(),
+ (index,
+ (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NsvARB(GLuint index, const GLshort *v)
+static void
+VertexAttrib4NsvARB(GLuint index, const GLshort *v)
{
- CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]),
- SHORT_TO_FLOAT(v[1]),
- SHORT_TO_FLOAT(v[2]),
- SHORT_TO_FLOAT(v[3])));
+ CALL_VertexAttrib4fARB(GET_DISPATCH(),
+ (index,
+ SHORT_TO_FLOAT(v[0]),
+ SHORT_TO_FLOAT(v[1]),
+ SHORT_TO_FLOAT(v[2]),
+ SHORT_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4svARB(GLuint index, const GLshort *v)
+static void
+VertexAttrib4svARB(GLuint index, const GLshort *v)
{
- CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
+ CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2], (GLfloat)v[3]));
}
/* GL_UNSIGNED_SHORT attributes */
-static void GLAPIENTRY VertexAttrib1NusvARB(GLuint index, const GLushort *v)
+static void
+VertexAttrib1NusvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1usvARB(GLuint index, const GLushort *v)
+static void
+VertexAttrib1usvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NusvARB(GLuint index, const GLushort *v)
+static void
+VertexAttrib2NusvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
USHORT_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2usvARB(GLuint index, const GLushort *v)
+static void
+VertexAttrib2usvARB(GLuint index, const GLushort *v)
{
- CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
+ CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
+ (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NusvARB(GLuint index, const GLushort *v)
+static void
+VertexAttrib3NusvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
USHORT_TO_FLOAT(v[1]),
USHORT_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3usvARB(GLuint index, const GLushort *v)
+static void
+VertexAttrib3usvARB(GLuint index, const GLushort *v)
{
- CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
+ CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
+ (GLfloat)v[1], (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NusvARB(GLuint index, const GLushort *v)
+static void
+VertexAttrib4NusvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
USHORT_TO_FLOAT(v[1]),
@@ -782,47 +914,57 @@ static void GLAPIENTRY VertexAttrib4NusvARB(GLuint index, const GLushort *v)
USHORT_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4usvARB(GLuint index, const GLushort *v)
+static void
+VertexAttrib4usvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
}
/* GL_INT attributes */
-static void GLAPIENTRY VertexAttrib1NivARB(GLuint index, const GLint *v)
+static void
+VertexAttrib1NivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1ivARB(GLuint index, const GLint *v)
+static void
+VertexAttrib1ivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NivARB(GLuint index, const GLint *v)
+static void
+VertexAttrib2NivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
INT_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2ivARB(GLuint index, const GLint *v)
+static void
+VertexAttrib2ivARB(GLuint index, const GLint *v)
{
- CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
+ CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
+ (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NivARB(GLuint index, const GLint *v)
+static void
+VertexAttrib3NivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
INT_TO_FLOAT(v[1]),
INT_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3ivARB(GLuint index, const GLint *v)
+static void
+VertexAttrib3ivARB(GLuint index, const GLint *v)
{
- CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
+ CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
+ (GLfloat)v[1], (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NivARB(GLuint index, const GLint *v)
+static void
+VertexAttrib4NivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
INT_TO_FLOAT(v[1]),
@@ -830,108 +972,287 @@ static void GLAPIENTRY VertexAttrib4NivARB(GLuint index, const GLint *v)
INT_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4ivARB(GLuint index, const GLint *v)
+static void
+VertexAttrib4ivARB(GLuint index, const GLint *v)
{
- CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
+ CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2], (GLfloat)v[3]));
}
/* GL_UNSIGNED_INT attributes */
-static void GLAPIENTRY VertexAttrib1NuivARB(GLuint index, const GLuint *v)
+static void
+VertexAttrib1NuivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0])));
}
-static void GLAPIENTRY VertexAttrib1uivARB(GLuint index, const GLuint *v)
+static void
+VertexAttrib1uivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void GLAPIENTRY VertexAttrib2NuivARB(GLuint index, const GLuint *v)
+static void
+VertexAttrib2NuivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
- UINT_TO_FLOAT(v[1])));
+ UINT_TO_FLOAT(v[1])));
}
-static void GLAPIENTRY VertexAttrib2uivARB(GLuint index, const GLuint *v)
+static void
+VertexAttrib2uivARB(GLuint index, const GLuint *v)
{
- CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
+ CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
+ (GLfloat)v[1]));
}
-static void GLAPIENTRY VertexAttrib3NuivARB(GLuint index, const GLuint *v)
+static void
+VertexAttrib3NuivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
- UINT_TO_FLOAT(v[1]),
- UINT_TO_FLOAT(v[2])));
+ UINT_TO_FLOAT(v[1]),
+ UINT_TO_FLOAT(v[2])));
}
-static void GLAPIENTRY VertexAttrib3uivARB(GLuint index, const GLuint *v)
+static void
+VertexAttrib3uivARB(GLuint index, const GLuint *v)
{
- CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
+ CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
+ (GLfloat)v[1], (GLfloat)v[2]));
}
-static void GLAPIENTRY VertexAttrib4NuivARB(GLuint index, const GLuint *v)
+static void
+VertexAttrib4NuivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
- UINT_TO_FLOAT(v[1]),
- UINT_TO_FLOAT(v[2]),
- UINT_TO_FLOAT(v[3])));
+ UINT_TO_FLOAT(v[1]),
+ UINT_TO_FLOAT(v[2]),
+ UINT_TO_FLOAT(v[3])));
}
-static void GLAPIENTRY VertexAttrib4uivARB(GLuint index, const GLuint *v)
+static void
+VertexAttrib4uivARB(GLuint index, const GLuint *v)
{
- CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
+ CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
+ (GLfloat)v[2], (GLfloat)v[3]));
}
/* GL_FLOAT attributes */
-static void GLAPIENTRY VertexAttrib1fvARB(GLuint index, const GLfloat *v)
+static void
+VertexAttrib1fvARB(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib1fvARB(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib2fvARB(GLuint index, const GLfloat *v)
+static void
+VertexAttrib2fvARB(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib2fvARB(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib3fvARB(GLuint index, const GLfloat *v)
+static void
+VertexAttrib3fvARB(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib3fvARB(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib4fvARB(GLuint index, const GLfloat *v)
+static void
+VertexAttrib4fvARB(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib4fvARB(GET_DISPATCH(), (index, v));
}
/* GL_DOUBLE attributes */
-static void GLAPIENTRY VertexAttrib1dvARB(GLuint index, const GLdouble *v)
+static void
+VertexAttrib1dvARB(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib1dvARB(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib2dvARB(GLuint index, const GLdouble *v)
+static void
+VertexAttrib2dvARB(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib2dvARB(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib3dvARB(GLuint index, const GLdouble *v)
+static void
+VertexAttrib3dvARB(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib3dvARB(GET_DISPATCH(), (index, v));
}
-static void GLAPIENTRY VertexAttrib4dvARB(GLuint index, const GLdouble *v)
+static void
+VertexAttrib4dvARB(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib4dvARB(GET_DISPATCH(), (index, v));
}
+/**
+ * Integer-valued attributes
+ */
+static void
+VertexAttribI1bv(GLuint index, const GLbyte *v)
+{
+ CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0]));
+}
+
+static void
+VertexAttribI2bv(GLuint index, const GLbyte *v)
+{
+ CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1]));
+}
+
+static void
+VertexAttribI3bv(GLuint index, const GLbyte *v)
+{
+ CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
+}
+
+static void
+VertexAttribI4bv(GLuint index, const GLbyte *v)
+{
+ CALL_VertexAttribI4bvEXT(GET_DISPATCH(), (index, v));
+}
+
+
+static void
+VertexAttribI1ubv(GLuint index, const GLubyte *v)
+{
+ CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0]));
+}
+
+static void
+VertexAttribI2ubv(GLuint index, const GLubyte *v)
+{
+ CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1]));
+}
+
+static void
+VertexAttribI3ubv(GLuint index, const GLubyte *v)
+{
+ CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
+}
+
+static void
+VertexAttribI4ubv(GLuint index, const GLubyte *v)
+{
+ CALL_VertexAttribI4ubvEXT(GET_DISPATCH(), (index, v));
+}
+
+
+
+static void
+VertexAttribI1sv(GLuint index, const GLshort *v)
+{
+ CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0]));
+}
+
+static void
+VertexAttribI2sv(GLuint index, const GLshort *v)
+{
+ CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1]));
+}
+
+static void
+VertexAttribI3sv(GLuint index, const GLshort *v)
+{
+ CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
+}
+
+static void
+VertexAttribI4sv(GLuint index, const GLshort *v)
+{
+ CALL_VertexAttribI4svEXT(GET_DISPATCH(), (index, v));
+}
+
+
+static void
+VertexAttribI1usv(GLuint index, const GLushort *v)
+{
+ CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0]));
+}
+
+static void
+VertexAttribI2usv(GLuint index, const GLushort *v)
+{
+ CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1]));
+}
+
+static void
+VertexAttribI3usv(GLuint index, const GLushort *v)
+{
+ CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
+}
+
+static void
+VertexAttribI4usv(GLuint index, const GLushort *v)
+{
+ CALL_VertexAttribI4usvEXT(GET_DISPATCH(), (index, v));
+}
+
+
+
+static void
+VertexAttribI1iv(GLuint index, const GLint *v)
+{
+ CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0]));
+}
+
+static void
+VertexAttribI2iv(GLuint index, const GLint *v)
+{
+ CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1]));
+}
+
+static void
+VertexAttribI3iv(GLuint index, const GLint *v)
+{
+ CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
+}
+
+static void
+VertexAttribI4iv(GLuint index, const GLint *v)
+{
+ CALL_VertexAttribI4ivEXT(GET_DISPATCH(), (index, v));
+}
+
+
+static void
+VertexAttribI1uiv(GLuint index, const GLuint *v)
+{
+ CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0]));
+}
+
+static void
+VertexAttribI2uiv(GLuint index, const GLuint *v)
+{
+ CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1]));
+}
+
+static void
+VertexAttribI3uiv(GLuint index, const GLuint *v)
+{
+ CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
+}
+
+static void
+VertexAttribI4uiv(GLuint index, const GLuint *v)
+{
+ CALL_VertexAttribI4uivEXT(GET_DISPATCH(), (index, v));
+}
+
+
+
+
/*
- * Array [size][type] of VertexAttrib functions
+ * Array [unnormalized/normalized/integer][size][type] of VertexAttrib
+ * functions
*/
-static attrib_func AttribFuncsARB[2][4][8] = {
+static attrib_func AttribFuncsARB[3][4][NUM_TYPES] = {
{
/* non-normalized */
{
@@ -1025,6 +1346,54 @@ static attrib_func AttribFuncsARB[2][4][8] = {
(attrib_func) VertexAttrib4fvARB,
(attrib_func) VertexAttrib4dvARB
}
+ },
+
+ {
+ /* integer-valued */
+ {
+ /* size 1 */
+ (attrib_func) VertexAttribI1bv,
+ (attrib_func) VertexAttribI1ubv,
+ (attrib_func) VertexAttribI1sv,
+ (attrib_func) VertexAttribI1usv,
+ (attrib_func) VertexAttribI1iv,
+ (attrib_func) VertexAttribI1uiv,
+ NULL, /* GL_FLOAT */
+ NULL /* GL_DOUBLE */
+ },
+ {
+ /* size 2 */
+ (attrib_func) VertexAttribI2bv,
+ (attrib_func) VertexAttribI2ubv,
+ (attrib_func) VertexAttribI2sv,
+ (attrib_func) VertexAttribI2usv,
+ (attrib_func) VertexAttribI2iv,
+ (attrib_func) VertexAttribI2uiv,
+ NULL, /* GL_FLOAT */
+ NULL /* GL_DOUBLE */
+ },
+ {
+ /* size 3 */
+ (attrib_func) VertexAttribI3bv,
+ (attrib_func) VertexAttribI3ubv,
+ (attrib_func) VertexAttribI3sv,
+ (attrib_func) VertexAttribI3usv,
+ (attrib_func) VertexAttribI3iv,
+ (attrib_func) VertexAttribI3uiv,
+ NULL, /* GL_FLOAT */
+ NULL /* GL_DOUBLE */
+ },
+ {
+ /* size 4 */
+ (attrib_func) VertexAttribI4bv,
+ (attrib_func) VertexAttribI4ubv,
+ (attrib_func) VertexAttribI4sv,
+ (attrib_func) VertexAttribI4usv,
+ (attrib_func) VertexAttribI4iv,
+ (attrib_func) VertexAttribI4uiv,
+ NULL, /* GL_FLOAT */
+ NULL /* GL_DOUBLE */
+ }
}
};
@@ -1173,7 +1542,15 @@ static void _ae_update_state( struct gl_context *ctx )
[TYPE_IDX(at->array->Type)];
}
else {
- at->func = AttribFuncsARB[at->array->Normalized]
+ GLint intOrNorm;
+ if (at->array->Integer)
+ intOrNorm = 2;
+ else if (at->array->Normalized)
+ intOrNorm = 1;
+ else
+ intOrNorm = 0;
+
+ at->func = AttribFuncsARB[intOrNorm]
[at->array->Size-1]
[TYPE_IDX(at->array->Type)];
}
@@ -1271,14 +1648,13 @@ void GLAPIENTRY _ae_ArrayElement( GLint elt )
_ae_update_state( ctx );
}
+ /* Determine if w need to map/unmap VBOs */
do_map = actx->nr_vbos && !actx->mapped_vbos;
- /*
- */
if (do_map)
_ae_map_vbos(ctx);
- /* generic attributes */
+ /* emit generic attribute elements */
for (at = actx->attribs; at->func; at++) {
const GLubyte *src
= ADD_POINTERS(at->array->BufferObj->Pointer, at->array->Ptr)
@@ -1286,7 +1662,7 @@ void GLAPIENTRY _ae_ArrayElement( GLint elt )
at->func( at->index, src );
}
- /* conventional arrays */
+ /* emit conventional arrays elements */
for (aa = actx->arrays; aa->offset != -1 ; aa++) {
const GLubyte *src
= ADD_POINTERS(aa->array->BufferObj->Pointer, aa->array->Ptr)
diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c
index 2274e54ba0..1427abd107 100644
--- a/src/mesa/main/api_exec.c
+++ b/src/mesa/main/api_exec.c
@@ -105,46 +105,6 @@
#if FEATURE_GL
-#ifdef _GLAPI_USE_REMAP_TABLE
-
-#define need_MESA_remap_table
-#include "main/remap.h"
-#include "main/remap_helper.h"
-
-/* This is shared across all APIs but We define this here since
- * desktop GL has the biggest remap table. */
-int driDispatchRemapTable[driDispatchRemapTable_size];
-
-/**
- * Map the functions which are already static.
- *
- * When a extension function are incorporated into the ABI, the
- * extension suffix is usually stripped. Mapping such functions
- * makes sure the alternative names are available.
- *
- * Note that functions mapped by _mesa_init_remap_table() are
- * excluded.
- */
-void
-_mesa_map_static_functions(void)
-{
- /* Remap static functions which have alternative names and are in the ABI.
- * This is to be on the safe side. glapi should have defined those names.
- */
- _mesa_map_function_array(MESA_alt_functions);
-}
-
-void
-_mesa_init_remap_table(void)
-{
- _mesa_do_init_remap_table(_mesa_function_pool,
- driDispatchRemapTable_size,
- MESA_remap_table_functions);
-}
-
-#endif /* _GLAPI_USE_REMAP_TABLE */
-
-
/**
* Initialize a dispatch table with pointers to Mesa's immediate-mode
* commands.
@@ -160,7 +120,7 @@ _mesa_create_exec_table(void)
{
struct _glapi_table *exec;
- exec = _mesa_alloc_dispatch_table(sizeof *exec);
+ exec = _mesa_alloc_dispatch_table(_gloffset_COUNT);
if (exec == NULL)
return NULL;
@@ -726,6 +686,27 @@ _mesa_create_exec_table(void)
SET_FramebufferTextureFaceARB(exec, _mesa_FramebufferTextureFaceARB);
#endif
+ /* GL_EXT_texture_integer */
+ SET_ClearColorIiEXT(exec, _mesa_ClearColorIiEXT);
+ SET_ClearColorIuiEXT(exec, _mesa_ClearColorIuiEXT);
+ SET_GetTexParameterIivEXT(exec, _mesa_GetTexParameterIiv);
+ SET_GetTexParameterIuivEXT(exec, _mesa_GetTexParameterIuiv);
+ SET_TexParameterIivEXT(exec, _mesa_TexParameterIiv);
+ SET_TexParameterIuivEXT(exec, _mesa_TexParameterIuiv);
+
+ /* GL_EXT_gpu_shader4 / OpenGL 3.0 */
+ SET_GetVertexAttribIivEXT(exec, _mesa_GetVertexAttribIiv);
+ SET_GetVertexAttribIuivEXT(exec, _mesa_GetVertexAttribIuiv);
+ SET_VertexAttribIPointerEXT(exec, _mesa_VertexAttribIPointer);
+
+ /* GL 3.0 (functions not covered by other extensions) */
+ SET_ClearBufferiv(exec, _mesa_ClearBufferiv);
+ SET_ClearBufferuiv(exec, _mesa_ClearBufferuiv);
+ SET_ClearBufferfv(exec, _mesa_ClearBufferfv);
+ SET_ClearBufferfi(exec, _mesa_ClearBufferfi);
+ SET_GetStringi(exec, _mesa_GetStringi);
+ SET_ClampColor(exec, _mesa_ClampColorARB);
+
return exec;
}
diff --git a/src/mesa/main/api_loopback.c b/src/mesa/main/api_loopback.c
index d1789069cc..c438307d84 100644
--- a/src/mesa/main/api_loopback.c
+++ b/src/mesa/main/api_loopback.c
@@ -34,9 +34,9 @@
#include "api_loopback.h"
#include "mtypes.h"
#include "glapi/glapi.h"
-#include "glapi/glapitable.h"
#include "glapi/glthread.h"
#include "main/dispatch.h"
+#include "mfeatures.h"
/* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
* calls to a smaller set of driver-provided formats. Currently just
@@ -66,16 +66,24 @@
#define MATERIALFV(a,b,c) CALL_Materialfv(GET_DISPATCH(), (a,b,c))
#define RECTF(a,b,c,d) CALL_Rectf(GET_DISPATCH(), (a,b,c,d))
+#define FOGCOORDF(x) CALL_FogCoordfEXT(GET_DISPATCH(), (x))
+#define SECONDARYCOLORF(a,b,c) CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c))
+
#define ATTRIB1NV(index,x) CALL_VertexAttrib1fNV(GET_DISPATCH(), (index,x))
#define ATTRIB2NV(index,x,y) CALL_VertexAttrib2fNV(GET_DISPATCH(), (index,x,y))
#define ATTRIB3NV(index,x,y,z) CALL_VertexAttrib3fNV(GET_DISPATCH(), (index,x,y,z))
#define ATTRIB4NV(index,x,y,z,w) CALL_VertexAttrib4fNV(GET_DISPATCH(), (index,x,y,z,w))
+
#define ATTRIB1ARB(index,x) CALL_VertexAttrib1fARB(GET_DISPATCH(), (index,x))
#define ATTRIB2ARB(index,x,y) CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,x,y))
#define ATTRIB3ARB(index,x,y,z) CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,x,y,z))
#define ATTRIB4ARB(index,x,y,z,w) CALL_VertexAttrib4fARB(GET_DISPATCH(), (index,x,y,z,w))
-#define FOGCOORDF(x) CALL_FogCoordfEXT(GET_DISPATCH(), (x))
-#define SECONDARYCOLORF(a,b,c) CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c))
+
+#define ATTRIBI_1I(index,x) CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index,x))
+#define ATTRIBI_1UI(index,x) CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index,x))
+#define ATTRIBI_4I(index,x,y,z,w) CALL_VertexAttribI4iEXT(GET_DISPATCH(), (index,x,y,z,w))
+
+#define ATTRIBI_4UI(index,x,y,z,w) CALL_VertexAttribI4uiEXT(GET_DISPATCH(), (index,x,y,z,w))
#if FEATURE_beginend
@@ -1041,6 +1049,7 @@ loopback_SecondaryColor3ubvEXT_f( const GLubyte *v )
/*
* GL_NV_vertex_program:
* Always loop-back to one of the VertexAttrib[1234]f[v]NV functions.
+ * Note that attribute indexes DO alias conventional vertex attributes.
*/
static void GLAPIENTRY
@@ -1263,6 +1272,7 @@ loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
/*
* GL_ARB_vertex_program
* Always loop-back to one of the VertexAttrib[1234]f[v]ARB functions.
+ * Note that attribute indexes do NOT alias conventional attributes.
*/
static void GLAPIENTRY
@@ -1443,136 +1453,50 @@ loopback_VertexAttrib4NuivARB(GLuint index, const GLuint * v)
-/** GL 3.0 Integer-valued attributes **/
-
-static void GLAPIENTRY
-loopback_VertexAttribI1i(GLuint index, GLint x)
-{
- ATTRIB1ARB(index, (GLfloat) x);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI2i(GLuint index, GLint x, GLint y)
-{
- ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI3i(GLuint index, GLint x, GLint y, GLint z)
-{
- ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
-{
- ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI1ui(GLuint index, GLuint x)
-{
- ATTRIB1ARB(index, (GLfloat) x);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI2ui(GLuint index, GLuint x, GLuint y)
-{
- ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z)
-{
- ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
-{
- ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
+/**
+ * GL_EXT_gpu_shader / GL 3.0 signed/unsigned integer-valued attributes.
+ * Note that attribute indexes do NOT alias conventional attributes.
+ */
static void GLAPIENTRY
loopback_VertexAttribI1iv(GLuint index, const GLint *v)
{
- ATTRIB1ARB(index, (GLfloat) v[0]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI2iv (GLuint index, const GLint *v)
-{
- ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI3iv(GLuint index, const GLint *v)
-{
- ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4iv(GLuint index, const GLint *v)
-{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3]);
+ ATTRIBI_1I(index, v[0]);
}
static void GLAPIENTRY
loopback_VertexAttribI1uiv(GLuint index, const GLuint *v)
{
- ATTRIB1ARB(index, (GLfloat) v[0]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI2uiv(GLuint index, const GLuint *v)
-{
- ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI3uiv(GLuint index, const GLuint *v)
-{
- ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4uiv(GLuint index, const GLuint *v)
-{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3]);
+ ATTRIBI_1UI(index, v[0]);
}
static void GLAPIENTRY
loopback_VertexAttribI4bv(GLuint index, const GLbyte *v)
{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3]);
+ ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
}
static void GLAPIENTRY
loopback_VertexAttribI4sv(GLuint index, const GLshort *v)
{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3]);
+ ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
}
static void GLAPIENTRY
loopback_VertexAttribI4ubv(GLuint index, const GLubyte *v)
{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3]);
+ ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
}
static void GLAPIENTRY
loopback_VertexAttribI4usv(GLuint index, const GLushort *v)
{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3]);
+ ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
}
+
/*
* This code never registers handlers for any of the entry points
* listed in vtxfmt.h.
@@ -1788,50 +1712,13 @@ _mesa_loopback_init_api_table( struct _glapi_table *dest )
SET_VertexAttrib4NusvARB(dest, loopback_VertexAttrib4NusvARB);
SET_VertexAttrib4NuivARB(dest, loopback_VertexAttrib4NuivARB);
- /* GL 3.0 */
-#if 0
- SET_VertexAttribI1i(dest, loopback_VertexAttribI1i);
- SET_VertexAttribI2i(dest, loopback_VertexAttribI2i);
- SET_VertexAttribI3i(dest, loopback_VertexAttribI3i);
- SET_VertexAttribI4i(dest, loopback_VertexAttribI4i);
- SET_VertexAttribI1ui(dest, loopback_VertexAttribI1ui);
- SET_VertexAttribI2ui(dest, loopback_VertexAttribI2ui);
- SET_VertexAttribI3ui(dest, loopback_VertexAttribI3ui);
- SET_VertexAttribI4ui(dest, loopback_VertexAttribI4ui);
- SET_VertexAttribI1iv(dest, loopback_VertexAttribI1iv);
- SET_VertexAttribI2iv(dest, loopback_VertexAttribI2iv);
- SET_VertexAttribI3iv(dest, loopback_VertexAttribI3iv);
- SET_VertexAttribI4iv(dest, loopback_VertexAttribI4iv);
- SET_VertexAttribI1uiv(dest, loopback_VertexAttribI1uiv);
- SET_VertexAttribI2uiv(dest, loopback_VertexAttribI2uiv);
- SET_VertexAttribI3uiv(dest, loopback_VertexAttribI3uiv);
- SET_VertexAttribI4uiv(dest, loopback_VertexAttribI4uiv);
- SET_VertexAttribI4bv(dest, loopback_VertexAttribI4bv);
- SET_VertexAttribI4sv(dest, loopback_VertexAttribI4sv);
- SET_VertexAttribI4ubv(dest, loopback_VertexAttribI4ubv);
- SET_VertexAttribI4usv(dest, loopback_VertexAttribI4usv);
-#else
- (void) loopback_VertexAttribI1i;
- (void) loopback_VertexAttribI2i;
- (void) loopback_VertexAttribI3i;
- (void) loopback_VertexAttribI4i;
- (void) loopback_VertexAttribI1ui;
- (void) loopback_VertexAttribI2ui;
- (void) loopback_VertexAttribI3ui;
- (void) loopback_VertexAttribI4ui;
- (void) loopback_VertexAttribI1iv;
- (void) loopback_VertexAttribI2iv;
- (void) loopback_VertexAttribI3iv;
- (void) loopback_VertexAttribI4iv;
- (void) loopback_VertexAttribI1uiv;
- (void) loopback_VertexAttribI2uiv;
- (void) loopback_VertexAttribI3uiv;
- (void) loopback_VertexAttribI4uiv;
- (void) loopback_VertexAttribI4bv;
- (void) loopback_VertexAttribI4sv;
- (void) loopback_VertexAttribI4ubv;
- (void) loopback_VertexAttribI4usv;
-#endif
+ /* GL_EXT_gpu_shader4, GL 3.0 */
+ SET_VertexAttribI1ivEXT(dest, loopback_VertexAttribI1iv);
+ SET_VertexAttribI1uivEXT(dest, loopback_VertexAttribI1uiv);
+ SET_VertexAttribI4bvEXT(dest, loopback_VertexAttribI4bv);
+ SET_VertexAttribI4svEXT(dest, loopback_VertexAttribI4sv);
+ SET_VertexAttribI4ubvEXT(dest, loopback_VertexAttribI4ubv);
+ SET_VertexAttribI4usvEXT(dest, loopback_VertexAttribI4usv);
}
diff --git a/src/mesa/main/api_loopback.h b/src/mesa/main/api_loopback.h
index 3140eb515e..b9af703ca7 100644
--- a/src/mesa/main/api_loopback.h
+++ b/src/mesa/main/api_loopback.h
@@ -27,7 +27,10 @@
#ifndef API_LOOPBACK_H
#define API_LOOPBACK_H
-#include "main/mtypes.h"
+#include "main/compiler.h"
+#include "main/mfeatures.h"
+
+struct _glapi_table;
#if FEATURE_beginend
diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index 4929a9310d..ac9709db3f 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -27,6 +27,7 @@
#include "bufferobj.h"
#include "context.h"
#include "imports.h"
+#include "mfeatures.h"
#include "mtypes.h"
#include "vbo/vbo.h"
diff --git a/src/mesa/main/api_validate.h b/src/mesa/main/api_validate.h
index b232a90843..16b9c2b264 100644
--- a/src/mesa/main/api_validate.h
+++ b/src/mesa/main/api_validate.h
@@ -28,7 +28,10 @@
#define API_VALIDATE_H
-#include "mtypes.h"
+#include "glheader.h"
+
+struct gl_buffer_object;
+struct gl_context;
extern GLuint
diff --git a/src/mesa/main/arrayobj.h b/src/mesa/main/arrayobj.h
index 26e3af19c9..0b5a013037 100644
--- a/src/mesa/main/arrayobj.h
+++ b/src/mesa/main/arrayobj.h
@@ -28,7 +28,9 @@
#ifndef ARRAYOBJ_H
#define ARRAYOBJ_H
-#include "mtypes.h"
+#include "glheader.h"
+
+struct gl_context;
/**
* \file arrayobj.h
diff --git a/src/mesa/main/atifragshader.h b/src/mesa/main/atifragshader.h
index 6911bba5ae..ade91311b0 100644
--- a/src/mesa/main/atifragshader.h
+++ b/src/mesa/main/atifragshader.h
@@ -8,7 +8,12 @@
#ifndef ATIFRAGSHADER_H
#define ATIFRAGSHADER_H
-#include "main/mtypes.h"
+#include "compiler.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+struct gl_context;
#define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8
#define MAX_NUM_PASSES_ATI 2
diff --git a/src/mesa/main/attrib.h b/src/mesa/main/attrib.h
index 777781bdf0..d59d31b9be 100644
--- a/src/mesa/main/attrib.h
+++ b/src/mesa/main/attrib.h
@@ -26,8 +26,12 @@
#define ATTRIB_H
-#include "main/mtypes.h"
+#include "compiler.h"
+#include "glheader.h"
+#include "mfeatures.h"
+struct _glapi_table;
+struct gl_context;
#if FEATURE_attrib_stack
@@ -48,8 +52,6 @@ _mesa_init_attrib_dispatch(struct _glapi_table *disp);
#else /* FEATURE_attrib_stack */
-#include "main/compiler.h"
-
static INLINE void
_mesa_PushClientAttrib( GLbitfield mask )
{
diff --git a/src/mesa/main/blend.h b/src/mesa/main/blend.h
index 677b01cc9f..f72c779f1a 100644
--- a/src/mesa/main/blend.h
+++ b/src/mesa/main/blend.h
@@ -33,7 +33,9 @@
#define BLEND_H
-#include "mtypes.h"
+#include "glheader.h"
+
+struct gl_context;
extern void GLAPIENTRY
diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
index 0a68008a10..4d62f54a95 100644
--- a/src/mesa/main/bufferobj.c
+++ b/src/mesa/main/bufferobj.c
@@ -55,6 +55,13 @@
/**
+ * Used as a placeholder for buffer objects between glGenBuffers() and
+ * glBindBuffer() so that glIsBuffer() can work correctly.
+ */
+static struct gl_buffer_object DummyBufferObject;
+
+
+/**
* Return pointer to address of a buffer object target.
* \param ctx the GL context
* \param target the buffer object target to be retrieved.
@@ -548,6 +555,9 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx,
void
_mesa_init_buffer_objects( struct gl_context *ctx )
{
+ memset(&DummyBufferObject, 0, sizeof(DummyBufferObject));
+ DummyBufferObject.RefCount = 1000*1000*1000; /* never delete */
+
_mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj,
ctx->Shared->NullBufferObj);
_mesa_reference_buffer_object(ctx, &ctx->Array.ElementArrayBufferObj,
@@ -605,8 +615,10 @@ bind_buffer_object(struct gl_context *ctx, GLenum target, GLuint buffer)
else {
/* non-default buffer object */
newBufObj = _mesa_lookup_bufferobj(ctx, buffer);
- if (!newBufObj) {
- /* if this is a new buffer object id, allocate a buffer object now */
+ if (!newBufObj || newBufObj == &DummyBufferObject) {
+ /* If this is a new buffer object id, or one which was generated but
+ * never used before, allocate a buffer object now.
+ */
ASSERT(ctx->Driver.NewBufferObject);
newBufObj = ctx->Driver.NewBufferObject(ctx, buffer, target);
if (!newBufObj) {
@@ -986,7 +998,7 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids)
struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
GLuint j;
- ASSERT(bufObj->Name == ids[i]);
+ ASSERT(bufObj->Name == ids[i] || bufObj == &DummyBufferObject);
if (_mesa_bufferobj_mapped(bufObj)) {
/* if mapped, unmap it now */
@@ -1027,7 +1039,7 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids)
}
/* The ID is immediately freed for re-use */
- _mesa_HashRemove(ctx->Shared->BufferObjects, bufObj->Name);
+ _mesa_HashRemove(ctx->Shared->BufferObjects, ids[i]);
_mesa_reference_buffer_object(ctx, &bufObj, NULL);
}
}
@@ -1066,18 +1078,10 @@ _mesa_GenBuffersARB(GLsizei n, GLuint *buffer)
first = _mesa_HashFindFreeKeyBlock(ctx->Shared->BufferObjects, n);
- /* Allocate new, empty buffer objects and return identifiers */
+ /* Insert the ID and pointer to dummy buffer object into hash table */
for (i = 0; i < n; i++) {
- struct gl_buffer_object *bufObj;
- GLuint name = first + i;
- GLenum target = 0;
- bufObj = ctx->Driver.NewBufferObject( ctx, name, target );
- if (!bufObj) {
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenBuffersARB");
- return;
- }
- _mesa_HashInsert(ctx->Shared->BufferObjects, first + i, bufObj);
+ _mesa_HashInsert(ctx->Shared->BufferObjects, first + i,
+ &DummyBufferObject);
buffer[i] = first + i;
}
@@ -1103,7 +1107,7 @@ _mesa_IsBufferARB(GLuint id)
bufObj = _mesa_lookup_bufferobj(ctx, id);
_glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
- return bufObj ? GL_TRUE : GL_FALSE;
+ return bufObj && bufObj != &DummyBufferObject;
}
@@ -1189,6 +1193,9 @@ _mesa_BufferSubDataARB(GLenum target, GLintptrARB offset,
return;
}
+ if (size == 0)
+ return;
+
bufObj->Written = GL_TRUE;
ASSERT(ctx->Driver.BufferSubData);
diff --git a/src/mesa/main/buffers.h b/src/mesa/main/buffers.h
index 36d6c8b660..1404112c41 100644
--- a/src/mesa/main/buffers.h
+++ b/src/mesa/main/buffers.h
@@ -33,8 +33,9 @@
#define BUFFERS_H
-#include "mtypes.h"
+#include "glheader.h"
+struct gl_context;
extern void GLAPIENTRY
_mesa_DrawBuffer( GLenum mode );
diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c
index b011da04b4..c4c1d96e49 100644
--- a/src/mesa/main/clear.c
+++ b/src/mesa/main/clear.c
@@ -96,6 +96,68 @@ _mesa_ClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )
/**
+ * GL_EXT_texture_integer
+ */
+void GLAPIENTRY
+_mesa_ClearColorIiEXT(GLint r, GLint g, GLint b, GLint a)
+{
+ GLfloat tmp[4];
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ tmp[0] = (GLfloat) r;
+ tmp[1] = (GLfloat) g;
+ tmp[2] = (GLfloat) b;
+ tmp[3] = (GLfloat) a;
+
+ if (TEST_EQ_4V(tmp, ctx->Color.ClearColor))
+ return; /* no change */
+
+ FLUSH_VERTICES(ctx, _NEW_COLOR);
+
+ /* XXX we should eventually have a float/int/uint union for
+ * the ctx->Color.ClearColor state.
+ */
+ COPY_4V(ctx->Color.ClearColor, tmp);
+
+ if (ctx->Driver.ClearColor) {
+ ctx->Driver.ClearColor(ctx, ctx->Color.ClearColor);
+ }
+}
+
+
+/**
+ * GL_EXT_texture_integer
+ */
+void GLAPIENTRY
+_mesa_ClearColorIuiEXT(GLuint r, GLuint g, GLuint b, GLuint a)
+{
+ GLfloat tmp[4];
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ tmp[0] = (GLfloat) r;
+ tmp[1] = (GLfloat) g;
+ tmp[2] = (GLfloat) b;
+ tmp[3] = (GLfloat) a;
+
+ if (TEST_EQ_4V(tmp, ctx->Color.ClearColor))
+ return; /* no change */
+
+ FLUSH_VERTICES(ctx, _NEW_COLOR);
+
+ /* XXX we should eventually have a float/int/uint union for
+ * the ctx->Color.ClearColor state.
+ */
+ COPY_4V(ctx->Color.ClearColor, tmp);
+
+ if (ctx->Driver.ClearColor) {
+ ctx->Driver.ClearColor(ctx, ctx->Color.ClearColor);
+ }
+}
+
+
+/**
* Clear buffers.
*
* \param mask bit-mask indicating the buffers to be cleared.
@@ -342,7 +404,7 @@ _mesa_ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value)
{
const GLbitfield mask = make_color_buffer_mask(ctx, drawbuffer);
if (mask == INVALID_MASK) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glClearBufferiv(drawbuffer=%d)",
+ _mesa_error(ctx, GL_INVALID_VALUE, "glClearBufferuiv(drawbuffer=%d)",
drawbuffer);
return;
}
diff --git a/src/mesa/main/clear.h b/src/mesa/main/clear.h
index 6657370c4b..7832719203 100644
--- a/src/mesa/main/clear.h
+++ b/src/mesa/main/clear.h
@@ -38,6 +38,13 @@ _mesa_ClearColor( GLclampf red, GLclampf green,
GLclampf blue, GLclampf alpha );
extern void GLAPIENTRY
+_mesa_ClearColorIiEXT(GLint r, GLint g, GLint b, GLint a);
+
+extern void GLAPIENTRY
+_mesa_ClearColorIuiEXT(GLuint r, GLuint g, GLuint b, GLuint a);
+
+
+extern void GLAPIENTRY
_mesa_Clear( GLbitfield mask );
diff --git a/src/mesa/main/colortab.c b/src/mesa/main/colortab.c
index 6295dc88de..caa95835bc 100644
--- a/src/mesa/main/colortab.c
+++ b/src/mesa/main/colortab.c
@@ -29,6 +29,7 @@
#include "context.h"
#include "image.h"
#include "macros.h"
+#include "pack.h"
#include "state.h"
#include "teximage.h"
#include "texstate.h"
diff --git a/src/mesa/main/colortab.h b/src/mesa/main/colortab.h
index ea3ec870fd..ae46d8d236 100644
--- a/src/mesa/main/colortab.h
+++ b/src/mesa/main/colortab.h
@@ -27,7 +27,12 @@
#define COLORTAB_H
-#include "main/mtypes.h"
+#include "compiler.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+struct gl_color_table;
#if FEATURE_colortable
@@ -46,8 +51,6 @@ _mesa_init_colortable_dispatch(struct _glapi_table *disp);
#else /* FEATURE_colortable */
-#include "main/compiler.h"
-
static INLINE void GLAPIENTRY
_mesa_ColorTable( GLenum target, GLenum internalformat,
GLsizei width, GLenum format, GLenum type,
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index 9401e3dcc2..b132030b9b 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -131,6 +131,7 @@
#if _HAVE_FULL_GL
#include "math/m_matrix.h"
#endif
+#include "main/dispatch.h" /* for _gloffset_COUNT */
#ifdef USE_SPARC_ASM
#include "sparc/sparc.h"
@@ -218,7 +219,7 @@ _mesa_create_visual( GLboolean dbFlag,
GLint accumAlphaBits,
GLint numSamples )
{
- struct gl_config *vis = (struct gl_config *) calloc(1, sizeof(struct gl_config));
+ struct gl_config *vis = CALLOC_STRUCT(gl_config);
if (vis) {
if (!_mesa_initialize_visual(vis, dbFlag, stereoFlag,
redBits, greenBits, blueBits, alphaBits,
@@ -233,11 +234,13 @@ _mesa_create_visual( GLboolean dbFlag,
return vis;
}
+
/**
- * Makes some sanity checks and fills in the fields of the
- * struct gl_config object with the given parameters. If the caller needs
- * to set additional fields, he should just probably init the whole struct gl_config
- * object himself.
+ * Makes some sanity checks and fills in the fields of the struct
+ * gl_config object with the given parameters. If the caller needs to
+ * set additional fields, he should just probably init the whole
+ * gl_config object himself.
+ *
* \return GL_TRUE on success, or GL_FALSE on failure.
*
* \sa _mesa_create_visual() above for the parameter description.
@@ -367,6 +370,8 @@ dummy_enum_func(void)
*/
_glthread_DECLARE_STATIC_MUTEX(OneTimeLock);
+
+
/**
* Calls all the various one-time-init functions in Mesa.
*
@@ -379,10 +384,12 @@ _glthread_DECLARE_STATIC_MUTEX(OneTimeLock);
static void
one_time_init( struct gl_context *ctx )
{
- static GLboolean alreadyCalled = GL_FALSE;
- (void) ctx;
+ static GLbitfield api_init_mask = 0x0;
+
_glthread_LOCK_MUTEX(OneTimeLock);
- if (!alreadyCalled) {
+
+ /* truly one-time init */
+ if (!api_init_mask) {
GLuint i;
/* do some implementation tests */
@@ -395,27 +402,9 @@ one_time_init( struct gl_context *ctx )
_mesa_get_cpu_features();
- switch (ctx->API) {
-#if FEATURE_GL
- case API_OPENGL:
- _mesa_init_remap_table();
- break;
-#endif
-#if FEATURE_ES1
- case API_OPENGLES:
- _mesa_init_remap_table_es1();
- break;
-#endif
-#if FEATURE_ES2
- case API_OPENGLES2:
- _mesa_init_remap_table_es2();
- break;
-#endif
- default:
- break;
- }
-
_mesa_init_sqrt_table();
+
+ /* context dependence is never a one-time thing... */
_mesa_init_get_hash(ctx);
for (i = 0; i < 256; i++) {
@@ -423,12 +412,27 @@ one_time_init( struct gl_context *ctx )
}
#if defined(DEBUG) && defined(__DATE__) && defined(__TIME__)
- _mesa_debug(ctx, "Mesa %s DEBUG build %s %s\n",
- MESA_VERSION_STRING, __DATE__, __TIME__);
+ if (MESA_VERBOSE != 0) {
+ _mesa_debug(ctx, "Mesa %s DEBUG build %s %s\n",
+ MESA_VERSION_STRING, __DATE__, __TIME__);
+ }
#endif
+ }
- alreadyCalled = GL_TRUE;
+ /* per-API one-time init */
+ if (!(api_init_mask & (1 << ctx->API))) {
+ /*
+ * This is fine as ES does not use the remap table, but it may not be
+ * future-proof. We cannot always initialize the remap table because
+ * when an app is linked to libGLES*, there are not enough dynamic
+ * entries.
+ */
+ if (ctx->API == API_OPENGL)
+ _mesa_init_remap_table();
}
+
+ api_init_mask |= 1 << ctx->API;
+
_glthread_UNLOCK_MUTEX(OneTimeLock);
/* Hopefully atexit() is widely available. If not, we may need some
@@ -620,6 +624,10 @@ _mesa_init_constants(struct gl_context *ctx)
/* GL 3.2: hard-coded for now: */
ctx->Const.ProfileMask = GL_CONTEXT_COMPATIBILITY_PROFILE_BIT;
+
+ /** GL_EXT_gpu_shader4 */
+ ctx->Const.MinProgramTexelOffset = -8;
+ ctx->Const.MaxProgramTexelOffset = 7;
}
@@ -807,10 +815,13 @@ _mesa_alloc_dispatch_table(int size)
* Mesa we do this to accomodate different versions of libGL and various
* DRI drivers.
*/
- GLint numEntries = MAX2(_glapi_get_dispatch_table_size(),
- size / sizeof(_glapi_proc));
- struct _glapi_table *table =
- (struct _glapi_table *) malloc(numEntries * sizeof(_glapi_proc));
+ GLint numEntries = MAX2(_glapi_get_dispatch_table_size(), _gloffset_COUNT);
+ struct _glapi_table *table;
+
+ /* should never happen, but just in case */
+ numEntries = MAX2(numEntries, size);
+
+ table = (struct _glapi_table *) malloc(numEntries * sizeof(_glapi_proc));
if (table) {
_glapi_proc *entry = (_glapi_proc *) table;
GLint i;
@@ -983,6 +994,10 @@ _mesa_initialize_context_for_api(struct gl_context *ctx,
return GL_TRUE;
}
+
+/**
+ * Initialize an OpenGL context.
+ */
GLboolean
_mesa_initialize_context(struct gl_context *ctx,
const struct gl_config *visual,
@@ -998,6 +1013,7 @@ _mesa_initialize_context(struct gl_context *ctx,
driverContext);
}
+
/**
* Allocate and initialize a struct gl_context structure.
* Note that the driver needs to pass in its dd_function_table here since
@@ -1039,6 +1055,10 @@ _mesa_create_context_for_api(gl_api api,
}
}
+
+/**
+ * Create an OpenGL context.
+ */
struct gl_context *
_mesa_create_context(const struct gl_config *visual,
struct gl_context *share_list,
@@ -1051,6 +1071,7 @@ _mesa_create_context(const struct gl_config *visual,
driverContext);
}
+
/**
* Free the data associated with the given context.
*
@@ -1137,7 +1158,7 @@ _mesa_free_context_data( struct gl_context *ctx )
*
* \param ctx GL context.
*
- * Calls _mesa_free_context_data() and frees the struct gl_context structure itself.
+ * Calls _mesa_free_context_data() and frees the gl_context object itself.
*/
void
_mesa_destroy_context( struct gl_context *ctx )
@@ -1282,14 +1303,12 @@ _mesa_copy_context( const struct gl_context *src, struct gl_context *dst, GLuint
* \return GL_TRUE if compatible, GL_FALSE otherwise.
*/
static GLboolean
-check_compatible(const struct gl_context *ctx, const struct gl_framebuffer *buffer)
+check_compatible(const struct gl_context *ctx,
+ const struct gl_framebuffer *buffer)
{
const struct gl_config *ctxvis = &ctx->Visual;
const struct gl_config *bufvis = &buffer->Visual;
- if (ctxvis == bufvis)
- return GL_TRUE;
-
if (buffer == _mesa_get_incomplete_framebuffer())
return GL_TRUE;
@@ -1376,7 +1395,8 @@ _mesa_check_init_viewport(struct gl_context *ctx, GLuint width, GLuint height)
* \param readBuffer the reading framebuffer
*/
GLboolean
-_mesa_make_current( struct gl_context *newCtx, struct gl_framebuffer *drawBuffer,
+_mesa_make_current( struct gl_context *newCtx,
+ struct gl_framebuffer *drawBuffer,
struct gl_framebuffer *readBuffer )
{
if (MESA_VERBOSE & VERBOSE_API)
@@ -1437,7 +1457,8 @@ _mesa_make_current( struct gl_context *newCtx, struct gl_framebuffer *drawBuffer
buffers[i] = newCtx->Color.DrawBuffer[i];
}
- _mesa_drawbuffers(newCtx, newCtx->Const.MaxDrawBuffers, buffers, NULL);
+ _mesa_drawbuffers(newCtx, newCtx->Const.MaxDrawBuffers,
+ buffers, NULL);
}
if (!newCtx->ReadBuffer || newCtx->ReadBuffer->Name == 0) {
_mesa_reference_framebuffer(&newCtx->ReadBuffer, readBuffer);
@@ -1697,11 +1718,10 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where)
if (ctx->NewState)
_mesa_update_state(ctx);
- if (ctx->Shader.CurrentProgram) {
- struct gl_shader_program *const prog = ctx->Shader.CurrentProgram;
+ if (ctx->Shader.CurrentVertexProgram) {
+ vert_from_glsl_shader = true;
- /* using shaders */
- if (!prog->LinkStatus) {
+ if (!ctx->Shader.CurrentVertexProgram->LinkStatus) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"%s(shader not linked)", where);
return GL_FALSE;
@@ -1709,25 +1729,57 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where)
#if 0 /* not normally enabled */
{
char errMsg[100];
- if (!_mesa_validate_shader_program(ctx, prog, errMsg)) {
+ if (!_mesa_validate_shader_program(ctx,
+ ctx->Shader.CurrentVertexProgram,
+ errMsg)) {
_mesa_warning(ctx, "Shader program %u is invalid: %s",
- prog->Name, errMsg);
+ ctx->Shader.CurrentVertexProgram->Name, errMsg);
}
}
#endif
+ }
- /* Figure out which shader stages are provided by the GLSL program. For
- * any stages that are not provided, the corresponding assembly shader
- * target will be validated below.
- */
- vert_from_glsl_shader =
- prog->_LinkedShaders[MESA_SHADER_VERTEX] != NULL;
- geom_from_glsl_shader =
- prog->_LinkedShaders[MESA_SHADER_GEOMETRY] != NULL;
- frag_from_glsl_shader =
- prog->_LinkedShaders[MESA_SHADER_FRAGMENT] != NULL;
+ if (ctx->Shader.CurrentGeometryProgram) {
+ geom_from_glsl_shader = true;
+
+ if (!ctx->Shader.CurrentGeometryProgram->LinkStatus) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "%s(shader not linked)", where);
+ return GL_FALSE;
+ }
+#if 0 /* not normally enabled */
+ {
+ char errMsg[100];
+ if (!_mesa_validate_shader_program(ctx,
+ ctx->Shader.CurrentGeometryProgram,
+ errMsg)) {
+ _mesa_warning(ctx, "Shader program %u is invalid: %s",
+ ctx->Shader.CurrentGeometryProgram->Name, errMsg);
+ }
+ }
+#endif
}
+ if (ctx->Shader.CurrentFragmentProgram) {
+ frag_from_glsl_shader = true;
+
+ if (!ctx->Shader.CurrentFragmentProgram->LinkStatus) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "%s(shader not linked)", where);
+ return GL_FALSE;
+ }
+#if 0 /* not normally enabled */
+ {
+ char errMsg[100];
+ if (!_mesa_validate_shader_program(ctx,
+ ctx->Shader.CurrentFragmentProgram,
+ errMsg)) {
+ _mesa_warning(ctx, "Shader program %u is invalid: %s",
+ ctx->Shader.CurrentFragmentProgram->Name, errMsg);
+ }
+ }
+#endif
+ }
/* Any shader stages that are not supplied by the GLSL shader and have
* assembly shaders enabled must now be validated.
@@ -1744,11 +1796,21 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where)
*/
(void) geom_from_glsl_shader;
- if (!frag_from_glsl_shader
- && ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "%s(fragment program not valid)", where);
- return GL_FALSE;
+ if (!frag_from_glsl_shader) {
+ if (ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "%s(fragment program not valid)", where);
+ return GL_FALSE;
+ }
+
+ /* If drawing to integer-valued color buffers, there must be an
+ * active fragment shader (GL_EXT_texture_integer).
+ */
+ if (ctx->DrawBuffer && ctx->DrawBuffer->_IntegerColor) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "%s(integer format but no fragment shader)", where);
+ return GL_FALSE;
+ }
}
if (ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) {
@@ -1759,26 +1821,51 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where)
#ifdef DEBUG
if (ctx->Shader.Flags & GLSL_LOG) {
- struct gl_shader_program *shProg = ctx->Shader.CurrentProgram;
- if (shProg) {
- if (!shProg->_Used) {
- /* This is the first time this shader is being used.
- * Append shader's constants/uniforms to log file.
- */
- GLuint i;
- for (i = 0; i < shProg->NumShaders; i++) {
- struct gl_shader *sh = shProg->Shaders[i];
- if (sh->Type == GL_VERTEX_SHADER) {
- _mesa_append_uniforms_to_file(sh,
- &shProg->VertexProgram->Base);
- }
- else if (sh->Type == GL_FRAGMENT_SHADER) {
- _mesa_append_uniforms_to_file(sh,
- &shProg->FragmentProgram->Base);
- }
- }
- shProg->_Used = GL_TRUE;
- }
+ struct gl_shader_program *shProg[MESA_SHADER_TYPES];
+ unsigned i;
+
+ shProg[MESA_SHADER_VERTEX] = ctx->Shader.CurrentVertexProgram;
+ shProg[MESA_SHADER_GEOMETRY] = ctx->Shader.CurrentGeometryProgram;
+ shProg[MESA_SHADER_FRAGMENT] = ctx->Shader.CurrentFragmentProgram;
+
+ for (i = 0; i < MESA_SHADER_TYPES; i++) {
+ struct gl_shader *sh;
+
+ if (shProg[i] == NULL || shProg[i]->_Used
+ || shProg[i]->_LinkedShaders[i] == NULL)
+ continue;
+
+ /* This is the first time this shader is being used.
+ * Append shader's constants/uniforms to log file.
+ *
+ * The logic is a little odd here. We only want to log data for each
+ * shader target that will actually be used, and we only want to log
+ * it once. It's possible to have a program bound to the vertex
+ * shader target that also supplied a fragment shader. If that
+ * program isn't also bound to the fragment shader target we don't
+ * want to log its fragment data.
+ */
+ sh = shProg[i]->_LinkedShaders[i];
+ switch (sh->Type) {
+ case GL_VERTEX_SHADER:
+ _mesa_append_uniforms_to_file(sh, &shProg[i]->VertexProgram->Base);
+ break;
+
+ case GL_GEOMETRY_SHADER_ARB:
+ _mesa_append_uniforms_to_file(sh,
+ &shProg[i]->GeometryProgram->Base);
+ break;
+
+ case GL_FRAGMENT_SHADER:
+ _mesa_append_uniforms_to_file(sh,
+ &shProg[i]->FragmentProgram->Base);
+ break;
+ }
+ }
+
+ for (i = 0; i < MESA_SHADER_TYPES; i++) {
+ if (shProg[i] != NULL)
+ shProg[i]->_Used = GL_TRUE;
}
}
#endif
diff --git a/src/mesa/main/convolve.h b/src/mesa/main/convolve.h
index 0277917433..7dc0a48b74 100644
--- a/src/mesa/main/convolve.h
+++ b/src/mesa/main/convolve.h
@@ -28,7 +28,10 @@
#define CONVOLVE_H
-#include "main/mtypes.h"
+#include "compiler.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
#if FEATURE_convolve
@@ -38,8 +41,6 @@ _mesa_init_convolve_dispatch(struct _glapi_table *disp);
#else /* FEATURE_convolve */
-#include "main/compiler.h"
-
static INLINE void
_mesa_init_convolve_dispatch(struct _glapi_table *disp)
{
diff --git a/src/mesa/main/core.h b/src/mesa/main/core.h
index ea6e6bf118..542d95b848 100644
--- a/src/mesa/main/core.h
+++ b/src/mesa/main/core.h
@@ -46,8 +46,6 @@
#include "main/imports.h"
#include "main/macros.h"
-#include "main/version.h" /* for MESA_VERSION_STRING */
-#include "main/context.h" /* for _mesa_share_state */
#include "main/mtypes.h"
#ifdef __cplusplus
diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index 5e006e0ad3..c62969e9b7 100644
--- a/src/mesa/main/dd.h
+++ b/src/mesa/main/dd.h
@@ -33,8 +33,20 @@
/* THIS FILE ONLY INCLUDED BY mtypes.h !!!!! */
-struct gl_pixelstore_attrib;
+#include "glheader.h"
+
+struct gl_buffer_object;
+struct gl_context;
struct gl_display_list;
+struct gl_framebuffer;
+struct gl_pixelstore_attrib;
+struct gl_program;
+struct gl_renderbuffer;
+struct gl_renderbuffer_attachment;
+struct gl_shader;
+struct gl_shader_program;
+struct gl_texture_image;
+struct gl_texture_object;
/* GL_ARB_vertex_buffer_object */
/* Modifies GL_MAP_UNSYNCHRONIZED_BIT to allow driver to fail (return
@@ -1105,6 +1117,24 @@ typedef struct {
void (GLAPIENTRYP VertexAttrib3fvARB)( GLuint index, const GLfloat *v );
void (GLAPIENTRYP VertexAttrib4fARB)( GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w );
void (GLAPIENTRYP VertexAttrib4fvARB)( GLuint index, const GLfloat *v );
+
+ /* GL_EXT_gpu_shader4 / GL 3.0 */
+ void (GLAPIENTRYP VertexAttribI1i)( GLuint index, GLint x);
+ void (GLAPIENTRYP VertexAttribI2i)( GLuint index, GLint x, GLint y);
+ void (GLAPIENTRYP VertexAttribI3i)( GLuint index, GLint x, GLint y, GLint z);
+ void (GLAPIENTRYP VertexAttribI4i)( GLuint index, GLint x, GLint y, GLint z, GLint w);
+ void (GLAPIENTRYP VertexAttribI2iv)( GLuint index, const GLint *v);
+ void (GLAPIENTRYP VertexAttribI3iv)( GLuint index, const GLint *v);
+ void (GLAPIENTRYP VertexAttribI4iv)( GLuint index, const GLint *v);
+
+ void (GLAPIENTRYP VertexAttribI1ui)( GLuint index, GLuint x);
+ void (GLAPIENTRYP VertexAttribI2ui)( GLuint index, GLuint x, GLuint y);
+ void (GLAPIENTRYP VertexAttribI3ui)( GLuint index, GLuint x, GLuint y, GLuint z);
+ void (GLAPIENTRYP VertexAttribI4ui)( GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+ void (GLAPIENTRYP VertexAttribI2uiv)( GLuint index, const GLuint *v);
+ void (GLAPIENTRYP VertexAttribI3uiv)( GLuint index, const GLuint *v);
+ void (GLAPIENTRYP VertexAttribI4uiv)( GLuint index, const GLuint *v);
+
/*@}*/
void (GLAPIENTRYP Rectf)( GLfloat, GLfloat, GLfloat, GLfloat );
diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c
index a7e65f8d3a..79aa53585f 100644
--- a/src/mesa/main/debug.c
+++ b/src/mesa/main/debug.c
@@ -120,7 +120,7 @@ void
_mesa_print_tri_caps( const char *name, GLuint flags )
{
_mesa_debug(NULL,
- "%s: (0x%x) %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
+ "%s: (0x%x) %s%s%s%s%s%s%s%s%s%s%s%s%s\n",
name,
flags,
(flags & DD_FLATSHADE) ? "flat-shade, " : "",
@@ -133,9 +133,7 @@ _mesa_print_tri_caps( const char *name, GLuint flags )
(flags & DD_TRI_SMOOTH) ? "tri-smooth, " : "",
(flags & DD_LINE_SMOOTH) ? "line-smooth, " : "",
(flags & DD_LINE_STIPPLE) ? "line-stipple, " : "",
- (flags & DD_LINE_WIDTH) ? "line-wide, " : "",
(flags & DD_POINT_SMOOTH) ? "point-smooth, " : "",
- (flags & DD_POINT_SIZE) ? "point-size, " : "",
(flags & DD_POINT_ATTEN) ? "point-atten, " : "",
(flags & DD_TRI_CULL_FRONT_BACK) ? "cull-all, " : ""
);
diff --git a/src/mesa/main/debug.h b/src/mesa/main/debug.h
index e3bb4dfe81..17aa897e8d 100644
--- a/src/mesa/main/debug.h
+++ b/src/mesa/main/debug.h
@@ -37,7 +37,10 @@
#define _DEBUG_H
#include "glheader.h"
-#include "mtypes.h"
+#include "mfeatures.h"
+
+struct gl_context;
+struct gl_texture_image;
#if _HAVE_FULL_GL
diff --git a/src/mesa/main/depth.h b/src/mesa/main/depth.h
index d61d3b121b..b498a47153 100644
--- a/src/mesa/main/depth.h
+++ b/src/mesa/main/depth.h
@@ -32,7 +32,10 @@
#define DEPTH_H
-#include "mtypes.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct gl_context;
#if _HAVE_FULL_GL
diff --git a/src/mesa/main/depthstencil.h b/src/mesa/main/depthstencil.h
index 4db5868263..ef63c5d7a3 100644
--- a/src/mesa/main/depthstencil.h
+++ b/src/mesa/main/depthstencil.h
@@ -26,7 +26,7 @@
#ifndef DEPTHSTENCIL_H
#define DEPTHSTENCIL_H
-#include "mtypes.h"
+struct gl_context;
extern struct gl_renderbuffer *
_mesa_new_z24_renderbuffer_wrapper(struct gl_context *ctx,
diff --git a/src/mesa/main/dispatch.h b/src/mesa/main/dispatch.h
index 27f80a5062..a597959cf8 100644
--- a/src/mesa/main/dispatch.h
+++ b/src/mesa/main/dispatch.h
@@ -26,12 +26,12 @@
#ifndef _DISPATCH_H
#define _DISPATCH_H
-#ifdef IN_DRI_DRIVER
+#include "main/mfeatures.h"
+
+#if FEATURE_remap_table
#define _GLAPI_USE_REMAP_TABLE
#endif
-#include "glapi/glapitable.h"
-#include "glapi/glapioffsets.h"
-#include "glapi/glapidispatch.h"
+#include "main/glapidispatch.h"
#endif /* _DISPATCH_H */
diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c
index f513f31c56..6c0c556ad8 100644
--- a/src/mesa/main/dlist.c
+++ b/src/mesa/main/dlist.c
@@ -53,6 +53,7 @@
#include "image.h"
#include "light.h"
#include "macros.h"
+#include "pack.h"
#include "queryobj.h"
#include "teximage.h"
#include "mtypes.h"
@@ -410,6 +411,16 @@ typedef enum
OPCODE_BEGIN_TRANSFORM_FEEDBACK,
OPCODE_END_TRANSFORM_FEEDBACK,
+ /* GL_EXT_texture_integer */
+ OPCODE_CLEARCOLOR_I,
+ OPCODE_CLEARCOLOR_UI,
+ OPCODE_TEXPARAMETER_I,
+ OPCODE_TEXPARAMETER_UI,
+
+ /* GL_EXT_separate_shader_objects */
+ OPCODE_ACTIVE_PROGRAM_EXT,
+ OPCODE_USE_SHADER_PROGRAM_EXT,
+
/* The following three are meta instructions */
OPCODE_ERROR, /* raise compiled-in error */
OPCODE_CONTINUE,
@@ -4773,9 +4784,9 @@ save_ExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params)
static void GLAPIENTRY
save_ProgramParameters4dvNV(GLenum target, GLuint index,
- GLuint num, const GLdouble *params)
+ GLsizei num, const GLdouble *params)
{
- GLuint i;
+ GLint i;
for (i = 0; i < num; i++) {
save_ProgramEnvParameter4dvARB(target, index + i, params + 4 * i);
}
@@ -4784,9 +4795,9 @@ save_ProgramParameters4dvNV(GLenum target, GLuint index,
static void GLAPIENTRY
save_ProgramParameters4fvNV(GLenum target, GLuint index,
- GLuint num, const GLfloat *params)
+ GLsizei num, const GLfloat *params)
{
- GLuint i;
+ GLint i;
for (i = 0; i < num; i++) {
save_ProgramEnvParameter4fvARB(target, index + i, params + 4 * i);
}
@@ -6786,6 +6797,137 @@ save_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
}
}
+static void GLAPIENTRY
+save_UseShaderProgramEXT(GLenum type, GLuint program)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ Node *n;
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_USE_SHADER_PROGRAM_EXT, 2);
+ if (n) {
+ n[1].ui = type;
+ n[2].ui = program;
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_UseShaderProgramEXT(ctx->Exec, (type, program));
+ }
+}
+
+static void GLAPIENTRY
+save_ActiveProgramEXT(GLuint program)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ Node *n;
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_ACTIVE_PROGRAM_EXT, 1);
+ if (n) {
+ n[1].ui = program;
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_ActiveProgramEXT(ctx->Exec, (program));
+ }
+}
+
+/** GL_EXT_texture_integer */
+static void GLAPIENTRY
+save_ClearColorIi(GLint red, GLint green, GLint blue, GLint alpha)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ Node *n;
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_CLEARCOLOR_I, 4);
+ if (n) {
+ n[1].i = red;
+ n[2].i = green;
+ n[3].i = blue;
+ n[4].i = alpha;
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_ClearColorIiEXT(ctx->Exec, (red, green, blue, alpha));
+ }
+}
+
+/** GL_EXT_texture_integer */
+static void GLAPIENTRY
+save_ClearColorIui(GLuint red, GLuint green, GLuint blue, GLuint alpha)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ Node *n;
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_CLEARCOLOR_UI, 4);
+ if (n) {
+ n[1].ui = red;
+ n[2].ui = green;
+ n[3].ui = blue;
+ n[4].ui = alpha;
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_ClearColorIuiEXT(ctx->Exec, (red, green, blue, alpha));
+ }
+}
+
+/** GL_EXT_texture_integer */
+static void GLAPIENTRY
+save_TexParameterIiv(GLenum target, GLenum pname, const GLint *params)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ Node *n;
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_TEXPARAMETER_I, 6);
+ if (n) {
+ n[1].e = target;
+ n[2].e = pname;
+ n[3].i = params[0];
+ n[4].i = params[1];
+ n[5].i = params[2];
+ n[6].i = params[3];
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_TexParameterIivEXT(ctx->Exec, (target, pname, params));
+ }
+}
+
+/** GL_EXT_texture_integer */
+static void GLAPIENTRY
+save_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ Node *n;
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_TEXPARAMETER_UI, 6);
+ if (n) {
+ n[1].e = target;
+ n[2].e = pname;
+ n[3].ui = params[0];
+ n[4].ui = params[1];
+ n[5].ui = params[2];
+ n[6].ui = params[3];
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_TexParameterIuivEXT(ctx->Exec, (target, pname, params));
+ }
+}
+
+/** GL_EXT_texture_integer */
+static void GLAPIENTRY
+exec_GetTexParameterIiv(GLenum target, GLenum pname, GLint *params)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ FLUSH_VERTICES(ctx, 0);
+ CALL_GetTexParameterIivEXT(ctx->Exec, (target, pname, params));
+}
+
+/** GL_EXT_texture_integer */
+static void GLAPIENTRY
+exec_GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ FLUSH_VERTICES(ctx, 0);
+ CALL_GetTexParameterIuivEXT(ctx->Exec, (target, pname, params));
+}
+
+
+
/**
@@ -7673,6 +7815,12 @@ execute_list(struct gl_context *ctx, GLuint list)
case OPCODE_USE_PROGRAM:
CALL_UseProgramObjectARB(ctx->Exec, (n[1].ui));
break;
+ case OPCODE_USE_SHADER_PROGRAM_EXT:
+ CALL_UseShaderProgramEXT(ctx->Exec, (n[1].ui, n[2].ui));
+ break;
+ case OPCODE_ACTIVE_PROGRAM_EXT:
+ CALL_ActiveProgramEXT(ctx->Exec, (n[1].ui));
+ break;
case OPCODE_UNIFORM_1F:
CALL_Uniform1fARB(ctx->Exec, (n[1].i, n[2].f));
break;
@@ -7903,6 +8051,35 @@ execute_list(struct gl_context *ctx, GLuint list)
CALL_EvalPoint2(ctx->Exec, (n[1].i, n[2].i));
break;
+ /* GL_EXT_texture_integer */
+ case OPCODE_CLEARCOLOR_I:
+ CALL_ClearColorIiEXT(ctx->Exec, (n[1].i, n[2].i, n[3].i, n[4].i));
+ break;
+ case OPCODE_CLEARCOLOR_UI:
+ CALL_ClearColorIuiEXT(ctx->Exec,
+ (n[1].ui, n[2].ui, n[3].ui, n[4].ui));
+ break;
+ case OPCODE_TEXPARAMETER_I:
+ {
+ GLint params[4];
+ params[0] = n[3].i;
+ params[1] = n[4].i;
+ params[2] = n[5].i;
+ params[3] = n[6].i;
+ CALL_TexParameterIivEXT(ctx->Exec, (n[1].e, n[2].e, params));
+ }
+ break;
+ case OPCODE_TEXPARAMETER_UI:
+ {
+ GLuint params[4];
+ params[0] = n[3].ui;
+ params[1] = n[4].ui;
+ params[2] = n[5].ui;
+ params[3] = n[6].ui;
+ CALL_TexParameterIuivEXT(ctx->Exec, (n[1].e, n[2].e, params));
+ }
+ break;
+
case OPCODE_CONTINUE:
n = (Node *) n[1].next;
break;
@@ -8939,7 +9116,7 @@ _mesa_create_save_table(void)
{
struct _glapi_table *table;
- table = _mesa_alloc_dispatch_table(sizeof *table);
+ table = _mesa_alloc_dispatch_table(_gloffset_COUNT);
if (table == NULL)
return NULL;
@@ -9531,6 +9708,18 @@ _mesa_create_save_table(void)
SET_ObjectUnpurgeableAPPLE(table, _mesa_ObjectUnpurgeableAPPLE);
#endif
+ /* GL_EXT_texture_integer */
+ SET_ClearColorIiEXT(table, save_ClearColorIi);
+ SET_ClearColorIuiEXT(table, save_ClearColorIui);
+ SET_TexParameterIivEXT(table, save_TexParameterIiv);
+ SET_TexParameterIuivEXT(table, save_TexParameterIuiv);
+ SET_GetTexParameterIivEXT(table, exec_GetTexParameterIiv);
+ SET_GetTexParameterIuivEXT(table, exec_GetTexParameterIuiv);
+
+ /* 377. GL_EXT_separate_shader_objects */
+ SET_UseShaderProgramEXT(table, save_UseShaderProgramEXT);
+ SET_ActiveProgramEXT(table, save_ActiveProgramEXT);
+
/* GL 3.0 */
#if 0
SET_ClearBufferiv(table, save_ClearBufferiv);
diff --git a/src/mesa/main/drawpix.c b/src/mesa/main/drawpix.c
index ac92a3fb08..757aae6e70 100644
--- a/src/mesa/main/drawpix.c
+++ b/src/mesa/main/drawpix.c
@@ -32,23 +32,12 @@
#include "framebuffer.h"
#include "readpix.h"
#include "state.h"
-#include "main/dispatch.h"
+#include "dispatch.h"
#if FEATURE_drawpix
-/**
- * If a fragment program is enabled, check that it's valid.
- * \return GL_TRUE if valid, GL_FALSE otherwise
- */
-static GLboolean
-valid_fragment_program(struct gl_context *ctx)
-{
- return !(ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled);
-}
-
-
/*
* Execute glDrawPixels
*/
@@ -65,33 +54,21 @@ _mesa_DrawPixels( GLsizei width, GLsizei height,
}
/* We're not using the current vertex program, and the driver may install
- * it's own.
+ * its own. Note: this may dirty some state.
*/
_mesa_set_vp_override(ctx, GL_TRUE);
- if (ctx->NewState) {
- _mesa_update_state(ctx);
- }
-
- if (!valid_fragment_program(ctx)) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glDrawPixels (invalid fragment program)");
- goto end;
+ /* Note: this call does state validation */
+ if (!_mesa_valid_to_render(ctx, "glDrawPixels")) {
+ goto end; /* the error code was recorded */
}
if (_mesa_error_check_format_type(ctx, format, type, GL_TRUE)) {
- /* the error was already recorded */
- goto end;
- }
-
- if (ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) {
- _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION_EXT,
- "glDrawPixels(incomplete framebuffer)" );
- goto end;
+ goto end; /* the error code was recorded */
}
if (!ctx->Current.RasterPosValid) {
- goto end; /* no-op, not an error */
+ goto end; /* no-op, not an error */
}
if (ctx->RenderMode == GL_RENDER) {
@@ -165,22 +142,17 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height,
}
/* We're not using the current vertex program, and the driver may install
- * it's own.
+ * it's own. Note: this may dirty some state.
*/
_mesa_set_vp_override(ctx, GL_TRUE);
- if (ctx->NewState) {
- _mesa_update_state(ctx);
+ /* Note: this call does state validation */
+ if (!_mesa_valid_to_render(ctx, "glCopyPixels")) {
+ goto end; /* the error code was recorded */
}
- if (!valid_fragment_program(ctx)) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glCopyPixels (invalid fragment program)");
- goto end;
- }
-
- if (ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT ||
- ctx->ReadBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) {
+ /* Check read buffer's status (draw buffer was already checked) */
+ if (ctx->ReadBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) {
_mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION_EXT,
"glCopyPixels(incomplete framebuffer)" );
goto end;
@@ -241,19 +213,9 @@ _mesa_Bitmap( GLsizei width, GLsizei height,
return; /* do nothing */
}
- if (ctx->NewState) {
- _mesa_update_state(ctx);
- }
-
- if (!valid_fragment_program(ctx)) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glBitmap (invalid fragment program)");
- return;
- }
-
- if (ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) {
- _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION_EXT,
- "glBitmap(incomplete framebuffer)");
+ /* Note: this call does state validation */
+ if (!_mesa_valid_to_render(ctx, "glBitmap")) {
+ /* the error code was recorded */
return;
}
diff --git a/src/mesa/main/drawpix.h b/src/mesa/main/drawpix.h
index 1f95ff5294..31baa192ec 100644
--- a/src/mesa/main/drawpix.h
+++ b/src/mesa/main/drawpix.h
@@ -26,7 +26,10 @@
#define DRAWPIX_H
-#include "main/mtypes.h"
+#include "compiler.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
#if FEATURE_drawpix
diff --git a/src/mesa/main/drawtex.h b/src/mesa/main/drawtex.h
index d7d507566b..13ff6f97e9 100644
--- a/src/mesa/main/drawtex.h
+++ b/src/mesa/main/drawtex.h
@@ -25,7 +25,8 @@
#define DRAWTEX_H
-#include "main/mtypes.h"
+#include "glheader.h"
+#include "mfeatures.h"
#if FEATURE_OES_draw_texture
diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c
index af16c010b9..a038a95c55 100644
--- a/src/mesa/main/enable.c
+++ b/src/mesa/main/enable.c
@@ -130,6 +130,7 @@ client_state(struct gl_context *ctx, GLenum cap, GLboolean state)
goto invalid_enum_error;
}
var = &ctx->Array.PrimitiveRestart;
+ flag = 0;
break;
default:
diff --git a/src/mesa/main/enable.h b/src/mesa/main/enable.h
index 69e52b1cb2..6d90c170c8 100644
--- a/src/mesa/main/enable.h
+++ b/src/mesa/main/enable.h
@@ -32,7 +32,9 @@
#define ENABLE_H
-#include "mtypes.h"
+#include "glheader.h"
+
+struct gl_context;
extern void
diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c
index 4403945f43..0ce62c0e3c 100644
--- a/src/mesa/main/enums.c
+++ b/src/mesa/main/enums.c
@@ -53,6 +53,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_ACCUM_RED_BITS\0"
"GL_ACTIVE_ATTRIBUTES\0"
"GL_ACTIVE_ATTRIBUTE_MAX_LENGTH\0"
+ "GL_ACTIVE_PROGRAM_EXT\0"
"GL_ACTIVE_STENCIL_FACE_EXT\0"
"GL_ACTIVE_TEXTURE\0"
"GL_ACTIVE_TEXTURE_ARB\0"
@@ -71,13 +72,20 @@ LONGSTRING static const char enum_string_table[] =
"GL_ALPHA12\0"
"GL_ALPHA12_EXT\0"
"GL_ALPHA16\0"
+ "GL_ALPHA16I_EXT\0"
+ "GL_ALPHA16UI_EXT\0"
"GL_ALPHA16_EXT\0"
+ "GL_ALPHA32I_EXT\0"
+ "GL_ALPHA32UI_EXT\0"
"GL_ALPHA4\0"
"GL_ALPHA4_EXT\0"
"GL_ALPHA8\0"
+ "GL_ALPHA8I_EXT\0"
+ "GL_ALPHA8UI_EXT\0"
"GL_ALPHA8_EXT\0"
"GL_ALPHA_BIAS\0"
"GL_ALPHA_BITS\0"
+ "GL_ALPHA_INTEGER_EXT\0"
"GL_ALPHA_SCALE\0"
"GL_ALPHA_TEST\0"
"GL_ALPHA_TEST_FUNC\0"
@@ -110,6 +118,10 @@ LONGSTRING static const char enum_string_table[] =
"GL_BGR\0"
"GL_BGRA\0"
"GL_BGRA_EXT\0"
+ "GL_BGRA_INTEGER\0"
+ "GL_BGRA_INTEGER_EXT\0"
+ "GL_BGR_INTEGER\0"
+ "GL_BGR_INTEGER_EXT\0"
"GL_BITMAP\0"
"GL_BITMAP_TOKEN\0"
"GL_BLEND\0"
@@ -137,6 +149,8 @@ LONGSTRING static const char enum_string_table[] =
"GL_BLUE\0"
"GL_BLUE_BIAS\0"
"GL_BLUE_BITS\0"
+ "GL_BLUE_INTEGER\0"
+ "GL_BLUE_INTEGER_EXT\0"
"GL_BLUE_SCALE\0"
"GL_BOOL\0"
"GL_BOOL_ARB\0"
@@ -148,11 +162,14 @@ LONGSTRING static const char enum_string_table[] =
"GL_BOOL_VEC4_ARB\0"
"GL_BUFFER_ACCESS\0"
"GL_BUFFER_ACCESS_ARB\0"
+ "GL_BUFFER_ACCESS_FLAGS\0"
"GL_BUFFER_ACCESS_OES\0"
"GL_BUFFER_FLUSHING_UNMAP_APPLE\0"
"GL_BUFFER_MAPPED\0"
"GL_BUFFER_MAPPED_ARB\0"
"GL_BUFFER_MAPPED_OES\0"
+ "GL_BUFFER_MAP_LENGTH\0"
+ "GL_BUFFER_MAP_OFFSET\0"
"GL_BUFFER_MAP_POINTER\0"
"GL_BUFFER_MAP_POINTER_ARB\0"
"GL_BUFFER_MAP_POINTER_OES\0"
@@ -175,6 +192,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_C4UB_V3F\0"
"GL_CCW\0"
"GL_CLAMP\0"
+ "GL_CLAMP_READ_COLOR\0"
"GL_CLAMP_TO_BORDER\0"
"GL_CLAMP_TO_BORDER_ARB\0"
"GL_CLAMP_TO_BORDER_SGIS\0"
@@ -187,6 +205,14 @@ LONGSTRING static const char enum_string_table[] =
"GL_CLIENT_ATTRIB_STACK_DEPTH\0"
"GL_CLIENT_PIXEL_STORE_BIT\0"
"GL_CLIENT_VERTEX_ARRAY_BIT\0"
+ "GL_CLIP_DISTANCE0\0"
+ "GL_CLIP_DISTANCE1\0"
+ "GL_CLIP_DISTANCE2\0"
+ "GL_CLIP_DISTANCE3\0"
+ "GL_CLIP_DISTANCE4\0"
+ "GL_CLIP_DISTANCE5\0"
+ "GL_CLIP_DISTANCE6\0"
+ "GL_CLIP_DISTANCE7\0"
"GL_CLIP_PLANE0\0"
"GL_CLIP_PLANE1\0"
"GL_CLIP_PLANE2\0"
@@ -291,6 +317,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_COMBINE_RGB_ARB\0"
"GL_COMBINE_RGB_EXT\0"
"GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT\0"
+ "GL_COMPARE_REF_TO_TEXTURE\0"
"GL_COMPARE_R_TO_TEXTURE\0"
"GL_COMPARE_R_TO_TEXTURE_ARB\0"
"GL_COMPILE\0"
@@ -304,6 +331,8 @@ LONGSTRING static const char enum_string_table[] =
"GL_COMPRESSED_LUMINANCE_ALPHA\0"
"GL_COMPRESSED_LUMINANCE_ALPHA_ARB\0"
"GL_COMPRESSED_LUMINANCE_ARB\0"
+ "GL_COMPRESSED_RED\0"
+ "GL_COMPRESSED_RG\0"
"GL_COMPRESSED_RGB\0"
"GL_COMPRESSED_RGBA\0"
"GL_COMPRESSED_RGBA_ARB\0"
@@ -329,6 +358,11 @@ LONGSTRING static const char enum_string_table[] =
"GL_CONSTANT_COLOR\0"
"GL_CONSTANT_COLOR_EXT\0"
"GL_CONSTANT_EXT\0"
+ "GL_CONTEXT_COMPATIBILITY_PROFILE_BIT\0"
+ "GL_CONTEXT_CORE_PROFILE_BIT\0"
+ "GL_CONTEXT_FLAGS\0"
+ "GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT\0"
+ "GL_CONTEXT_PROFILE_MASK\0"
"GL_CONVOLUTION_1D\0"
"GL_CONVOLUTION_2D\0"
"GL_CONVOLUTION_BORDER_COLOR\0"
@@ -408,6 +442,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_DEPTH_BITS\0"
"GL_DEPTH_BOUNDS_EXT\0"
"GL_DEPTH_BOUNDS_TEST_EXT\0"
+ "GL_DEPTH_BUFFER\0"
"GL_DEPTH_BUFFER_BIT\0"
"GL_DEPTH_CLAMP\0"
"GL_DEPTH_CLAMP_NV\0"
@@ -547,6 +582,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_FIRST_VERTEX_CONVENTION_EXT\0"
"GL_FIXED\0"
"GL_FIXED_OES\0"
+ "GL_FIXED_ONLY\0"
"GL_FLAT\0"
"GL_FLOAT\0"
"GL_FLOAT_MAT2\0"
@@ -607,6 +643,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE\0"
"GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE\0"
"GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE\0"
+ "GL_FRAMEBUFFER_ATTACHMENT_LAYERED\0"
"GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB\0"
"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\0"
"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT\0"
@@ -647,6 +684,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT\0"
"GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES\0"
"GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB\0"
+ "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS\0"
"GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB\0"
"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\0"
"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT\0"
@@ -680,15 +718,21 @@ LONGSTRING static const char enum_string_table[] =
"GL_GENERATE_MIPMAP_HINT\0"
"GL_GENERATE_MIPMAP_HINT_SGIS\0"
"GL_GENERATE_MIPMAP_SGIS\0"
+ "GL_GEOMETRY_INPUT_TYPE\0"
"GL_GEOMETRY_INPUT_TYPE_ARB\0"
+ "GL_GEOMETRY_OUTPUT_TYPE\0"
"GL_GEOMETRY_OUTPUT_TYPE_ARB\0"
+ "GL_GEOMETRY_SHADER\0"
"GL_GEOMETRY_SHADER_ARB\0"
+ "GL_GEOMETRY_VERTICES_OUT\0"
"GL_GEOMETRY_VERTICES_OUT_ARB\0"
"GL_GEQUAL\0"
"GL_GREATER\0"
"GL_GREEN\0"
"GL_GREEN_BIAS\0"
"GL_GREEN_BITS\0"
+ "GL_GREEN_INTEGER\0"
+ "GL_GREEN_INTEGER_EXT\0"
"GL_GREEN_SCALE\0"
"GL_HALF_FLOAT\0"
"GL_HALF_FLOAT_OES\0"
@@ -742,17 +786,40 @@ LONGSTRING static const char enum_string_table[] =
"GL_INTENSITY12\0"
"GL_INTENSITY12_EXT\0"
"GL_INTENSITY16\0"
+ "GL_INTENSITY16I_EXT\0"
+ "GL_INTENSITY16UI_EXT\0"
"GL_INTENSITY16_EXT\0"
+ "GL_INTENSITY32I_EXT\0"
+ "GL_INTENSITY32UI_EXT\0"
"GL_INTENSITY4\0"
"GL_INTENSITY4_EXT\0"
"GL_INTENSITY8\0"
+ "GL_INTENSITY8I_EXT\0"
+ "GL_INTENSITY8UI_EXT\0"
"GL_INTENSITY8_EXT\0"
"GL_INTENSITY_EXT\0"
+ "GL_INTERLEAVED_ATTRIBS\0"
"GL_INTERLEAVED_ATTRIBS_EXT\0"
"GL_INTERPOLATE\0"
"GL_INTERPOLATE_ARB\0"
"GL_INTERPOLATE_EXT\0"
"GL_INT_10_10_10_2_OES\0"
+ "GL_INT_SAMPLER_1D\0"
+ "GL_INT_SAMPLER_1D_ARRAY\0"
+ "GL_INT_SAMPLER_1D_ARRAY_EXT\0"
+ "GL_INT_SAMPLER_1D_EXT\0"
+ "GL_INT_SAMPLER_2D\0"
+ "GL_INT_SAMPLER_2D_ARRAY\0"
+ "GL_INT_SAMPLER_2D_ARRAY_EXT\0"
+ "GL_INT_SAMPLER_2D_EXT\0"
+ "GL_INT_SAMPLER_2D_RECT\0"
+ "GL_INT_SAMPLER_2D_RECT_EXT\0"
+ "GL_INT_SAMPLER_3D\0"
+ "GL_INT_SAMPLER_3D_EXT\0"
+ "GL_INT_SAMPLER_BUFFER\0"
+ "GL_INT_SAMPLER_BUFFER_EXT\0"
+ "GL_INT_SAMPLER_CUBE\0"
+ "GL_INT_SAMPLER_CUBE_EXT\0"
"GL_INT_VEC2\0"
"GL_INT_VEC2_ARB\0"
"GL_INT_VEC3\0"
@@ -797,6 +864,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_LINEAR_MIPMAP_LINEAR\0"
"GL_LINEAR_MIPMAP_NEAREST\0"
"GL_LINES\0"
+ "GL_LINES_ADJACENCY\0"
"GL_LINES_ADJACENCY_ARB\0"
"GL_LINE_BIT\0"
"GL_LINE_LOOP\0"
@@ -807,6 +875,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_LINE_STIPPLE_PATTERN\0"
"GL_LINE_STIPPLE_REPEAT\0"
"GL_LINE_STRIP\0"
+ "GL_LINE_STRIP_ADJACENCY\0"
"GL_LINE_STRIP_ADJACENCY_ARB\0"
"GL_LINE_TOKEN\0"
"GL_LINE_WIDTH\0"
@@ -831,9 +900,13 @@ LONGSTRING static const char enum_string_table[] =
"GL_LUMINANCE12_ALPHA4_EXT\0"
"GL_LUMINANCE12_EXT\0"
"GL_LUMINANCE16\0"
+ "GL_LUMINANCE16I_EXT\0"
+ "GL_LUMINANCE16UI_EXT\0"
"GL_LUMINANCE16_ALPHA16\0"
"GL_LUMINANCE16_ALPHA16_EXT\0"
"GL_LUMINANCE16_EXT\0"
+ "GL_LUMINANCE32I_EXT\0"
+ "GL_LUMINANCE32UI_EXT\0"
"GL_LUMINANCE4\0"
"GL_LUMINANCE4_ALPHA4\0"
"GL_LUMINANCE4_ALPHA4_EXT\0"
@@ -841,10 +914,21 @@ LONGSTRING static const char enum_string_table[] =
"GL_LUMINANCE6_ALPHA2\0"
"GL_LUMINANCE6_ALPHA2_EXT\0"
"GL_LUMINANCE8\0"
+ "GL_LUMINANCE8I_EXT\0"
+ "GL_LUMINANCE8UI_EXT\0"
"GL_LUMINANCE8_ALPHA8\0"
"GL_LUMINANCE8_ALPHA8_EXT\0"
"GL_LUMINANCE8_EXT\0"
"GL_LUMINANCE_ALPHA\0"
+ "GL_LUMINANCE_ALPHA16I_EXT\0"
+ "GL_LUMINANCE_ALPHA16UI_EXT\0"
+ "GL_LUMINANCE_ALPHA32I_EXT\0"
+ "GL_LUMINANCE_ALPHA32UI_EXT\0"
+ "GL_LUMINANCE_ALPHA8I_EXT\0"
+ "GL_LUMINANCE_ALPHA8UI_EXT\0"
+ "GL_LUMINANCE_ALPHA_INTEGER_EXT\0"
+ "GL_LUMINANCE_INTEGER_EXT\0"
+ "GL_MAJOR_VERSION\0"
"GL_MAP1_COLOR_4\0"
"GL_MAP1_GRID_DOMAIN\0"
"GL_MAP1_GRID_SEGMENTS\0"
@@ -964,11 +1048,13 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX\0"
"GL_MAX_3D_TEXTURE_SIZE\0"
"GL_MAX_3D_TEXTURE_SIZE_OES\0"
+ "GL_MAX_ARRAY_TEXTURE_LAYERS\0"
"GL_MAX_ARRAY_TEXTURE_LAYERS_EXT\0"
"GL_MAX_ATTRIB_STACK_DEPTH\0"
"GL_MAX_CLIENT_ATTRIB_STACK_DEPTH\0"
"GL_MAX_CLIPMAP_DEPTH_SGIX\0"
"GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX\0"
+ "GL_MAX_CLIP_DISTANCES\0"
"GL_MAX_CLIP_PLANES\0"
"GL_MAX_COLOR_ATTACHMENTS\0"
"GL_MAX_COLOR_ATTACHMENTS_EXT\0"
@@ -990,12 +1076,19 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_ELEMENTS_VERTICES\0"
"GL_MAX_EVAL_ORDER\0"
"GL_MAX_EXT\0"
+ "GL_MAX_FRAGMENT_INPUT_COMPONENTS\0"
"GL_MAX_FRAGMENT_UNIFORM_COMPONENTS\0"
"GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB\0"
"GL_MAX_FRAGMENT_UNIFORM_VECTORS\0"
+ "GL_MAX_GEOMETRY_INPUT_COMPONENTS\0"
+ "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS\0"
+ "GL_MAX_GEOMETRY_OUTPUT_VERTICES\0"
"GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB\0"
+ "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS\0"
"GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB\0"
+ "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS\0"
"GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB\0"
+ "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS\0"
"GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB\0"
"GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB\0"
"GL_MAX_LIGHTS\0"
@@ -1029,9 +1122,12 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB\0"
"GL_MAX_PROGRAM_PARAMETERS_ARB\0"
"GL_MAX_PROGRAM_TEMPORARIES_ARB\0"
+ "GL_MAX_PROGRAM_TEXEL_OFFSET\0"
+ "GL_MAX_PROGRAM_TEXEL_OFFSET_EXT\0"
"GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB\0"
"GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB\0"
"GL_MAX_PROJECTION_STACK_DEPTH\0"
+ "GL_MAX_RECTANGLE_TEXTURE_SIZE\0"
"GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB\0"
"GL_MAX_RECTANGLE_TEXTURE_SIZE_NV\0"
"GL_MAX_RENDERBUFFER_SIZE\0"
@@ -1042,6 +1138,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_SERVER_WAIT_TIMEOUT\0"
"GL_MAX_SHININESS_NV\0"
"GL_MAX_SPOT_EXPONENT_NV\0"
+ "GL_MAX_TEXTURE_BUFFER_SIZE\0"
"GL_MAX_TEXTURE_COORDS\0"
"GL_MAX_TEXTURE_COORDS_ARB\0"
"GL_MAX_TEXTURE_IMAGE_UNITS\0"
@@ -1055,8 +1152,11 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_TEXTURE_UNITS_ARB\0"
"GL_MAX_TRACK_MATRICES_NV\0"
"GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV\0"
+ "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS\0"
"GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT\0"
+ "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS\0"
"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT\0"
+ "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS\0"
"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT\0"
"GL_MAX_VARYING_COMPONENTS\0"
"GL_MAX_VARYING_FLOATS\0"
@@ -1064,6 +1164,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_VARYING_VECTORS\0"
"GL_MAX_VERTEX_ATTRIBS\0"
"GL_MAX_VERTEX_ATTRIBS_ARB\0"
+ "GL_MAX_VERTEX_OUTPUT_COMPONENTS\0"
"GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS\0"
"GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB\0"
"GL_MAX_VERTEX_UNIFORM_COMPONENTS\0"
@@ -1082,7 +1183,10 @@ LONGSTRING static const char enum_string_table[] =
"GL_MINMAX_FORMAT_EXT\0"
"GL_MINMAX_SINK\0"
"GL_MINMAX_SINK_EXT\0"
+ "GL_MINOR_VERSION\0"
"GL_MIN_EXT\0"
+ "GL_MIN_PROGRAM_TEXEL_OFFSET\0"
+ "GL_MIN_PROGRAM_TEXEL_OFFSET_EXT\0"
"GL_MIRRORED_REPEAT\0"
"GL_MIRRORED_REPEAT_ARB\0"
"GL_MIRRORED_REPEAT_IBM\0"
@@ -1169,6 +1273,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_NO_ERROR\0"
"GL_NUM_COMPRESSED_TEXTURE_FORMATS\0"
"GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB\0"
+ "GL_NUM_EXTENSIONS\0"
"GL_NUM_PROGRAM_BINARY_FORMATS_OES\0"
"GL_NUM_SHADER_BINARY_FORMATS\0"
"GL_OBJECT_ACTIVE_ATTRIBUTES_ARB\0"
@@ -1368,7 +1473,10 @@ LONGSTRING static const char enum_string_table[] =
"GL_PRIMARY_COLOR\0"
"GL_PRIMARY_COLOR_ARB\0"
"GL_PRIMARY_COLOR_EXT\0"
+ "GL_PRIMITIVES_GENERATED\0"
"GL_PRIMITIVES_GENERATED_EXT\0"
+ "GL_PRIMITIVE_RESTART\0"
+ "GL_PRIMITIVE_RESTART_INDEX\0"
"GL_PRIMITIVE_RESTART_INDEX_NV\0"
"GL_PRIMITIVE_RESTART_NV\0"
"GL_PROGRAM_ADDRESS_REGISTERS_ARB\0"
@@ -1396,6 +1504,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_PROGRAM_OBJECT_ARB\0"
"GL_PROGRAM_PARAMETERS_ARB\0"
"GL_PROGRAM_PARAMETER_NV\0"
+ "GL_PROGRAM_POINT_SIZE\0"
"GL_PROGRAM_POINT_SIZE_ARB\0"
"GL_PROGRAM_RESIDENT_NV\0"
"GL_PROGRAM_STRING_ARB\0"
@@ -1417,15 +1526,18 @@ LONGSTRING static const char enum_string_table[] =
"GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE\0"
"GL_PROXY_POST_CONVOLUTION_COLOR_TABLE\0"
"GL_PROXY_TEXTURE_1D\0"
+ "GL_PROXY_TEXTURE_1D_ARRAY\0"
"GL_PROXY_TEXTURE_1D_ARRAY_EXT\0"
"GL_PROXY_TEXTURE_1D_EXT\0"
"GL_PROXY_TEXTURE_2D\0"
+ "GL_PROXY_TEXTURE_2D_ARRAY\0"
"GL_PROXY_TEXTURE_2D_ARRAY_EXT\0"
"GL_PROXY_TEXTURE_2D_EXT\0"
"GL_PROXY_TEXTURE_3D\0"
"GL_PROXY_TEXTURE_COLOR_TABLE_SGI\0"
"GL_PROXY_TEXTURE_CUBE_MAP\0"
"GL_PROXY_TEXTURE_CUBE_MAP_ARB\0"
+ "GL_PROXY_TEXTURE_RECTANGLE\0"
"GL_PROXY_TEXTURE_RECTANGLE_ARB\0"
"GL_PROXY_TEXTURE_RECTANGLE_NV\0"
"GL_PURGEABLE_APPLE\0"
@@ -1436,18 +1548,26 @@ LONGSTRING static const char enum_string_table[] =
"GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT\0"
"GL_QUAD_MESH_SUN\0"
"GL_QUAD_STRIP\0"
+ "GL_QUERY_BY_REGION_NO_WAIT\0"
"GL_QUERY_BY_REGION_NO_WAIT_NV\0"
+ "GL_QUERY_BY_REGION_WAIT\0"
"GL_QUERY_BY_REGION_WAIT_NV\0"
"GL_QUERY_COUNTER_BITS\0"
"GL_QUERY_COUNTER_BITS_ARB\0"
+ "GL_QUERY_NO_WAIT\0"
"GL_QUERY_NO_WAIT_NV\0"
"GL_QUERY_RESULT\0"
"GL_QUERY_RESULT_ARB\0"
"GL_QUERY_RESULT_AVAILABLE\0"
"GL_QUERY_RESULT_AVAILABLE_ARB\0"
+ "GL_QUERY_WAIT\0"
"GL_QUERY_WAIT_NV\0"
"GL_R\0"
+ "GL_R11F_G11F_B10F\0"
+ "GL_R16_SNORM\0"
"GL_R3_G3_B2\0"
+ "GL_R8_SNORM\0"
+ "GL_RASTERIZER_DISCARD\0"
"GL_RASTERIZER_DISCARD_EXT\0"
"GL_RASTER_POSITION_UNCLIPPED_IBM\0"
"GL_READ_BUFFER\0"
@@ -1464,7 +1584,10 @@ LONGSTRING static const char enum_string_table[] =
"GL_REDUCE_EXT\0"
"GL_RED_BIAS\0"
"GL_RED_BITS\0"
+ "GL_RED_INTEGER\0"
+ "GL_RED_INTEGER_EXT\0"
"GL_RED_SCALE\0"
+ "GL_RED_SNORM\0"
"GL_REFLECTION_MAP\0"
"GL_REFLECTION_MAP_ARB\0"
"GL_REFLECTION_MAP_NV\0"
@@ -1510,6 +1633,8 @@ LONGSTRING static const char enum_string_table[] =
"GL_RESCALE_NORMAL_EXT\0"
"GL_RETAINED_APPLE\0"
"GL_RETURN\0"
+ "GL_RG16_SNORM\0"
+ "GL_RG8_SNORM\0"
"GL_RGB\0"
"GL_RGB10\0"
"GL_RGB10_A2\0"
@@ -1518,8 +1643,19 @@ LONGSTRING static const char enum_string_table[] =
"GL_RGB12\0"
"GL_RGB12_EXT\0"
"GL_RGB16\0"
+ "GL_RGB16F\0"
+ "GL_RGB16I\0"
+ "GL_RGB16I_EXT\0"
+ "GL_RGB16UI\0"
+ "GL_RGB16UI_EXT\0"
"GL_RGB16_EXT\0"
+ "GL_RGB16_SNORM\0"
"GL_RGB2_EXT\0"
+ "GL_RGB32F\0"
+ "GL_RGB32I\0"
+ "GL_RGB32I_EXT\0"
+ "GL_RGB32UI\0"
+ "GL_RGB32UI_EXT\0"
"GL_RGB4\0"
"GL_RGB4_EXT\0"
"GL_RGB4_S3TC\0"
@@ -1531,41 +1667,83 @@ LONGSTRING static const char enum_string_table[] =
"GL_RGB5_A1_OES\0"
"GL_RGB5_EXT\0"
"GL_RGB8\0"
+ "GL_RGB8I\0"
+ "GL_RGB8I_EXT\0"
+ "GL_RGB8UI\0"
+ "GL_RGB8UI_EXT\0"
"GL_RGB8_EXT\0"
"GL_RGB8_OES\0"
+ "GL_RGB8_SNORM\0"
+ "GL_RGB9_E5\0"
"GL_RGBA\0"
"GL_RGBA12\0"
"GL_RGBA12_EXT\0"
"GL_RGBA16\0"
+ "GL_RGBA16F\0"
+ "GL_RGBA16I\0"
+ "GL_RGBA16I_EXT\0"
+ "GL_RGBA16UI\0"
+ "GL_RGBA16UI_EXT\0"
"GL_RGBA16_EXT\0"
+ "GL_RGBA16_SNORM\0"
"GL_RGBA2\0"
"GL_RGBA2_EXT\0"
+ "GL_RGBA32F\0"
+ "GL_RGBA32I\0"
+ "GL_RGBA32I_EXT\0"
+ "GL_RGBA32UI\0"
+ "GL_RGBA32UI_EXT\0"
"GL_RGBA4\0"
"GL_RGBA4_DXT5_S3TC\0"
"GL_RGBA4_EXT\0"
"GL_RGBA4_OES\0"
"GL_RGBA4_S3TC\0"
"GL_RGBA8\0"
+ "GL_RGBA8I\0"
+ "GL_RGBA8I_EXT\0"
+ "GL_RGBA8UI\0"
+ "GL_RGBA8UI_EXT\0"
"GL_RGBA8_EXT\0"
"GL_RGBA8_OES\0"
"GL_RGBA8_SNORM\0"
"GL_RGBA_DXT5_S3TC\0"
+ "GL_RGBA_INTEGER\0"
+ "GL_RGBA_INTEGER_EXT\0"
+ "GL_RGBA_INTEGER_MODE_EXT\0"
"GL_RGBA_MODE\0"
"GL_RGBA_S3TC\0"
"GL_RGBA_SNORM\0"
+ "GL_RGB_INTEGER\0"
+ "GL_RGB_INTEGER_EXT\0"
"GL_RGB_S3TC\0"
"GL_RGB_SCALE\0"
"GL_RGB_SCALE_ARB\0"
"GL_RGB_SCALE_EXT\0"
+ "GL_RGB_SNORM\0"
+ "GL_RG_SNORM\0"
"GL_RIGHT\0"
"GL_S\0"
"GL_SAMPLER_1D\0"
+ "GL_SAMPLER_1D_ARRAY\0"
+ "GL_SAMPLER_1D_ARRAY_EXT\0"
+ "GL_SAMPLER_1D_ARRAY_SHADOW\0"
+ "GL_SAMPLER_1D_ARRAY_SHADOW_EXT\0"
"GL_SAMPLER_1D_SHADOW\0"
"GL_SAMPLER_2D\0"
+ "GL_SAMPLER_2D_ARRAY\0"
+ "GL_SAMPLER_2D_ARRAY_EXT\0"
+ "GL_SAMPLER_2D_ARRAY_SHADOW\0"
+ "GL_SAMPLER_2D_ARRAY_SHADOW_EXT\0"
+ "GL_SAMPLER_2D_RECT\0"
+ "GL_SAMPLER_2D_RECT_SHADOW\0"
"GL_SAMPLER_2D_SHADOW\0"
"GL_SAMPLER_3D\0"
"GL_SAMPLER_3D_OES\0"
+ "GL_SAMPLER_BUFFER\0"
+ "GL_SAMPLER_BUFFER_EXT\0"
"GL_SAMPLER_CUBE\0"
+ "GL_SAMPLER_CUBE_SHADOW\0"
+ "GL_SAMPLER_CUBE_SHADOW_EXT\0"
"GL_SAMPLES\0"
"GL_SAMPLES_3DFX\0"
"GL_SAMPLES_ARB\0"
@@ -1598,6 +1776,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_SELECTION_BUFFER_POINTER\0"
"GL_SELECTION_BUFFER_SIZE\0"
"GL_SEPARABLE_2D\0"
+ "GL_SEPARATE_ATTRIBS\0"
"GL_SEPARATE_ATTRIBS_EXT\0"
"GL_SEPARATE_SPECULAR_COLOR\0"
"GL_SEPARATE_SPECULAR_COLOR_EXT\0"
@@ -1689,6 +1868,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_STENCIL_BACK_VALUE_MASK\0"
"GL_STENCIL_BACK_WRITEMASK\0"
"GL_STENCIL_BITS\0"
+ "GL_STENCIL_BUFFER\0"
"GL_STENCIL_BUFFER_BIT\0"
"GL_STENCIL_CLEAR_VALUE\0"
"GL_STENCIL_FAIL\0"
@@ -1807,8 +1987,10 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE9\0"
"GL_TEXTURE9_ARB\0"
"GL_TEXTURE_1D\0"
+ "GL_TEXTURE_1D_ARRAY\0"
"GL_TEXTURE_1D_ARRAY_EXT\0"
"GL_TEXTURE_2D\0"
+ "GL_TEXTURE_2D_ARRAY\0"
"GL_TEXTURE_2D_ARRAY_EXT\0"
"GL_TEXTURE_3D\0"
"GL_TEXTURE_3D_OES\0"
@@ -1816,14 +1998,18 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE_ALPHA_SIZE_EXT\0"
"GL_TEXTURE_BASE_LEVEL\0"
"GL_TEXTURE_BINDING_1D\0"
+ "GL_TEXTURE_BINDING_1D_ARRAY\0"
"GL_TEXTURE_BINDING_1D_ARRAY_EXT\0"
"GL_TEXTURE_BINDING_2D\0"
+ "GL_TEXTURE_BINDING_2D_ARRAY\0"
"GL_TEXTURE_BINDING_2D_ARRAY_EXT\0"
"GL_TEXTURE_BINDING_3D\0"
"GL_TEXTURE_BINDING_3D_OES\0"
+ "GL_TEXTURE_BINDING_BUFFER\0"
"GL_TEXTURE_BINDING_CUBE_MAP\0"
"GL_TEXTURE_BINDING_CUBE_MAP_ARB\0"
"GL_TEXTURE_BINDING_CUBE_MAP_OES\0"
+ "GL_TEXTURE_BINDING_RECTANGLE\0"
"GL_TEXTURE_BINDING_RECTANGLE_ARB\0"
"GL_TEXTURE_BINDING_RECTANGLE_NV\0"
"GL_TEXTURE_BIT\0"
@@ -1831,6 +2017,9 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE_BLUE_SIZE_EXT\0"
"GL_TEXTURE_BORDER\0"
"GL_TEXTURE_BORDER_COLOR\0"
+ "GL_TEXTURE_BUFFER\0"
+ "GL_TEXTURE_BUFFER_DATA_STORE_BINDING\0"
+ "GL_TEXTURE_BUFFER_FORMAT\0"
"GL_TEXTURE_CLIPMAP_CENTER_SGIX\0"
"GL_TEXTURE_CLIPMAP_DEPTH_SGIX\0"
"GL_TEXTURE_CLIPMAP_FRAME_SGIX\0"
@@ -1929,11 +2118,13 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE_PRIORITY\0"
"GL_TEXTURE_RANGE_LENGTH_APPLE\0"
"GL_TEXTURE_RANGE_POINTER_APPLE\0"
+ "GL_TEXTURE_RECTANGLE\0"
"GL_TEXTURE_RECTANGLE_ARB\0"
"GL_TEXTURE_RECTANGLE_NV\0"
"GL_TEXTURE_RED_SIZE\0"
"GL_TEXTURE_RED_SIZE_EXT\0"
"GL_TEXTURE_RESIDENT\0"
+ "GL_TEXTURE_SHARED_SIZE\0"
"GL_TEXTURE_STACK_DEPTH\0"
"GL_TEXTURE_STENCIL_SIZE\0"
"GL_TEXTURE_STENCIL_SIZE_EXT\0"
@@ -1952,15 +2143,23 @@ LONGSTRING static const char enum_string_table[] =
"GL_TRANSFORM_BIT\0"
"GL_TRANSFORM_FEEDBACK\0"
"GL_TRANSFORM_FEEDBACK_BINDING\0"
+ "GL_TRANSFORM_FEEDBACK_BUFFER\0"
"GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE\0"
+ "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING\0"
"GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT\0"
"GL_TRANSFORM_FEEDBACK_BUFFER_EXT\0"
+ "GL_TRANSFORM_FEEDBACK_BUFFER_MODE\0"
"GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT\0"
"GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED\0"
+ "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE\0"
"GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT\0"
+ "GL_TRANSFORM_FEEDBACK_BUFFER_START\0"
"GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT\0"
+ "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN\0"
"GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT\0"
+ "GL_TRANSFORM_FEEDBACK_VARYINGS\0"
"GL_TRANSFORM_FEEDBACK_VARYINGS_EXT\0"
+ "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH\0"
"GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT\0"
"GL_TRANSPOSE_COLOR_MATRIX\0"
"GL_TRANSPOSE_COLOR_MATRIX_ARB\0"
@@ -1973,10 +2172,12 @@ LONGSTRING static const char enum_string_table[] =
"GL_TRANSPOSE_TEXTURE_MATRIX\0"
"GL_TRANSPOSE_TEXTURE_MATRIX_ARB\0"
"GL_TRIANGLES\0"
+ "GL_TRIANGLES_ADJACENCY\0"
"GL_TRIANGLES_ADJACENCY_ARB\0"
"GL_TRIANGLE_FAN\0"
"GL_TRIANGLE_MESH_SUN\0"
"GL_TRIANGLE_STRIP\0"
+ "GL_TRIANGLE_STRIP_ADJACENCY\0"
"GL_TRIANGLE_STRIP_ADJACENCY_ARB\0"
"GL_TRUE\0"
"GL_UNDEFINED_APPLE\0"
@@ -1993,6 +2194,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_UNSIGNED_BYTE_2_3_3_REV\0"
"GL_UNSIGNED_BYTE_3_3_2\0"
"GL_UNSIGNED_INT\0"
+ "GL_UNSIGNED_INT_10F_11F_11F_REV\0"
"GL_UNSIGNED_INT_10_10_10_2\0"
"GL_UNSIGNED_INT_10_10_10_2_OES\0"
"GL_UNSIGNED_INT_24_8\0"
@@ -2001,8 +2203,31 @@ LONGSTRING static const char enum_string_table[] =
"GL_UNSIGNED_INT_24_8_OES\0"
"GL_UNSIGNED_INT_2_10_10_10_REV\0"
"GL_UNSIGNED_INT_2_10_10_10_REV_EXT\0"
+ "GL_UNSIGNED_INT_5_9_9_9_REV\0"
"GL_UNSIGNED_INT_8_8_8_8\0"
"GL_UNSIGNED_INT_8_8_8_8_REV\0"
+ "GL_UNSIGNED_INT_SAMPLER_1D\0"
+ "GL_UNSIGNED_INT_SAMPLER_1D_ARRAY\0"
+ "GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT\0"
+ "GL_UNSIGNED_INT_SAMPLER_1D_EXT\0"
+ "GL_UNSIGNED_INT_SAMPLER_2D\0"
+ "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY\0"
+ "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT\0"
+ "GL_UNSIGNED_INT_SAMPLER_2D_EXT\0"
+ "GL_UNSIGNED_INT_SAMPLER_2D_RECT\0"
+ "GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT\0"
+ "GL_UNSIGNED_INT_SAMPLER_3D\0"
+ "GL_UNSIGNED_INT_SAMPLER_3D_EXT\0"
+ "GL_UNSIGNED_INT_SAMPLER_BUFFER\0"
+ "GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT\0"
+ "GL_UNSIGNED_INT_SAMPLER_CUBE\0"
+ "GL_UNSIGNED_INT_SAMPLER_CUBE_EXT\0"
+ "GL_UNSIGNED_INT_VEC2\0"
+ "GL_UNSIGNED_INT_VEC2_EXT\0"
+ "GL_UNSIGNED_INT_VEC3\0"
+ "GL_UNSIGNED_INT_VEC3_EXT\0"
+ "GL_UNSIGNED_INT_VEC4\0"
+ "GL_UNSIGNED_INT_VEC4_EXT\0"
"GL_UNSIGNED_NORMALIZED\0"
"GL_UNSIGNED_SHORT\0"
"GL_UNSIGNED_SHORT_1_5_5_5_REV\0"
@@ -2052,6 +2277,8 @@ LONGSTRING static const char enum_string_table[] =
"GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB\0"
"GL_VERTEX_ATTRIB_ARRAY_ENABLED\0"
"GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB\0"
+ "GL_VERTEX_ATTRIB_ARRAY_INTEGER\0"
+ "GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT\0"
"GL_VERTEX_ATTRIB_ARRAY_NORMALIZED\0"
"GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB\0"
"GL_VERTEX_ATTRIB_ARRAY_POINTER\0"
@@ -2105,7 +2332,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_ZOOM_Y\0"
;
-static const enum_elt all_enums[2067] =
+static const enum_elt all_enums[2294] =
{
{ 0, 0x00000600 }, /* GL_2D */
{ 6, 0x00001407 }, /* GL_2_BYTES */
@@ -2124,3485 +2351,3838 @@ static const enum_elt all_enums[2067] =
{ 206, 0x00000D58 }, /* GL_ACCUM_RED_BITS */
{ 224, 0x00008B89 }, /* GL_ACTIVE_ATTRIBUTES */
{ 245, 0x00008B8A }, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */
- { 276, 0x00008911 }, /* GL_ACTIVE_STENCIL_FACE_EXT */
- { 303, 0x000084E0 }, /* GL_ACTIVE_TEXTURE */
- { 321, 0x000084E0 }, /* GL_ACTIVE_TEXTURE_ARB */
- { 343, 0x00008B86 }, /* GL_ACTIVE_UNIFORMS */
- { 362, 0x00008B87 }, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
- { 391, 0x000086A5 }, /* GL_ACTIVE_VERTEX_UNITS_ARB */
- { 418, 0x00000104 }, /* GL_ADD */
- { 425, 0x00008574 }, /* GL_ADD_SIGNED */
- { 439, 0x00008574 }, /* GL_ADD_SIGNED_ARB */
- { 457, 0x00008574 }, /* GL_ADD_SIGNED_EXT */
- { 475, 0x0000846E }, /* GL_ALIASED_LINE_WIDTH_RANGE */
- { 503, 0x0000846D }, /* GL_ALIASED_POINT_SIZE_RANGE */
- { 531, 0x000FFFFF }, /* GL_ALL_ATTRIB_BITS */
- { 550, 0xFFFFFFFF }, /* GL_ALL_CLIENT_ATTRIB_BITS */
- { 576, 0x00001906 }, /* GL_ALPHA */
- { 585, 0x0000803D }, /* GL_ALPHA12 */
- { 596, 0x0000803D }, /* GL_ALPHA12_EXT */
- { 611, 0x0000803E }, /* GL_ALPHA16 */
- { 622, 0x0000803E }, /* GL_ALPHA16_EXT */
- { 637, 0x0000803B }, /* GL_ALPHA4 */
- { 647, 0x0000803B }, /* GL_ALPHA4_EXT */
- { 661, 0x0000803C }, /* GL_ALPHA8 */
- { 671, 0x0000803C }, /* GL_ALPHA8_EXT */
- { 685, 0x00000D1D }, /* GL_ALPHA_BIAS */
- { 699, 0x00000D55 }, /* GL_ALPHA_BITS */
- { 713, 0x00000D1C }, /* GL_ALPHA_SCALE */
- { 728, 0x00000BC0 }, /* GL_ALPHA_TEST */
- { 742, 0x00000BC1 }, /* GL_ALPHA_TEST_FUNC */
- { 761, 0x00000BC2 }, /* GL_ALPHA_TEST_REF */
- { 779, 0x0000911A }, /* GL_ALREADY_SIGNALED */
- { 799, 0x00000207 }, /* GL_ALWAYS */
- { 809, 0x00001200 }, /* GL_AMBIENT */
- { 820, 0x00001602 }, /* GL_AMBIENT_AND_DIFFUSE */
- { 843, 0x00001501 }, /* GL_AND */
- { 850, 0x00001504 }, /* GL_AND_INVERTED */
- { 866, 0x00001502 }, /* GL_AND_REVERSE */
- { 881, 0x00008892 }, /* GL_ARRAY_BUFFER */
- { 897, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING */
- { 921, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING_ARB */
- { 949, 0x00008B85 }, /* GL_ATTACHED_SHADERS */
- { 969, 0x00008645 }, /* GL_ATTRIB_ARRAY_POINTER_NV */
- { 996, 0x00008623 }, /* GL_ATTRIB_ARRAY_SIZE_NV */
- { 1020, 0x00008624 }, /* GL_ATTRIB_ARRAY_STRIDE_NV */
- { 1046, 0x00008625 }, /* GL_ATTRIB_ARRAY_TYPE_NV */
- { 1070, 0x00000BB0 }, /* GL_ATTRIB_STACK_DEPTH */
- { 1092, 0x00000D80 }, /* GL_AUTO_NORMAL */
- { 1107, 0x00000409 }, /* GL_AUX0 */
- { 1115, 0x0000040A }, /* GL_AUX1 */
- { 1123, 0x0000040B }, /* GL_AUX2 */
- { 1131, 0x0000040C }, /* GL_AUX3 */
- { 1139, 0x00000C00 }, /* GL_AUX_BUFFERS */
- { 1154, 0x00000405 }, /* GL_BACK */
- { 1162, 0x00000402 }, /* GL_BACK_LEFT */
- { 1175, 0x00000403 }, /* GL_BACK_RIGHT */
- { 1189, 0x000080E0 }, /* GL_BGR */
- { 1196, 0x000080E1 }, /* GL_BGRA */
- { 1204, 0x000080E1 }, /* GL_BGRA_EXT */
- { 1216, 0x00001A00 }, /* GL_BITMAP */
- { 1226, 0x00000704 }, /* GL_BITMAP_TOKEN */
- { 1242, 0x00000BE2 }, /* GL_BLEND */
- { 1251, 0x00008005 }, /* GL_BLEND_COLOR */
- { 1266, 0x00008005 }, /* GL_BLEND_COLOR_EXT */
- { 1285, 0x00000BE0 }, /* GL_BLEND_DST */
- { 1298, 0x000080CA }, /* GL_BLEND_DST_ALPHA */
- { 1317, 0x000080CA }, /* GL_BLEND_DST_ALPHA_OES */
- { 1340, 0x000080C8 }, /* GL_BLEND_DST_RGB */
- { 1357, 0x000080C8 }, /* GL_BLEND_DST_RGB_OES */
- { 1378, 0x00008009 }, /* GL_BLEND_EQUATION */
- { 1396, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */
- { 1420, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */
- { 1448, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_OES */
- { 1476, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */
- { 1498, 0x00008009 }, /* GL_BLEND_EQUATION_OES */
- { 1520, 0x00008009 }, /* GL_BLEND_EQUATION_RGB */
- { 1542, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */
- { 1568, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_OES */
- { 1594, 0x00000BE1 }, /* GL_BLEND_SRC */
- { 1607, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */
- { 1626, 0x000080CB }, /* GL_BLEND_SRC_ALPHA_OES */
- { 1649, 0x000080C9 }, /* GL_BLEND_SRC_RGB */
- { 1666, 0x000080C9 }, /* GL_BLEND_SRC_RGB_OES */
- { 1687, 0x00001905 }, /* GL_BLUE */
- { 1695, 0x00000D1B }, /* GL_BLUE_BIAS */
- { 1708, 0x00000D54 }, /* GL_BLUE_BITS */
- { 1721, 0x00000D1A }, /* GL_BLUE_SCALE */
- { 1735, 0x00008B56 }, /* GL_BOOL */
- { 1743, 0x00008B56 }, /* GL_BOOL_ARB */
- { 1755, 0x00008B57 }, /* GL_BOOL_VEC2 */
- { 1768, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */
- { 1785, 0x00008B58 }, /* GL_BOOL_VEC3 */
- { 1798, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */
- { 1815, 0x00008B59 }, /* GL_BOOL_VEC4 */
- { 1828, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */
- { 1845, 0x000088BB }, /* GL_BUFFER_ACCESS */
- { 1862, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */
- { 1883, 0x000088BB }, /* GL_BUFFER_ACCESS_OES */
- { 1904, 0x00008A13 }, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */
- { 1935, 0x000088BC }, /* GL_BUFFER_MAPPED */
- { 1952, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */
- { 1973, 0x000088BC }, /* GL_BUFFER_MAPPED_OES */
- { 1994, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */
- { 2016, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */
- { 2042, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_OES */
- { 2068, 0x000085B3 }, /* GL_BUFFER_OBJECT_APPLE */
- { 2091, 0x00008A12 }, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */
- { 2125, 0x00008764 }, /* GL_BUFFER_SIZE */
- { 2140, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */
- { 2159, 0x00008765 }, /* GL_BUFFER_USAGE */
- { 2175, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */
- { 2195, 0x0000877B }, /* GL_BUMP_ENVMAP_ATI */
- { 2214, 0x00008777 }, /* GL_BUMP_NUM_TEX_UNITS_ATI */
- { 2240, 0x00008775 }, /* GL_BUMP_ROT_MATRIX_ATI */
- { 2263, 0x00008776 }, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */
- { 2291, 0x0000877C }, /* GL_BUMP_TARGET_ATI */
- { 2310, 0x00008778 }, /* GL_BUMP_TEX_UNITS_ATI */
- { 2332, 0x00001400 }, /* GL_BYTE */
- { 2340, 0x00002A24 }, /* GL_C3F_V3F */
- { 2351, 0x00002A26 }, /* GL_C4F_N3F_V3F */
- { 2366, 0x00002A22 }, /* GL_C4UB_V2F */
- { 2378, 0x00002A23 }, /* GL_C4UB_V3F */
- { 2390, 0x00000901 }, /* GL_CCW */
- { 2397, 0x00002900 }, /* GL_CLAMP */
- { 2406, 0x0000812D }, /* GL_CLAMP_TO_BORDER */
- { 2425, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */
- { 2448, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */
- { 2472, 0x0000812F }, /* GL_CLAMP_TO_EDGE */
- { 2489, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */
- { 2511, 0x00001500 }, /* GL_CLEAR */
- { 2520, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */
- { 2545, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */
- { 2574, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */
- { 2600, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
- { 2629, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */
- { 2655, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */
- { 2682, 0x00003000 }, /* GL_CLIP_PLANE0 */
- { 2697, 0x00003001 }, /* GL_CLIP_PLANE1 */
- { 2712, 0x00003002 }, /* GL_CLIP_PLANE2 */
- { 2727, 0x00003003 }, /* GL_CLIP_PLANE3 */
- { 2742, 0x00003004 }, /* GL_CLIP_PLANE4 */
- { 2757, 0x00003005 }, /* GL_CLIP_PLANE5 */
- { 2772, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
- { 2805, 0x00000A00 }, /* GL_COEFF */
- { 2814, 0x00001800 }, /* GL_COLOR */
- { 2823, 0x00008076 }, /* GL_COLOR_ARRAY */
- { 2838, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */
- { 2868, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */
- { 2902, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */
- { 2925, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */
- { 2945, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */
- { 2967, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */
- { 2987, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */
- { 3008, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */
- { 3033, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */
- { 3058, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */
- { 3079, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */
- { 3101, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */
- { 3127, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */
- { 3149, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */
- { 3175, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */
- { 3197, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */
- { 3223, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */
- { 3245, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */
- { 3271, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */
- { 3293, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */
- { 3319, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */
- { 3341, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */
- { 3367, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */
- { 3392, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */
- { 3413, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */
- { 3438, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */
- { 3459, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */
- { 3484, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */
- { 3505, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */
- { 3530, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */
- { 3551, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */
- { 3576, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */
- { 3597, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */
- { 3622, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */
- { 3643, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */
- { 3668, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */
- { 3689, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */
- { 3714, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */
- { 3735, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */
- { 3760, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */
- { 3780, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */
- { 3801, 0x00001900 }, /* GL_COLOR_INDEX */
- { 3816, 0x00001603 }, /* GL_COLOR_INDEXES */
- { 3833, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */
- { 3851, 0x00000B57 }, /* GL_COLOR_MATERIAL */
- { 3869, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */
- { 3892, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */
- { 3920, 0x000080B1 }, /* GL_COLOR_MATRIX */
- { 3936, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */
- { 3956, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */
- { 3984, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */
- { 4016, 0x00008458 }, /* GL_COLOR_SUM */
- { 4029, 0x00008458 }, /* GL_COLOR_SUM_ARB */
- { 4046, 0x000080D0 }, /* GL_COLOR_TABLE */
- { 4061, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */
- { 4087, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */
- { 4117, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */
- { 4147, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */
- { 4167, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */
- { 4191, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */
- { 4216, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */
- { 4245, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */
- { 4274, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */
- { 4296, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */
- { 4322, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */
- { 4348, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */
- { 4374, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */
- { 4404, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */
- { 4434, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */
- { 4464, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */
- { 4498, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */
- { 4532, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
- { 4562, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */
- { 4596, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */
- { 4630, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */
- { 4654, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */
- { 4682, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */
- { 4710, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */
- { 4731, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */
- { 4756, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */
- { 4777, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */
- { 4802, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */
- { 4827, 0x00000C23 }, /* GL_COLOR_WRITEMASK */
- { 4846, 0x00008570 }, /* GL_COMBINE */
- { 4857, 0x00008503 }, /* GL_COMBINE4 */
- { 4869, 0x00008572 }, /* GL_COMBINE_ALPHA */
- { 4886, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */
- { 4907, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */
- { 4928, 0x00008570 }, /* GL_COMBINE_ARB */
- { 4943, 0x00008570 }, /* GL_COMBINE_EXT */
- { 4958, 0x00008571 }, /* GL_COMBINE_RGB */
- { 4973, 0x00008571 }, /* GL_COMBINE_RGB_ARB */
- { 4992, 0x00008571 }, /* GL_COMBINE_RGB_EXT */
- { 5011, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */
- { 5047, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */
- { 5071, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */
- { 5099, 0x00001300 }, /* GL_COMPILE */
- { 5110, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */
- { 5133, 0x00008B81 }, /* GL_COMPILE_STATUS */
- { 5151, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */
- { 5171, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */
- { 5195, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */
- { 5219, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */
- { 5247, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */
- { 5271, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */
- { 5301, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */
- { 5335, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */
- { 5363, 0x000084ED }, /* GL_COMPRESSED_RGB */
- { 5381, 0x000084EE }, /* GL_COMPRESSED_RGBA */
- { 5400, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */
- { 5423, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
- { 5452, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
- { 5485, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
- { 5518, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
- { 5551, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */
- { 5573, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */
- { 5601, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
- { 5633, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */
- { 5658, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
- { 5689, 0x00008C48 }, /* GL_COMPRESSED_SRGB */
- { 5708, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */
- { 5733, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */
- { 5763, 0x0000911C }, /* GL_CONDITION_SATISFIED */
- { 5786, 0x00008576 }, /* GL_CONSTANT */
- { 5798, 0x00008003 }, /* GL_CONSTANT_ALPHA */
- { 5816, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */
- { 5838, 0x00008576 }, /* GL_CONSTANT_ARB */
- { 5854, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */
- { 5878, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */
- { 5900, 0x00008001 }, /* GL_CONSTANT_COLOR */
- { 5918, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */
- { 5940, 0x00008576 }, /* GL_CONSTANT_EXT */
- { 5956, 0x00008010 }, /* GL_CONVOLUTION_1D */
- { 5974, 0x00008011 }, /* GL_CONVOLUTION_2D */
- { 5992, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */
- { 6020, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */
- { 6051, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */
- { 6078, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */
- { 6109, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */
- { 6136, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */
- { 6167, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */
- { 6195, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */
- { 6227, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */
- { 6249, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */
- { 6275, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */
- { 6297, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */
- { 6323, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */
- { 6344, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */
- { 6369, 0x00008862 }, /* GL_COORD_REPLACE */
- { 6386, 0x00008862 }, /* GL_COORD_REPLACE_ARB */
- { 6407, 0x00008862 }, /* GL_COORD_REPLACE_NV */
- { 6427, 0x00008862 }, /* GL_COORD_REPLACE_OES */
- { 6448, 0x00001503 }, /* GL_COPY */
- { 6456, 0x0000150C }, /* GL_COPY_INVERTED */
- { 6473, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */
- { 6493, 0x00008F36 }, /* GL_COPY_READ_BUFFER */
- { 6513, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */
- { 6534, 0x00000B44 }, /* GL_CULL_FACE */
- { 6547, 0x00000B45 }, /* GL_CULL_FACE_MODE */
- { 6565, 0x000081AA }, /* GL_CULL_VERTEX_EXT */
- { 6584, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
- { 6616, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
- { 6651, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */
- { 6672, 0x00000001 }, /* GL_CURRENT_BIT */
- { 6687, 0x00000B00 }, /* GL_CURRENT_COLOR */
- { 6704, 0x00008453 }, /* GL_CURRENT_FOG_COORD */
- { 6725, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */
- { 6751, 0x00000B01 }, /* GL_CURRENT_INDEX */
- { 6768, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */
- { 6790, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */
- { 6818, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */
- { 6839, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
- { 6873, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */
- { 6906, 0x00000B02 }, /* GL_CURRENT_NORMAL */
- { 6924, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */
- { 6954, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */
- { 6984, 0x00008B8D }, /* GL_CURRENT_PROGRAM */
- { 7003, 0x00008865 }, /* GL_CURRENT_QUERY */
- { 7020, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */
- { 7041, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */
- { 7065, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */
- { 7092, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */
- { 7116, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */
- { 7143, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */
- { 7176, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
- { 7210, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
- { 7243, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */
- { 7270, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */
- { 7296, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */
- { 7321, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */
- { 7350, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */
- { 7372, 0x00000900 }, /* GL_CW */
- { 7378, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */
- { 7399, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */
- { 7420, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */
- { 7440, 0x00002101 }, /* GL_DECAL */
- { 7449, 0x00001E03 }, /* GL_DECR */
- { 7457, 0x00008508 }, /* GL_DECR_WRAP */
- { 7470, 0x00008508 }, /* GL_DECR_WRAP_EXT */
- { 7487, 0x00008B80 }, /* GL_DELETE_STATUS */
- { 7504, 0x00001801 }, /* GL_DEPTH */
- { 7513, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */
- { 7533, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */
- { 7557, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */
- { 7581, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */
- { 7601, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */
- { 7625, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */
- { 7649, 0x00000D1F }, /* GL_DEPTH_BIAS */
- { 7663, 0x00000D56 }, /* GL_DEPTH_BITS */
- { 7677, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */
- { 7697, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */
- { 7722, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */
- { 7742, 0x0000864F }, /* GL_DEPTH_CLAMP */
- { 7757, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */
- { 7775, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */
- { 7796, 0x00001902 }, /* GL_DEPTH_COMPONENT */
- { 7815, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */
- { 7836, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */
- { 7861, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */
- { 7886, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */
- { 7912, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */
- { 7933, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */
- { 7958, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */
- { 7983, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */
- { 8009, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */
- { 8030, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */
- { 8055, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */
- { 8080, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */
- { 8106, 0x00000B74 }, /* GL_DEPTH_FUNC */
- { 8120, 0x00000B70 }, /* GL_DEPTH_RANGE */
- { 8135, 0x00000D1E }, /* GL_DEPTH_SCALE */
- { 8150, 0x000084F9 }, /* GL_DEPTH_STENCIL */
- { 8167, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */
- { 8195, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */
- { 8216, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */
- { 8236, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */
- { 8257, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
- { 8285, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
- { 8313, 0x00000B71 }, /* GL_DEPTH_TEST */
- { 8327, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */
- { 8349, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */
- { 8375, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */
- { 8394, 0x00001201 }, /* GL_DIFFUSE */
- { 8405, 0x00000BD0 }, /* GL_DITHER */
- { 8415, 0x00000A02 }, /* GL_DOMAIN */
- { 8425, 0x00001100 }, /* GL_DONT_CARE */
- { 8438, 0x000086AE }, /* GL_DOT3_RGB */
- { 8450, 0x000086AF }, /* GL_DOT3_RGBA */
- { 8463, 0x000086AF }, /* GL_DOT3_RGBA_ARB */
- { 8480, 0x00008741 }, /* GL_DOT3_RGBA_EXT */
- { 8497, 0x000086AE }, /* GL_DOT3_RGB_ARB */
- { 8513, 0x00008740 }, /* GL_DOT3_RGB_EXT */
- { 8529, 0x0000140A }, /* GL_DOUBLE */
- { 8539, 0x00000C32 }, /* GL_DOUBLEBUFFER */
- { 8555, 0x00000C01 }, /* GL_DRAW_BUFFER */
- { 8570, 0x00008825 }, /* GL_DRAW_BUFFER0 */
- { 8586, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */
- { 8606, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */
- { 8626, 0x00008826 }, /* GL_DRAW_BUFFER1 */
- { 8642, 0x0000882F }, /* GL_DRAW_BUFFER10 */
- { 8659, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */
- { 8680, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */
- { 8701, 0x00008830 }, /* GL_DRAW_BUFFER11 */
- { 8718, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */
- { 8739, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */
- { 8760, 0x00008831 }, /* GL_DRAW_BUFFER12 */
- { 8777, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */
- { 8798, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */
- { 8819, 0x00008832 }, /* GL_DRAW_BUFFER13 */
- { 8836, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */
- { 8857, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */
- { 8878, 0x00008833 }, /* GL_DRAW_BUFFER14 */
- { 8895, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */
- { 8916, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */
- { 8937, 0x00008834 }, /* GL_DRAW_BUFFER15 */
- { 8954, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */
- { 8975, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */
- { 8996, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */
- { 9016, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */
- { 9036, 0x00008827 }, /* GL_DRAW_BUFFER2 */
- { 9052, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */
- { 9072, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */
- { 9092, 0x00008828 }, /* GL_DRAW_BUFFER3 */
- { 9108, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */
- { 9128, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */
- { 9148, 0x00008829 }, /* GL_DRAW_BUFFER4 */
- { 9164, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */
- { 9184, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */
- { 9204, 0x0000882A }, /* GL_DRAW_BUFFER5 */
- { 9220, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */
- { 9240, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */
- { 9260, 0x0000882B }, /* GL_DRAW_BUFFER6 */
- { 9276, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */
- { 9296, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */
- { 9316, 0x0000882C }, /* GL_DRAW_BUFFER7 */
- { 9332, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */
- { 9352, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */
- { 9372, 0x0000882D }, /* GL_DRAW_BUFFER8 */
- { 9388, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */
- { 9408, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */
- { 9428, 0x0000882E }, /* GL_DRAW_BUFFER9 */
- { 9444, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */
- { 9464, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */
- { 9484, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */
- { 9504, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */
- { 9532, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
- { 9564, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */
- { 9588, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */
- { 9608, 0x00000304 }, /* GL_DST_ALPHA */
- { 9621, 0x00000306 }, /* GL_DST_COLOR */
- { 9634, 0x0000877A }, /* GL_DU8DV8_ATI */
- { 9648, 0x00008779 }, /* GL_DUDV_ATI */
- { 9660, 0x000088EA }, /* GL_DYNAMIC_COPY */
- { 9676, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */
- { 9696, 0x000088E8 }, /* GL_DYNAMIC_DRAW */
- { 9712, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */
- { 9732, 0x000088E9 }, /* GL_DYNAMIC_READ */
- { 9748, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */
- { 9768, 0x00000B43 }, /* GL_EDGE_FLAG */
- { 9781, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */
- { 9800, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
- { 9834, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */
- { 9872, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */
- { 9899, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */
- { 9925, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */
- { 9949, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
- { 9981, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */
- { 10017, 0x00001600 }, /* GL_EMISSION */
- { 10029, 0x00002000 }, /* GL_ENABLE_BIT */
- { 10043, 0x00000202 }, /* GL_EQUAL */
- { 10052, 0x00001509 }, /* GL_EQUIV */
- { 10061, 0x00010000 }, /* GL_EVAL_BIT */
- { 10073, 0x00000800 }, /* GL_EXP */
- { 10080, 0x00000801 }, /* GL_EXP2 */
- { 10088, 0x00001F03 }, /* GL_EXTENSIONS */
- { 10102, 0x00002400 }, /* GL_EYE_LINEAR */
- { 10116, 0x00002502 }, /* GL_EYE_PLANE */
- { 10129, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */
- { 10154, 0x0000855B }, /* GL_EYE_RADIAL_NV */
- { 10171, 0x00000000 }, /* GL_FALSE */
- { 10180, 0x00001101 }, /* GL_FASTEST */
- { 10191, 0x00001C01 }, /* GL_FEEDBACK */
- { 10203, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */
- { 10230, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */
- { 10254, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */
- { 10278, 0x00001B02 }, /* GL_FILL */
- { 10286, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */
- { 10313, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */
- { 10344, 0x0000140C }, /* GL_FIXED */
- { 10353, 0x0000140C }, /* GL_FIXED_OES */
- { 10366, 0x00001D00 }, /* GL_FLAT */
- { 10374, 0x00001406 }, /* GL_FLOAT */
- { 10383, 0x00008B5A }, /* GL_FLOAT_MAT2 */
- { 10397, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */
- { 10415, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */
- { 10431, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */
- { 10447, 0x00008B5B }, /* GL_FLOAT_MAT3 */
- { 10461, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */
- { 10479, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */
- { 10495, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */
- { 10511, 0x00008B5C }, /* GL_FLOAT_MAT4 */
- { 10525, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */
- { 10543, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */
- { 10559, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */
- { 10575, 0x00008B50 }, /* GL_FLOAT_VEC2 */
- { 10589, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */
- { 10607, 0x00008B51 }, /* GL_FLOAT_VEC3 */
- { 10621, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */
- { 10639, 0x00008B52 }, /* GL_FLOAT_VEC4 */
- { 10653, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */
- { 10671, 0x00000B60 }, /* GL_FOG */
- { 10678, 0x00000080 }, /* GL_FOG_BIT */
- { 10689, 0x00000B66 }, /* GL_FOG_COLOR */
- { 10702, 0x00008451 }, /* GL_FOG_COORD */
- { 10715, 0x00008451 }, /* GL_FOG_COORDINATE */
- { 10733, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */
- { 10757, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
- { 10796, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */
- { 10839, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */
- { 10871, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
- { 10902, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */
- { 10931, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */
- { 10956, 0x00008457 }, /* GL_FOG_COORD_ARRAY */
- { 10975, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */
- { 11009, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */
- { 11036, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */
- { 11062, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */
- { 11086, 0x00008450 }, /* GL_FOG_COORD_SRC */
- { 11103, 0x00000B62 }, /* GL_FOG_DENSITY */
- { 11118, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */
- { 11142, 0x00000B64 }, /* GL_FOG_END */
- { 11153, 0x00000C54 }, /* GL_FOG_HINT */
- { 11165, 0x00000B61 }, /* GL_FOG_INDEX */
- { 11178, 0x00000B65 }, /* GL_FOG_MODE */
- { 11190, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */
- { 11209, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */
- { 11234, 0x00000B63 }, /* GL_FOG_START */
- { 11247, 0x00008452 }, /* GL_FRAGMENT_DEPTH */
- { 11265, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */
- { 11289, 0x00008B30 }, /* GL_FRAGMENT_SHADER */
- { 11308, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */
- { 11331, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
- { 11366, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */
- { 11405, 0x00008D40 }, /* GL_FRAMEBUFFER */
- { 11420, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
- { 11457, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
- { 11493, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
- { 11534, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
- { 11575, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
- { 11612, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
- { 11649, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */
- { 11687, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
- { 11725, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
- { 11767, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */
- { 11809, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
- { 11847, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
- { 11889, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */
- { 11931, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
- { 11966, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
- { 12005, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
- { 12054, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */
- { 12103, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
- { 12151, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
- { 12203, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */
- { 12255, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
- { 12295, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
- { 12339, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
- { 12379, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
- { 12423, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */
- { 12467, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */
- { 12490, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */
- { 12517, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */
- { 12544, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */
- { 12568, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */
- { 12596, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */
- { 12624, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */
- { 12647, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */
- { 12666, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
- { 12703, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
- { 12744, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */
- { 12785, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */
- { 12822, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
- { 12863, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */
- { 12904, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
- { 12942, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
- { 12984, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */
- { 13026, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
- { 13077, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
- { 13115, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */
- { 13153, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
- { 13195, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */
- { 13239, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
- { 13284, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
- { 13333, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */
- { 13382, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
- { 13420, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */
- { 13462, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
- { 13500, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
- { 13542, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */
- { 13584, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */
- { 13603, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
- { 13635, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */
- { 13660, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */
- { 13687, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
- { 13718, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */
- { 13749, 0x00000404 }, /* GL_FRONT */
- { 13758, 0x00000408 }, /* GL_FRONT_AND_BACK */
- { 13776, 0x00000B46 }, /* GL_FRONT_FACE */
- { 13790, 0x00000400 }, /* GL_FRONT_LEFT */
- { 13804, 0x00000401 }, /* GL_FRONT_RIGHT */
- { 13819, 0x00008006 }, /* GL_FUNC_ADD */
- { 13831, 0x00008006 }, /* GL_FUNC_ADD_EXT */
- { 13847, 0x00008006 }, /* GL_FUNC_ADD_OES */
- { 13863, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */
- { 13888, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */
- { 13917, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */
- { 13946, 0x0000800A }, /* GL_FUNC_SUBTRACT */
- { 13963, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */
- { 13984, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */
- { 14005, 0x00008191 }, /* GL_GENERATE_MIPMAP */
- { 14024, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */
- { 14048, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */
- { 14077, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */
- { 14101, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */
- { 14128, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
- { 14156, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */
- { 14179, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */
- { 14208, 0x00000206 }, /* GL_GEQUAL */
- { 14218, 0x00000204 }, /* GL_GREATER */
- { 14229, 0x00001904 }, /* GL_GREEN */
- { 14238, 0x00000D19 }, /* GL_GREEN_BIAS */
- { 14252, 0x00000D53 }, /* GL_GREEN_BITS */
- { 14266, 0x00000D18 }, /* GL_GREEN_SCALE */
- { 14281, 0x0000140B }, /* GL_HALF_FLOAT */
- { 14295, 0x00008D61 }, /* GL_HALF_FLOAT_OES */
- { 14313, 0x00008DF2 }, /* GL_HIGH_FLOAT */
- { 14327, 0x00008DF5 }, /* GL_HIGH_INT */
- { 14339, 0x00008000 }, /* GL_HINT_BIT */
- { 14351, 0x00008024 }, /* GL_HISTOGRAM */
- { 14364, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */
- { 14388, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */
- { 14416, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */
- { 14439, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */
- { 14466, 0x00008024 }, /* GL_HISTOGRAM_EXT */
- { 14483, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */
- { 14503, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */
- { 14527, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */
- { 14551, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */
- { 14579, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */
- { 14607, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */
- { 14639, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */
- { 14661, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */
- { 14687, 0x0000802D }, /* GL_HISTOGRAM_SINK */
- { 14705, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
- { 14727, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
- { 14746, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
- { 14769, 0x0000862A }, /* GL_IDENTITY_NV */
- { 14784, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
- { 14804, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
- { 14840, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
- { 14880, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
- { 14914, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
- { 14952, 0x00001E02 }, /* GL_INCR */
- { 14960, 0x00008507 }, /* GL_INCR_WRAP */
- { 14973, 0x00008507 }, /* GL_INCR_WRAP_EXT */
- { 14990, 0x00008222 }, /* GL_INDEX */
- { 14999, 0x00008077 }, /* GL_INDEX_ARRAY */
- { 15014, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
- { 15044, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
- { 15078, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
- { 15101, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
- { 15123, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
- { 15143, 0x00000D51 }, /* GL_INDEX_BITS */
- { 15157, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
- { 15178, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
- { 15196, 0x00000C30 }, /* GL_INDEX_MODE */
- { 15210, 0x00000D13 }, /* GL_INDEX_OFFSET */
- { 15226, 0x00000D12 }, /* GL_INDEX_SHIFT */
- { 15241, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
- { 15260, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */
- { 15279, 0x00001404 }, /* GL_INT */
- { 15286, 0x00008049 }, /* GL_INTENSITY */
- { 15299, 0x0000804C }, /* GL_INTENSITY12 */
- { 15314, 0x0000804C }, /* GL_INTENSITY12_EXT */
- { 15333, 0x0000804D }, /* GL_INTENSITY16 */
- { 15348, 0x0000804D }, /* GL_INTENSITY16_EXT */
- { 15367, 0x0000804A }, /* GL_INTENSITY4 */
- { 15381, 0x0000804A }, /* GL_INTENSITY4_EXT */
- { 15399, 0x0000804B }, /* GL_INTENSITY8 */
- { 15413, 0x0000804B }, /* GL_INTENSITY8_EXT */
- { 15431, 0x00008049 }, /* GL_INTENSITY_EXT */
- { 15448, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */
- { 15475, 0x00008575 }, /* GL_INTERPOLATE */
- { 15490, 0x00008575 }, /* GL_INTERPOLATE_ARB */
- { 15509, 0x00008575 }, /* GL_INTERPOLATE_EXT */
- { 15528, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */
- { 15550, 0x00008B53 }, /* GL_INT_VEC2 */
- { 15562, 0x00008B53 }, /* GL_INT_VEC2_ARB */
- { 15578, 0x00008B54 }, /* GL_INT_VEC3 */
- { 15590, 0x00008B54 }, /* GL_INT_VEC3_ARB */
- { 15606, 0x00008B55 }, /* GL_INT_VEC4 */
- { 15618, 0x00008B55 }, /* GL_INT_VEC4_ARB */
- { 15634, 0x00000500 }, /* GL_INVALID_ENUM */
- { 15650, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */
- { 15683, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
- { 15720, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */
- { 15757, 0x00000502 }, /* GL_INVALID_OPERATION */
- { 15778, 0x00000501 }, /* GL_INVALID_VALUE */
- { 15795, 0x0000862B }, /* GL_INVERSE_NV */
- { 15809, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
- { 15833, 0x0000150A }, /* GL_INVERT */
- { 15843, 0x00001E00 }, /* GL_KEEP */
- { 15851, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */
- { 15877, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */
- { 15907, 0x00000406 }, /* GL_LEFT */
- { 15915, 0x00000203 }, /* GL_LEQUAL */
- { 15925, 0x00000201 }, /* GL_LESS */
- { 15933, 0x00004000 }, /* GL_LIGHT0 */
- { 15943, 0x00004001 }, /* GL_LIGHT1 */
- { 15953, 0x00004002 }, /* GL_LIGHT2 */
- { 15963, 0x00004003 }, /* GL_LIGHT3 */
- { 15973, 0x00004004 }, /* GL_LIGHT4 */
- { 15983, 0x00004005 }, /* GL_LIGHT5 */
- { 15993, 0x00004006 }, /* GL_LIGHT6 */
- { 16003, 0x00004007 }, /* GL_LIGHT7 */
- { 16013, 0x00000B50 }, /* GL_LIGHTING */
- { 16025, 0x00000040 }, /* GL_LIGHTING_BIT */
- { 16041, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
- { 16064, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
- { 16093, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
- { 16126, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
- { 16154, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
- { 16178, 0x00001B01 }, /* GL_LINE */
- { 16186, 0x00002601 }, /* GL_LINEAR */
- { 16196, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
- { 16218, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
- { 16248, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
- { 16279, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
- { 16303, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
- { 16328, 0x00000001 }, /* GL_LINES */
- { 16337, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */
- { 16360, 0x00000004 }, /* GL_LINE_BIT */
- { 16372, 0x00000002 }, /* GL_LINE_LOOP */
- { 16385, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
- { 16405, 0x00000B20 }, /* GL_LINE_SMOOTH */
- { 16420, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
- { 16440, 0x00000B24 }, /* GL_LINE_STIPPLE */
- { 16456, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
- { 16480, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
- { 16503, 0x00000003 }, /* GL_LINE_STRIP */
- { 16517, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */
- { 16545, 0x00000702 }, /* GL_LINE_TOKEN */
- { 16559, 0x00000B21 }, /* GL_LINE_WIDTH */
- { 16573, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
- { 16599, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
- { 16619, 0x00008B82 }, /* GL_LINK_STATUS */
- { 16634, 0x00000B32 }, /* GL_LIST_BASE */
- { 16647, 0x00020000 }, /* GL_LIST_BIT */
- { 16659, 0x00000B33 }, /* GL_LIST_INDEX */
- { 16673, 0x00000B30 }, /* GL_LIST_MODE */
- { 16686, 0x00000101 }, /* GL_LOAD */
- { 16694, 0x00000BF1 }, /* GL_LOGIC_OP */
- { 16706, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
- { 16723, 0x00008CA1 }, /* GL_LOWER_LEFT */
- { 16737, 0x00008DF0 }, /* GL_LOW_FLOAT */
- { 16750, 0x00008DF3 }, /* GL_LOW_INT */
- { 16761, 0x00001909 }, /* GL_LUMINANCE */
- { 16774, 0x00008041 }, /* GL_LUMINANCE12 */
- { 16789, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
- { 16812, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
- { 16839, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
- { 16861, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
- { 16887, 0x00008041 }, /* GL_LUMINANCE12_EXT */
- { 16906, 0x00008042 }, /* GL_LUMINANCE16 */
- { 16921, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
- { 16944, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
- { 16971, 0x00008042 }, /* GL_LUMINANCE16_EXT */
- { 16990, 0x0000803F }, /* GL_LUMINANCE4 */
- { 17004, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
- { 17025, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
- { 17050, 0x0000803F }, /* GL_LUMINANCE4_EXT */
- { 17068, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
- { 17089, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
- { 17114, 0x00008040 }, /* GL_LUMINANCE8 */
- { 17128, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
- { 17149, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
- { 17174, 0x00008040 }, /* GL_LUMINANCE8_EXT */
- { 17192, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
- { 17211, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
- { 17227, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
- { 17247, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
- { 17269, 0x00000D91 }, /* GL_MAP1_INDEX */
- { 17283, 0x00000D92 }, /* GL_MAP1_NORMAL */
- { 17298, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
- { 17322, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
- { 17346, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
- { 17370, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
- { 17394, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
- { 17411, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
- { 17428, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
- { 17456, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
- { 17485, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
- { 17514, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
- { 17543, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
- { 17572, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
- { 17601, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
- { 17630, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
- { 17658, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
- { 17686, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
- { 17714, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
- { 17742, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
- { 17770, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
- { 17798, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
- { 17826, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
- { 17854, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
- { 17882, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
- { 17898, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
- { 17918, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
- { 17940, 0x00000DB1 }, /* GL_MAP2_INDEX */
- { 17954, 0x00000DB2 }, /* GL_MAP2_NORMAL */
- { 17969, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
- { 17993, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
- { 18017, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
- { 18041, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
- { 18065, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
- { 18082, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
- { 18099, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
- { 18127, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
- { 18156, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
- { 18185, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
- { 18214, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
- { 18243, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
- { 18272, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
- { 18301, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
- { 18329, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
- { 18357, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
- { 18385, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
- { 18413, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
- { 18441, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
- { 18469, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
- { 18497, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
- { 18525, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
- { 18553, 0x00000D10 }, /* GL_MAP_COLOR */
- { 18566, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */
- { 18592, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */
- { 18621, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */
- { 18649, 0x00000001 }, /* GL_MAP_READ_BIT */
- { 18665, 0x00000D11 }, /* GL_MAP_STENCIL */
- { 18680, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */
- { 18706, 0x00000002 }, /* GL_MAP_WRITE_BIT */
- { 18723, 0x000088C0 }, /* GL_MATRIX0_ARB */
- { 18738, 0x00008630 }, /* GL_MATRIX0_NV */
- { 18752, 0x000088CA }, /* GL_MATRIX10_ARB */
- { 18768, 0x000088CB }, /* GL_MATRIX11_ARB */
- { 18784, 0x000088CC }, /* GL_MATRIX12_ARB */
- { 18800, 0x000088CD }, /* GL_MATRIX13_ARB */
- { 18816, 0x000088CE }, /* GL_MATRIX14_ARB */
- { 18832, 0x000088CF }, /* GL_MATRIX15_ARB */
- { 18848, 0x000088D0 }, /* GL_MATRIX16_ARB */
- { 18864, 0x000088D1 }, /* GL_MATRIX17_ARB */
- { 18880, 0x000088D2 }, /* GL_MATRIX18_ARB */
- { 18896, 0x000088D3 }, /* GL_MATRIX19_ARB */
- { 18912, 0x000088C1 }, /* GL_MATRIX1_ARB */
- { 18927, 0x00008631 }, /* GL_MATRIX1_NV */
- { 18941, 0x000088D4 }, /* GL_MATRIX20_ARB */
- { 18957, 0x000088D5 }, /* GL_MATRIX21_ARB */
- { 18973, 0x000088D6 }, /* GL_MATRIX22_ARB */
- { 18989, 0x000088D7 }, /* GL_MATRIX23_ARB */
- { 19005, 0x000088D8 }, /* GL_MATRIX24_ARB */
- { 19021, 0x000088D9 }, /* GL_MATRIX25_ARB */
- { 19037, 0x000088DA }, /* GL_MATRIX26_ARB */
- { 19053, 0x000088DB }, /* GL_MATRIX27_ARB */
- { 19069, 0x000088DC }, /* GL_MATRIX28_ARB */
- { 19085, 0x000088DD }, /* GL_MATRIX29_ARB */
- { 19101, 0x000088C2 }, /* GL_MATRIX2_ARB */
- { 19116, 0x00008632 }, /* GL_MATRIX2_NV */
- { 19130, 0x000088DE }, /* GL_MATRIX30_ARB */
- { 19146, 0x000088DF }, /* GL_MATRIX31_ARB */
- { 19162, 0x000088C3 }, /* GL_MATRIX3_ARB */
- { 19177, 0x00008633 }, /* GL_MATRIX3_NV */
- { 19191, 0x000088C4 }, /* GL_MATRIX4_ARB */
- { 19206, 0x00008634 }, /* GL_MATRIX4_NV */
- { 19220, 0x000088C5 }, /* GL_MATRIX5_ARB */
- { 19235, 0x00008635 }, /* GL_MATRIX5_NV */
- { 19249, 0x000088C6 }, /* GL_MATRIX6_ARB */
- { 19264, 0x00008636 }, /* GL_MATRIX6_NV */
- { 19278, 0x000088C7 }, /* GL_MATRIX7_ARB */
- { 19293, 0x00008637 }, /* GL_MATRIX7_NV */
- { 19307, 0x000088C8 }, /* GL_MATRIX8_ARB */
- { 19322, 0x000088C9 }, /* GL_MATRIX9_ARB */
- { 19337, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
- { 19363, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
- { 19404, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */
- { 19430, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
- { 19464, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */
- { 19498, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
- { 19529, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */
- { 19560, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
- { 19593, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */
- { 19626, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
- { 19657, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */
- { 19688, 0x00000BA0 }, /* GL_MATRIX_MODE */
- { 19703, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
- { 19725, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */
- { 19747, 0x00008008 }, /* GL_MAX */
- { 19754, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
- { 19777, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */
- { 19804, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
- { 19836, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
- { 19862, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
- { 19895, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
- { 19921, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- { 19955, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
- { 19974, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */
- { 19999, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
- { 20028, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
- { 20060, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
- { 20096, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
- { 20132, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
- { 20172, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
- { 20198, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
- { 20228, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
- { 20253, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
- { 20282, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
- { 20311, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
- { 20344, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */
- { 20377, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */
- { 20397, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
- { 20421, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
- { 20445, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
- { 20469, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
- { 20494, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
- { 20512, 0x00008008 }, /* GL_MAX_EXT */
- { 20523, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
- { 20558, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
- { 20597, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
- { 20629, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */
- { 20665, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */
- { 20705, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */
- { 20749, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */
- { 20788, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
- { 20827, 0x00000D31 }, /* GL_MAX_LIGHTS */
- { 20841, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
- { 20861, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
- { 20899, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
- { 20928, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
- { 20952, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
- { 20980, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */
- { 21008, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
- { 21031, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
- { 21068, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
- { 21104, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
- { 21131, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
- { 21160, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
- { 21194, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
- { 21230, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
- { 21257, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
- { 21289, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
- { 21325, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
- { 21354, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
- { 21383, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
- { 21411, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
- { 21449, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- { 21493, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- { 21536, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
- { 21570, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- { 21609, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
- { 21646, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
- { 21684, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- { 21727, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- { 21770, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
- { 21800, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
- { 21831, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
- { 21867, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
- { 21903, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
- { 21933, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
- { 21967, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
- { 22000, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */
- { 22025, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
- { 22054, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */
- { 22083, 0x00008D57 }, /* GL_MAX_SAMPLES */
- { 22098, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */
- { 22117, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */
- { 22144, 0x00008504 }, /* GL_MAX_SHININESS_NV */
- { 22164, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
- { 22188, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */
- { 22210, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
- { 22236, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */
- { 22263, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
- { 22294, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
- { 22318, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */
- { 22346, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
- { 22380, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
- { 22400, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
- { 22427, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
- { 22448, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
- { 22473, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
- { 22498, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
- { 22533, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */
- { 22586, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */
- { 22633, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */
- { 22683, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */
- { 22709, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */
- { 22731, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
- { 22757, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */
- { 22780, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */
- { 22802, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
- { 22828, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
- { 22862, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
- { 22900, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
- { 22933, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
- { 22970, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
- { 23000, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
- { 23024, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */
- { 23048, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
- { 23085, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
- { 23106, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */
- { 23122, 0x00008DF4 }, /* GL_MEDIUM_INT */
- { 23136, 0x00008007 }, /* GL_MIN */
- { 23143, 0x0000802E }, /* GL_MINMAX */
- { 23153, 0x0000802E }, /* GL_MINMAX_EXT */
- { 23167, 0x0000802F }, /* GL_MINMAX_FORMAT */
- { 23184, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
- { 23205, 0x00008030 }, /* GL_MINMAX_SINK */
- { 23220, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
- { 23239, 0x00008007 }, /* GL_MIN_EXT */
- { 23250, 0x00008370 }, /* GL_MIRRORED_REPEAT */
- { 23269, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
- { 23292, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
- { 23315, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
- { 23335, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
- { 23355, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
- { 23385, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
- { 23413, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
- { 23441, 0x00001700 }, /* GL_MODELVIEW */
- { 23454, 0x00001700 }, /* GL_MODELVIEW0_ARB */
- { 23472, 0x0000872A }, /* GL_MODELVIEW10_ARB */
- { 23491, 0x0000872B }, /* GL_MODELVIEW11_ARB */
- { 23510, 0x0000872C }, /* GL_MODELVIEW12_ARB */
- { 23529, 0x0000872D }, /* GL_MODELVIEW13_ARB */
- { 23548, 0x0000872E }, /* GL_MODELVIEW14_ARB */
- { 23567, 0x0000872F }, /* GL_MODELVIEW15_ARB */
- { 23586, 0x00008730 }, /* GL_MODELVIEW16_ARB */
- { 23605, 0x00008731 }, /* GL_MODELVIEW17_ARB */
- { 23624, 0x00008732 }, /* GL_MODELVIEW18_ARB */
- { 23643, 0x00008733 }, /* GL_MODELVIEW19_ARB */
- { 23662, 0x0000850A }, /* GL_MODELVIEW1_ARB */
- { 23680, 0x00008734 }, /* GL_MODELVIEW20_ARB */
- { 23699, 0x00008735 }, /* GL_MODELVIEW21_ARB */
- { 23718, 0x00008736 }, /* GL_MODELVIEW22_ARB */
- { 23737, 0x00008737 }, /* GL_MODELVIEW23_ARB */
- { 23756, 0x00008738 }, /* GL_MODELVIEW24_ARB */
- { 23775, 0x00008739 }, /* GL_MODELVIEW25_ARB */
- { 23794, 0x0000873A }, /* GL_MODELVIEW26_ARB */
- { 23813, 0x0000873B }, /* GL_MODELVIEW27_ARB */
- { 23832, 0x0000873C }, /* GL_MODELVIEW28_ARB */
- { 23851, 0x0000873D }, /* GL_MODELVIEW29_ARB */
- { 23870, 0x00008722 }, /* GL_MODELVIEW2_ARB */
- { 23888, 0x0000873E }, /* GL_MODELVIEW30_ARB */
- { 23907, 0x0000873F }, /* GL_MODELVIEW31_ARB */
- { 23926, 0x00008723 }, /* GL_MODELVIEW3_ARB */
- { 23944, 0x00008724 }, /* GL_MODELVIEW4_ARB */
- { 23962, 0x00008725 }, /* GL_MODELVIEW5_ARB */
- { 23980, 0x00008726 }, /* GL_MODELVIEW6_ARB */
- { 23998, 0x00008727 }, /* GL_MODELVIEW7_ARB */
- { 24016, 0x00008728 }, /* GL_MODELVIEW8_ARB */
- { 24034, 0x00008729 }, /* GL_MODELVIEW9_ARB */
- { 24052, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
- { 24072, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
- { 24114, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
- { 24141, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
- { 24166, 0x00002100 }, /* GL_MODULATE */
- { 24178, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
- { 24198, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
- { 24225, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
- { 24250, 0x00000103 }, /* GL_MULT */
- { 24258, 0x0000809D }, /* GL_MULTISAMPLE */
- { 24273, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
- { 24293, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
- { 24312, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
- { 24331, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
- { 24355, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
- { 24378, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
- { 24408, 0x00002A25 }, /* GL_N3F_V3F */
- { 24419, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
- { 24439, 0x0000150E }, /* GL_NAND */
- { 24447, 0x00002600 }, /* GL_NEAREST */
- { 24458, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
- { 24489, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
- { 24521, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
- { 24546, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
- { 24572, 0x00000200 }, /* GL_NEVER */
- { 24581, 0x00001102 }, /* GL_NICEST */
- { 24591, 0x00000000 }, /* GL_NONE */
- { 24599, 0x00000000 }, /* GL_NONE_OES */
- { 24611, 0x00001505 }, /* GL_NOOP */
- { 24619, 0x00001508 }, /* GL_NOR */
- { 24626, 0x00000BA1 }, /* GL_NORMALIZE */
- { 24639, 0x00008075 }, /* GL_NORMAL_ARRAY */
- { 24655, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
- { 24686, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
- { 24721, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
- { 24745, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
- { 24768, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
- { 24789, 0x00008511 }, /* GL_NORMAL_MAP */
- { 24803, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
- { 24821, 0x00008511 }, /* GL_NORMAL_MAP_NV */
- { 24838, 0x00008511 }, /* GL_NORMAL_MAP_OES */
- { 24856, 0x00000205 }, /* GL_NOTEQUAL */
- { 24868, 0x00000000 }, /* GL_NO_ERROR */
- { 24880, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
- { 24914, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */
- { 24952, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
- { 24986, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */
- { 25015, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
- { 25047, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
- { 25089, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
- { 25119, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
- { 25159, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
- { 25190, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
- { 25219, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
- { 25247, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
- { 25277, 0x00002401 }, /* GL_OBJECT_LINEAR */
- { 25294, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
- { 25320, 0x00002501 }, /* GL_OBJECT_PLANE */
- { 25336, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
- { 25371, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
- { 25393, 0x00009112 }, /* GL_OBJECT_TYPE */
- { 25408, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
- { 25427, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
- { 25457, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
- { 25478, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
- { 25506, 0x00000001 }, /* GL_ONE */
- { 25513, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
- { 25541, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
- { 25573, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
- { 25601, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
- { 25633, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
- { 25656, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
- { 25679, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
- { 25702, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
- { 25725, 0x00008598 }, /* GL_OPERAND0_ALPHA */
- { 25743, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
- { 25765, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
- { 25787, 0x00008590 }, /* GL_OPERAND0_RGB */
- { 25803, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
- { 25823, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
- { 25843, 0x00008599 }, /* GL_OPERAND1_ALPHA */
- { 25861, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
- { 25883, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
- { 25905, 0x00008591 }, /* GL_OPERAND1_RGB */
- { 25921, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
- { 25941, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
- { 25961, 0x0000859A }, /* GL_OPERAND2_ALPHA */
- { 25979, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
- { 26001, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
- { 26023, 0x00008592 }, /* GL_OPERAND2_RGB */
- { 26039, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
- { 26059, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
- { 26079, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
- { 26100, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
- { 26119, 0x00001507 }, /* GL_OR */
- { 26125, 0x00000A01 }, /* GL_ORDER */
- { 26134, 0x0000150D }, /* GL_OR_INVERTED */
- { 26149, 0x0000150B }, /* GL_OR_REVERSE */
- { 26163, 0x00000505 }, /* GL_OUT_OF_MEMORY */
- { 26180, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
- { 26198, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
- { 26219, 0x00008758 }, /* GL_PACK_INVERT_MESA */
- { 26239, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
- { 26257, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
- { 26276, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
- { 26296, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
- { 26316, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
- { 26334, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
- { 26353, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
- { 26378, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
- { 26402, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
- { 26423, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
- { 26445, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
- { 26467, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
- { 26492, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
- { 26516, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
- { 26537, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
- { 26559, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
- { 26581, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
- { 26603, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
- { 26634, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
- { 26654, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
- { 26679, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
- { 26699, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
- { 26724, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
- { 26744, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
- { 26769, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
- { 26789, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
- { 26814, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
- { 26834, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
- { 26859, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
- { 26879, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
- { 26904, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
- { 26924, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
- { 26949, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
- { 26969, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
- { 26994, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
- { 27014, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
- { 27039, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
- { 27059, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
- { 27084, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
- { 27102, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */
- { 27123, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */
- { 27152, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
- { 27185, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
- { 27210, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */
- { 27233, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
- { 27264, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
- { 27299, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
- { 27326, 0x00001B00 }, /* GL_POINT */
- { 27335, 0x00000000 }, /* GL_POINTS */
- { 27345, 0x00000002 }, /* GL_POINT_BIT */
- { 27358, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
- { 27388, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
- { 27422, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
- { 27456, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
- { 27491, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
- { 27520, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
- { 27553, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
- { 27586, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
- { 27620, 0x00000B11 }, /* GL_POINT_SIZE */
- { 27634, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
- { 27673, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */
- { 27697, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
- { 27729, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
- { 27760, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
- { 27789, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
- { 27815, 0x00008127 }, /* GL_POINT_SIZE_MAX */
- { 27833, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
- { 27855, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
- { 27877, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
- { 27900, 0x00008126 }, /* GL_POINT_SIZE_MIN */
- { 27918, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
- { 27940, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
- { 27962, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
- { 27985, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
- { 28005, 0x00000B10 }, /* GL_POINT_SMOOTH */
- { 28021, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
- { 28042, 0x00008861 }, /* GL_POINT_SPRITE */
- { 28058, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
- { 28078, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
- { 28107, 0x00008861 }, /* GL_POINT_SPRITE_NV */
- { 28126, 0x00008861 }, /* GL_POINT_SPRITE_OES */
- { 28146, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
- { 28172, 0x00000701 }, /* GL_POINT_TOKEN */
- { 28187, 0x00000009 }, /* GL_POLYGON */
- { 28198, 0x00000008 }, /* GL_POLYGON_BIT */
- { 28213, 0x00000B40 }, /* GL_POLYGON_MODE */
- { 28229, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
- { 28252, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
- { 28277, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
- { 28300, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
- { 28323, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
- { 28347, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
- { 28371, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
- { 28389, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
- { 28412, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
- { 28431, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
- { 28454, 0x00000703 }, /* GL_POLYGON_TOKEN */
- { 28471, 0x00001203 }, /* GL_POSITION */
- { 28483, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
- { 28515, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
- { 28551, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
- { 28584, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
- { 28621, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
- { 28652, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
- { 28687, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
- { 28719, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
- { 28755, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
- { 28788, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
- { 28820, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
- { 28856, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
- { 28889, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
- { 28926, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
- { 28956, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
- { 28990, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
- { 29021, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
- { 29056, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
- { 29087, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
- { 29122, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
- { 29154, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
- { 29190, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
- { 29220, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
- { 29254, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
- { 29285, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
- { 29320, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
- { 29352, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
- { 29383, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
- { 29418, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
- { 29450, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
- { 29486, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
- { 29515, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
- { 29548, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
- { 29578, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
- { 29612, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
- { 29651, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
- { 29684, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
- { 29724, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
- { 29758, 0x00008578 }, /* GL_PREVIOUS */
- { 29770, 0x00008578 }, /* GL_PREVIOUS_ARB */
- { 29786, 0x00008578 }, /* GL_PREVIOUS_EXT */
- { 29802, 0x00008577 }, /* GL_PRIMARY_COLOR */
- { 29819, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
- { 29840, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
- { 29861, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */
- { 29889, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */
- { 29919, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */
- { 29943, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
- { 29976, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
- { 30008, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
- { 30031, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */
- { 30061, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */
- { 30090, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
- { 30113, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
- { 30143, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
- { 30172, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
- { 30200, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
- { 30222, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
- { 30250, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
- { 30278, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
- { 30300, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
- { 30321, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- { 30361, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- { 30400, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
- { 30430, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- { 30465, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
- { 30498, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
- { 30532, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- { 30571, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- { 30610, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
- { 30632, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
- { 30658, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
- { 30682, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */
- { 30708, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
- { 30731, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
- { 30753, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
- { 30774, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
- { 30795, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
- { 30822, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
- { 30854, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
- { 30886, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
- { 30921, 0x00001701 }, /* GL_PROJECTION */
- { 30935, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
- { 30956, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
- { 30999, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
- { 31025, 0x00008E4F }, /* GL_PROVOKING_VERTEX */
- { 31045, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */
- { 31069, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
- { 31090, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
- { 31109, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
- { 31132, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
- { 31171, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
- { 31209, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
- { 31229, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
- { 31259, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
- { 31283, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
- { 31303, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
- { 31333, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
- { 31357, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
- { 31377, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
- { 31410, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
- { 31436, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
- { 31466, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
- { 31497, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
- { 31527, 0x00008A1D }, /* GL_PURGEABLE_APPLE */
- { 31546, 0x00002003 }, /* GL_Q */
- { 31551, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
- { 31576, 0x00000007 }, /* GL_QUADS */
- { 31585, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
- { 31629, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */
- { 31677, 0x00008614 }, /* GL_QUAD_MESH_SUN */
- { 31694, 0x00000008 }, /* GL_QUAD_STRIP */
- { 31708, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
- { 31738, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */
- { 31765, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
- { 31787, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
- { 31813, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */
- { 31833, 0x00008866 }, /* GL_QUERY_RESULT */
- { 31849, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
- { 31869, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
- { 31895, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
- { 31925, 0x00008E13 }, /* GL_QUERY_WAIT_NV */
- { 31942, 0x00002002 }, /* GL_R */
- { 31947, 0x00002A10 }, /* GL_R3_G3_B2 */
- { 31959, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */
- { 31985, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
- { 32018, 0x00000C02 }, /* GL_READ_BUFFER */
- { 32033, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */
- { 32053, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */
- { 32081, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
- { 32113, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
- { 32137, 0x000088B8 }, /* GL_READ_ONLY */
- { 32150, 0x000088B8 }, /* GL_READ_ONLY_ARB */
- { 32167, 0x000088BA }, /* GL_READ_WRITE */
- { 32181, 0x000088BA }, /* GL_READ_WRITE_ARB */
- { 32199, 0x00001903 }, /* GL_RED */
- { 32206, 0x00008016 }, /* GL_REDUCE */
- { 32216, 0x00008016 }, /* GL_REDUCE_EXT */
- { 32230, 0x00000D15 }, /* GL_RED_BIAS */
- { 32242, 0x00000D52 }, /* GL_RED_BITS */
- { 32254, 0x00000D14 }, /* GL_RED_SCALE */
- { 32267, 0x00008512 }, /* GL_REFLECTION_MAP */
- { 32285, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
- { 32307, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
- { 32328, 0x00008512 }, /* GL_REFLECTION_MAP_OES */
- { 32350, 0x00008A19 }, /* GL_RELEASED_APPLE */
- { 32368, 0x00001C00 }, /* GL_RENDER */
- { 32378, 0x00008D41 }, /* GL_RENDERBUFFER */
- { 32394, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */
- { 32421, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */
- { 32452, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */
- { 32476, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
- { 32504, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */
- { 32532, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */
- { 32558, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */
- { 32588, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */
- { 32615, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */
- { 32646, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
- { 32666, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */
- { 32693, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */
- { 32724, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */
- { 32747, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
- { 32774, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */
- { 32801, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
- { 32833, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
- { 32869, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
- { 32905, 0x00008D41 }, /* GL_RENDERBUFFER_OES */
- { 32925, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */
- { 32950, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */
- { 32979, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */
- { 33003, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */
- { 33031, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */
- { 33060, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */
- { 33093, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */
- { 33115, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
- { 33141, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */
- { 33167, 0x00001F01 }, /* GL_RENDERER */
- { 33179, 0x00000C40 }, /* GL_RENDER_MODE */
- { 33194, 0x00002901 }, /* GL_REPEAT */
- { 33204, 0x00001E01 }, /* GL_REPLACE */
- { 33215, 0x00008062 }, /* GL_REPLACE_EXT */
- { 33230, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
- { 33253, 0x0000803A }, /* GL_RESCALE_NORMAL */
- { 33271, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
- { 33293, 0x00008A1B }, /* GL_RETAINED_APPLE */
- { 33311, 0x00000102 }, /* GL_RETURN */
- { 33321, 0x00001907 }, /* GL_RGB */
- { 33328, 0x00008052 }, /* GL_RGB10 */
- { 33337, 0x00008059 }, /* GL_RGB10_A2 */
- { 33349, 0x00008059 }, /* GL_RGB10_A2_EXT */
- { 33365, 0x00008052 }, /* GL_RGB10_EXT */
- { 33378, 0x00008053 }, /* GL_RGB12 */
- { 33387, 0x00008053 }, /* GL_RGB12_EXT */
- { 33400, 0x00008054 }, /* GL_RGB16 */
- { 33409, 0x00008054 }, /* GL_RGB16_EXT */
- { 33422, 0x0000804E }, /* GL_RGB2_EXT */
- { 33434, 0x0000804F }, /* GL_RGB4 */
- { 33442, 0x0000804F }, /* GL_RGB4_EXT */
- { 33454, 0x000083A1 }, /* GL_RGB4_S3TC */
- { 33467, 0x00008050 }, /* GL_RGB5 */
- { 33475, 0x00008D62 }, /* GL_RGB565 */
- { 33485, 0x00008D62 }, /* GL_RGB565_OES */
- { 33499, 0x00008057 }, /* GL_RGB5_A1 */
- { 33510, 0x00008057 }, /* GL_RGB5_A1_EXT */
- { 33525, 0x00008057 }, /* GL_RGB5_A1_OES */
- { 33540, 0x00008050 }, /* GL_RGB5_EXT */
- { 33552, 0x00008051 }, /* GL_RGB8 */
- { 33560, 0x00008051 }, /* GL_RGB8_EXT */
- { 33572, 0x00008051 }, /* GL_RGB8_OES */
- { 33584, 0x00001908 }, /* GL_RGBA */
- { 33592, 0x0000805A }, /* GL_RGBA12 */
- { 33602, 0x0000805A }, /* GL_RGBA12_EXT */
- { 33616, 0x0000805B }, /* GL_RGBA16 */
- { 33626, 0x0000805B }, /* GL_RGBA16_EXT */
- { 33640, 0x00008055 }, /* GL_RGBA2 */
- { 33649, 0x00008055 }, /* GL_RGBA2_EXT */
- { 33662, 0x00008056 }, /* GL_RGBA4 */
- { 33671, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
- { 33690, 0x00008056 }, /* GL_RGBA4_EXT */
- { 33703, 0x00008056 }, /* GL_RGBA4_OES */
- { 33716, 0x000083A3 }, /* GL_RGBA4_S3TC */
- { 33730, 0x00008058 }, /* GL_RGBA8 */
- { 33739, 0x00008058 }, /* GL_RGBA8_EXT */
- { 33752, 0x00008058 }, /* GL_RGBA8_OES */
- { 33765, 0x00008F97 }, /* GL_RGBA8_SNORM */
- { 33780, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
- { 33798, 0x00000C31 }, /* GL_RGBA_MODE */
- { 33811, 0x000083A2 }, /* GL_RGBA_S3TC */
- { 33824, 0x00008F93 }, /* GL_RGBA_SNORM */
- { 33838, 0x000083A0 }, /* GL_RGB_S3TC */
- { 33850, 0x00008573 }, /* GL_RGB_SCALE */
- { 33863, 0x00008573 }, /* GL_RGB_SCALE_ARB */
- { 33880, 0x00008573 }, /* GL_RGB_SCALE_EXT */
- { 33897, 0x00000407 }, /* GL_RIGHT */
- { 33906, 0x00002000 }, /* GL_S */
- { 33911, 0x00008B5D }, /* GL_SAMPLER_1D */
- { 33925, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
- { 33946, 0x00008B5E }, /* GL_SAMPLER_2D */
- { 33960, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
- { 33981, 0x00008B5F }, /* GL_SAMPLER_3D */
- { 33995, 0x00008B5F }, /* GL_SAMPLER_3D_OES */
- { 34013, 0x00008B60 }, /* GL_SAMPLER_CUBE */
- { 34029, 0x000080A9 }, /* GL_SAMPLES */
- { 34040, 0x000086B4 }, /* GL_SAMPLES_3DFX */
- { 34056, 0x000080A9 }, /* GL_SAMPLES_ARB */
- { 34071, 0x00008914 }, /* GL_SAMPLES_PASSED */
- { 34089, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
- { 34111, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
- { 34139, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
- { 34171, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
- { 34194, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
- { 34221, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
- { 34239, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
- { 34262, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
- { 34284, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
- { 34303, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
- { 34326, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
- { 34352, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
- { 34382, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
- { 34407, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
- { 34436, 0x00080000 }, /* GL_SCISSOR_BIT */
- { 34451, 0x00000C10 }, /* GL_SCISSOR_BOX */
- { 34466, 0x00000C11 }, /* GL_SCISSOR_TEST */
- { 34482, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
- { 34507, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
- { 34547, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
- { 34591, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
- { 34624, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
- { 34654, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
- { 34686, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
- { 34716, 0x00001C02 }, /* GL_SELECT */
- { 34726, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
- { 34754, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
- { 34779, 0x00008012 }, /* GL_SEPARABLE_2D */
- { 34795, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */
- { 34819, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
- { 34846, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
- { 34877, 0x0000150F }, /* GL_SET */
- { 34884, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */
- { 34909, 0x00008DFA }, /* GL_SHADER_COMPILER */
- { 34928, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
- { 34949, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
- { 34973, 0x00008B4F }, /* GL_SHADER_TYPE */
- { 34988, 0x00000B54 }, /* GL_SHADE_MODEL */
- { 35003, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
- { 35031, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
- { 35054, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
- { 35084, 0x00001601 }, /* GL_SHININESS */
- { 35097, 0x00001402 }, /* GL_SHORT */
- { 35106, 0x00009119 }, /* GL_SIGNALED */
- { 35118, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */
- { 35139, 0x000081F9 }, /* GL_SINGLE_COLOR */
- { 35155, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
- { 35175, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
- { 35194, 0x00008C46 }, /* GL_SLUMINANCE */
- { 35208, 0x00008C47 }, /* GL_SLUMINANCE8 */
- { 35223, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */
- { 35245, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */
- { 35265, 0x00001D01 }, /* GL_SMOOTH */
- { 35275, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
- { 35308, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
- { 35335, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
- { 35368, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
- { 35395, 0x00008588 }, /* GL_SOURCE0_ALPHA */
- { 35412, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
- { 35433, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
- { 35454, 0x00008580 }, /* GL_SOURCE0_RGB */
- { 35469, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
- { 35488, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
- { 35507, 0x00008589 }, /* GL_SOURCE1_ALPHA */
- { 35524, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
- { 35545, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
- { 35566, 0x00008581 }, /* GL_SOURCE1_RGB */
- { 35581, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
- { 35600, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
- { 35619, 0x0000858A }, /* GL_SOURCE2_ALPHA */
- { 35636, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
- { 35657, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
- { 35678, 0x00008582 }, /* GL_SOURCE2_RGB */
- { 35693, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
- { 35712, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
- { 35731, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
- { 35751, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
- { 35769, 0x00001202 }, /* GL_SPECULAR */
- { 35781, 0x00002402 }, /* GL_SPHERE_MAP */
- { 35795, 0x00001206 }, /* GL_SPOT_CUTOFF */
- { 35810, 0x00001204 }, /* GL_SPOT_DIRECTION */
- { 35828, 0x00001205 }, /* GL_SPOT_EXPONENT */
- { 35845, 0x00008588 }, /* GL_SRC0_ALPHA */
- { 35859, 0x00008580 }, /* GL_SRC0_RGB */
- { 35871, 0x00008589 }, /* GL_SRC1_ALPHA */
- { 35885, 0x00008581 }, /* GL_SRC1_RGB */
- { 35897, 0x0000858A }, /* GL_SRC2_ALPHA */
- { 35911, 0x00008582 }, /* GL_SRC2_RGB */
- { 35923, 0x00000302 }, /* GL_SRC_ALPHA */
- { 35936, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
- { 35958, 0x00000300 }, /* GL_SRC_COLOR */
- { 35971, 0x00008C40 }, /* GL_SRGB */
- { 35979, 0x00008C41 }, /* GL_SRGB8 */
- { 35988, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */
- { 36004, 0x00008C42 }, /* GL_SRGB_ALPHA */
- { 36018, 0x00000503 }, /* GL_STACK_OVERFLOW */
- { 36036, 0x00000504 }, /* GL_STACK_UNDERFLOW */
- { 36055, 0x000088E6 }, /* GL_STATIC_COPY */
- { 36070, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
- { 36089, 0x000088E4 }, /* GL_STATIC_DRAW */
- { 36104, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
- { 36123, 0x000088E5 }, /* GL_STATIC_READ */
- { 36138, 0x000088E5 }, /* GL_STATIC_READ_ARB */
- { 36157, 0x00001802 }, /* GL_STENCIL */
- { 36168, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */
- { 36190, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
- { 36216, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */
- { 36242, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
- { 36263, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */
- { 36288, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
- { 36309, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */
- { 36334, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
- { 36366, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */
- { 36402, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
- { 36434, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */
- { 36470, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
- { 36490, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
- { 36517, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
- { 36543, 0x00000D57 }, /* GL_STENCIL_BITS */
- { 36559, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
- { 36581, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
- { 36604, 0x00000B94 }, /* GL_STENCIL_FAIL */
- { 36620, 0x00000B92 }, /* GL_STENCIL_FUNC */
- { 36636, 0x00001901 }, /* GL_STENCIL_INDEX */
- { 36653, 0x00008D46 }, /* GL_STENCIL_INDEX1 */
- { 36671, 0x00008D49 }, /* GL_STENCIL_INDEX16 */
- { 36690, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
- { 36713, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
- { 36735, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */
- { 36757, 0x00008D47 }, /* GL_STENCIL_INDEX4 */
- { 36775, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
- { 36797, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */
- { 36819, 0x00008D48 }, /* GL_STENCIL_INDEX8 */
- { 36837, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
- { 36859, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */
- { 36881, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
- { 36902, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
- { 36929, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
- { 36956, 0x00000B97 }, /* GL_STENCIL_REF */
- { 36971, 0x00000B90 }, /* GL_STENCIL_TEST */
- { 36987, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
- { 37016, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
- { 37038, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
- { 37059, 0x00000C33 }, /* GL_STEREO */
- { 37069, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */
- { 37093, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */
- { 37118, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */
- { 37142, 0x000088E2 }, /* GL_STREAM_COPY */
- { 37157, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
- { 37176, 0x000088E0 }, /* GL_STREAM_DRAW */
- { 37191, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
- { 37210, 0x000088E1 }, /* GL_STREAM_READ */
- { 37225, 0x000088E1 }, /* GL_STREAM_READ_ARB */
- { 37244, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
- { 37261, 0x000084E7 }, /* GL_SUBTRACT */
- { 37273, 0x000084E7 }, /* GL_SUBTRACT_ARB */
- { 37289, 0x00009113 }, /* GL_SYNC_CONDITION */
- { 37307, 0x00009116 }, /* GL_SYNC_FENCE */
- { 37321, 0x00009115 }, /* GL_SYNC_FLAGS */
- { 37335, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */
- { 37362, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
- { 37392, 0x00009114 }, /* GL_SYNC_STATUS */
- { 37407, 0x00002001 }, /* GL_T */
- { 37412, 0x00002A2A }, /* GL_T2F_C3F_V3F */
- { 37427, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
- { 37446, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
- { 37462, 0x00002A2B }, /* GL_T2F_N3F_V3F */
- { 37477, 0x00002A27 }, /* GL_T2F_V3F */
- { 37488, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
- { 37507, 0x00002A28 }, /* GL_T4F_V4F */
- { 37518, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
- { 37541, 0x00001702 }, /* GL_TEXTURE */
- { 37552, 0x000084C0 }, /* GL_TEXTURE0 */
- { 37564, 0x000084C0 }, /* GL_TEXTURE0_ARB */
- { 37580, 0x000084C1 }, /* GL_TEXTURE1 */
- { 37592, 0x000084CA }, /* GL_TEXTURE10 */
- { 37605, 0x000084CA }, /* GL_TEXTURE10_ARB */
- { 37622, 0x000084CB }, /* GL_TEXTURE11 */
- { 37635, 0x000084CB }, /* GL_TEXTURE11_ARB */
- { 37652, 0x000084CC }, /* GL_TEXTURE12 */
- { 37665, 0x000084CC }, /* GL_TEXTURE12_ARB */
- { 37682, 0x000084CD }, /* GL_TEXTURE13 */
- { 37695, 0x000084CD }, /* GL_TEXTURE13_ARB */
- { 37712, 0x000084CE }, /* GL_TEXTURE14 */
- { 37725, 0x000084CE }, /* GL_TEXTURE14_ARB */
- { 37742, 0x000084CF }, /* GL_TEXTURE15 */
- { 37755, 0x000084CF }, /* GL_TEXTURE15_ARB */
- { 37772, 0x000084D0 }, /* GL_TEXTURE16 */
- { 37785, 0x000084D0 }, /* GL_TEXTURE16_ARB */
- { 37802, 0x000084D1 }, /* GL_TEXTURE17 */
- { 37815, 0x000084D1 }, /* GL_TEXTURE17_ARB */
- { 37832, 0x000084D2 }, /* GL_TEXTURE18 */
- { 37845, 0x000084D2 }, /* GL_TEXTURE18_ARB */
- { 37862, 0x000084D3 }, /* GL_TEXTURE19 */
- { 37875, 0x000084D3 }, /* GL_TEXTURE19_ARB */
- { 37892, 0x000084C1 }, /* GL_TEXTURE1_ARB */
- { 37908, 0x000084C2 }, /* GL_TEXTURE2 */
- { 37920, 0x000084D4 }, /* GL_TEXTURE20 */
- { 37933, 0x000084D4 }, /* GL_TEXTURE20_ARB */
- { 37950, 0x000084D5 }, /* GL_TEXTURE21 */
- { 37963, 0x000084D5 }, /* GL_TEXTURE21_ARB */
- { 37980, 0x000084D6 }, /* GL_TEXTURE22 */
- { 37993, 0x000084D6 }, /* GL_TEXTURE22_ARB */
- { 38010, 0x000084D7 }, /* GL_TEXTURE23 */
- { 38023, 0x000084D7 }, /* GL_TEXTURE23_ARB */
- { 38040, 0x000084D8 }, /* GL_TEXTURE24 */
- { 38053, 0x000084D8 }, /* GL_TEXTURE24_ARB */
- { 38070, 0x000084D9 }, /* GL_TEXTURE25 */
- { 38083, 0x000084D9 }, /* GL_TEXTURE25_ARB */
- { 38100, 0x000084DA }, /* GL_TEXTURE26 */
- { 38113, 0x000084DA }, /* GL_TEXTURE26_ARB */
- { 38130, 0x000084DB }, /* GL_TEXTURE27 */
- { 38143, 0x000084DB }, /* GL_TEXTURE27_ARB */
- { 38160, 0x000084DC }, /* GL_TEXTURE28 */
- { 38173, 0x000084DC }, /* GL_TEXTURE28_ARB */
- { 38190, 0x000084DD }, /* GL_TEXTURE29 */
- { 38203, 0x000084DD }, /* GL_TEXTURE29_ARB */
- { 38220, 0x000084C2 }, /* GL_TEXTURE2_ARB */
- { 38236, 0x000084C3 }, /* GL_TEXTURE3 */
- { 38248, 0x000084DE }, /* GL_TEXTURE30 */
- { 38261, 0x000084DE }, /* GL_TEXTURE30_ARB */
- { 38278, 0x000084DF }, /* GL_TEXTURE31 */
- { 38291, 0x000084DF }, /* GL_TEXTURE31_ARB */
- { 38308, 0x000084C3 }, /* GL_TEXTURE3_ARB */
- { 38324, 0x000084C4 }, /* GL_TEXTURE4 */
- { 38336, 0x000084C4 }, /* GL_TEXTURE4_ARB */
- { 38352, 0x000084C5 }, /* GL_TEXTURE5 */
- { 38364, 0x000084C5 }, /* GL_TEXTURE5_ARB */
- { 38380, 0x000084C6 }, /* GL_TEXTURE6 */
- { 38392, 0x000084C6 }, /* GL_TEXTURE6_ARB */
- { 38408, 0x000084C7 }, /* GL_TEXTURE7 */
- { 38420, 0x000084C7 }, /* GL_TEXTURE7_ARB */
- { 38436, 0x000084C8 }, /* GL_TEXTURE8 */
- { 38448, 0x000084C8 }, /* GL_TEXTURE8_ARB */
- { 38464, 0x000084C9 }, /* GL_TEXTURE9 */
- { 38476, 0x000084C9 }, /* GL_TEXTURE9_ARB */
- { 38492, 0x00000DE0 }, /* GL_TEXTURE_1D */
- { 38506, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
- { 38530, 0x00000DE1 }, /* GL_TEXTURE_2D */
- { 38544, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
- { 38568, 0x0000806F }, /* GL_TEXTURE_3D */
- { 38582, 0x0000806F }, /* GL_TEXTURE_3D_OES */
- { 38600, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
- { 38622, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
- { 38648, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
- { 38670, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
- { 38692, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
- { 38724, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
- { 38746, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
- { 38778, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
- { 38800, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */
- { 38826, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
- { 38854, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
- { 38886, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */
- { 38918, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
- { 38951, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
- { 38983, 0x00040000 }, /* GL_TEXTURE_BIT */
- { 38998, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
- { 39019, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
- { 39044, 0x00001005 }, /* GL_TEXTURE_BORDER */
- { 39062, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
- { 39086, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
- { 39117, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
- { 39147, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
- { 39177, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
- { 39212, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
- { 39243, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- { 39281, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
- { 39308, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
- { 39340, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
- { 39374, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
- { 39398, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
- { 39426, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
- { 39450, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
- { 39478, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
- { 39511, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
- { 39535, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
- { 39557, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
- { 39579, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
- { 39605, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
- { 39639, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
- { 39672, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
- { 39709, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
- { 39737, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
- { 39769, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
- { 39792, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
- { 39830, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
- { 39872, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
- { 39903, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
- { 39931, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
- { 39961, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
- { 39989, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */
- { 40014, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
- { 40034, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
- { 40058, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
- { 40089, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
- { 40124, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */
- { 40159, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
- { 40190, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
- { 40225, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */
- { 40260, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
- { 40291, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
- { 40326, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */
- { 40361, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */
- { 40385, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
- { 40416, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
- { 40451, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */
- { 40486, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
- { 40517, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
- { 40552, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */
- { 40587, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
- { 40618, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
- { 40653, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */
- { 40688, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
- { 40717, 0x00008071 }, /* GL_TEXTURE_DEPTH */
- { 40734, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
- { 40756, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
- { 40782, 0x00002300 }, /* GL_TEXTURE_ENV */
- { 40797, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
- { 40818, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
- { 40838, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
- { 40864, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */
- { 40894, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
- { 40914, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */
- { 40938, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
- { 40955, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
- { 40972, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
- { 40989, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */
- { 41012, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
- { 41029, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
- { 41054, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
- { 41076, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
- { 41102, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
- { 41120, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
- { 41146, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
- { 41172, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
- { 41202, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
- { 41229, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
- { 41254, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
- { 41274, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
- { 41298, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
- { 41325, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
- { 41352, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
- { 41379, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
- { 41405, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
- { 41435, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
- { 41457, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
- { 41475, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
- { 41515, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
- { 41545, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
- { 41573, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
- { 41601, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
- { 41629, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
- { 41650, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
- { 41669, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
- { 41691, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
- { 41710, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
- { 41730, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
- { 41760, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */
- { 41791, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
- { 41816, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
- { 41840, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
- { 41860, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
- { 41884, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
- { 41904, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
- { 41927, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */
- { 41951, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */
- { 41979, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */
- { 42009, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
- { 42034, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
- { 42068, 0x00001000 }, /* GL_TEXTURE_WIDTH */
- { 42085, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
- { 42103, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */
- { 42125, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
- { 42143, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
- { 42161, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */
- { 42180, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
- { 42200, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
- { 42219, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
- { 42248, 0x00001000 }, /* GL_TRANSFORM_BIT */
- { 42265, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */
- { 42287, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */
- { 42317, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
- { 42353, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
- { 42394, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
- { 42427, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
- { 42465, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
- { 42501, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
- { 42539, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
- { 42578, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
- { 42623, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
- { 42658, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
- { 42703, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
- { 42729, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
- { 42759, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
- { 42791, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
- { 42821, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
- { 42855, 0x0000862C }, /* GL_TRANSPOSE_NV */
- { 42871, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
- { 42902, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
- { 42937, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
- { 42965, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
- { 42997, 0x00000004 }, /* GL_TRIANGLES */
- { 43010, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */
- { 43037, 0x00000006 }, /* GL_TRIANGLE_FAN */
- { 43053, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
- { 43074, 0x00000005 }, /* GL_TRIANGLE_STRIP */
- { 43092, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */
- { 43124, 0x00000001 }, /* GL_TRUE */
- { 43132, 0x00008A1C }, /* GL_UNDEFINED_APPLE */
- { 43151, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
- { 43171, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
- { 43194, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
- { 43214, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
- { 43235, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
- { 43257, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
- { 43279, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
- { 43299, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
- { 43320, 0x00009118 }, /* GL_UNSIGNALED */
- { 43334, 0x00001401 }, /* GL_UNSIGNED_BYTE */
- { 43351, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
- { 43378, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
- { 43401, 0x00001405 }, /* GL_UNSIGNED_INT */
- { 43417, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
- { 43444, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */
- { 43475, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */
- { 43496, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */
- { 43521, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
- { 43545, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */
- { 43570, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
- { 43601, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */
- { 43636, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
- { 43660, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
- { 43688, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */
- { 43711, 0x00001403 }, /* GL_UNSIGNED_SHORT */
- { 43729, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
- { 43759, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */
- { 43793, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
- { 43819, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
- { 43849, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */
- { 43883, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
- { 43909, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
- { 43933, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
- { 43961, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
- { 43989, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
- { 44016, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
- { 44048, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
- { 44079, 0x00008CA2 }, /* GL_UPPER_LEFT */
- { 44093, 0x00002A20 }, /* GL_V2F */
- { 44100, 0x00002A21 }, /* GL_V3F */
- { 44107, 0x00008B83 }, /* GL_VALIDATE_STATUS */
- { 44126, 0x00001F00 }, /* GL_VENDOR */
- { 44136, 0x00001F02 }, /* GL_VERSION */
- { 44147, 0x00008074 }, /* GL_VERTEX_ARRAY */
- { 44163, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */
- { 44187, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
- { 44217, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
- { 44248, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
- { 44283, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
- { 44307, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
- { 44328, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
- { 44351, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
- { 44372, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
- { 44399, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
- { 44427, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
- { 44455, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
- { 44483, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
- { 44511, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
- { 44539, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
- { 44567, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
- { 44594, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
- { 44621, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
- { 44648, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
- { 44675, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
- { 44702, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
- { 44729, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
- { 44756, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
- { 44783, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
- { 44810, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
- { 44848, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
- { 44890, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
- { 44921, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
- { 44956, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
- { 44990, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
- { 45028, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
- { 45059, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
- { 45094, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
- { 45122, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
- { 45154, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
- { 45184, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
- { 45218, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
- { 45246, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
- { 45278, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
- { 45298, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
- { 45320, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
- { 45349, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
- { 45370, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
- { 45399, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
- { 45432, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
- { 45464, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
- { 45491, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
- { 45522, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
- { 45552, 0x00008B31 }, /* GL_VERTEX_SHADER */
- { 45569, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
- { 45590, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
- { 45617, 0x00000BA2 }, /* GL_VIEWPORT */
- { 45629, 0x00000800 }, /* GL_VIEWPORT_BIT */
- { 45645, 0x00008A1A }, /* GL_VOLATILE_APPLE */
- { 45663, 0x0000911D }, /* GL_WAIT_FAILED */
- { 45678, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
- { 45698, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
- { 45729, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
- { 45764, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */
- { 45799, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */
- { 45819, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
- { 45847, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */
- { 45875, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
- { 45900, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */
- { 45925, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
- { 45952, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */
- { 45979, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
- { 46004, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */
- { 46029, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
- { 46053, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
- { 46072, 0x000088B9 }, /* GL_WRITE_ONLY */
- { 46086, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
- { 46104, 0x000088B9 }, /* GL_WRITE_ONLY_OES */
- { 46122, 0x00001506 }, /* GL_XOR */
- { 46129, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
- { 46148, 0x00008757 }, /* GL_YCBCR_MESA */
- { 46162, 0x00000000 }, /* GL_ZERO */
- { 46170, 0x00000D16 }, /* GL_ZOOM_X */
- { 46180, 0x00000D17 }, /* GL_ZOOM_Y */
+ { 276, 0x00008B8D }, /* GL_ACTIVE_PROGRAM_EXT */
+ { 298, 0x00008911 }, /* GL_ACTIVE_STENCIL_FACE_EXT */
+ { 325, 0x000084E0 }, /* GL_ACTIVE_TEXTURE */
+ { 343, 0x000084E0 }, /* GL_ACTIVE_TEXTURE_ARB */
+ { 365, 0x00008B86 }, /* GL_ACTIVE_UNIFORMS */
+ { 384, 0x00008B87 }, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
+ { 413, 0x000086A5 }, /* GL_ACTIVE_VERTEX_UNITS_ARB */
+ { 440, 0x00000104 }, /* GL_ADD */
+ { 447, 0x00008574 }, /* GL_ADD_SIGNED */
+ { 461, 0x00008574 }, /* GL_ADD_SIGNED_ARB */
+ { 479, 0x00008574 }, /* GL_ADD_SIGNED_EXT */
+ { 497, 0x0000846E }, /* GL_ALIASED_LINE_WIDTH_RANGE */
+ { 525, 0x0000846D }, /* GL_ALIASED_POINT_SIZE_RANGE */
+ { 553, 0x000FFFFF }, /* GL_ALL_ATTRIB_BITS */
+ { 572, 0xFFFFFFFF }, /* GL_ALL_CLIENT_ATTRIB_BITS */
+ { 598, 0x00001906 }, /* GL_ALPHA */
+ { 607, 0x0000803D }, /* GL_ALPHA12 */
+ { 618, 0x0000803D }, /* GL_ALPHA12_EXT */
+ { 633, 0x0000803E }, /* GL_ALPHA16 */
+ { 644, 0x00008D8A }, /* GL_ALPHA16I_EXT */
+ { 660, 0x00008D78 }, /* GL_ALPHA16UI_EXT */
+ { 677, 0x0000803E }, /* GL_ALPHA16_EXT */
+ { 692, 0x00008D84 }, /* GL_ALPHA32I_EXT */
+ { 708, 0x00008D72 }, /* GL_ALPHA32UI_EXT */
+ { 725, 0x0000803B }, /* GL_ALPHA4 */
+ { 735, 0x0000803B }, /* GL_ALPHA4_EXT */
+ { 749, 0x0000803C }, /* GL_ALPHA8 */
+ { 759, 0x00008D90 }, /* GL_ALPHA8I_EXT */
+ { 774, 0x00008D7E }, /* GL_ALPHA8UI_EXT */
+ { 790, 0x0000803C }, /* GL_ALPHA8_EXT */
+ { 804, 0x00000D1D }, /* GL_ALPHA_BIAS */
+ { 818, 0x00000D55 }, /* GL_ALPHA_BITS */
+ { 832, 0x00008D97 }, /* GL_ALPHA_INTEGER_EXT */
+ { 853, 0x00000D1C }, /* GL_ALPHA_SCALE */
+ { 868, 0x00000BC0 }, /* GL_ALPHA_TEST */
+ { 882, 0x00000BC1 }, /* GL_ALPHA_TEST_FUNC */
+ { 901, 0x00000BC2 }, /* GL_ALPHA_TEST_REF */
+ { 919, 0x0000911A }, /* GL_ALREADY_SIGNALED */
+ { 939, 0x00000207 }, /* GL_ALWAYS */
+ { 949, 0x00001200 }, /* GL_AMBIENT */
+ { 960, 0x00001602 }, /* GL_AMBIENT_AND_DIFFUSE */
+ { 983, 0x00001501 }, /* GL_AND */
+ { 990, 0x00001504 }, /* GL_AND_INVERTED */
+ { 1006, 0x00001502 }, /* GL_AND_REVERSE */
+ { 1021, 0x00008892 }, /* GL_ARRAY_BUFFER */
+ { 1037, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING */
+ { 1061, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING_ARB */
+ { 1089, 0x00008B85 }, /* GL_ATTACHED_SHADERS */
+ { 1109, 0x00008645 }, /* GL_ATTRIB_ARRAY_POINTER_NV */
+ { 1136, 0x00008623 }, /* GL_ATTRIB_ARRAY_SIZE_NV */
+ { 1160, 0x00008624 }, /* GL_ATTRIB_ARRAY_STRIDE_NV */
+ { 1186, 0x00008625 }, /* GL_ATTRIB_ARRAY_TYPE_NV */
+ { 1210, 0x00000BB0 }, /* GL_ATTRIB_STACK_DEPTH */
+ { 1232, 0x00000D80 }, /* GL_AUTO_NORMAL */
+ { 1247, 0x00000409 }, /* GL_AUX0 */
+ { 1255, 0x0000040A }, /* GL_AUX1 */
+ { 1263, 0x0000040B }, /* GL_AUX2 */
+ { 1271, 0x0000040C }, /* GL_AUX3 */
+ { 1279, 0x00000C00 }, /* GL_AUX_BUFFERS */
+ { 1294, 0x00000405 }, /* GL_BACK */
+ { 1302, 0x00000402 }, /* GL_BACK_LEFT */
+ { 1315, 0x00000403 }, /* GL_BACK_RIGHT */
+ { 1329, 0x000080E0 }, /* GL_BGR */
+ { 1336, 0x000080E1 }, /* GL_BGRA */
+ { 1344, 0x000080E1 }, /* GL_BGRA_EXT */
+ { 1356, 0x00008D9B }, /* GL_BGRA_INTEGER */
+ { 1372, 0x00008D9B }, /* GL_BGRA_INTEGER_EXT */
+ { 1392, 0x00008D9A }, /* GL_BGR_INTEGER */
+ { 1407, 0x00008D9A }, /* GL_BGR_INTEGER_EXT */
+ { 1426, 0x00001A00 }, /* GL_BITMAP */
+ { 1436, 0x00000704 }, /* GL_BITMAP_TOKEN */
+ { 1452, 0x00000BE2 }, /* GL_BLEND */
+ { 1461, 0x00008005 }, /* GL_BLEND_COLOR */
+ { 1476, 0x00008005 }, /* GL_BLEND_COLOR_EXT */
+ { 1495, 0x00000BE0 }, /* GL_BLEND_DST */
+ { 1508, 0x000080CA }, /* GL_BLEND_DST_ALPHA */
+ { 1527, 0x000080CA }, /* GL_BLEND_DST_ALPHA_OES */
+ { 1550, 0x000080C8 }, /* GL_BLEND_DST_RGB */
+ { 1567, 0x000080C8 }, /* GL_BLEND_DST_RGB_OES */
+ { 1588, 0x00008009 }, /* GL_BLEND_EQUATION */
+ { 1606, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */
+ { 1630, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */
+ { 1658, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_OES */
+ { 1686, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */
+ { 1708, 0x00008009 }, /* GL_BLEND_EQUATION_OES */
+ { 1730, 0x00008009 }, /* GL_BLEND_EQUATION_RGB */
+ { 1752, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */
+ { 1778, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_OES */
+ { 1804, 0x00000BE1 }, /* GL_BLEND_SRC */
+ { 1817, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */
+ { 1836, 0x000080CB }, /* GL_BLEND_SRC_ALPHA_OES */
+ { 1859, 0x000080C9 }, /* GL_BLEND_SRC_RGB */
+ { 1876, 0x000080C9 }, /* GL_BLEND_SRC_RGB_OES */
+ { 1897, 0x00001905 }, /* GL_BLUE */
+ { 1905, 0x00000D1B }, /* GL_BLUE_BIAS */
+ { 1918, 0x00000D54 }, /* GL_BLUE_BITS */
+ { 1931, 0x00008D96 }, /* GL_BLUE_INTEGER */
+ { 1947, 0x00008D96 }, /* GL_BLUE_INTEGER_EXT */
+ { 1967, 0x00000D1A }, /* GL_BLUE_SCALE */
+ { 1981, 0x00008B56 }, /* GL_BOOL */
+ { 1989, 0x00008B56 }, /* GL_BOOL_ARB */
+ { 2001, 0x00008B57 }, /* GL_BOOL_VEC2 */
+ { 2014, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */
+ { 2031, 0x00008B58 }, /* GL_BOOL_VEC3 */
+ { 2044, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */
+ { 2061, 0x00008B59 }, /* GL_BOOL_VEC4 */
+ { 2074, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */
+ { 2091, 0x000088BB }, /* GL_BUFFER_ACCESS */
+ { 2108, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */
+ { 2129, 0x0000911F }, /* GL_BUFFER_ACCESS_FLAGS */
+ { 2152, 0x000088BB }, /* GL_BUFFER_ACCESS_OES */
+ { 2173, 0x00008A13 }, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */
+ { 2204, 0x000088BC }, /* GL_BUFFER_MAPPED */
+ { 2221, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */
+ { 2242, 0x000088BC }, /* GL_BUFFER_MAPPED_OES */
+ { 2263, 0x00009120 }, /* GL_BUFFER_MAP_LENGTH */
+ { 2284, 0x00009121 }, /* GL_BUFFER_MAP_OFFSET */
+ { 2305, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */
+ { 2327, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */
+ { 2353, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_OES */
+ { 2379, 0x000085B3 }, /* GL_BUFFER_OBJECT_APPLE */
+ { 2402, 0x00008A12 }, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */
+ { 2436, 0x00008764 }, /* GL_BUFFER_SIZE */
+ { 2451, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */
+ { 2470, 0x00008765 }, /* GL_BUFFER_USAGE */
+ { 2486, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */
+ { 2506, 0x0000877B }, /* GL_BUMP_ENVMAP_ATI */
+ { 2525, 0x00008777 }, /* GL_BUMP_NUM_TEX_UNITS_ATI */
+ { 2551, 0x00008775 }, /* GL_BUMP_ROT_MATRIX_ATI */
+ { 2574, 0x00008776 }, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */
+ { 2602, 0x0000877C }, /* GL_BUMP_TARGET_ATI */
+ { 2621, 0x00008778 }, /* GL_BUMP_TEX_UNITS_ATI */
+ { 2643, 0x00001400 }, /* GL_BYTE */
+ { 2651, 0x00002A24 }, /* GL_C3F_V3F */
+ { 2662, 0x00002A26 }, /* GL_C4F_N3F_V3F */
+ { 2677, 0x00002A22 }, /* GL_C4UB_V2F */
+ { 2689, 0x00002A23 }, /* GL_C4UB_V3F */
+ { 2701, 0x00000901 }, /* GL_CCW */
+ { 2708, 0x00002900 }, /* GL_CLAMP */
+ { 2717, 0x0000891C }, /* GL_CLAMP_READ_COLOR */
+ { 2737, 0x0000812D }, /* GL_CLAMP_TO_BORDER */
+ { 2756, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */
+ { 2779, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */
+ { 2803, 0x0000812F }, /* GL_CLAMP_TO_EDGE */
+ { 2820, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */
+ { 2842, 0x00001500 }, /* GL_CLEAR */
+ { 2851, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */
+ { 2876, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */
+ { 2905, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */
+ { 2931, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
+ { 2960, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */
+ { 2986, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */
+ { 3013, 0x00003000 }, /* GL_CLIP_DISTANCE0 */
+ { 3031, 0x00003001 }, /* GL_CLIP_DISTANCE1 */
+ { 3049, 0x00003002 }, /* GL_CLIP_DISTANCE2 */
+ { 3067, 0x00003003 }, /* GL_CLIP_DISTANCE3 */
+ { 3085, 0x00003004 }, /* GL_CLIP_DISTANCE4 */
+ { 3103, 0x00003005 }, /* GL_CLIP_DISTANCE5 */
+ { 3121, 0x00003006 }, /* GL_CLIP_DISTANCE6 */
+ { 3139, 0x00003007 }, /* GL_CLIP_DISTANCE7 */
+ { 3157, 0x00003000 }, /* GL_CLIP_PLANE0 */
+ { 3172, 0x00003001 }, /* GL_CLIP_PLANE1 */
+ { 3187, 0x00003002 }, /* GL_CLIP_PLANE2 */
+ { 3202, 0x00003003 }, /* GL_CLIP_PLANE3 */
+ { 3217, 0x00003004 }, /* GL_CLIP_PLANE4 */
+ { 3232, 0x00003005 }, /* GL_CLIP_PLANE5 */
+ { 3247, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
+ { 3280, 0x00000A00 }, /* GL_COEFF */
+ { 3289, 0x00001800 }, /* GL_COLOR */
+ { 3298, 0x00008076 }, /* GL_COLOR_ARRAY */
+ { 3313, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */
+ { 3343, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */
+ { 3377, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */
+ { 3400, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */
+ { 3420, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */
+ { 3442, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */
+ { 3462, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */
+ { 3483, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */
+ { 3508, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */
+ { 3533, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */
+ { 3554, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */
+ { 3576, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */
+ { 3602, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */
+ { 3624, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */
+ { 3650, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */
+ { 3672, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */
+ { 3698, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */
+ { 3720, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */
+ { 3746, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */
+ { 3768, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */
+ { 3794, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */
+ { 3816, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */
+ { 3842, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */
+ { 3867, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */
+ { 3888, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */
+ { 3913, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */
+ { 3934, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */
+ { 3959, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */
+ { 3980, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */
+ { 4005, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */
+ { 4026, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */
+ { 4051, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */
+ { 4072, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */
+ { 4097, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */
+ { 4118, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */
+ { 4143, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */
+ { 4164, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */
+ { 4189, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */
+ { 4210, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */
+ { 4235, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */
+ { 4255, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */
+ { 4276, 0x00001900 }, /* GL_COLOR_INDEX */
+ { 4291, 0x00001603 }, /* GL_COLOR_INDEXES */
+ { 4308, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */
+ { 4326, 0x00000B57 }, /* GL_COLOR_MATERIAL */
+ { 4344, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */
+ { 4367, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */
+ { 4395, 0x000080B1 }, /* GL_COLOR_MATRIX */
+ { 4411, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */
+ { 4431, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */
+ { 4459, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */
+ { 4491, 0x00008458 }, /* GL_COLOR_SUM */
+ { 4504, 0x00008458 }, /* GL_COLOR_SUM_ARB */
+ { 4521, 0x000080D0 }, /* GL_COLOR_TABLE */
+ { 4536, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */
+ { 4562, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */
+ { 4592, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */
+ { 4622, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */
+ { 4642, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */
+ { 4666, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */
+ { 4691, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */
+ { 4720, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */
+ { 4749, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */
+ { 4771, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */
+ { 4797, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */
+ { 4823, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */
+ { 4849, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */
+ { 4879, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */
+ { 4909, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */
+ { 4939, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */
+ { 4973, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */
+ { 5007, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
+ { 5037, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */
+ { 5071, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */
+ { 5105, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */
+ { 5129, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */
+ { 5157, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */
+ { 5185, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */
+ { 5206, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */
+ { 5231, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */
+ { 5252, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */
+ { 5277, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */
+ { 5302, 0x00000C23 }, /* GL_COLOR_WRITEMASK */
+ { 5321, 0x00008570 }, /* GL_COMBINE */
+ { 5332, 0x00008503 }, /* GL_COMBINE4 */
+ { 5344, 0x00008572 }, /* GL_COMBINE_ALPHA */
+ { 5361, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */
+ { 5382, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */
+ { 5403, 0x00008570 }, /* GL_COMBINE_ARB */
+ { 5418, 0x00008570 }, /* GL_COMBINE_EXT */
+ { 5433, 0x00008571 }, /* GL_COMBINE_RGB */
+ { 5448, 0x00008571 }, /* GL_COMBINE_RGB_ARB */
+ { 5467, 0x00008571 }, /* GL_COMBINE_RGB_EXT */
+ { 5486, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */
+ { 5522, 0x0000884E }, /* GL_COMPARE_REF_TO_TEXTURE */
+ { 5548, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */
+ { 5572, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */
+ { 5600, 0x00001300 }, /* GL_COMPILE */
+ { 5611, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */
+ { 5634, 0x00008B81 }, /* GL_COMPILE_STATUS */
+ { 5652, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */
+ { 5672, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */
+ { 5696, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */
+ { 5720, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */
+ { 5748, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */
+ { 5772, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */
+ { 5802, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */
+ { 5836, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */
+ { 5864, 0x00008225 }, /* GL_COMPRESSED_RED */
+ { 5882, 0x00008226 }, /* GL_COMPRESSED_RG */
+ { 5899, 0x000084ED }, /* GL_COMPRESSED_RGB */
+ { 5917, 0x000084EE }, /* GL_COMPRESSED_RGBA */
+ { 5936, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */
+ { 5959, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
+ { 5988, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
+ { 6021, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
+ { 6054, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
+ { 6087, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */
+ { 6109, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */
+ { 6137, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
+ { 6169, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */
+ { 6194, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
+ { 6225, 0x00008C48 }, /* GL_COMPRESSED_SRGB */
+ { 6244, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */
+ { 6269, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */
+ { 6299, 0x0000911C }, /* GL_CONDITION_SATISFIED */
+ { 6322, 0x00008576 }, /* GL_CONSTANT */
+ { 6334, 0x00008003 }, /* GL_CONSTANT_ALPHA */
+ { 6352, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */
+ { 6374, 0x00008576 }, /* GL_CONSTANT_ARB */
+ { 6390, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */
+ { 6414, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */
+ { 6436, 0x00008001 }, /* GL_CONSTANT_COLOR */
+ { 6454, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */
+ { 6476, 0x00008576 }, /* GL_CONSTANT_EXT */
+ { 6492, 0x00000002 }, /* GL_CONTEXT_COMPATIBILITY_PROFILE_BIT */
+ { 6529, 0x00000001 }, /* GL_CONTEXT_CORE_PROFILE_BIT */
+ { 6557, 0x0000821E }, /* GL_CONTEXT_FLAGS */
+ { 6574, 0x00000001 }, /* GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT */
+ { 6613, 0x00009126 }, /* GL_CONTEXT_PROFILE_MASK */
+ { 6637, 0x00008010 }, /* GL_CONVOLUTION_1D */
+ { 6655, 0x00008011 }, /* GL_CONVOLUTION_2D */
+ { 6673, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */
+ { 6701, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */
+ { 6732, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */
+ { 6759, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */
+ { 6790, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */
+ { 6817, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */
+ { 6848, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */
+ { 6876, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */
+ { 6908, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */
+ { 6930, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */
+ { 6956, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */
+ { 6978, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */
+ { 7004, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */
+ { 7025, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */
+ { 7050, 0x00008862 }, /* GL_COORD_REPLACE */
+ { 7067, 0x00008862 }, /* GL_COORD_REPLACE_ARB */
+ { 7088, 0x00008862 }, /* GL_COORD_REPLACE_NV */
+ { 7108, 0x00008862 }, /* GL_COORD_REPLACE_OES */
+ { 7129, 0x00001503 }, /* GL_COPY */
+ { 7137, 0x0000150C }, /* GL_COPY_INVERTED */
+ { 7154, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */
+ { 7174, 0x00008F36 }, /* GL_COPY_READ_BUFFER */
+ { 7194, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */
+ { 7215, 0x00000B44 }, /* GL_CULL_FACE */
+ { 7228, 0x00000B45 }, /* GL_CULL_FACE_MODE */
+ { 7246, 0x000081AA }, /* GL_CULL_VERTEX_EXT */
+ { 7265, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
+ { 7297, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
+ { 7332, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */
+ { 7353, 0x00000001 }, /* GL_CURRENT_BIT */
+ { 7368, 0x00000B00 }, /* GL_CURRENT_COLOR */
+ { 7385, 0x00008453 }, /* GL_CURRENT_FOG_COORD */
+ { 7406, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */
+ { 7432, 0x00000B01 }, /* GL_CURRENT_INDEX */
+ { 7449, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */
+ { 7471, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */
+ { 7499, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */
+ { 7520, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
+ { 7554, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */
+ { 7587, 0x00000B02 }, /* GL_CURRENT_NORMAL */
+ { 7605, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */
+ { 7635, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */
+ { 7665, 0x00008B8D }, /* GL_CURRENT_PROGRAM */
+ { 7684, 0x00008865 }, /* GL_CURRENT_QUERY */
+ { 7701, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */
+ { 7722, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */
+ { 7746, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */
+ { 7773, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */
+ { 7797, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */
+ { 7824, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */
+ { 7857, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
+ { 7891, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
+ { 7924, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */
+ { 7951, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */
+ { 7977, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */
+ { 8002, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */
+ { 8031, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */
+ { 8053, 0x00000900 }, /* GL_CW */
+ { 8059, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */
+ { 8080, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */
+ { 8101, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */
+ { 8121, 0x00002101 }, /* GL_DECAL */
+ { 8130, 0x00001E03 }, /* GL_DECR */
+ { 8138, 0x00008508 }, /* GL_DECR_WRAP */
+ { 8151, 0x00008508 }, /* GL_DECR_WRAP_EXT */
+ { 8168, 0x00008B80 }, /* GL_DELETE_STATUS */
+ { 8185, 0x00001801 }, /* GL_DEPTH */
+ { 8194, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */
+ { 8214, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */
+ { 8238, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */
+ { 8262, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */
+ { 8282, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */
+ { 8306, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */
+ { 8330, 0x00000D1F }, /* GL_DEPTH_BIAS */
+ { 8344, 0x00000D56 }, /* GL_DEPTH_BITS */
+ { 8358, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */
+ { 8378, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */
+ { 8403, 0x00008223 }, /* GL_DEPTH_BUFFER */
+ { 8419, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */
+ { 8439, 0x0000864F }, /* GL_DEPTH_CLAMP */
+ { 8454, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */
+ { 8472, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */
+ { 8493, 0x00001902 }, /* GL_DEPTH_COMPONENT */
+ { 8512, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */
+ { 8533, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */
+ { 8558, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */
+ { 8583, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */
+ { 8609, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */
+ { 8630, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */
+ { 8655, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */
+ { 8680, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */
+ { 8706, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */
+ { 8727, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */
+ { 8752, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */
+ { 8777, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */
+ { 8803, 0x00000B74 }, /* GL_DEPTH_FUNC */
+ { 8817, 0x00000B70 }, /* GL_DEPTH_RANGE */
+ { 8832, 0x00000D1E }, /* GL_DEPTH_SCALE */
+ { 8847, 0x000084F9 }, /* GL_DEPTH_STENCIL */
+ { 8864, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */
+ { 8892, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */
+ { 8913, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */
+ { 8933, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */
+ { 8954, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
+ { 8982, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
+ { 9010, 0x00000B71 }, /* GL_DEPTH_TEST */
+ { 9024, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */
+ { 9046, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */
+ { 9072, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */
+ { 9091, 0x00001201 }, /* GL_DIFFUSE */
+ { 9102, 0x00000BD0 }, /* GL_DITHER */
+ { 9112, 0x00000A02 }, /* GL_DOMAIN */
+ { 9122, 0x00001100 }, /* GL_DONT_CARE */
+ { 9135, 0x000086AE }, /* GL_DOT3_RGB */
+ { 9147, 0x000086AF }, /* GL_DOT3_RGBA */
+ { 9160, 0x000086AF }, /* GL_DOT3_RGBA_ARB */
+ { 9177, 0x00008741 }, /* GL_DOT3_RGBA_EXT */
+ { 9194, 0x000086AE }, /* GL_DOT3_RGB_ARB */
+ { 9210, 0x00008740 }, /* GL_DOT3_RGB_EXT */
+ { 9226, 0x0000140A }, /* GL_DOUBLE */
+ { 9236, 0x00000C32 }, /* GL_DOUBLEBUFFER */
+ { 9252, 0x00000C01 }, /* GL_DRAW_BUFFER */
+ { 9267, 0x00008825 }, /* GL_DRAW_BUFFER0 */
+ { 9283, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */
+ { 9303, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */
+ { 9323, 0x00008826 }, /* GL_DRAW_BUFFER1 */
+ { 9339, 0x0000882F }, /* GL_DRAW_BUFFER10 */
+ { 9356, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */
+ { 9377, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */
+ { 9398, 0x00008830 }, /* GL_DRAW_BUFFER11 */
+ { 9415, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */
+ { 9436, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */
+ { 9457, 0x00008831 }, /* GL_DRAW_BUFFER12 */
+ { 9474, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */
+ { 9495, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */
+ { 9516, 0x00008832 }, /* GL_DRAW_BUFFER13 */
+ { 9533, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */
+ { 9554, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */
+ { 9575, 0x00008833 }, /* GL_DRAW_BUFFER14 */
+ { 9592, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */
+ { 9613, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */
+ { 9634, 0x00008834 }, /* GL_DRAW_BUFFER15 */
+ { 9651, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */
+ { 9672, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */
+ { 9693, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */
+ { 9713, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */
+ { 9733, 0x00008827 }, /* GL_DRAW_BUFFER2 */
+ { 9749, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */
+ { 9769, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */
+ { 9789, 0x00008828 }, /* GL_DRAW_BUFFER3 */
+ { 9805, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */
+ { 9825, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */
+ { 9845, 0x00008829 }, /* GL_DRAW_BUFFER4 */
+ { 9861, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */
+ { 9881, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */
+ { 9901, 0x0000882A }, /* GL_DRAW_BUFFER5 */
+ { 9917, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */
+ { 9937, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */
+ { 9957, 0x0000882B }, /* GL_DRAW_BUFFER6 */
+ { 9973, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */
+ { 9993, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */
+ { 10013, 0x0000882C }, /* GL_DRAW_BUFFER7 */
+ { 10029, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */
+ { 10049, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */
+ { 10069, 0x0000882D }, /* GL_DRAW_BUFFER8 */
+ { 10085, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */
+ { 10105, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */
+ { 10125, 0x0000882E }, /* GL_DRAW_BUFFER9 */
+ { 10141, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */
+ { 10161, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */
+ { 10181, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */
+ { 10201, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */
+ { 10229, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
+ { 10261, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */
+ { 10285, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */
+ { 10305, 0x00000304 }, /* GL_DST_ALPHA */
+ { 10318, 0x00000306 }, /* GL_DST_COLOR */
+ { 10331, 0x0000877A }, /* GL_DU8DV8_ATI */
+ { 10345, 0x00008779 }, /* GL_DUDV_ATI */
+ { 10357, 0x000088EA }, /* GL_DYNAMIC_COPY */
+ { 10373, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */
+ { 10393, 0x000088E8 }, /* GL_DYNAMIC_DRAW */
+ { 10409, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */
+ { 10429, 0x000088E9 }, /* GL_DYNAMIC_READ */
+ { 10445, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */
+ { 10465, 0x00000B43 }, /* GL_EDGE_FLAG */
+ { 10478, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */
+ { 10497, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
+ { 10531, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */
+ { 10569, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */
+ { 10596, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */
+ { 10622, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */
+ { 10646, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
+ { 10678, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */
+ { 10714, 0x00001600 }, /* GL_EMISSION */
+ { 10726, 0x00002000 }, /* GL_ENABLE_BIT */
+ { 10740, 0x00000202 }, /* GL_EQUAL */
+ { 10749, 0x00001509 }, /* GL_EQUIV */
+ { 10758, 0x00010000 }, /* GL_EVAL_BIT */
+ { 10770, 0x00000800 }, /* GL_EXP */
+ { 10777, 0x00000801 }, /* GL_EXP2 */
+ { 10785, 0x00001F03 }, /* GL_EXTENSIONS */
+ { 10799, 0x00002400 }, /* GL_EYE_LINEAR */
+ { 10813, 0x00002502 }, /* GL_EYE_PLANE */
+ { 10826, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */
+ { 10851, 0x0000855B }, /* GL_EYE_RADIAL_NV */
+ { 10868, 0x00000000 }, /* GL_FALSE */
+ { 10877, 0x00001101 }, /* GL_FASTEST */
+ { 10888, 0x00001C01 }, /* GL_FEEDBACK */
+ { 10900, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */
+ { 10927, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */
+ { 10951, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */
+ { 10975, 0x00001B02 }, /* GL_FILL */
+ { 10983, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */
+ { 11010, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */
+ { 11041, 0x0000140C }, /* GL_FIXED */
+ { 11050, 0x0000140C }, /* GL_FIXED_OES */
+ { 11063, 0x0000891D }, /* GL_FIXED_ONLY */
+ { 11077, 0x00001D00 }, /* GL_FLAT */
+ { 11085, 0x00001406 }, /* GL_FLOAT */
+ { 11094, 0x00008B5A }, /* GL_FLOAT_MAT2 */
+ { 11108, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */
+ { 11126, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */
+ { 11142, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */
+ { 11158, 0x00008B5B }, /* GL_FLOAT_MAT3 */
+ { 11172, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */
+ { 11190, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */
+ { 11206, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */
+ { 11222, 0x00008B5C }, /* GL_FLOAT_MAT4 */
+ { 11236, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */
+ { 11254, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */
+ { 11270, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */
+ { 11286, 0x00008B50 }, /* GL_FLOAT_VEC2 */
+ { 11300, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */
+ { 11318, 0x00008B51 }, /* GL_FLOAT_VEC3 */
+ { 11332, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */
+ { 11350, 0x00008B52 }, /* GL_FLOAT_VEC4 */
+ { 11364, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */
+ { 11382, 0x00000B60 }, /* GL_FOG */
+ { 11389, 0x00000080 }, /* GL_FOG_BIT */
+ { 11400, 0x00000B66 }, /* GL_FOG_COLOR */
+ { 11413, 0x00008451 }, /* GL_FOG_COORD */
+ { 11426, 0x00008451 }, /* GL_FOG_COORDINATE */
+ { 11444, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */
+ { 11468, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
+ { 11507, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */
+ { 11550, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */
+ { 11582, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
+ { 11613, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */
+ { 11642, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */
+ { 11667, 0x00008457 }, /* GL_FOG_COORD_ARRAY */
+ { 11686, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */
+ { 11720, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */
+ { 11747, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */
+ { 11773, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */
+ { 11797, 0x00008450 }, /* GL_FOG_COORD_SRC */
+ { 11814, 0x00000B62 }, /* GL_FOG_DENSITY */
+ { 11829, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */
+ { 11853, 0x00000B64 }, /* GL_FOG_END */
+ { 11864, 0x00000C54 }, /* GL_FOG_HINT */
+ { 11876, 0x00000B61 }, /* GL_FOG_INDEX */
+ { 11889, 0x00000B65 }, /* GL_FOG_MODE */
+ { 11901, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */
+ { 11920, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */
+ { 11945, 0x00000B63 }, /* GL_FOG_START */
+ { 11958, 0x00008452 }, /* GL_FRAGMENT_DEPTH */
+ { 11976, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */
+ { 12000, 0x00008B30 }, /* GL_FRAGMENT_SHADER */
+ { 12019, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */
+ { 12042, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
+ { 12077, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */
+ { 12116, 0x00008D40 }, /* GL_FRAMEBUFFER */
+ { 12131, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
+ { 12168, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
+ { 12204, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
+ { 12245, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
+ { 12286, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
+ { 12323, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
+ { 12360, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */
+ { 12394, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */
+ { 12432, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
+ { 12470, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
+ { 12512, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */
+ { 12554, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
+ { 12592, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
+ { 12634, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */
+ { 12676, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
+ { 12711, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
+ { 12750, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
+ { 12799, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */
+ { 12848, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
+ { 12896, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
+ { 12948, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */
+ { 13000, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+ { 13040, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
+ { 13084, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
+ { 13124, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
+ { 13168, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */
+ { 13212, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */
+ { 13235, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */
+ { 13262, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */
+ { 13289, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */
+ { 13313, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */
+ { 13341, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */
+ { 13369, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */
+ { 13392, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */
+ { 13411, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
+ { 13448, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
+ { 13489, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */
+ { 13530, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */
+ { 13567, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
+ { 13608, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */
+ { 13649, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
+ { 13687, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
+ { 13729, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */
+ { 13771, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
+ { 13822, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
+ { 13860, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */
+ { 13898, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
+ { 13940, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */
+ { 13980, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */
+ { 14024, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
+ { 14069, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
+ { 14118, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */
+ { 14167, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
+ { 14205, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */
+ { 14247, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
+ { 14285, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
+ { 14327, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */
+ { 14369, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */
+ { 14388, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
+ { 14420, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */
+ { 14445, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */
+ { 14472, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
+ { 14503, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */
+ { 14534, 0x00000404 }, /* GL_FRONT */
+ { 14543, 0x00000408 }, /* GL_FRONT_AND_BACK */
+ { 14561, 0x00000B46 }, /* GL_FRONT_FACE */
+ { 14575, 0x00000400 }, /* GL_FRONT_LEFT */
+ { 14589, 0x00000401 }, /* GL_FRONT_RIGHT */
+ { 14604, 0x00008006 }, /* GL_FUNC_ADD */
+ { 14616, 0x00008006 }, /* GL_FUNC_ADD_EXT */
+ { 14632, 0x00008006 }, /* GL_FUNC_ADD_OES */
+ { 14648, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */
+ { 14673, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */
+ { 14702, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */
+ { 14731, 0x0000800A }, /* GL_FUNC_SUBTRACT */
+ { 14748, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */
+ { 14769, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */
+ { 14790, 0x00008191 }, /* GL_GENERATE_MIPMAP */
+ { 14809, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */
+ { 14833, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */
+ { 14862, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */
+ { 14886, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */
+ { 14909, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */
+ { 14936, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */
+ { 14960, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
+ { 14988, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */
+ { 15007, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */
+ { 15030, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */
+ { 15055, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */
+ { 15084, 0x00000206 }, /* GL_GEQUAL */
+ { 15094, 0x00000204 }, /* GL_GREATER */
+ { 15105, 0x00001904 }, /* GL_GREEN */
+ { 15114, 0x00000D19 }, /* GL_GREEN_BIAS */
+ { 15128, 0x00000D53 }, /* GL_GREEN_BITS */
+ { 15142, 0x00008D95 }, /* GL_GREEN_INTEGER */
+ { 15159, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */
+ { 15180, 0x00000D18 }, /* GL_GREEN_SCALE */
+ { 15195, 0x0000140B }, /* GL_HALF_FLOAT */
+ { 15209, 0x00008D61 }, /* GL_HALF_FLOAT_OES */
+ { 15227, 0x00008DF2 }, /* GL_HIGH_FLOAT */
+ { 15241, 0x00008DF5 }, /* GL_HIGH_INT */
+ { 15253, 0x00008000 }, /* GL_HINT_BIT */
+ { 15265, 0x00008024 }, /* GL_HISTOGRAM */
+ { 15278, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */
+ { 15302, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */
+ { 15330, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */
+ { 15353, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */
+ { 15380, 0x00008024 }, /* GL_HISTOGRAM_EXT */
+ { 15397, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */
+ { 15417, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */
+ { 15441, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */
+ { 15465, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */
+ { 15493, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */
+ { 15521, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */
+ { 15553, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */
+ { 15575, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */
+ { 15601, 0x0000802D }, /* GL_HISTOGRAM_SINK */
+ { 15619, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
+ { 15641, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
+ { 15660, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
+ { 15683, 0x0000862A }, /* GL_IDENTITY_NV */
+ { 15698, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
+ { 15718, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
+ { 15754, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
+ { 15794, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
+ { 15828, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
+ { 15866, 0x00001E02 }, /* GL_INCR */
+ { 15874, 0x00008507 }, /* GL_INCR_WRAP */
+ { 15887, 0x00008507 }, /* GL_INCR_WRAP_EXT */
+ { 15904, 0x00008222 }, /* GL_INDEX */
+ { 15913, 0x00008077 }, /* GL_INDEX_ARRAY */
+ { 15928, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
+ { 15958, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
+ { 15992, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
+ { 16015, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
+ { 16037, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
+ { 16057, 0x00000D51 }, /* GL_INDEX_BITS */
+ { 16071, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
+ { 16092, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
+ { 16110, 0x00000C30 }, /* GL_INDEX_MODE */
+ { 16124, 0x00000D13 }, /* GL_INDEX_OFFSET */
+ { 16140, 0x00000D12 }, /* GL_INDEX_SHIFT */
+ { 16155, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
+ { 16174, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */
+ { 16193, 0x00001404 }, /* GL_INT */
+ { 16200, 0x00008049 }, /* GL_INTENSITY */
+ { 16213, 0x0000804C }, /* GL_INTENSITY12 */
+ { 16228, 0x0000804C }, /* GL_INTENSITY12_EXT */
+ { 16247, 0x0000804D }, /* GL_INTENSITY16 */
+ { 16262, 0x00008D8B }, /* GL_INTENSITY16I_EXT */
+ { 16282, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */
+ { 16303, 0x0000804D }, /* GL_INTENSITY16_EXT */
+ { 16322, 0x00008D85 }, /* GL_INTENSITY32I_EXT */
+ { 16342, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */
+ { 16363, 0x0000804A }, /* GL_INTENSITY4 */
+ { 16377, 0x0000804A }, /* GL_INTENSITY4_EXT */
+ { 16395, 0x0000804B }, /* GL_INTENSITY8 */
+ { 16409, 0x00008D91 }, /* GL_INTENSITY8I_EXT */
+ { 16428, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */
+ { 16448, 0x0000804B }, /* GL_INTENSITY8_EXT */
+ { 16466, 0x00008049 }, /* GL_INTENSITY_EXT */
+ { 16483, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */
+ { 16506, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */
+ { 16533, 0x00008575 }, /* GL_INTERPOLATE */
+ { 16548, 0x00008575 }, /* GL_INTERPOLATE_ARB */
+ { 16567, 0x00008575 }, /* GL_INTERPOLATE_EXT */
+ { 16586, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */
+ { 16608, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */
+ { 16626, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */
+ { 16650, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */
+ { 16678, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */
+ { 16700, 0x00008DCA }, /* GL_INT_SAMPLER_2D */
+ { 16718, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */
+ { 16742, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */
+ { 16770, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */
+ { 16792, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */
+ { 16815, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */
+ { 16842, 0x00008DCB }, /* GL_INT_SAMPLER_3D */
+ { 16860, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */
+ { 16882, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */
+ { 16904, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */
+ { 16930, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */
+ { 16950, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */
+ { 16974, 0x00008B53 }, /* GL_INT_VEC2 */
+ { 16986, 0x00008B53 }, /* GL_INT_VEC2_ARB */
+ { 17002, 0x00008B54 }, /* GL_INT_VEC3 */
+ { 17014, 0x00008B54 }, /* GL_INT_VEC3_ARB */
+ { 17030, 0x00008B55 }, /* GL_INT_VEC4 */
+ { 17042, 0x00008B55 }, /* GL_INT_VEC4_ARB */
+ { 17058, 0x00000500 }, /* GL_INVALID_ENUM */
+ { 17074, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */
+ { 17107, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
+ { 17144, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */
+ { 17181, 0x00000502 }, /* GL_INVALID_OPERATION */
+ { 17202, 0x00000501 }, /* GL_INVALID_VALUE */
+ { 17219, 0x0000862B }, /* GL_INVERSE_NV */
+ { 17233, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
+ { 17257, 0x0000150A }, /* GL_INVERT */
+ { 17267, 0x00001E00 }, /* GL_KEEP */
+ { 17275, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */
+ { 17301, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */
+ { 17331, 0x00000406 }, /* GL_LEFT */
+ { 17339, 0x00000203 }, /* GL_LEQUAL */
+ { 17349, 0x00000201 }, /* GL_LESS */
+ { 17357, 0x00004000 }, /* GL_LIGHT0 */
+ { 17367, 0x00004001 }, /* GL_LIGHT1 */
+ { 17377, 0x00004002 }, /* GL_LIGHT2 */
+ { 17387, 0x00004003 }, /* GL_LIGHT3 */
+ { 17397, 0x00004004 }, /* GL_LIGHT4 */
+ { 17407, 0x00004005 }, /* GL_LIGHT5 */
+ { 17417, 0x00004006 }, /* GL_LIGHT6 */
+ { 17427, 0x00004007 }, /* GL_LIGHT7 */
+ { 17437, 0x00000B50 }, /* GL_LIGHTING */
+ { 17449, 0x00000040 }, /* GL_LIGHTING_BIT */
+ { 17465, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
+ { 17488, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
+ { 17517, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
+ { 17550, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
+ { 17578, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
+ { 17602, 0x00001B01 }, /* GL_LINE */
+ { 17610, 0x00002601 }, /* GL_LINEAR */
+ { 17620, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
+ { 17642, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
+ { 17672, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
+ { 17703, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
+ { 17727, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
+ { 17752, 0x00000001 }, /* GL_LINES */
+ { 17761, 0x0000000A }, /* GL_LINES_ADJACENCY */
+ { 17780, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */
+ { 17803, 0x00000004 }, /* GL_LINE_BIT */
+ { 17815, 0x00000002 }, /* GL_LINE_LOOP */
+ { 17828, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
+ { 17848, 0x00000B20 }, /* GL_LINE_SMOOTH */
+ { 17863, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
+ { 17883, 0x00000B24 }, /* GL_LINE_STIPPLE */
+ { 17899, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
+ { 17923, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
+ { 17946, 0x00000003 }, /* GL_LINE_STRIP */
+ { 17960, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */
+ { 17984, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */
+ { 18012, 0x00000702 }, /* GL_LINE_TOKEN */
+ { 18026, 0x00000B21 }, /* GL_LINE_WIDTH */
+ { 18040, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
+ { 18066, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
+ { 18086, 0x00008B82 }, /* GL_LINK_STATUS */
+ { 18101, 0x00000B32 }, /* GL_LIST_BASE */
+ { 18114, 0x00020000 }, /* GL_LIST_BIT */
+ { 18126, 0x00000B33 }, /* GL_LIST_INDEX */
+ { 18140, 0x00000B30 }, /* GL_LIST_MODE */
+ { 18153, 0x00000101 }, /* GL_LOAD */
+ { 18161, 0x00000BF1 }, /* GL_LOGIC_OP */
+ { 18173, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
+ { 18190, 0x00008CA1 }, /* GL_LOWER_LEFT */
+ { 18204, 0x00008DF0 }, /* GL_LOW_FLOAT */
+ { 18217, 0x00008DF3 }, /* GL_LOW_INT */
+ { 18228, 0x00001909 }, /* GL_LUMINANCE */
+ { 18241, 0x00008041 }, /* GL_LUMINANCE12 */
+ { 18256, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
+ { 18279, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
+ { 18306, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
+ { 18328, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
+ { 18354, 0x00008041 }, /* GL_LUMINANCE12_EXT */
+ { 18373, 0x00008042 }, /* GL_LUMINANCE16 */
+ { 18388, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */
+ { 18408, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */
+ { 18429, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
+ { 18452, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
+ { 18479, 0x00008042 }, /* GL_LUMINANCE16_EXT */
+ { 18498, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */
+ { 18518, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */
+ { 18539, 0x0000803F }, /* GL_LUMINANCE4 */
+ { 18553, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
+ { 18574, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
+ { 18599, 0x0000803F }, /* GL_LUMINANCE4_EXT */
+ { 18617, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
+ { 18638, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
+ { 18663, 0x00008040 }, /* GL_LUMINANCE8 */
+ { 18677, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */
+ { 18696, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */
+ { 18716, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
+ { 18737, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
+ { 18762, 0x00008040 }, /* GL_LUMINANCE8_EXT */
+ { 18780, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
+ { 18799, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */
+ { 18825, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */
+ { 18852, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */
+ { 18878, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */
+ { 18905, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */
+ { 18930, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */
+ { 18956, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */
+ { 18987, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */
+ { 19012, 0x0000821B }, /* GL_MAJOR_VERSION */
+ { 19029, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
+ { 19045, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
+ { 19065, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
+ { 19087, 0x00000D91 }, /* GL_MAP1_INDEX */
+ { 19101, 0x00000D92 }, /* GL_MAP1_NORMAL */
+ { 19116, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
+ { 19140, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
+ { 19164, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
+ { 19188, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
+ { 19212, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
+ { 19229, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
+ { 19246, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
+ { 19274, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
+ { 19303, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
+ { 19332, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
+ { 19361, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
+ { 19390, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
+ { 19419, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
+ { 19448, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
+ { 19476, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
+ { 19504, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
+ { 19532, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
+ { 19560, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
+ { 19588, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
+ { 19616, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
+ { 19644, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
+ { 19672, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
+ { 19700, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
+ { 19716, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
+ { 19736, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
+ { 19758, 0x00000DB1 }, /* GL_MAP2_INDEX */
+ { 19772, 0x00000DB2 }, /* GL_MAP2_NORMAL */
+ { 19787, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
+ { 19811, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
+ { 19835, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
+ { 19859, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
+ { 19883, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
+ { 19900, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
+ { 19917, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
+ { 19945, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
+ { 19974, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
+ { 20003, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
+ { 20032, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
+ { 20061, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
+ { 20090, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
+ { 20119, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
+ { 20147, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
+ { 20175, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
+ { 20203, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
+ { 20231, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
+ { 20259, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
+ { 20287, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
+ { 20315, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
+ { 20343, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
+ { 20371, 0x00000D10 }, /* GL_MAP_COLOR */
+ { 20384, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */
+ { 20410, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */
+ { 20439, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */
+ { 20467, 0x00000001 }, /* GL_MAP_READ_BIT */
+ { 20483, 0x00000D11 }, /* GL_MAP_STENCIL */
+ { 20498, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */
+ { 20524, 0x00000002 }, /* GL_MAP_WRITE_BIT */
+ { 20541, 0x000088C0 }, /* GL_MATRIX0_ARB */
+ { 20556, 0x00008630 }, /* GL_MATRIX0_NV */
+ { 20570, 0x000088CA }, /* GL_MATRIX10_ARB */
+ { 20586, 0x000088CB }, /* GL_MATRIX11_ARB */
+ { 20602, 0x000088CC }, /* GL_MATRIX12_ARB */
+ { 20618, 0x000088CD }, /* GL_MATRIX13_ARB */
+ { 20634, 0x000088CE }, /* GL_MATRIX14_ARB */
+ { 20650, 0x000088CF }, /* GL_MATRIX15_ARB */
+ { 20666, 0x000088D0 }, /* GL_MATRIX16_ARB */
+ { 20682, 0x000088D1 }, /* GL_MATRIX17_ARB */
+ { 20698, 0x000088D2 }, /* GL_MATRIX18_ARB */
+ { 20714, 0x000088D3 }, /* GL_MATRIX19_ARB */
+ { 20730, 0x000088C1 }, /* GL_MATRIX1_ARB */
+ { 20745, 0x00008631 }, /* GL_MATRIX1_NV */
+ { 20759, 0x000088D4 }, /* GL_MATRIX20_ARB */
+ { 20775, 0x000088D5 }, /* GL_MATRIX21_ARB */
+ { 20791, 0x000088D6 }, /* GL_MATRIX22_ARB */
+ { 20807, 0x000088D7 }, /* GL_MATRIX23_ARB */
+ { 20823, 0x000088D8 }, /* GL_MATRIX24_ARB */
+ { 20839, 0x000088D9 }, /* GL_MATRIX25_ARB */
+ { 20855, 0x000088DA }, /* GL_MATRIX26_ARB */
+ { 20871, 0x000088DB }, /* GL_MATRIX27_ARB */
+ { 20887, 0x000088DC }, /* GL_MATRIX28_ARB */
+ { 20903, 0x000088DD }, /* GL_MATRIX29_ARB */
+ { 20919, 0x000088C2 }, /* GL_MATRIX2_ARB */
+ { 20934, 0x00008632 }, /* GL_MATRIX2_NV */
+ { 20948, 0x000088DE }, /* GL_MATRIX30_ARB */
+ { 20964, 0x000088DF }, /* GL_MATRIX31_ARB */
+ { 20980, 0x000088C3 }, /* GL_MATRIX3_ARB */
+ { 20995, 0x00008633 }, /* GL_MATRIX3_NV */
+ { 21009, 0x000088C4 }, /* GL_MATRIX4_ARB */
+ { 21024, 0x00008634 }, /* GL_MATRIX4_NV */
+ { 21038, 0x000088C5 }, /* GL_MATRIX5_ARB */
+ { 21053, 0x00008635 }, /* GL_MATRIX5_NV */
+ { 21067, 0x000088C6 }, /* GL_MATRIX6_ARB */
+ { 21082, 0x00008636 }, /* GL_MATRIX6_NV */
+ { 21096, 0x000088C7 }, /* GL_MATRIX7_ARB */
+ { 21111, 0x00008637 }, /* GL_MATRIX7_NV */
+ { 21125, 0x000088C8 }, /* GL_MATRIX8_ARB */
+ { 21140, 0x000088C9 }, /* GL_MATRIX9_ARB */
+ { 21155, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
+ { 21181, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
+ { 21222, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */
+ { 21248, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
+ { 21282, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */
+ { 21316, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
+ { 21347, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */
+ { 21378, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
+ { 21411, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */
+ { 21444, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
+ { 21475, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */
+ { 21506, 0x00000BA0 }, /* GL_MATRIX_MODE */
+ { 21521, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
+ { 21543, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */
+ { 21565, 0x00008008 }, /* GL_MAX */
+ { 21572, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
+ { 21595, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */
+ { 21622, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */
+ { 21650, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
+ { 21682, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
+ { 21708, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
+ { 21741, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
+ { 21767, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ { 21801, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */
+ { 21823, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
+ { 21842, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */
+ { 21867, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
+ { 21896, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
+ { 21928, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
+ { 21964, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
+ { 22000, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
+ { 22040, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
+ { 22066, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
+ { 22096, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
+ { 22121, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
+ { 22150, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
+ { 22179, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
+ { 22212, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */
+ { 22245, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */
+ { 22265, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
+ { 22289, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
+ { 22313, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
+ { 22337, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
+ { 22362, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
+ { 22380, 0x00008008 }, /* GL_MAX_EXT */
+ { 22391, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */
+ { 22424, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
+ { 22459, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
+ { 22498, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
+ { 22530, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */
+ { 22563, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */
+ { 22597, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */
+ { 22629, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */
+ { 22665, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */
+ { 22701, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */
+ { 22741, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */
+ { 22781, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */
+ { 22825, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */
+ { 22860, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */
+ { 22899, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
+ { 22938, 0x00000D31 }, /* GL_MAX_LIGHTS */
+ { 22952, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
+ { 22972, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
+ { 23010, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
+ { 23039, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
+ { 23063, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
+ { 23091, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */
+ { 23119, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
+ { 23142, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
+ { 23179, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ { 23215, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
+ { 23242, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
+ { 23271, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
+ { 23305, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
+ { 23341, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
+ { 23368, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
+ { 23400, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
+ { 23436, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
+ { 23465, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
+ { 23494, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
+ { 23522, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
+ { 23560, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ { 23604, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ { 23647, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
+ { 23681, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ { 23720, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
+ { 23757, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ { 23795, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ { 23838, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ { 23881, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
+ { 23911, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
+ { 23942, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */
+ { 23970, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */
+ { 24002, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
+ { 24038, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ { 24074, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
+ { 24104, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */
+ { 24134, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
+ { 24168, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
+ { 24201, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */
+ { 24226, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
+ { 24255, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */
+ { 24284, 0x00008D57 }, /* GL_MAX_SAMPLES */
+ { 24299, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */
+ { 24318, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */
+ { 24345, 0x00008504 }, /* GL_MAX_SHININESS_NV */
+ { 24365, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
+ { 24389, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */
+ { 24416, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */
+ { 24438, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
+ { 24464, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */
+ { 24491, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
+ { 24522, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
+ { 24546, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */
+ { 24574, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
+ { 24608, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
+ { 24628, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
+ { 24655, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
+ { 24676, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
+ { 24701, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
+ { 24726, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
+ { 24761, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */
+ { 24810, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */
+ { 24863, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */
+ { 24906, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */
+ { 24953, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */
+ { 24999, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */
+ { 25049, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */
+ { 25075, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */
+ { 25097, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
+ { 25123, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */
+ { 25146, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */
+ { 25168, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
+ { 25194, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */
+ { 25226, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
+ { 25260, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
+ { 25298, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
+ { 25331, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
+ { 25368, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
+ { 25398, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
+ { 25422, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */
+ { 25446, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
+ { 25483, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
+ { 25504, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */
+ { 25520, 0x00008DF4 }, /* GL_MEDIUM_INT */
+ { 25534, 0x00008007 }, /* GL_MIN */
+ { 25541, 0x0000802E }, /* GL_MINMAX */
+ { 25551, 0x0000802E }, /* GL_MINMAX_EXT */
+ { 25565, 0x0000802F }, /* GL_MINMAX_FORMAT */
+ { 25582, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
+ { 25603, 0x00008030 }, /* GL_MINMAX_SINK */
+ { 25618, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
+ { 25637, 0x0000821C }, /* GL_MINOR_VERSION */
+ { 25654, 0x00008007 }, /* GL_MIN_EXT */
+ { 25665, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */
+ { 25693, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */
+ { 25725, 0x00008370 }, /* GL_MIRRORED_REPEAT */
+ { 25744, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
+ { 25767, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
+ { 25790, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
+ { 25810, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
+ { 25830, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
+ { 25860, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
+ { 25888, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
+ { 25916, 0x00001700 }, /* GL_MODELVIEW */
+ { 25929, 0x00001700 }, /* GL_MODELVIEW0_ARB */
+ { 25947, 0x0000872A }, /* GL_MODELVIEW10_ARB */
+ { 25966, 0x0000872B }, /* GL_MODELVIEW11_ARB */
+ { 25985, 0x0000872C }, /* GL_MODELVIEW12_ARB */
+ { 26004, 0x0000872D }, /* GL_MODELVIEW13_ARB */
+ { 26023, 0x0000872E }, /* GL_MODELVIEW14_ARB */
+ { 26042, 0x0000872F }, /* GL_MODELVIEW15_ARB */
+ { 26061, 0x00008730 }, /* GL_MODELVIEW16_ARB */
+ { 26080, 0x00008731 }, /* GL_MODELVIEW17_ARB */
+ { 26099, 0x00008732 }, /* GL_MODELVIEW18_ARB */
+ { 26118, 0x00008733 }, /* GL_MODELVIEW19_ARB */
+ { 26137, 0x0000850A }, /* GL_MODELVIEW1_ARB */
+ { 26155, 0x00008734 }, /* GL_MODELVIEW20_ARB */
+ { 26174, 0x00008735 }, /* GL_MODELVIEW21_ARB */
+ { 26193, 0x00008736 }, /* GL_MODELVIEW22_ARB */
+ { 26212, 0x00008737 }, /* GL_MODELVIEW23_ARB */
+ { 26231, 0x00008738 }, /* GL_MODELVIEW24_ARB */
+ { 26250, 0x00008739 }, /* GL_MODELVIEW25_ARB */
+ { 26269, 0x0000873A }, /* GL_MODELVIEW26_ARB */
+ { 26288, 0x0000873B }, /* GL_MODELVIEW27_ARB */
+ { 26307, 0x0000873C }, /* GL_MODELVIEW28_ARB */
+ { 26326, 0x0000873D }, /* GL_MODELVIEW29_ARB */
+ { 26345, 0x00008722 }, /* GL_MODELVIEW2_ARB */
+ { 26363, 0x0000873E }, /* GL_MODELVIEW30_ARB */
+ { 26382, 0x0000873F }, /* GL_MODELVIEW31_ARB */
+ { 26401, 0x00008723 }, /* GL_MODELVIEW3_ARB */
+ { 26419, 0x00008724 }, /* GL_MODELVIEW4_ARB */
+ { 26437, 0x00008725 }, /* GL_MODELVIEW5_ARB */
+ { 26455, 0x00008726 }, /* GL_MODELVIEW6_ARB */
+ { 26473, 0x00008727 }, /* GL_MODELVIEW7_ARB */
+ { 26491, 0x00008728 }, /* GL_MODELVIEW8_ARB */
+ { 26509, 0x00008729 }, /* GL_MODELVIEW9_ARB */
+ { 26527, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
+ { 26547, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 26589, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
+ { 26616, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
+ { 26641, 0x00002100 }, /* GL_MODULATE */
+ { 26653, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
+ { 26673, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
+ { 26700, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
+ { 26725, 0x00000103 }, /* GL_MULT */
+ { 26733, 0x0000809D }, /* GL_MULTISAMPLE */
+ { 26748, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
+ { 26768, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
+ { 26787, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
+ { 26806, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
+ { 26830, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
+ { 26853, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
+ { 26883, 0x00002A25 }, /* GL_N3F_V3F */
+ { 26894, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
+ { 26914, 0x0000150E }, /* GL_NAND */
+ { 26922, 0x00002600 }, /* GL_NEAREST */
+ { 26933, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
+ { 26964, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
+ { 26996, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
+ { 27021, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
+ { 27047, 0x00000200 }, /* GL_NEVER */
+ { 27056, 0x00001102 }, /* GL_NICEST */
+ { 27066, 0x00000000 }, /* GL_NONE */
+ { 27074, 0x00000000 }, /* GL_NONE_OES */
+ { 27086, 0x00001505 }, /* GL_NOOP */
+ { 27094, 0x00001508 }, /* GL_NOR */
+ { 27101, 0x00000BA1 }, /* GL_NORMALIZE */
+ { 27114, 0x00008075 }, /* GL_NORMAL_ARRAY */
+ { 27130, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
+ { 27161, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
+ { 27196, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
+ { 27220, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
+ { 27243, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
+ { 27264, 0x00008511 }, /* GL_NORMAL_MAP */
+ { 27278, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
+ { 27296, 0x00008511 }, /* GL_NORMAL_MAP_NV */
+ { 27313, 0x00008511 }, /* GL_NORMAL_MAP_OES */
+ { 27331, 0x00000205 }, /* GL_NOTEQUAL */
+ { 27343, 0x00000000 }, /* GL_NO_ERROR */
+ { 27355, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
+ { 27389, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */
+ { 27427, 0x0000821D }, /* GL_NUM_EXTENSIONS */
+ { 27445, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
+ { 27479, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */
+ { 27508, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
+ { 27540, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
+ { 27582, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
+ { 27612, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
+ { 27652, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
+ { 27683, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
+ { 27712, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
+ { 27740, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
+ { 27770, 0x00002401 }, /* GL_OBJECT_LINEAR */
+ { 27787, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
+ { 27813, 0x00002501 }, /* GL_OBJECT_PLANE */
+ { 27829, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
+ { 27864, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
+ { 27886, 0x00009112 }, /* GL_OBJECT_TYPE */
+ { 27901, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
+ { 27920, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
+ { 27950, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
+ { 27971, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
+ { 27999, 0x00000001 }, /* GL_ONE */
+ { 28006, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
+ { 28034, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
+ { 28066, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
+ { 28094, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
+ { 28126, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
+ { 28149, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
+ { 28172, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
+ { 28195, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
+ { 28218, 0x00008598 }, /* GL_OPERAND0_ALPHA */
+ { 28236, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
+ { 28258, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
+ { 28280, 0x00008590 }, /* GL_OPERAND0_RGB */
+ { 28296, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
+ { 28316, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
+ { 28336, 0x00008599 }, /* GL_OPERAND1_ALPHA */
+ { 28354, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
+ { 28376, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
+ { 28398, 0x00008591 }, /* GL_OPERAND1_RGB */
+ { 28414, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
+ { 28434, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
+ { 28454, 0x0000859A }, /* GL_OPERAND2_ALPHA */
+ { 28472, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
+ { 28494, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
+ { 28516, 0x00008592 }, /* GL_OPERAND2_RGB */
+ { 28532, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
+ { 28552, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
+ { 28572, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
+ { 28593, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
+ { 28612, 0x00001507 }, /* GL_OR */
+ { 28618, 0x00000A01 }, /* GL_ORDER */
+ { 28627, 0x0000150D }, /* GL_OR_INVERTED */
+ { 28642, 0x0000150B }, /* GL_OR_REVERSE */
+ { 28656, 0x00000505 }, /* GL_OUT_OF_MEMORY */
+ { 28673, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
+ { 28691, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
+ { 28712, 0x00008758 }, /* GL_PACK_INVERT_MESA */
+ { 28732, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
+ { 28750, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
+ { 28769, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
+ { 28789, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
+ { 28809, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
+ { 28827, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
+ { 28846, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
+ { 28871, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
+ { 28895, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
+ { 28916, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
+ { 28938, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
+ { 28960, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
+ { 28985, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
+ { 29009, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
+ { 29030, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
+ { 29052, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
+ { 29074, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
+ { 29096, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
+ { 29127, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
+ { 29147, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
+ { 29172, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
+ { 29192, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
+ { 29217, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
+ { 29237, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
+ { 29262, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
+ { 29282, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
+ { 29307, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
+ { 29327, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
+ { 29352, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
+ { 29372, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
+ { 29397, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
+ { 29417, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
+ { 29442, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
+ { 29462, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
+ { 29487, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
+ { 29507, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
+ { 29532, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
+ { 29552, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
+ { 29577, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
+ { 29595, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */
+ { 29616, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */
+ { 29645, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
+ { 29678, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
+ { 29703, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */
+ { 29726, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
+ { 29757, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
+ { 29792, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
+ { 29819, 0x00001B00 }, /* GL_POINT */
+ { 29828, 0x00000000 }, /* GL_POINTS */
+ { 29838, 0x00000002 }, /* GL_POINT_BIT */
+ { 29851, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
+ { 29881, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
+ { 29915, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
+ { 29949, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
+ { 29984, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
+ { 30013, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
+ { 30046, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
+ { 30079, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
+ { 30113, 0x00000B11 }, /* GL_POINT_SIZE */
+ { 30127, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
+ { 30166, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */
+ { 30190, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
+ { 30222, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
+ { 30253, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
+ { 30282, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
+ { 30308, 0x00008127 }, /* GL_POINT_SIZE_MAX */
+ { 30326, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
+ { 30348, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
+ { 30370, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
+ { 30393, 0x00008126 }, /* GL_POINT_SIZE_MIN */
+ { 30411, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
+ { 30433, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
+ { 30455, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
+ { 30478, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
+ { 30498, 0x00000B10 }, /* GL_POINT_SMOOTH */
+ { 30514, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
+ { 30535, 0x00008861 }, /* GL_POINT_SPRITE */
+ { 30551, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
+ { 30571, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
+ { 30600, 0x00008861 }, /* GL_POINT_SPRITE_NV */
+ { 30619, 0x00008861 }, /* GL_POINT_SPRITE_OES */
+ { 30639, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
+ { 30665, 0x00000701 }, /* GL_POINT_TOKEN */
+ { 30680, 0x00000009 }, /* GL_POLYGON */
+ { 30691, 0x00000008 }, /* GL_POLYGON_BIT */
+ { 30706, 0x00000B40 }, /* GL_POLYGON_MODE */
+ { 30722, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
+ { 30745, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
+ { 30770, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
+ { 30793, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
+ { 30816, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
+ { 30840, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
+ { 30864, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
+ { 30882, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
+ { 30905, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
+ { 30924, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
+ { 30947, 0x00000703 }, /* GL_POLYGON_TOKEN */
+ { 30964, 0x00001203 }, /* GL_POSITION */
+ { 30976, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+ { 31008, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
+ { 31044, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+ { 31077, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
+ { 31114, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+ { 31145, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
+ { 31180, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+ { 31212, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
+ { 31248, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+ { 31281, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+ { 31313, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
+ { 31349, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+ { 31382, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
+ { 31419, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+ { 31449, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
+ { 31483, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+ { 31514, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
+ { 31549, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+ { 31580, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
+ { 31615, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+ { 31647, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
+ { 31683, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+ { 31713, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
+ { 31747, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+ { 31778, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
+ { 31813, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+ { 31845, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+ { 31876, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
+ { 31911, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+ { 31943, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
+ { 31979, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
+ { 32008, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
+ { 32041, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
+ { 32071, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
+ { 32105, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+ { 32144, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+ { 32177, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+ { 32217, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+ { 32251, 0x00008578 }, /* GL_PREVIOUS */
+ { 32263, 0x00008578 }, /* GL_PREVIOUS_ARB */
+ { 32279, 0x00008578 }, /* GL_PREVIOUS_EXT */
+ { 32295, 0x00008577 }, /* GL_PRIMARY_COLOR */
+ { 32312, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
+ { 32333, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
+ { 32354, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */
+ { 32378, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */
+ { 32406, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */
+ { 32427, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */
+ { 32454, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */
+ { 32484, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */
+ { 32508, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+ { 32541, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ { 32573, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
+ { 32596, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */
+ { 32626, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */
+ { 32655, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
+ { 32678, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
+ { 32708, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
+ { 32737, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
+ { 32765, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
+ { 32787, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+ { 32815, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+ { 32843, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
+ { 32865, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
+ { 32886, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ { 32926, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ { 32965, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+ { 32995, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ { 33030, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+ { 33063, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ { 33097, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ { 33136, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ { 33175, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
+ { 33197, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
+ { 33223, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
+ { 33247, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */
+ { 33269, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */
+ { 33295, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
+ { 33318, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
+ { 33340, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
+ { 33361, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
+ { 33382, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
+ { 33409, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+ { 33441, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ { 33473, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+ { 33508, 0x00001701 }, /* GL_PROJECTION */
+ { 33522, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
+ { 33543, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 33586, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
+ { 33612, 0x00008E4F }, /* GL_PROVOKING_VERTEX */
+ { 33632, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */
+ { 33656, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
+ { 33677, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
+ { 33696, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
+ { 33719, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+ { 33758, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+ { 33796, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
+ { 33816, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */
+ { 33842, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
+ { 33872, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
+ { 33896, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
+ { 33916, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */
+ { 33942, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
+ { 33972, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
+ { 33996, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
+ { 34016, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+ { 34049, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
+ { 34075, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
+ { 34105, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */
+ { 34132, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
+ { 34163, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
+ { 34193, 0x00008A1D }, /* GL_PURGEABLE_APPLE */
+ { 34212, 0x00002003 }, /* GL_Q */
+ { 34217, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
+ { 34242, 0x00000007 }, /* GL_QUADS */
+ { 34251, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
+ { 34295, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */
+ { 34343, 0x00008614 }, /* GL_QUAD_MESH_SUN */
+ { 34360, 0x00000008 }, /* GL_QUAD_STRIP */
+ { 34374, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */
+ { 34401, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
+ { 34431, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */
+ { 34455, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */
+ { 34482, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
+ { 34504, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
+ { 34530, 0x00008E14 }, /* GL_QUERY_NO_WAIT */
+ { 34547, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */
+ { 34567, 0x00008866 }, /* GL_QUERY_RESULT */
+ { 34583, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
+ { 34603, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
+ { 34629, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
+ { 34659, 0x00008E13 }, /* GL_QUERY_WAIT */
+ { 34673, 0x00008E13 }, /* GL_QUERY_WAIT_NV */
+ { 34690, 0x00002002 }, /* GL_R */
+ { 34695, 0x00008C3A }, /* GL_R11F_G11F_B10F */
+ { 34713, 0x00008F98 }, /* GL_R16_SNORM */
+ { 34726, 0x00002A10 }, /* GL_R3_G3_B2 */
+ { 34738, 0x00008F94 }, /* GL_R8_SNORM */
+ { 34750, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */
+ { 34772, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */
+ { 34798, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+ { 34831, 0x00000C02 }, /* GL_READ_BUFFER */
+ { 34846, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */
+ { 34866, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */
+ { 34894, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
+ { 34926, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
+ { 34950, 0x000088B8 }, /* GL_READ_ONLY */
+ { 34963, 0x000088B8 }, /* GL_READ_ONLY_ARB */
+ { 34980, 0x000088BA }, /* GL_READ_WRITE */
+ { 34994, 0x000088BA }, /* GL_READ_WRITE_ARB */
+ { 35012, 0x00001903 }, /* GL_RED */
+ { 35019, 0x00008016 }, /* GL_REDUCE */
+ { 35029, 0x00008016 }, /* GL_REDUCE_EXT */
+ { 35043, 0x00000D15 }, /* GL_RED_BIAS */
+ { 35055, 0x00000D52 }, /* GL_RED_BITS */
+ { 35067, 0x00008D94 }, /* GL_RED_INTEGER */
+ { 35082, 0x00008D94 }, /* GL_RED_INTEGER_EXT */
+ { 35101, 0x00000D14 }, /* GL_RED_SCALE */
+ { 35114, 0x00008F90 }, /* GL_RED_SNORM */
+ { 35127, 0x00008512 }, /* GL_REFLECTION_MAP */
+ { 35145, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
+ { 35167, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
+ { 35188, 0x00008512 }, /* GL_REFLECTION_MAP_OES */
+ { 35210, 0x00008A19 }, /* GL_RELEASED_APPLE */
+ { 35228, 0x00001C00 }, /* GL_RENDER */
+ { 35238, 0x00008D41 }, /* GL_RENDERBUFFER */
+ { 35254, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */
+ { 35281, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */
+ { 35312, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */
+ { 35336, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
+ { 35364, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */
+ { 35392, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */
+ { 35418, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */
+ { 35448, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */
+ { 35475, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */
+ { 35506, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
+ { 35526, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */
+ { 35553, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */
+ { 35584, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */
+ { 35607, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
+ { 35634, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */
+ { 35661, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
+ { 35693, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
+ { 35729, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
+ { 35765, 0x00008D41 }, /* GL_RENDERBUFFER_OES */
+ { 35785, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */
+ { 35810, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */
+ { 35839, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */
+ { 35863, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */
+ { 35891, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */
+ { 35920, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */
+ { 35953, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */
+ { 35975, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
+ { 36001, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */
+ { 36027, 0x00001F01 }, /* GL_RENDERER */
+ { 36039, 0x00000C40 }, /* GL_RENDER_MODE */
+ { 36054, 0x00002901 }, /* GL_REPEAT */
+ { 36064, 0x00001E01 }, /* GL_REPLACE */
+ { 36075, 0x00008062 }, /* GL_REPLACE_EXT */
+ { 36090, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
+ { 36113, 0x0000803A }, /* GL_RESCALE_NORMAL */
+ { 36131, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
+ { 36153, 0x00008A1B }, /* GL_RETAINED_APPLE */
+ { 36171, 0x00000102 }, /* GL_RETURN */
+ { 36181, 0x00008F99 }, /* GL_RG16_SNORM */
+ { 36195, 0x00008F95 }, /* GL_RG8_SNORM */
+ { 36208, 0x00001907 }, /* GL_RGB */
+ { 36215, 0x00008052 }, /* GL_RGB10 */
+ { 36224, 0x00008059 }, /* GL_RGB10_A2 */
+ { 36236, 0x00008059 }, /* GL_RGB10_A2_EXT */
+ { 36252, 0x00008052 }, /* GL_RGB10_EXT */
+ { 36265, 0x00008053 }, /* GL_RGB12 */
+ { 36274, 0x00008053 }, /* GL_RGB12_EXT */
+ { 36287, 0x00008054 }, /* GL_RGB16 */
+ { 36296, 0x0000881B }, /* GL_RGB16F */
+ { 36306, 0x00008D89 }, /* GL_RGB16I */
+ { 36316, 0x00008D89 }, /* GL_RGB16I_EXT */
+ { 36330, 0x00008D77 }, /* GL_RGB16UI */
+ { 36341, 0x00008D77 }, /* GL_RGB16UI_EXT */
+ { 36356, 0x00008054 }, /* GL_RGB16_EXT */
+ { 36369, 0x00008F9A }, /* GL_RGB16_SNORM */
+ { 36384, 0x0000804E }, /* GL_RGB2_EXT */
+ { 36396, 0x00008815 }, /* GL_RGB32F */
+ { 36406, 0x00008D83 }, /* GL_RGB32I */
+ { 36416, 0x00008D83 }, /* GL_RGB32I_EXT */
+ { 36430, 0x00008D71 }, /* GL_RGB32UI */
+ { 36441, 0x00008D71 }, /* GL_RGB32UI_EXT */
+ { 36456, 0x0000804F }, /* GL_RGB4 */
+ { 36464, 0x0000804F }, /* GL_RGB4_EXT */
+ { 36476, 0x000083A1 }, /* GL_RGB4_S3TC */
+ { 36489, 0x00008050 }, /* GL_RGB5 */
+ { 36497, 0x00008D62 }, /* GL_RGB565 */
+ { 36507, 0x00008D62 }, /* GL_RGB565_OES */
+ { 36521, 0x00008057 }, /* GL_RGB5_A1 */
+ { 36532, 0x00008057 }, /* GL_RGB5_A1_EXT */
+ { 36547, 0x00008057 }, /* GL_RGB5_A1_OES */
+ { 36562, 0x00008050 }, /* GL_RGB5_EXT */
+ { 36574, 0x00008051 }, /* GL_RGB8 */
+ { 36582, 0x00008D8F }, /* GL_RGB8I */
+ { 36591, 0x00008D8F }, /* GL_RGB8I_EXT */
+ { 36604, 0x00008D7D }, /* GL_RGB8UI */
+ { 36614, 0x00008D7D }, /* GL_RGB8UI_EXT */
+ { 36628, 0x00008051 }, /* GL_RGB8_EXT */
+ { 36640, 0x00008051 }, /* GL_RGB8_OES */
+ { 36652, 0x00008F96 }, /* GL_RGB8_SNORM */
+ { 36666, 0x00008C3D }, /* GL_RGB9_E5 */
+ { 36677, 0x00001908 }, /* GL_RGBA */
+ { 36685, 0x0000805A }, /* GL_RGBA12 */
+ { 36695, 0x0000805A }, /* GL_RGBA12_EXT */
+ { 36709, 0x0000805B }, /* GL_RGBA16 */
+ { 36719, 0x0000881A }, /* GL_RGBA16F */
+ { 36730, 0x00008D88 }, /* GL_RGBA16I */
+ { 36741, 0x00008D88 }, /* GL_RGBA16I_EXT */
+ { 36756, 0x00008D76 }, /* GL_RGBA16UI */
+ { 36768, 0x00008D76 }, /* GL_RGBA16UI_EXT */
+ { 36784, 0x0000805B }, /* GL_RGBA16_EXT */
+ { 36798, 0x00008F9B }, /* GL_RGBA16_SNORM */
+ { 36814, 0x00008055 }, /* GL_RGBA2 */
+ { 36823, 0x00008055 }, /* GL_RGBA2_EXT */
+ { 36836, 0x00008814 }, /* GL_RGBA32F */
+ { 36847, 0x00008D82 }, /* GL_RGBA32I */
+ { 36858, 0x00008D82 }, /* GL_RGBA32I_EXT */
+ { 36873, 0x00008D70 }, /* GL_RGBA32UI */
+ { 36885, 0x00008D70 }, /* GL_RGBA32UI_EXT */
+ { 36901, 0x00008056 }, /* GL_RGBA4 */
+ { 36910, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
+ { 36929, 0x00008056 }, /* GL_RGBA4_EXT */
+ { 36942, 0x00008056 }, /* GL_RGBA4_OES */
+ { 36955, 0x000083A3 }, /* GL_RGBA4_S3TC */
+ { 36969, 0x00008058 }, /* GL_RGBA8 */
+ { 36978, 0x00008D8E }, /* GL_RGBA8I */
+ { 36988, 0x00008D8E }, /* GL_RGBA8I_EXT */
+ { 37002, 0x00008D7C }, /* GL_RGBA8UI */
+ { 37013, 0x00008D7C }, /* GL_RGBA8UI_EXT */
+ { 37028, 0x00008058 }, /* GL_RGBA8_EXT */
+ { 37041, 0x00008058 }, /* GL_RGBA8_OES */
+ { 37054, 0x00008F97 }, /* GL_RGBA8_SNORM */
+ { 37069, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
+ { 37087, 0x00008D99 }, /* GL_RGBA_INTEGER */
+ { 37103, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */
+ { 37123, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */
+ { 37148, 0x00000C31 }, /* GL_RGBA_MODE */
+ { 37161, 0x000083A2 }, /* GL_RGBA_S3TC */
+ { 37174, 0x00008F93 }, /* GL_RGBA_SNORM */
+ { 37188, 0x00008D98 }, /* GL_RGB_INTEGER */
+ { 37203, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */
+ { 37222, 0x000083A0 }, /* GL_RGB_S3TC */
+ { 37234, 0x00008573 }, /* GL_RGB_SCALE */
+ { 37247, 0x00008573 }, /* GL_RGB_SCALE_ARB */
+ { 37264, 0x00008573 }, /* GL_RGB_SCALE_EXT */
+ { 37281, 0x00008F92 }, /* GL_RGB_SNORM */
+ { 37294, 0x00008F91 }, /* GL_RG_SNORM */
+ { 37306, 0x00000407 }, /* GL_RIGHT */
+ { 37315, 0x00002000 }, /* GL_S */
+ { 37320, 0x00008B5D }, /* GL_SAMPLER_1D */
+ { 37334, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */
+ { 37354, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */
+ { 37378, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */
+ { 37405, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */
+ { 37436, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
+ { 37457, 0x00008B5E }, /* GL_SAMPLER_2D */
+ { 37471, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */
+ { 37491, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */
+ { 37515, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */
+ { 37542, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */
+ { 37573, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */
+ { 37592, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */
+ { 37618, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
+ { 37639, 0x00008B5F }, /* GL_SAMPLER_3D */
+ { 37653, 0x00008B5F }, /* GL_SAMPLER_3D_OES */
+ { 37671, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */
+ { 37689, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */
+ { 37711, 0x00008B60 }, /* GL_SAMPLER_CUBE */
+ { 37727, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */
+ { 37750, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */
+ { 37777, 0x000080A9 }, /* GL_SAMPLES */
+ { 37788, 0x000086B4 }, /* GL_SAMPLES_3DFX */
+ { 37804, 0x000080A9 }, /* GL_SAMPLES_ARB */
+ { 37819, 0x00008914 }, /* GL_SAMPLES_PASSED */
+ { 37837, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
+ { 37859, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+ { 37887, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
+ { 37919, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
+ { 37942, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
+ { 37969, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
+ { 37987, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
+ { 38010, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
+ { 38032, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
+ { 38051, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
+ { 38074, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
+ { 38100, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
+ { 38130, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
+ { 38155, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
+ { 38184, 0x00080000 }, /* GL_SCISSOR_BIT */
+ { 38199, 0x00000C10 }, /* GL_SCISSOR_BOX */
+ { 38214, 0x00000C11 }, /* GL_SCISSOR_TEST */
+ { 38230, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
+ { 38255, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+ { 38295, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
+ { 38339, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+ { 38372, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+ { 38402, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+ { 38434, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+ { 38464, 0x00001C02 }, /* GL_SELECT */
+ { 38474, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
+ { 38502, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
+ { 38527, 0x00008012 }, /* GL_SEPARABLE_2D */
+ { 38543, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */
+ { 38563, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */
+ { 38587, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
+ { 38614, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
+ { 38645, 0x0000150F }, /* GL_SET */
+ { 38652, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */
+ { 38677, 0x00008DFA }, /* GL_SHADER_COMPILER */
+ { 38696, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
+ { 38717, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
+ { 38741, 0x00008B4F }, /* GL_SHADER_TYPE */
+ { 38756, 0x00000B54 }, /* GL_SHADE_MODEL */
+ { 38771, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
+ { 38799, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
+ { 38822, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+ { 38852, 0x00001601 }, /* GL_SHININESS */
+ { 38865, 0x00001402 }, /* GL_SHORT */
+ { 38874, 0x00009119 }, /* GL_SIGNALED */
+ { 38886, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */
+ { 38907, 0x000081F9 }, /* GL_SINGLE_COLOR */
+ { 38923, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
+ { 38943, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
+ { 38962, 0x00008C46 }, /* GL_SLUMINANCE */
+ { 38976, 0x00008C47 }, /* GL_SLUMINANCE8 */
+ { 38991, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */
+ { 39013, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */
+ { 39033, 0x00001D01 }, /* GL_SMOOTH */
+ { 39043, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
+ { 39076, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
+ { 39103, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
+ { 39136, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
+ { 39163, 0x00008588 }, /* GL_SOURCE0_ALPHA */
+ { 39180, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
+ { 39201, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
+ { 39222, 0x00008580 }, /* GL_SOURCE0_RGB */
+ { 39237, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
+ { 39256, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
+ { 39275, 0x00008589 }, /* GL_SOURCE1_ALPHA */
+ { 39292, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
+ { 39313, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
+ { 39334, 0x00008581 }, /* GL_SOURCE1_RGB */
+ { 39349, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
+ { 39368, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
+ { 39387, 0x0000858A }, /* GL_SOURCE2_ALPHA */
+ { 39404, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
+ { 39425, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
+ { 39446, 0x00008582 }, /* GL_SOURCE2_RGB */
+ { 39461, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
+ { 39480, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
+ { 39499, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
+ { 39519, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
+ { 39537, 0x00001202 }, /* GL_SPECULAR */
+ { 39549, 0x00002402 }, /* GL_SPHERE_MAP */
+ { 39563, 0x00001206 }, /* GL_SPOT_CUTOFF */
+ { 39578, 0x00001204 }, /* GL_SPOT_DIRECTION */
+ { 39596, 0x00001205 }, /* GL_SPOT_EXPONENT */
+ { 39613, 0x00008588 }, /* GL_SRC0_ALPHA */
+ { 39627, 0x00008580 }, /* GL_SRC0_RGB */
+ { 39639, 0x00008589 }, /* GL_SRC1_ALPHA */
+ { 39653, 0x00008581 }, /* GL_SRC1_RGB */
+ { 39665, 0x0000858A }, /* GL_SRC2_ALPHA */
+ { 39679, 0x00008582 }, /* GL_SRC2_RGB */
+ { 39691, 0x00000302 }, /* GL_SRC_ALPHA */
+ { 39704, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
+ { 39726, 0x00000300 }, /* GL_SRC_COLOR */
+ { 39739, 0x00008C40 }, /* GL_SRGB */
+ { 39747, 0x00008C41 }, /* GL_SRGB8 */
+ { 39756, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */
+ { 39772, 0x00008C42 }, /* GL_SRGB_ALPHA */
+ { 39786, 0x00000503 }, /* GL_STACK_OVERFLOW */
+ { 39804, 0x00000504 }, /* GL_STACK_UNDERFLOW */
+ { 39823, 0x000088E6 }, /* GL_STATIC_COPY */
+ { 39838, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
+ { 39857, 0x000088E4 }, /* GL_STATIC_DRAW */
+ { 39872, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
+ { 39891, 0x000088E5 }, /* GL_STATIC_READ */
+ { 39906, 0x000088E5 }, /* GL_STATIC_READ_ARB */
+ { 39925, 0x00001802 }, /* GL_STENCIL */
+ { 39936, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */
+ { 39958, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
+ { 39984, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */
+ { 40010, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
+ { 40031, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */
+ { 40056, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
+ { 40077, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */
+ { 40102, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
+ { 40134, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */
+ { 40170, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
+ { 40202, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */
+ { 40238, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
+ { 40258, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
+ { 40285, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
+ { 40311, 0x00000D57 }, /* GL_STENCIL_BITS */
+ { 40327, 0x00008224 }, /* GL_STENCIL_BUFFER */
+ { 40345, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
+ { 40367, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
+ { 40390, 0x00000B94 }, /* GL_STENCIL_FAIL */
+ { 40406, 0x00000B92 }, /* GL_STENCIL_FUNC */
+ { 40422, 0x00001901 }, /* GL_STENCIL_INDEX */
+ { 40439, 0x00008D46 }, /* GL_STENCIL_INDEX1 */
+ { 40457, 0x00008D49 }, /* GL_STENCIL_INDEX16 */
+ { 40476, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
+ { 40499, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
+ { 40521, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */
+ { 40543, 0x00008D47 }, /* GL_STENCIL_INDEX4 */
+ { 40561, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
+ { 40583, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */
+ { 40605, 0x00008D48 }, /* GL_STENCIL_INDEX8 */
+ { 40623, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
+ { 40645, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */
+ { 40667, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
+ { 40688, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
+ { 40715, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
+ { 40742, 0x00000B97 }, /* GL_STENCIL_REF */
+ { 40757, 0x00000B90 }, /* GL_STENCIL_TEST */
+ { 40773, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+ { 40802, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
+ { 40824, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
+ { 40845, 0x00000C33 }, /* GL_STEREO */
+ { 40855, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */
+ { 40879, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */
+ { 40904, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */
+ { 40928, 0x000088E2 }, /* GL_STREAM_COPY */
+ { 40943, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
+ { 40962, 0x000088E0 }, /* GL_STREAM_DRAW */
+ { 40977, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
+ { 40996, 0x000088E1 }, /* GL_STREAM_READ */
+ { 41011, 0x000088E1 }, /* GL_STREAM_READ_ARB */
+ { 41030, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
+ { 41047, 0x000084E7 }, /* GL_SUBTRACT */
+ { 41059, 0x000084E7 }, /* GL_SUBTRACT_ARB */
+ { 41075, 0x00009113 }, /* GL_SYNC_CONDITION */
+ { 41093, 0x00009116 }, /* GL_SYNC_FENCE */
+ { 41107, 0x00009115 }, /* GL_SYNC_FLAGS */
+ { 41121, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */
+ { 41148, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
+ { 41178, 0x00009114 }, /* GL_SYNC_STATUS */
+ { 41193, 0x00002001 }, /* GL_T */
+ { 41198, 0x00002A2A }, /* GL_T2F_C3F_V3F */
+ { 41213, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
+ { 41232, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
+ { 41248, 0x00002A2B }, /* GL_T2F_N3F_V3F */
+ { 41263, 0x00002A27 }, /* GL_T2F_V3F */
+ { 41274, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
+ { 41293, 0x00002A28 }, /* GL_T4F_V4F */
+ { 41304, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
+ { 41327, 0x00001702 }, /* GL_TEXTURE */
+ { 41338, 0x000084C0 }, /* GL_TEXTURE0 */
+ { 41350, 0x000084C0 }, /* GL_TEXTURE0_ARB */
+ { 41366, 0x000084C1 }, /* GL_TEXTURE1 */
+ { 41378, 0x000084CA }, /* GL_TEXTURE10 */
+ { 41391, 0x000084CA }, /* GL_TEXTURE10_ARB */
+ { 41408, 0x000084CB }, /* GL_TEXTURE11 */
+ { 41421, 0x000084CB }, /* GL_TEXTURE11_ARB */
+ { 41438, 0x000084CC }, /* GL_TEXTURE12 */
+ { 41451, 0x000084CC }, /* GL_TEXTURE12_ARB */
+ { 41468, 0x000084CD }, /* GL_TEXTURE13 */
+ { 41481, 0x000084CD }, /* GL_TEXTURE13_ARB */
+ { 41498, 0x000084CE }, /* GL_TEXTURE14 */
+ { 41511, 0x000084CE }, /* GL_TEXTURE14_ARB */
+ { 41528, 0x000084CF }, /* GL_TEXTURE15 */
+ { 41541, 0x000084CF }, /* GL_TEXTURE15_ARB */
+ { 41558, 0x000084D0 }, /* GL_TEXTURE16 */
+ { 41571, 0x000084D0 }, /* GL_TEXTURE16_ARB */
+ { 41588, 0x000084D1 }, /* GL_TEXTURE17 */
+ { 41601, 0x000084D1 }, /* GL_TEXTURE17_ARB */
+ { 41618, 0x000084D2 }, /* GL_TEXTURE18 */
+ { 41631, 0x000084D2 }, /* GL_TEXTURE18_ARB */
+ { 41648, 0x000084D3 }, /* GL_TEXTURE19 */
+ { 41661, 0x000084D3 }, /* GL_TEXTURE19_ARB */
+ { 41678, 0x000084C1 }, /* GL_TEXTURE1_ARB */
+ { 41694, 0x000084C2 }, /* GL_TEXTURE2 */
+ { 41706, 0x000084D4 }, /* GL_TEXTURE20 */
+ { 41719, 0x000084D4 }, /* GL_TEXTURE20_ARB */
+ { 41736, 0x000084D5 }, /* GL_TEXTURE21 */
+ { 41749, 0x000084D5 }, /* GL_TEXTURE21_ARB */
+ { 41766, 0x000084D6 }, /* GL_TEXTURE22 */
+ { 41779, 0x000084D6 }, /* GL_TEXTURE22_ARB */
+ { 41796, 0x000084D7 }, /* GL_TEXTURE23 */
+ { 41809, 0x000084D7 }, /* GL_TEXTURE23_ARB */
+ { 41826, 0x000084D8 }, /* GL_TEXTURE24 */
+ { 41839, 0x000084D8 }, /* GL_TEXTURE24_ARB */
+ { 41856, 0x000084D9 }, /* GL_TEXTURE25 */
+ { 41869, 0x000084D9 }, /* GL_TEXTURE25_ARB */
+ { 41886, 0x000084DA }, /* GL_TEXTURE26 */
+ { 41899, 0x000084DA }, /* GL_TEXTURE26_ARB */
+ { 41916, 0x000084DB }, /* GL_TEXTURE27 */
+ { 41929, 0x000084DB }, /* GL_TEXTURE27_ARB */
+ { 41946, 0x000084DC }, /* GL_TEXTURE28 */
+ { 41959, 0x000084DC }, /* GL_TEXTURE28_ARB */
+ { 41976, 0x000084DD }, /* GL_TEXTURE29 */
+ { 41989, 0x000084DD }, /* GL_TEXTURE29_ARB */
+ { 42006, 0x000084C2 }, /* GL_TEXTURE2_ARB */
+ { 42022, 0x000084C3 }, /* GL_TEXTURE3 */
+ { 42034, 0x000084DE }, /* GL_TEXTURE30 */
+ { 42047, 0x000084DE }, /* GL_TEXTURE30_ARB */
+ { 42064, 0x000084DF }, /* GL_TEXTURE31 */
+ { 42077, 0x000084DF }, /* GL_TEXTURE31_ARB */
+ { 42094, 0x000084C3 }, /* GL_TEXTURE3_ARB */
+ { 42110, 0x000084C4 }, /* GL_TEXTURE4 */
+ { 42122, 0x000084C4 }, /* GL_TEXTURE4_ARB */
+ { 42138, 0x000084C5 }, /* GL_TEXTURE5 */
+ { 42150, 0x000084C5 }, /* GL_TEXTURE5_ARB */
+ { 42166, 0x000084C6 }, /* GL_TEXTURE6 */
+ { 42178, 0x000084C6 }, /* GL_TEXTURE6_ARB */
+ { 42194, 0x000084C7 }, /* GL_TEXTURE7 */
+ { 42206, 0x000084C7 }, /* GL_TEXTURE7_ARB */
+ { 42222, 0x000084C8 }, /* GL_TEXTURE8 */
+ { 42234, 0x000084C8 }, /* GL_TEXTURE8_ARB */
+ { 42250, 0x000084C9 }, /* GL_TEXTURE9 */
+ { 42262, 0x000084C9 }, /* GL_TEXTURE9_ARB */
+ { 42278, 0x00000DE0 }, /* GL_TEXTURE_1D */
+ { 42292, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */
+ { 42312, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
+ { 42336, 0x00000DE1 }, /* GL_TEXTURE_2D */
+ { 42350, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */
+ { 42370, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
+ { 42394, 0x0000806F }, /* GL_TEXTURE_3D */
+ { 42408, 0x0000806F }, /* GL_TEXTURE_3D_OES */
+ { 42426, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
+ { 42448, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
+ { 42474, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
+ { 42496, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
+ { 42518, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */
+ { 42546, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
+ { 42578, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
+ { 42600, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */
+ { 42628, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
+ { 42660, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
+ { 42682, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */
+ { 42708, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */
+ { 42734, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
+ { 42762, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
+ { 42794, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */
+ { 42826, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */
+ { 42855, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
+ { 42888, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
+ { 42920, 0x00040000 }, /* GL_TEXTURE_BIT */
+ { 42935, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
+ { 42956, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
+ { 42981, 0x00001005 }, /* GL_TEXTURE_BORDER */
+ { 42999, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
+ { 43023, 0x00008C2A }, /* GL_TEXTURE_BUFFER */
+ { 43041, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
+ { 43078, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */
+ { 43103, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+ { 43134, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+ { 43164, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+ { 43194, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+ { 43229, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+ { 43260, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ { 43298, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
+ { 43325, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+ { 43357, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+ { 43391, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
+ { 43415, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
+ { 43443, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
+ { 43467, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
+ { 43495, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+ { 43528, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
+ { 43552, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
+ { 43574, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
+ { 43596, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
+ { 43622, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
+ { 43656, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+ { 43689, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
+ { 43726, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
+ { 43754, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
+ { 43786, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
+ { 43809, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+ { 43847, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
+ { 43889, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+ { 43920, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+ { 43948, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+ { 43978, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+ { 44006, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */
+ { 44031, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
+ { 44051, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
+ { 44075, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+ { 44106, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
+ { 44141, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */
+ { 44176, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+ { 44207, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
+ { 44242, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */
+ { 44277, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+ { 44308, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
+ { 44343, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */
+ { 44378, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */
+ { 44402, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+ { 44433, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
+ { 44468, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */
+ { 44503, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+ { 44534, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
+ { 44569, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */
+ { 44604, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+ { 44635, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
+ { 44670, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */
+ { 44705, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
+ { 44734, 0x00008071 }, /* GL_TEXTURE_DEPTH */
+ { 44751, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
+ { 44773, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
+ { 44799, 0x00002300 }, /* GL_TEXTURE_ENV */
+ { 44814, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
+ { 44835, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
+ { 44855, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
+ { 44881, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */
+ { 44911, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
+ { 44931, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */
+ { 44955, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
+ { 44972, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
+ { 44989, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
+ { 45006, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */
+ { 45029, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
+ { 45046, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
+ { 45071, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
+ { 45093, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
+ { 45119, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
+ { 45137, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
+ { 45163, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
+ { 45189, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
+ { 45219, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
+ { 45246, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
+ { 45271, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
+ { 45291, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
+ { 45315, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+ { 45342, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+ { 45369, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+ { 45396, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
+ { 45422, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
+ { 45452, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
+ { 45474, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
+ { 45492, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 45532, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+ { 45562, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+ { 45590, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+ { 45618, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+ { 45646, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
+ { 45667, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
+ { 45686, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
+ { 45708, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
+ { 45727, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
+ { 45747, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
+ { 45777, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */
+ { 45808, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */
+ { 45829, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
+ { 45854, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
+ { 45878, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
+ { 45898, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
+ { 45922, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
+ { 45942, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */
+ { 45965, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
+ { 45988, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */
+ { 46012, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */
+ { 46040, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */
+ { 46070, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
+ { 46095, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+ { 46129, 0x00001000 }, /* GL_TEXTURE_WIDTH */
+ { 46146, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
+ { 46164, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */
+ { 46186, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
+ { 46204, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
+ { 46222, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */
+ { 46241, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
+ { 46261, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
+ { 46280, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+ { 46309, 0x00001000 }, /* GL_TRANSFORM_BIT */
+ { 46326, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */
+ { 46348, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */
+ { 46378, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */
+ { 46407, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
+ { 46443, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
+ { 46480, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
+ { 46521, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
+ { 46554, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
+ { 46588, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
+ { 46626, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
+ { 46662, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
+ { 46696, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
+ { 46734, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
+ { 46769, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
+ { 46808, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
+ { 46849, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
+ { 46894, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
+ { 46925, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
+ { 46960, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
+ { 47001, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
+ { 47046, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
+ { 47072, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
+ { 47102, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+ { 47134, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+ { 47164, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
+ { 47198, 0x0000862C }, /* GL_TRANSPOSE_NV */
+ { 47214, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+ { 47245, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
+ { 47280, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+ { 47308, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
+ { 47340, 0x00000004 }, /* GL_TRIANGLES */
+ { 47353, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */
+ { 47376, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */
+ { 47403, 0x00000006 }, /* GL_TRIANGLE_FAN */
+ { 47419, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
+ { 47440, 0x00000005 }, /* GL_TRIANGLE_STRIP */
+ { 47458, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */
+ { 47486, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */
+ { 47518, 0x00000001 }, /* GL_TRUE */
+ { 47526, 0x00008A1C }, /* GL_UNDEFINED_APPLE */
+ { 47545, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
+ { 47565, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
+ { 47588, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
+ { 47608, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
+ { 47629, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
+ { 47651, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
+ { 47673, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
+ { 47693, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
+ { 47714, 0x00009118 }, /* GL_UNSIGNALED */
+ { 47728, 0x00001401 }, /* GL_UNSIGNED_BYTE */
+ { 47745, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+ { 47772, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
+ { 47795, 0x00001405 }, /* GL_UNSIGNED_INT */
+ { 47811, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
+ { 47843, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
+ { 47870, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */
+ { 47901, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */
+ { 47922, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */
+ { 47947, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
+ { 47971, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */
+ { 47996, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+ { 48027, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */
+ { 48062, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */
+ { 48090, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
+ { 48114, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+ { 48142, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */
+ { 48169, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
+ { 48202, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */
+ { 48239, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */
+ { 48270, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */
+ { 48297, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
+ { 48330, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */
+ { 48367, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */
+ { 48398, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
+ { 48430, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */
+ { 48466, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */
+ { 48493, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */
+ { 48524, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
+ { 48555, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */
+ { 48590, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
+ { 48619, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */
+ { 48652, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */
+ { 48673, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */
+ { 48698, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */
+ { 48719, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */
+ { 48744, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */
+ { 48765, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */
+ { 48790, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */
+ { 48813, 0x00001403 }, /* GL_UNSIGNED_SHORT */
+ { 48831, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+ { 48861, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */
+ { 48895, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+ { 48921, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+ { 48951, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */
+ { 48985, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+ { 49011, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
+ { 49035, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+ { 49063, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+ { 49091, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
+ { 49118, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+ { 49150, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
+ { 49181, 0x00008CA2 }, /* GL_UPPER_LEFT */
+ { 49195, 0x00002A20 }, /* GL_V2F */
+ { 49202, 0x00002A21 }, /* GL_V3F */
+ { 49209, 0x00008B83 }, /* GL_VALIDATE_STATUS */
+ { 49228, 0x00001F00 }, /* GL_VENDOR */
+ { 49238, 0x00001F02 }, /* GL_VERSION */
+ { 49249, 0x00008074 }, /* GL_VERTEX_ARRAY */
+ { 49265, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */
+ { 49289, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
+ { 49319, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+ { 49350, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
+ { 49385, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
+ { 49409, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
+ { 49430, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
+ { 49453, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
+ { 49474, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+ { 49501, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+ { 49529, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+ { 49557, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+ { 49585, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+ { 49613, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+ { 49641, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+ { 49669, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+ { 49696, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+ { 49723, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+ { 49750, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+ { 49777, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+ { 49804, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+ { 49831, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+ { 49858, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+ { 49885, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+ { 49912, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+ { 49950, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
+ { 49992, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+ { 50023, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
+ { 50058, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
+ { 50089, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */
+ { 50124, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+ { 50158, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
+ { 50196, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+ { 50227, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
+ { 50262, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+ { 50290, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
+ { 50322, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+ { 50352, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
+ { 50386, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+ { 50414, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
+ { 50446, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
+ { 50466, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
+ { 50488, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
+ { 50517, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
+ { 50538, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
+ { 50567, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
+ { 50600, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
+ { 50632, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+ { 50659, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
+ { 50690, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
+ { 50720, 0x00008B31 }, /* GL_VERTEX_SHADER */
+ { 50737, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
+ { 50758, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
+ { 50785, 0x00000BA2 }, /* GL_VIEWPORT */
+ { 50797, 0x00000800 }, /* GL_VIEWPORT_BIT */
+ { 50813, 0x00008A1A }, /* GL_VOLATILE_APPLE */
+ { 50831, 0x0000911D }, /* GL_WAIT_FAILED */
+ { 50846, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
+ { 50866, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+ { 50897, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
+ { 50932, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */
+ { 50967, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */
+ { 50987, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+ { 51015, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */
+ { 51043, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+ { 51068, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */
+ { 51093, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+ { 51120, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */
+ { 51147, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+ { 51172, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */
+ { 51197, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
+ { 51221, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
+ { 51240, 0x000088B9 }, /* GL_WRITE_ONLY */
+ { 51254, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
+ { 51272, 0x000088B9 }, /* GL_WRITE_ONLY_OES */
+ { 51290, 0x00001506 }, /* GL_XOR */
+ { 51297, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
+ { 51316, 0x00008757 }, /* GL_YCBCR_MESA */
+ { 51330, 0x00000000 }, /* GL_ZERO */
+ { 51338, 0x00000D16 }, /* GL_ZOOM_X */
+ { 51348, 0x00000D17 }, /* GL_ZOOM_Y */
};
-static const unsigned reduced_enums[1425] =
+static const unsigned reduced_enums[1551] =
{
- 500, /* GL_FALSE */
- 760, /* GL_LINES */
- 763, /* GL_LINE_LOOP */
- 770, /* GL_LINE_STRIP */
- 1936, /* GL_TRIANGLES */
- 1940, /* GL_TRIANGLE_STRIP */
- 1938, /* GL_TRIANGLE_FAN */
- 1395, /* GL_QUADS */
- 1399, /* GL_QUAD_STRIP */
- 1273, /* GL_POLYGON */
- 761, /* GL_LINES_ADJACENCY_ARB */
- 771, /* GL_LINE_STRIP_ADJACENCY_ARB */
- 1937, /* GL_TRIANGLES_ADJACENCY_ARB */
- 1941, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */
- 1285, /* GL_POLYGON_STIPPLE_BIT */
- 1228, /* GL_PIXEL_MODE_BIT */
- 747, /* GL_LIGHTING_BIT */
- 532, /* GL_FOG_BIT */
+ 535, /* GL_FALSE */
+ 827, /* GL_LINES */
+ 831, /* GL_LINE_LOOP */
+ 838, /* GL_LINE_STRIP */
+ 2135, /* GL_TRIANGLES */
+ 2140, /* GL_TRIANGLE_STRIP */
+ 2138, /* GL_TRIANGLE_FAN */
+ 1507, /* GL_QUADS */
+ 1511, /* GL_QUAD_STRIP */
+ 1378, /* GL_POLYGON */
+ 828, /* GL_LINES_ADJACENCY */
+ 839, /* GL_LINE_STRIP_ADJACENCY */
+ 2136, /* GL_TRIANGLES_ADJACENCY */
+ 2141, /* GL_TRIANGLE_STRIP_ADJACENCY */
+ 1390, /* GL_POLYGON_STIPPLE_BIT */
+ 1333, /* GL_PIXEL_MODE_BIT */
+ 814, /* GL_LIGHTING_BIT */
+ 568, /* GL_FOG_BIT */
8, /* GL_ACCUM */
- 781, /* GL_LOAD */
- 1473, /* GL_RETURN */
- 1096, /* GL_MULT */
- 23, /* GL_ADD */
- 1112, /* GL_NEVER */
- 737, /* GL_LESS */
- 490, /* GL_EQUAL */
- 736, /* GL_LEQUAL */
- 649, /* GL_GREATER */
- 1129, /* GL_NOTEQUAL */
- 648, /* GL_GEQUAL */
- 47, /* GL_ALWAYS */
- 1624, /* GL_SRC_COLOR */
- 1161, /* GL_ONE_MINUS_SRC_COLOR */
- 1622, /* GL_SRC_ALPHA */
- 1160, /* GL_ONE_MINUS_SRC_ALPHA */
- 469, /* GL_DST_ALPHA */
- 1158, /* GL_ONE_MINUS_DST_ALPHA */
- 470, /* GL_DST_COLOR */
- 1159, /* GL_ONE_MINUS_DST_COLOR */
- 1623, /* GL_SRC_ALPHA_SATURATE */
- 629, /* GL_FRONT_LEFT */
- 630, /* GL_FRONT_RIGHT */
- 69, /* GL_BACK_LEFT */
- 70, /* GL_BACK_RIGHT */
- 626, /* GL_FRONT */
- 68, /* GL_BACK */
- 735, /* GL_LEFT */
- 1521, /* GL_RIGHT */
- 627, /* GL_FRONT_AND_BACK */
- 63, /* GL_AUX0 */
- 64, /* GL_AUX1 */
- 65, /* GL_AUX2 */
- 66, /* GL_AUX3 */
- 723, /* GL_INVALID_ENUM */
- 728, /* GL_INVALID_VALUE */
- 727, /* GL_INVALID_OPERATION */
- 1629, /* GL_STACK_OVERFLOW */
- 1630, /* GL_STACK_UNDERFLOW */
- 1186, /* GL_OUT_OF_MEMORY */
- 724, /* GL_INVALID_FRAMEBUFFER_OPERATION */
+ 850, /* GL_LOAD */
+ 1596, /* GL_RETURN */
+ 1200, /* GL_MULT */
+ 24, /* GL_ADD */
+ 1216, /* GL_NEVER */
+ 804, /* GL_LESS */
+ 525, /* GL_EQUAL */
+ 803, /* GL_LEQUAL */
+ 691, /* GL_GREATER */
+ 1233, /* GL_NOTEQUAL */
+ 690, /* GL_GEQUAL */
+ 55, /* GL_ALWAYS */
+ 1803, /* GL_SRC_COLOR */
+ 1266, /* GL_ONE_MINUS_SRC_COLOR */
+ 1801, /* GL_SRC_ALPHA */
+ 1265, /* GL_ONE_MINUS_SRC_ALPHA */
+ 504, /* GL_DST_ALPHA */
+ 1263, /* GL_ONE_MINUS_DST_ALPHA */
+ 505, /* GL_DST_COLOR */
+ 1264, /* GL_ONE_MINUS_DST_COLOR */
+ 1802, /* GL_SRC_ALPHA_SATURATE */
+ 667, /* GL_FRONT_LEFT */
+ 668, /* GL_FRONT_RIGHT */
+ 77, /* GL_BACK_LEFT */
+ 78, /* GL_BACK_RIGHT */
+ 664, /* GL_FRONT */
+ 76, /* GL_BACK */
+ 802, /* GL_LEFT */
+ 1685, /* GL_RIGHT */
+ 665, /* GL_FRONT_AND_BACK */
+ 71, /* GL_AUX0 */
+ 72, /* GL_AUX1 */
+ 73, /* GL_AUX2 */
+ 74, /* GL_AUX3 */
+ 790, /* GL_INVALID_ENUM */
+ 795, /* GL_INVALID_VALUE */
+ 794, /* GL_INVALID_OPERATION */
+ 1808, /* GL_STACK_OVERFLOW */
+ 1809, /* GL_STACK_UNDERFLOW */
+ 1291, /* GL_OUT_OF_MEMORY */
+ 791, /* GL_INVALID_FRAMEBUFFER_OPERATION */
0, /* GL_2D */
2, /* GL_3D */
3, /* GL_3D_COLOR */
4, /* GL_3D_COLOR_TEXTURE */
6, /* GL_4D_COLOR_TEXTURE */
- 1206, /* GL_PASS_THROUGH_TOKEN */
- 1272, /* GL_POINT_TOKEN */
- 772, /* GL_LINE_TOKEN */
- 1286, /* GL_POLYGON_TOKEN */
- 75, /* GL_BITMAP_TOKEN */
- 468, /* GL_DRAW_PIXEL_TOKEN */
- 315, /* GL_COPY_PIXEL_TOKEN */
- 764, /* GL_LINE_RESET_TOKEN */
- 493, /* GL_EXP */
- 494, /* GL_EXP2 */
- 352, /* GL_CW */
- 137, /* GL_CCW */
- 158, /* GL_COEFF */
- 1183, /* GL_ORDER */
- 405, /* GL_DOMAIN */
- 325, /* GL_CURRENT_COLOR */
- 328, /* GL_CURRENT_INDEX */
- 334, /* GL_CURRENT_NORMAL */
- 348, /* GL_CURRENT_TEXTURE_COORDS */
- 340, /* GL_CURRENT_RASTER_COLOR */
- 342, /* GL_CURRENT_RASTER_INDEX */
- 346, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
- 343, /* GL_CURRENT_RASTER_POSITION */
- 344, /* GL_CURRENT_RASTER_POSITION_VALID */
- 341, /* GL_CURRENT_RASTER_DISTANCE */
- 1264, /* GL_POINT_SMOOTH */
- 1248, /* GL_POINT_SIZE */
- 1263, /* GL_POINT_SIZE_RANGE */
- 1254, /* GL_POINT_SIZE_GRANULARITY */
- 765, /* GL_LINE_SMOOTH */
- 773, /* GL_LINE_WIDTH */
- 775, /* GL_LINE_WIDTH_RANGE */
- 774, /* GL_LINE_WIDTH_GRANULARITY */
- 767, /* GL_LINE_STIPPLE */
- 768, /* GL_LINE_STIPPLE_PATTERN */
- 769, /* GL_LINE_STIPPLE_REPEAT */
- 780, /* GL_LIST_MODE */
- 963, /* GL_MAX_LIST_NESTING */
- 777, /* GL_LIST_BASE */
- 779, /* GL_LIST_INDEX */
- 1275, /* GL_POLYGON_MODE */
- 1282, /* GL_POLYGON_SMOOTH */
- 1284, /* GL_POLYGON_STIPPLE */
- 479, /* GL_EDGE_FLAG */
- 318, /* GL_CULL_FACE */
- 319, /* GL_CULL_FACE_MODE */
- 628, /* GL_FRONT_FACE */
- 746, /* GL_LIGHTING */
- 751, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
- 752, /* GL_LIGHT_MODEL_TWO_SIDE */
- 748, /* GL_LIGHT_MODEL_AMBIENT */
- 1571, /* GL_SHADE_MODEL */
- 206, /* GL_COLOR_MATERIAL_FACE */
- 207, /* GL_COLOR_MATERIAL_PARAMETER */
- 205, /* GL_COLOR_MATERIAL */
- 531, /* GL_FOG */
- 553, /* GL_FOG_INDEX */
- 549, /* GL_FOG_DENSITY */
- 557, /* GL_FOG_START */
- 551, /* GL_FOG_END */
- 554, /* GL_FOG_MODE */
- 533, /* GL_FOG_COLOR */
- 390, /* GL_DEPTH_RANGE */
- 399, /* GL_DEPTH_TEST */
- 402, /* GL_DEPTH_WRITEMASK */
- 375, /* GL_DEPTH_CLEAR_VALUE */
- 389, /* GL_DEPTH_FUNC */
+ 1311, /* GL_PASS_THROUGH_TOKEN */
+ 1377, /* GL_POINT_TOKEN */
+ 841, /* GL_LINE_TOKEN */
+ 1391, /* GL_POLYGON_TOKEN */
+ 87, /* GL_BITMAP_TOKEN */
+ 503, /* GL_DRAW_PIXEL_TOKEN */
+ 349, /* GL_COPY_PIXEL_TOKEN */
+ 832, /* GL_LINE_RESET_TOKEN */
+ 528, /* GL_EXP */
+ 529, /* GL_EXP2 */
+ 386, /* GL_CW */
+ 154, /* GL_CCW */
+ 184, /* GL_COEFF */
+ 1288, /* GL_ORDER */
+ 440, /* GL_DOMAIN */
+ 359, /* GL_CURRENT_COLOR */
+ 362, /* GL_CURRENT_INDEX */
+ 368, /* GL_CURRENT_NORMAL */
+ 382, /* GL_CURRENT_TEXTURE_COORDS */
+ 374, /* GL_CURRENT_RASTER_COLOR */
+ 376, /* GL_CURRENT_RASTER_INDEX */
+ 380, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
+ 377, /* GL_CURRENT_RASTER_POSITION */
+ 378, /* GL_CURRENT_RASTER_POSITION_VALID */
+ 375, /* GL_CURRENT_RASTER_DISTANCE */
+ 1369, /* GL_POINT_SMOOTH */
+ 1353, /* GL_POINT_SIZE */
+ 1368, /* GL_POINT_SIZE_RANGE */
+ 1359, /* GL_POINT_SIZE_GRANULARITY */
+ 833, /* GL_LINE_SMOOTH */
+ 842, /* GL_LINE_WIDTH */
+ 844, /* GL_LINE_WIDTH_RANGE */
+ 843, /* GL_LINE_WIDTH_GRANULARITY */
+ 835, /* GL_LINE_STIPPLE */
+ 836, /* GL_LINE_STIPPLE_PATTERN */
+ 837, /* GL_LINE_STIPPLE_REPEAT */
+ 849, /* GL_LIST_MODE */
+ 1056, /* GL_MAX_LIST_NESTING */
+ 846, /* GL_LIST_BASE */
+ 848, /* GL_LIST_INDEX */
+ 1380, /* GL_POLYGON_MODE */
+ 1387, /* GL_POLYGON_SMOOTH */
+ 1389, /* GL_POLYGON_STIPPLE */
+ 514, /* GL_EDGE_FLAG */
+ 352, /* GL_CULL_FACE */
+ 353, /* GL_CULL_FACE_MODE */
+ 666, /* GL_FRONT_FACE */
+ 813, /* GL_LIGHTING */
+ 818, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
+ 819, /* GL_LIGHT_MODEL_TWO_SIDE */
+ 815, /* GL_LIGHT_MODEL_AMBIENT */
+ 1750, /* GL_SHADE_MODEL */
+ 232, /* GL_COLOR_MATERIAL_FACE */
+ 233, /* GL_COLOR_MATERIAL_PARAMETER */
+ 231, /* GL_COLOR_MATERIAL */
+ 567, /* GL_FOG */
+ 589, /* GL_FOG_INDEX */
+ 585, /* GL_FOG_DENSITY */
+ 593, /* GL_FOG_START */
+ 587, /* GL_FOG_END */
+ 590, /* GL_FOG_MODE */
+ 569, /* GL_FOG_COLOR */
+ 425, /* GL_DEPTH_RANGE */
+ 434, /* GL_DEPTH_TEST */
+ 437, /* GL_DEPTH_WRITEMASK */
+ 410, /* GL_DEPTH_CLEAR_VALUE */
+ 424, /* GL_DEPTH_FUNC */
12, /* GL_ACCUM_CLEAR_VALUE */
- 1673, /* GL_STENCIL_TEST */
- 1654, /* GL_STENCIL_CLEAR_VALUE */
- 1656, /* GL_STENCIL_FUNC */
- 1675, /* GL_STENCIL_VALUE_MASK */
- 1655, /* GL_STENCIL_FAIL */
- 1670, /* GL_STENCIL_PASS_DEPTH_FAIL */
- 1671, /* GL_STENCIL_PASS_DEPTH_PASS */
- 1672, /* GL_STENCIL_REF */
- 1676, /* GL_STENCIL_WRITEMASK */
- 922, /* GL_MATRIX_MODE */
- 1118, /* GL_NORMALIZE */
- 2039, /* GL_VIEWPORT */
- 1091, /* GL_MODELVIEW_STACK_DEPTH */
- 1372, /* GL_PROJECTION_STACK_DEPTH */
- 1898, /* GL_TEXTURE_STACK_DEPTH */
- 1088, /* GL_MODELVIEW_MATRIX */
- 1370, /* GL_PROJECTION_MATRIX */
- 1880, /* GL_TEXTURE_MATRIX */
- 61, /* GL_ATTRIB_STACK_DEPTH */
- 148, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
- 43, /* GL_ALPHA_TEST */
- 44, /* GL_ALPHA_TEST_FUNC */
- 45, /* GL_ALPHA_TEST_REF */
- 404, /* GL_DITHER */
- 79, /* GL_BLEND_DST */
- 93, /* GL_BLEND_SRC */
- 76, /* GL_BLEND */
- 783, /* GL_LOGIC_OP_MODE */
- 695, /* GL_INDEX_LOGIC_OP */
- 204, /* GL_COLOR_LOGIC_OP */
- 67, /* GL_AUX_BUFFERS */
- 415, /* GL_DRAW_BUFFER */
- 1414, /* GL_READ_BUFFER */
- 1549, /* GL_SCISSOR_BOX */
- 1550, /* GL_SCISSOR_TEST */
- 694, /* GL_INDEX_CLEAR_VALUE */
- 699, /* GL_INDEX_WRITEMASK */
- 201, /* GL_COLOR_CLEAR_VALUE */
- 243, /* GL_COLOR_WRITEMASK */
- 696, /* GL_INDEX_MODE */
- 1514, /* GL_RGBA_MODE */
- 414, /* GL_DOUBLEBUFFER */
- 1677, /* GL_STEREO */
- 1465, /* GL_RENDER_MODE */
- 1207, /* GL_PERSPECTIVE_CORRECTION_HINT */
- 1265, /* GL_POINT_SMOOTH_HINT */
- 766, /* GL_LINE_SMOOTH_HINT */
- 1283, /* GL_POLYGON_SMOOTH_HINT */
- 552, /* GL_FOG_HINT */
- 1860, /* GL_TEXTURE_GEN_S */
- 1862, /* GL_TEXTURE_GEN_T */
- 1859, /* GL_TEXTURE_GEN_R */
- 1858, /* GL_TEXTURE_GEN_Q */
- 1220, /* GL_PIXEL_MAP_I_TO_I */
- 1226, /* GL_PIXEL_MAP_S_TO_S */
- 1222, /* GL_PIXEL_MAP_I_TO_R */
- 1218, /* GL_PIXEL_MAP_I_TO_G */
- 1216, /* GL_PIXEL_MAP_I_TO_B */
- 1214, /* GL_PIXEL_MAP_I_TO_A */
- 1224, /* GL_PIXEL_MAP_R_TO_R */
- 1212, /* GL_PIXEL_MAP_G_TO_G */
- 1210, /* GL_PIXEL_MAP_B_TO_B */
- 1208, /* GL_PIXEL_MAP_A_TO_A */
- 1221, /* GL_PIXEL_MAP_I_TO_I_SIZE */
- 1227, /* GL_PIXEL_MAP_S_TO_S_SIZE */
- 1223, /* GL_PIXEL_MAP_I_TO_R_SIZE */
- 1219, /* GL_PIXEL_MAP_I_TO_G_SIZE */
- 1217, /* GL_PIXEL_MAP_I_TO_B_SIZE */
- 1215, /* GL_PIXEL_MAP_I_TO_A_SIZE */
- 1225, /* GL_PIXEL_MAP_R_TO_R_SIZE */
- 1213, /* GL_PIXEL_MAP_G_TO_G_SIZE */
- 1211, /* GL_PIXEL_MAP_B_TO_B_SIZE */
- 1209, /* GL_PIXEL_MAP_A_TO_A_SIZE */
- 1951, /* GL_UNPACK_SWAP_BYTES */
- 1946, /* GL_UNPACK_LSB_FIRST */
- 1947, /* GL_UNPACK_ROW_LENGTH */
- 1950, /* GL_UNPACK_SKIP_ROWS */
- 1949, /* GL_UNPACK_SKIP_PIXELS */
- 1944, /* GL_UNPACK_ALIGNMENT */
- 1195, /* GL_PACK_SWAP_BYTES */
- 1190, /* GL_PACK_LSB_FIRST */
- 1191, /* GL_PACK_ROW_LENGTH */
- 1194, /* GL_PACK_SKIP_ROWS */
- 1193, /* GL_PACK_SKIP_PIXELS */
- 1187, /* GL_PACK_ALIGNMENT */
- 863, /* GL_MAP_COLOR */
- 868, /* GL_MAP_STENCIL */
- 698, /* GL_INDEX_SHIFT */
- 697, /* GL_INDEX_OFFSET */
- 1428, /* GL_RED_SCALE */
- 1426, /* GL_RED_BIAS */
- 2065, /* GL_ZOOM_X */
- 2066, /* GL_ZOOM_Y */
- 653, /* GL_GREEN_SCALE */
- 651, /* GL_GREEN_BIAS */
- 101, /* GL_BLUE_SCALE */
- 99, /* GL_BLUE_BIAS */
- 42, /* GL_ALPHA_SCALE */
- 40, /* GL_ALPHA_BIAS */
- 391, /* GL_DEPTH_SCALE */
- 368, /* GL_DEPTH_BIAS */
- 952, /* GL_MAX_EVAL_ORDER */
- 962, /* GL_MAX_LIGHTS */
- 933, /* GL_MAX_CLIP_PLANES */
- 1013, /* GL_MAX_TEXTURE_SIZE */
- 969, /* GL_MAX_PIXEL_MAP_TABLE */
- 929, /* GL_MAX_ATTRIB_STACK_DEPTH */
- 965, /* GL_MAX_MODELVIEW_STACK_DEPTH */
- 966, /* GL_MAX_NAME_STACK_DEPTH */
- 995, /* GL_MAX_PROJECTION_STACK_DEPTH */
- 1014, /* GL_MAX_TEXTURE_STACK_DEPTH */
- 1036, /* GL_MAX_VIEWPORT_DIMS */
- 930, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
- 1687, /* GL_SUBPIXEL_BITS */
- 693, /* GL_INDEX_BITS */
- 1427, /* GL_RED_BITS */
- 652, /* GL_GREEN_BITS */
- 100, /* GL_BLUE_BITS */
- 41, /* GL_ALPHA_BITS */
- 369, /* GL_DEPTH_BITS */
- 1652, /* GL_STENCIL_BITS */
+ 1853, /* GL_STENCIL_TEST */
+ 1834, /* GL_STENCIL_CLEAR_VALUE */
+ 1836, /* GL_STENCIL_FUNC */
+ 1855, /* GL_STENCIL_VALUE_MASK */
+ 1835, /* GL_STENCIL_FAIL */
+ 1850, /* GL_STENCIL_PASS_DEPTH_FAIL */
+ 1851, /* GL_STENCIL_PASS_DEPTH_PASS */
+ 1852, /* GL_STENCIL_REF */
+ 1856, /* GL_STENCIL_WRITEMASK */
+ 1006, /* GL_MATRIX_MODE */
+ 1222, /* GL_NORMALIZE */
+ 2266, /* GL_VIEWPORT */
+ 1195, /* GL_MODELVIEW_STACK_DEPTH */
+ 1481, /* GL_PROJECTION_STACK_DEPTH */
+ 2089, /* GL_TEXTURE_STACK_DEPTH */
+ 1192, /* GL_MODELVIEW_MATRIX */
+ 1479, /* GL_PROJECTION_MATRIX */
+ 2069, /* GL_TEXTURE_MATRIX */
+ 69, /* GL_ATTRIB_STACK_DEPTH */
+ 166, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
+ 51, /* GL_ALPHA_TEST */
+ 52, /* GL_ALPHA_TEST_FUNC */
+ 53, /* GL_ALPHA_TEST_REF */
+ 439, /* GL_DITHER */
+ 91, /* GL_BLEND_DST */
+ 105, /* GL_BLEND_SRC */
+ 88, /* GL_BLEND */
+ 852, /* GL_LOGIC_OP_MODE */
+ 739, /* GL_INDEX_LOGIC_OP */
+ 230, /* GL_COLOR_LOGIC_OP */
+ 75, /* GL_AUX_BUFFERS */
+ 450, /* GL_DRAW_BUFFER */
+ 1534, /* GL_READ_BUFFER */
+ 1727, /* GL_SCISSOR_BOX */
+ 1728, /* GL_SCISSOR_TEST */
+ 738, /* GL_INDEX_CLEAR_VALUE */
+ 743, /* GL_INDEX_WRITEMASK */
+ 227, /* GL_COLOR_CLEAR_VALUE */
+ 269, /* GL_COLOR_WRITEMASK */
+ 740, /* GL_INDEX_MODE */
+ 1674, /* GL_RGBA_MODE */
+ 449, /* GL_DOUBLEBUFFER */
+ 1857, /* GL_STEREO */
+ 1588, /* GL_RENDER_MODE */
+ 1312, /* GL_PERSPECTIVE_CORRECTION_HINT */
+ 1370, /* GL_POINT_SMOOTH_HINT */
+ 834, /* GL_LINE_SMOOTH_HINT */
+ 1388, /* GL_POLYGON_SMOOTH_HINT */
+ 588, /* GL_FOG_HINT */
+ 2049, /* GL_TEXTURE_GEN_S */
+ 2051, /* GL_TEXTURE_GEN_T */
+ 2048, /* GL_TEXTURE_GEN_R */
+ 2047, /* GL_TEXTURE_GEN_Q */
+ 1325, /* GL_PIXEL_MAP_I_TO_I */
+ 1331, /* GL_PIXEL_MAP_S_TO_S */
+ 1327, /* GL_PIXEL_MAP_I_TO_R */
+ 1323, /* GL_PIXEL_MAP_I_TO_G */
+ 1321, /* GL_PIXEL_MAP_I_TO_B */
+ 1319, /* GL_PIXEL_MAP_I_TO_A */
+ 1329, /* GL_PIXEL_MAP_R_TO_R */
+ 1317, /* GL_PIXEL_MAP_G_TO_G */
+ 1315, /* GL_PIXEL_MAP_B_TO_B */
+ 1313, /* GL_PIXEL_MAP_A_TO_A */
+ 1326, /* GL_PIXEL_MAP_I_TO_I_SIZE */
+ 1332, /* GL_PIXEL_MAP_S_TO_S_SIZE */
+ 1328, /* GL_PIXEL_MAP_I_TO_R_SIZE */
+ 1324, /* GL_PIXEL_MAP_I_TO_G_SIZE */
+ 1322, /* GL_PIXEL_MAP_I_TO_B_SIZE */
+ 1320, /* GL_PIXEL_MAP_I_TO_A_SIZE */
+ 1330, /* GL_PIXEL_MAP_R_TO_R_SIZE */
+ 1318, /* GL_PIXEL_MAP_G_TO_G_SIZE */
+ 1316, /* GL_PIXEL_MAP_B_TO_B_SIZE */
+ 1314, /* GL_PIXEL_MAP_A_TO_A_SIZE */
+ 2152, /* GL_UNPACK_SWAP_BYTES */
+ 2147, /* GL_UNPACK_LSB_FIRST */
+ 2148, /* GL_UNPACK_ROW_LENGTH */
+ 2151, /* GL_UNPACK_SKIP_ROWS */
+ 2150, /* GL_UNPACK_SKIP_PIXELS */
+ 2145, /* GL_UNPACK_ALIGNMENT */
+ 1300, /* GL_PACK_SWAP_BYTES */
+ 1295, /* GL_PACK_LSB_FIRST */
+ 1296, /* GL_PACK_ROW_LENGTH */
+ 1299, /* GL_PACK_SKIP_ROWS */
+ 1298, /* GL_PACK_SKIP_PIXELS */
+ 1292, /* GL_PACK_ALIGNMENT */
+ 947, /* GL_MAP_COLOR */
+ 952, /* GL_MAP_STENCIL */
+ 742, /* GL_INDEX_SHIFT */
+ 741, /* GL_INDEX_OFFSET */
+ 1550, /* GL_RED_SCALE */
+ 1546, /* GL_RED_BIAS */
+ 2292, /* GL_ZOOM_X */
+ 2293, /* GL_ZOOM_Y */
+ 697, /* GL_GREEN_SCALE */
+ 693, /* GL_GREEN_BIAS */
+ 115, /* GL_BLUE_SCALE */
+ 111, /* GL_BLUE_BIAS */
+ 50, /* GL_ALPHA_SCALE */
+ 47, /* GL_ALPHA_BIAS */
+ 426, /* GL_DEPTH_SCALE */
+ 402, /* GL_DEPTH_BIAS */
+ 1038, /* GL_MAX_EVAL_ORDER */
+ 1055, /* GL_MAX_LIGHTS */
+ 1018, /* GL_MAX_CLIP_DISTANCES */
+ 1110, /* GL_MAX_TEXTURE_SIZE */
+ 1062, /* GL_MAX_PIXEL_MAP_TABLE */
+ 1014, /* GL_MAX_ATTRIB_STACK_DEPTH */
+ 1058, /* GL_MAX_MODELVIEW_STACK_DEPTH */
+ 1059, /* GL_MAX_NAME_STACK_DEPTH */
+ 1090, /* GL_MAX_PROJECTION_STACK_DEPTH */
+ 1111, /* GL_MAX_TEXTURE_STACK_DEPTH */
+ 1137, /* GL_MAX_VIEWPORT_DIMS */
+ 1015, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
+ 1867, /* GL_SUBPIXEL_BITS */
+ 737, /* GL_INDEX_BITS */
+ 1547, /* GL_RED_BITS */
+ 694, /* GL_GREEN_BITS */
+ 112, /* GL_BLUE_BITS */
+ 48, /* GL_ALPHA_BITS */
+ 403, /* GL_DEPTH_BITS */
+ 1831, /* GL_STENCIL_BITS */
14, /* GL_ACCUM_RED_BITS */
13, /* GL_ACCUM_GREEN_BITS */
10, /* GL_ACCUM_BLUE_BITS */
9, /* GL_ACCUM_ALPHA_BITS */
- 1105, /* GL_NAME_STACK_DEPTH */
- 62, /* GL_AUTO_NORMAL */
- 809, /* GL_MAP1_COLOR_4 */
- 812, /* GL_MAP1_INDEX */
- 813, /* GL_MAP1_NORMAL */
- 814, /* GL_MAP1_TEXTURE_COORD_1 */
- 815, /* GL_MAP1_TEXTURE_COORD_2 */
- 816, /* GL_MAP1_TEXTURE_COORD_3 */
- 817, /* GL_MAP1_TEXTURE_COORD_4 */
- 818, /* GL_MAP1_VERTEX_3 */
- 819, /* GL_MAP1_VERTEX_4 */
- 836, /* GL_MAP2_COLOR_4 */
- 839, /* GL_MAP2_INDEX */
- 840, /* GL_MAP2_NORMAL */
- 841, /* GL_MAP2_TEXTURE_COORD_1 */
- 842, /* GL_MAP2_TEXTURE_COORD_2 */
- 843, /* GL_MAP2_TEXTURE_COORD_3 */
- 844, /* GL_MAP2_TEXTURE_COORD_4 */
- 845, /* GL_MAP2_VERTEX_3 */
- 846, /* GL_MAP2_VERTEX_4 */
- 810, /* GL_MAP1_GRID_DOMAIN */
- 811, /* GL_MAP1_GRID_SEGMENTS */
- 837, /* GL_MAP2_GRID_DOMAIN */
- 838, /* GL_MAP2_GRID_SEGMENTS */
- 1770, /* GL_TEXTURE_1D */
- 1772, /* GL_TEXTURE_2D */
- 503, /* GL_FEEDBACK_BUFFER_POINTER */
- 504, /* GL_FEEDBACK_BUFFER_SIZE */
- 505, /* GL_FEEDBACK_BUFFER_TYPE */
- 1559, /* GL_SELECTION_BUFFER_POINTER */
- 1560, /* GL_SELECTION_BUFFER_SIZE */
- 1904, /* GL_TEXTURE_WIDTH */
- 1866, /* GL_TEXTURE_HEIGHT */
- 1810, /* GL_TEXTURE_COMPONENTS */
- 1794, /* GL_TEXTURE_BORDER_COLOR */
- 1793, /* GL_TEXTURE_BORDER */
- 406, /* GL_DONT_CARE */
- 501, /* GL_FASTEST */
- 1113, /* GL_NICEST */
- 48, /* GL_AMBIENT */
- 403, /* GL_DIFFUSE */
- 1611, /* GL_SPECULAR */
- 1287, /* GL_POSITION */
- 1614, /* GL_SPOT_DIRECTION */
- 1615, /* GL_SPOT_EXPONENT */
- 1613, /* GL_SPOT_CUTOFF */
- 288, /* GL_CONSTANT_ATTENUATION */
- 755, /* GL_LINEAR_ATTENUATION */
- 1394, /* GL_QUADRATIC_ATTENUATION */
- 257, /* GL_COMPILE */
- 258, /* GL_COMPILE_AND_EXECUTE */
- 132, /* GL_BYTE */
- 1953, /* GL_UNSIGNED_BYTE */
- 1576, /* GL_SHORT */
- 1968, /* GL_UNSIGNED_SHORT */
- 701, /* GL_INT */
- 1956, /* GL_UNSIGNED_INT */
- 512, /* GL_FLOAT */
+ 1209, /* GL_NAME_STACK_DEPTH */
+ 70, /* GL_AUTO_NORMAL */
+ 893, /* GL_MAP1_COLOR_4 */
+ 896, /* GL_MAP1_INDEX */
+ 897, /* GL_MAP1_NORMAL */
+ 898, /* GL_MAP1_TEXTURE_COORD_1 */
+ 899, /* GL_MAP1_TEXTURE_COORD_2 */
+ 900, /* GL_MAP1_TEXTURE_COORD_3 */
+ 901, /* GL_MAP1_TEXTURE_COORD_4 */
+ 902, /* GL_MAP1_VERTEX_3 */
+ 903, /* GL_MAP1_VERTEX_4 */
+ 920, /* GL_MAP2_COLOR_4 */
+ 923, /* GL_MAP2_INDEX */
+ 924, /* GL_MAP2_NORMAL */
+ 925, /* GL_MAP2_TEXTURE_COORD_1 */
+ 926, /* GL_MAP2_TEXTURE_COORD_2 */
+ 927, /* GL_MAP2_TEXTURE_COORD_3 */
+ 928, /* GL_MAP2_TEXTURE_COORD_4 */
+ 929, /* GL_MAP2_VERTEX_3 */
+ 930, /* GL_MAP2_VERTEX_4 */
+ 894, /* GL_MAP1_GRID_DOMAIN */
+ 895, /* GL_MAP1_GRID_SEGMENTS */
+ 921, /* GL_MAP2_GRID_DOMAIN */
+ 922, /* GL_MAP2_GRID_SEGMENTS */
+ 1950, /* GL_TEXTURE_1D */
+ 1953, /* GL_TEXTURE_2D */
+ 538, /* GL_FEEDBACK_BUFFER_POINTER */
+ 539, /* GL_FEEDBACK_BUFFER_SIZE */
+ 540, /* GL_FEEDBACK_BUFFER_TYPE */
+ 1737, /* GL_SELECTION_BUFFER_POINTER */
+ 1738, /* GL_SELECTION_BUFFER_SIZE */
+ 2095, /* GL_TEXTURE_WIDTH */
+ 2055, /* GL_TEXTURE_HEIGHT */
+ 1999, /* GL_TEXTURE_COMPONENTS */
+ 1980, /* GL_TEXTURE_BORDER_COLOR */
+ 1979, /* GL_TEXTURE_BORDER */
+ 441, /* GL_DONT_CARE */
+ 536, /* GL_FASTEST */
+ 1217, /* GL_NICEST */
+ 56, /* GL_AMBIENT */
+ 438, /* GL_DIFFUSE */
+ 1790, /* GL_SPECULAR */
+ 1392, /* GL_POSITION */
+ 1793, /* GL_SPOT_DIRECTION */
+ 1794, /* GL_SPOT_EXPONENT */
+ 1792, /* GL_SPOT_CUTOFF */
+ 317, /* GL_CONSTANT_ATTENUATION */
+ 822, /* GL_LINEAR_ATTENUATION */
+ 1506, /* GL_QUADRATIC_ATTENUATION */
+ 284, /* GL_COMPILE */
+ 285, /* GL_COMPILE_AND_EXECUTE */
+ 149, /* GL_BYTE */
+ 2154, /* GL_UNSIGNED_BYTE */
+ 1755, /* GL_SHORT */
+ 2193, /* GL_UNSIGNED_SHORT */
+ 745, /* GL_INT */
+ 2157, /* GL_UNSIGNED_INT */
+ 548, /* GL_FLOAT */
1, /* GL_2_BYTES */
5, /* GL_3_BYTES */
7, /* GL_4_BYTES */
- 413, /* GL_DOUBLE */
- 654, /* GL_HALF_FLOAT */
- 509, /* GL_FIXED */
- 144, /* GL_CLEAR */
- 50, /* GL_AND */
- 52, /* GL_AND_REVERSE */
- 313, /* GL_COPY */
- 51, /* GL_AND_INVERTED */
- 1116, /* GL_NOOP */
- 2061, /* GL_XOR */
- 1182, /* GL_OR */
- 1117, /* GL_NOR */
- 491, /* GL_EQUIV */
- 731, /* GL_INVERT */
- 1185, /* GL_OR_REVERSE */
- 314, /* GL_COPY_INVERTED */
- 1184, /* GL_OR_INVERTED */
- 1106, /* GL_NAND */
- 1565, /* GL_SET */
- 488, /* GL_EMISSION */
- 1575, /* GL_SHININESS */
- 49, /* GL_AMBIENT_AND_DIFFUSE */
- 203, /* GL_COLOR_INDEXES */
- 1055, /* GL_MODELVIEW */
- 1369, /* GL_PROJECTION */
- 1705, /* GL_TEXTURE */
- 159, /* GL_COLOR */
- 361, /* GL_DEPTH */
- 1637, /* GL_STENCIL */
- 202, /* GL_COLOR_INDEX */
- 1657, /* GL_STENCIL_INDEX */
- 376, /* GL_DEPTH_COMPONENT */
- 1423, /* GL_RED */
- 650, /* GL_GREEN */
- 98, /* GL_BLUE */
- 31, /* GL_ALPHA */
- 1474, /* GL_RGB */
- 1497, /* GL_RGBA */
- 787, /* GL_LUMINANCE */
- 808, /* GL_LUMINANCE_ALPHA */
- 74, /* GL_BITMAP */
- 1237, /* GL_POINT */
- 753, /* GL_LINE */
- 506, /* GL_FILL */
- 1434, /* GL_RENDER */
- 502, /* GL_FEEDBACK */
- 1558, /* GL_SELECT */
- 511, /* GL_FLAT */
- 1586, /* GL_SMOOTH */
- 732, /* GL_KEEP */
- 1467, /* GL_REPLACE */
- 683, /* GL_INCR */
- 357, /* GL_DECR */
- 1985, /* GL_VENDOR */
- 1464, /* GL_RENDERER */
- 1986, /* GL_VERSION */
- 495, /* GL_EXTENSIONS */
- 1522, /* GL_S */
- 1696, /* GL_T */
- 1410, /* GL_R */
- 1393, /* GL_Q */
- 1092, /* GL_MODULATE */
- 356, /* GL_DECAL */
- 1853, /* GL_TEXTURE_ENV_MODE */
- 1852, /* GL_TEXTURE_ENV_COLOR */
- 1851, /* GL_TEXTURE_ENV */
- 496, /* GL_EYE_LINEAR */
- 1143, /* GL_OBJECT_LINEAR */
- 1612, /* GL_SPHERE_MAP */
- 1856, /* GL_TEXTURE_GEN_MODE */
- 1145, /* GL_OBJECT_PLANE */
- 497, /* GL_EYE_PLANE */
- 1107, /* GL_NEAREST */
- 754, /* GL_LINEAR */
- 1111, /* GL_NEAREST_MIPMAP_NEAREST */
- 759, /* GL_LINEAR_MIPMAP_NEAREST */
- 1110, /* GL_NEAREST_MIPMAP_LINEAR */
- 758, /* GL_LINEAR_MIPMAP_LINEAR */
- 1879, /* GL_TEXTURE_MAG_FILTER */
- 1888, /* GL_TEXTURE_MIN_FILTER */
- 1907, /* GL_TEXTURE_WRAP_S */
- 1908, /* GL_TEXTURE_WRAP_T */
- 138, /* GL_CLAMP */
- 1466, /* GL_REPEAT */
- 1281, /* GL_POLYGON_OFFSET_UNITS */
- 1280, /* GL_POLYGON_OFFSET_POINT */
- 1279, /* GL_POLYGON_OFFSET_LINE */
- 1411, /* GL_R3_G3_B2 */
- 1982, /* GL_V2F */
- 1983, /* GL_V3F */
- 135, /* GL_C4UB_V2F */
- 136, /* GL_C4UB_V3F */
- 133, /* GL_C3F_V3F */
- 1104, /* GL_N3F_V3F */
- 134, /* GL_C4F_N3F_V3F */
- 1701, /* GL_T2F_V3F */
- 1703, /* GL_T4F_V4F */
- 1699, /* GL_T2F_C4UB_V3F */
- 1697, /* GL_T2F_C3F_V3F */
- 1700, /* GL_T2F_N3F_V3F */
- 1698, /* GL_T2F_C4F_N3F_V3F */
- 1702, /* GL_T4F_C4F_N3F_V4F */
- 151, /* GL_CLIP_PLANE0 */
- 152, /* GL_CLIP_PLANE1 */
- 153, /* GL_CLIP_PLANE2 */
- 154, /* GL_CLIP_PLANE3 */
- 155, /* GL_CLIP_PLANE4 */
- 156, /* GL_CLIP_PLANE5 */
- 738, /* GL_LIGHT0 */
- 739, /* GL_LIGHT1 */
- 740, /* GL_LIGHT2 */
- 741, /* GL_LIGHT3 */
- 742, /* GL_LIGHT4 */
- 743, /* GL_LIGHT5 */
- 744, /* GL_LIGHT6 */
- 745, /* GL_LIGHT7 */
- 658, /* GL_HINT_BIT */
- 290, /* GL_CONSTANT_COLOR */
- 1156, /* GL_ONE_MINUS_CONSTANT_COLOR */
- 285, /* GL_CONSTANT_ALPHA */
- 1154, /* GL_ONE_MINUS_CONSTANT_ALPHA */
- 77, /* GL_BLEND_COLOR */
- 631, /* GL_FUNC_ADD */
- 1039, /* GL_MIN */
- 925, /* GL_MAX */
- 84, /* GL_BLEND_EQUATION */
- 637, /* GL_FUNC_SUBTRACT */
- 634, /* GL_FUNC_REVERSE_SUBTRACT */
- 293, /* GL_CONVOLUTION_1D */
- 294, /* GL_CONVOLUTION_2D */
- 1561, /* GL_SEPARABLE_2D */
- 297, /* GL_CONVOLUTION_BORDER_MODE */
- 301, /* GL_CONVOLUTION_FILTER_SCALE */
- 299, /* GL_CONVOLUTION_FILTER_BIAS */
- 1424, /* GL_REDUCE */
- 303, /* GL_CONVOLUTION_FORMAT */
- 307, /* GL_CONVOLUTION_WIDTH */
- 305, /* GL_CONVOLUTION_HEIGHT */
- 942, /* GL_MAX_CONVOLUTION_WIDTH */
- 940, /* GL_MAX_CONVOLUTION_HEIGHT */
- 1320, /* GL_POST_CONVOLUTION_RED_SCALE */
- 1316, /* GL_POST_CONVOLUTION_GREEN_SCALE */
- 1311, /* GL_POST_CONVOLUTION_BLUE_SCALE */
- 1307, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
- 1318, /* GL_POST_CONVOLUTION_RED_BIAS */
- 1314, /* GL_POST_CONVOLUTION_GREEN_BIAS */
- 1309, /* GL_POST_CONVOLUTION_BLUE_BIAS */
- 1305, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
- 659, /* GL_HISTOGRAM */
- 1376, /* GL_PROXY_HISTOGRAM */
- 675, /* GL_HISTOGRAM_WIDTH */
- 665, /* GL_HISTOGRAM_FORMAT */
- 671, /* GL_HISTOGRAM_RED_SIZE */
- 667, /* GL_HISTOGRAM_GREEN_SIZE */
- 662, /* GL_HISTOGRAM_BLUE_SIZE */
- 660, /* GL_HISTOGRAM_ALPHA_SIZE */
- 669, /* GL_HISTOGRAM_LUMINANCE_SIZE */
- 673, /* GL_HISTOGRAM_SINK */
- 1040, /* GL_MINMAX */
- 1042, /* GL_MINMAX_FORMAT */
- 1044, /* GL_MINMAX_SINK */
- 1704, /* GL_TABLE_TOO_LARGE_EXT */
- 1955, /* GL_UNSIGNED_BYTE_3_3_2 */
- 1971, /* GL_UNSIGNED_SHORT_4_4_4_4 */
- 1974, /* GL_UNSIGNED_SHORT_5_5_5_1 */
- 1965, /* GL_UNSIGNED_INT_8_8_8_8 */
- 1957, /* GL_UNSIGNED_INT_10_10_10_2 */
- 1278, /* GL_POLYGON_OFFSET_FILL */
- 1277, /* GL_POLYGON_OFFSET_FACTOR */
- 1276, /* GL_POLYGON_OFFSET_BIAS */
- 1470, /* GL_RESCALE_NORMAL */
- 36, /* GL_ALPHA4 */
- 38, /* GL_ALPHA8 */
- 32, /* GL_ALPHA12 */
- 34, /* GL_ALPHA16 */
- 798, /* GL_LUMINANCE4 */
- 804, /* GL_LUMINANCE8 */
- 788, /* GL_LUMINANCE12 */
- 794, /* GL_LUMINANCE16 */
- 799, /* GL_LUMINANCE4_ALPHA4 */
- 802, /* GL_LUMINANCE6_ALPHA2 */
- 805, /* GL_LUMINANCE8_ALPHA8 */
- 791, /* GL_LUMINANCE12_ALPHA4 */
- 789, /* GL_LUMINANCE12_ALPHA12 */
- 795, /* GL_LUMINANCE16_ALPHA16 */
- 702, /* GL_INTENSITY */
- 707, /* GL_INTENSITY4 */
- 709, /* GL_INTENSITY8 */
- 703, /* GL_INTENSITY12 */
- 705, /* GL_INTENSITY16 */
- 1483, /* GL_RGB2_EXT */
- 1484, /* GL_RGB4 */
- 1487, /* GL_RGB5 */
- 1494, /* GL_RGB8 */
- 1475, /* GL_RGB10 */
- 1479, /* GL_RGB12 */
- 1481, /* GL_RGB16 */
- 1502, /* GL_RGBA2 */
- 1504, /* GL_RGBA4 */
- 1490, /* GL_RGB5_A1 */
- 1509, /* GL_RGBA8 */
- 1476, /* GL_RGB10_A2 */
- 1498, /* GL_RGBA12 */
- 1500, /* GL_RGBA16 */
- 1895, /* GL_TEXTURE_RED_SIZE */
- 1864, /* GL_TEXTURE_GREEN_SIZE */
- 1791, /* GL_TEXTURE_BLUE_SIZE */
- 1776, /* GL_TEXTURE_ALPHA_SIZE */
- 1877, /* GL_TEXTURE_LUMINANCE_SIZE */
- 1868, /* GL_TEXTURE_INTENSITY_SIZE */
- 1468, /* GL_REPLACE_EXT */
- 1380, /* GL_PROXY_TEXTURE_1D */
- 1383, /* GL_PROXY_TEXTURE_2D */
- 1902, /* GL_TEXTURE_TOO_LARGE_EXT */
- 1890, /* GL_TEXTURE_PRIORITY */
- 1897, /* GL_TEXTURE_RESIDENT */
- 1779, /* GL_TEXTURE_BINDING_1D */
- 1781, /* GL_TEXTURE_BINDING_2D */
- 1783, /* GL_TEXTURE_BINDING_3D */
- 1192, /* GL_PACK_SKIP_IMAGES */
- 1188, /* GL_PACK_IMAGE_HEIGHT */
- 1948, /* GL_UNPACK_SKIP_IMAGES */
- 1945, /* GL_UNPACK_IMAGE_HEIGHT */
- 1774, /* GL_TEXTURE_3D */
- 1386, /* GL_PROXY_TEXTURE_3D */
- 1848, /* GL_TEXTURE_DEPTH */
- 1905, /* GL_TEXTURE_WRAP_R */
- 926, /* GL_MAX_3D_TEXTURE_SIZE */
- 1987, /* GL_VERTEX_ARRAY */
- 1119, /* GL_NORMAL_ARRAY */
- 160, /* GL_COLOR_ARRAY */
- 687, /* GL_INDEX_ARRAY */
- 1818, /* GL_TEXTURE_COORD_ARRAY */
- 480, /* GL_EDGE_FLAG_ARRAY */
- 1993, /* GL_VERTEX_ARRAY_SIZE */
- 1995, /* GL_VERTEX_ARRAY_TYPE */
- 1994, /* GL_VERTEX_ARRAY_STRIDE */
- 1124, /* GL_NORMAL_ARRAY_TYPE */
- 1123, /* GL_NORMAL_ARRAY_STRIDE */
- 164, /* GL_COLOR_ARRAY_SIZE */
- 166, /* GL_COLOR_ARRAY_TYPE */
- 165, /* GL_COLOR_ARRAY_STRIDE */
- 692, /* GL_INDEX_ARRAY_TYPE */
- 691, /* GL_INDEX_ARRAY_STRIDE */
- 1822, /* GL_TEXTURE_COORD_ARRAY_SIZE */
- 1824, /* GL_TEXTURE_COORD_ARRAY_TYPE */
- 1823, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
- 484, /* GL_EDGE_FLAG_ARRAY_STRIDE */
- 1992, /* GL_VERTEX_ARRAY_POINTER */
- 1122, /* GL_NORMAL_ARRAY_POINTER */
- 163, /* GL_COLOR_ARRAY_POINTER */
- 690, /* GL_INDEX_ARRAY_POINTER */
- 1821, /* GL_TEXTURE_COORD_ARRAY_POINTER */
- 483, /* GL_EDGE_FLAG_ARRAY_POINTER */
- 1097, /* GL_MULTISAMPLE */
- 1535, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
- 1537, /* GL_SAMPLE_ALPHA_TO_ONE */
- 1542, /* GL_SAMPLE_COVERAGE */
- 1539, /* GL_SAMPLE_BUFFERS */
- 1530, /* GL_SAMPLES */
- 1546, /* GL_SAMPLE_COVERAGE_VALUE */
- 1544, /* GL_SAMPLE_COVERAGE_INVERT */
- 208, /* GL_COLOR_MATRIX */
- 210, /* GL_COLOR_MATRIX_STACK_DEPTH */
- 936, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
- 1303, /* GL_POST_COLOR_MATRIX_RED_SCALE */
- 1299, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
- 1294, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
- 1290, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
- 1301, /* GL_POST_COLOR_MATRIX_RED_BIAS */
- 1297, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
- 1292, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
- 1288, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
- 1801, /* GL_TEXTURE_COLOR_TABLE_SGI */
- 1387, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
- 1803, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
- 82, /* GL_BLEND_DST_RGB */
- 96, /* GL_BLEND_SRC_RGB */
- 80, /* GL_BLEND_DST_ALPHA */
- 94, /* GL_BLEND_SRC_ALPHA */
- 214, /* GL_COLOR_TABLE */
- 1313, /* GL_POST_CONVOLUTION_COLOR_TABLE */
- 1296, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
- 1375, /* GL_PROXY_COLOR_TABLE */
- 1379, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
- 1378, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
- 238, /* GL_COLOR_TABLE_SCALE */
- 218, /* GL_COLOR_TABLE_BIAS */
- 223, /* GL_COLOR_TABLE_FORMAT */
- 240, /* GL_COLOR_TABLE_WIDTH */
- 235, /* GL_COLOR_TABLE_RED_SIZE */
- 226, /* GL_COLOR_TABLE_GREEN_SIZE */
- 220, /* GL_COLOR_TABLE_BLUE_SIZE */
- 215, /* GL_COLOR_TABLE_ALPHA_SIZE */
- 232, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
- 229, /* GL_COLOR_TABLE_INTENSITY_SIZE */
- 71, /* GL_BGR */
- 72, /* GL_BGRA */
- 951, /* GL_MAX_ELEMENTS_VERTICES */
- 950, /* GL_MAX_ELEMENTS_INDICES */
- 1867, /* GL_TEXTURE_INDEX_SIZE_EXT */
- 157, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
- 1259, /* GL_POINT_SIZE_MIN */
- 1255, /* GL_POINT_SIZE_MAX */
- 1244, /* GL_POINT_FADE_THRESHOLD_SIZE */
- 1240, /* GL_POINT_DISTANCE_ATTENUATION */
- 139, /* GL_CLAMP_TO_BORDER */
- 142, /* GL_CLAMP_TO_EDGE */
- 1889, /* GL_TEXTURE_MIN_LOD */
- 1887, /* GL_TEXTURE_MAX_LOD */
- 1778, /* GL_TEXTURE_BASE_LEVEL */
- 1886, /* GL_TEXTURE_MAX_LEVEL */
- 678, /* GL_IGNORE_BORDER_HP */
- 289, /* GL_CONSTANT_BORDER_HP */
- 1469, /* GL_REPLICATE_BORDER_HP */
- 295, /* GL_CONVOLUTION_BORDER_COLOR */
- 1151, /* GL_OCCLUSION_TEST_HP */
- 1152, /* GL_OCCLUSION_TEST_RESULT_HP */
- 756, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
- 1795, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
- 1797, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
- 1799, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
- 1800, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- 1798, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
- 1796, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
- 931, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
- 932, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- 1323, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
- 1325, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
- 1322, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
- 1324, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
- 1875, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
- 1876, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
- 1874, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
- 640, /* GL_GENERATE_MIPMAP */
- 641, /* GL_GENERATE_MIPMAP_HINT */
- 555, /* GL_FOG_OFFSET_SGIX */
- 556, /* GL_FOG_OFFSET_VALUE_SGIX */
- 1809, /* GL_TEXTURE_COMPARE_SGIX */
- 1808, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
- 1871, /* GL_TEXTURE_LEQUAL_R_SGIX */
- 1863, /* GL_TEXTURE_GEQUAL_R_SGIX */
- 377, /* GL_DEPTH_COMPONENT16 */
- 381, /* GL_DEPTH_COMPONENT24 */
- 385, /* GL_DEPTH_COMPONENT32 */
- 320, /* GL_CULL_VERTEX_EXT */
- 322, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
- 321, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
- 2057, /* GL_WRAP_BORDER_SUN */
- 1802, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
- 749, /* GL_LIGHT_MODEL_COLOR_CONTROL */
- 1579, /* GL_SINGLE_COLOR */
- 1563, /* GL_SEPARATE_SPECULAR_COLOR */
- 1574, /* GL_SHARED_TEXTURE_PALETTE_EXT */
- 567, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
- 568, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
- 578, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
- 570, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
- 566, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
- 565, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
- 569, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
- 579, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
- 596, /* GL_FRAMEBUFFER_DEFAULT */
- 622, /* GL_FRAMEBUFFER_UNDEFINED */
- 393, /* GL_DEPTH_STENCIL_ATTACHMENT */
- 686, /* GL_INDEX */
- 1954, /* GL_UNSIGNED_BYTE_2_3_3_REV */
- 1975, /* GL_UNSIGNED_SHORT_5_6_5 */
- 1976, /* GL_UNSIGNED_SHORT_5_6_5_REV */
- 1972, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
- 1969, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
- 1966, /* GL_UNSIGNED_INT_8_8_8_8_REV */
- 1963, /* GL_UNSIGNED_INT_2_10_10_10_REV */
- 1884, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
- 1885, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
- 1883, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
- 1047, /* GL_MIRRORED_REPEAT */
- 1517, /* GL_RGB_S3TC */
- 1486, /* GL_RGB4_S3TC */
- 1515, /* GL_RGBA_S3TC */
- 1508, /* GL_RGBA4_S3TC */
- 1513, /* GL_RGBA_DXT5_S3TC */
- 1505, /* GL_RGBA4_DXT5_S3TC */
- 277, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
- 272, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
- 273, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
- 274, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
- 1109, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
- 1108, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
- 757, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
- 542, /* GL_FOG_COORDINATE_SOURCE */
- 534, /* GL_FOG_COORD */
- 558, /* GL_FRAGMENT_DEPTH */
- 326, /* GL_CURRENT_FOG_COORD */
- 541, /* GL_FOG_COORDINATE_ARRAY_TYPE */
- 540, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
- 539, /* GL_FOG_COORDINATE_ARRAY_POINTER */
- 536, /* GL_FOG_COORDINATE_ARRAY */
- 212, /* GL_COLOR_SUM */
- 347, /* GL_CURRENT_SECONDARY_COLOR */
- 1555, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
- 1557, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
- 1556, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
- 1554, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
- 1551, /* GL_SECONDARY_COLOR_ARRAY */
- 345, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
- 28, /* GL_ALIASED_POINT_SIZE_RANGE */
- 27, /* GL_ALIASED_LINE_WIDTH_RANGE */
- 1706, /* GL_TEXTURE0 */
- 1708, /* GL_TEXTURE1 */
- 1730, /* GL_TEXTURE2 */
- 1752, /* GL_TEXTURE3 */
- 1758, /* GL_TEXTURE4 */
- 1760, /* GL_TEXTURE5 */
- 1762, /* GL_TEXTURE6 */
- 1764, /* GL_TEXTURE7 */
- 1766, /* GL_TEXTURE8 */
- 1768, /* GL_TEXTURE9 */
- 1709, /* GL_TEXTURE10 */
- 1711, /* GL_TEXTURE11 */
- 1713, /* GL_TEXTURE12 */
- 1715, /* GL_TEXTURE13 */
- 1717, /* GL_TEXTURE14 */
- 1719, /* GL_TEXTURE15 */
- 1721, /* GL_TEXTURE16 */
- 1723, /* GL_TEXTURE17 */
- 1725, /* GL_TEXTURE18 */
- 1727, /* GL_TEXTURE19 */
- 1731, /* GL_TEXTURE20 */
- 1733, /* GL_TEXTURE21 */
- 1735, /* GL_TEXTURE22 */
- 1737, /* GL_TEXTURE23 */
- 1739, /* GL_TEXTURE24 */
- 1741, /* GL_TEXTURE25 */
- 1743, /* GL_TEXTURE26 */
- 1745, /* GL_TEXTURE27 */
- 1747, /* GL_TEXTURE28 */
- 1749, /* GL_TEXTURE29 */
- 1753, /* GL_TEXTURE30 */
- 1755, /* GL_TEXTURE31 */
- 18, /* GL_ACTIVE_TEXTURE */
- 145, /* GL_CLIENT_ACTIVE_TEXTURE */
- 1015, /* GL_MAX_TEXTURE_UNITS */
- 1929, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
- 1932, /* GL_TRANSPOSE_PROJECTION_MATRIX */
- 1934, /* GL_TRANSPOSE_TEXTURE_MATRIX */
- 1926, /* GL_TRANSPOSE_COLOR_MATRIX */
- 1688, /* GL_SUBTRACT */
- 998, /* GL_MAX_RENDERBUFFER_SIZE */
- 260, /* GL_COMPRESSED_ALPHA */
- 264, /* GL_COMPRESSED_LUMINANCE */
- 265, /* GL_COMPRESSED_LUMINANCE_ALPHA */
- 262, /* GL_COMPRESSED_INTENSITY */
- 268, /* GL_COMPRESSED_RGB */
- 269, /* GL_COMPRESSED_RGBA */
- 1816, /* GL_TEXTURE_COMPRESSION_HINT */
- 1893, /* GL_TEXTURE_RECTANGLE_ARB */
- 1788, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
- 1390, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
- 996, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
- 392, /* GL_DEPTH_STENCIL */
- 1959, /* GL_UNSIGNED_INT_24_8 */
- 1010, /* GL_MAX_TEXTURE_LOD_BIAS */
- 1882, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
- 1012, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
- 1854, /* GL_TEXTURE_FILTER_CONTROL */
- 1872, /* GL_TEXTURE_LOD_BIAS */
- 245, /* GL_COMBINE4 */
- 1004, /* GL_MAX_SHININESS_NV */
- 1005, /* GL_MAX_SPOT_EXPONENT_NV */
- 684, /* GL_INCR_WRAP */
- 358, /* GL_DECR_WRAP */
- 1067, /* GL_MODELVIEW1_ARB */
- 1125, /* GL_NORMAL_MAP */
- 1429, /* GL_REFLECTION_MAP */
- 1826, /* GL_TEXTURE_CUBE_MAP */
- 1785, /* GL_TEXTURE_BINDING_CUBE_MAP */
- 1838, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
- 1828, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
- 1841, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
- 1831, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
- 1844, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
- 1834, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
- 1388, /* GL_PROXY_TEXTURE_CUBE_MAP */
- 944, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
- 1103, /* GL_MULTISAMPLE_FILTER_HINT_NV */
- 1334, /* GL_PRIMITIVE_RESTART_NV */
- 1333, /* GL_PRIMITIVE_RESTART_INDEX_NV */
- 550, /* GL_FOG_DISTANCE_MODE_NV */
- 499, /* GL_EYE_RADIAL_NV */
- 498, /* GL_EYE_PLANE_ABSOLUTE_NV */
- 244, /* GL_COMBINE */
- 251, /* GL_COMBINE_RGB */
- 246, /* GL_COMBINE_ALPHA */
- 1518, /* GL_RGB_SCALE */
- 24, /* GL_ADD_SIGNED */
- 713, /* GL_INTERPOLATE */
- 284, /* GL_CONSTANT */
- 1329, /* GL_PRIMARY_COLOR */
- 1326, /* GL_PREVIOUS */
- 1594, /* GL_SOURCE0_RGB */
- 1600, /* GL_SOURCE1_RGB */
- 1606, /* GL_SOURCE2_RGB */
- 1610, /* GL_SOURCE3_RGB_NV */
- 1591, /* GL_SOURCE0_ALPHA */
- 1597, /* GL_SOURCE1_ALPHA */
- 1603, /* GL_SOURCE2_ALPHA */
- 1609, /* GL_SOURCE3_ALPHA_NV */
- 1165, /* GL_OPERAND0_RGB */
- 1171, /* GL_OPERAND1_RGB */
- 1177, /* GL_OPERAND2_RGB */
- 1181, /* GL_OPERAND3_RGB_NV */
- 1162, /* GL_OPERAND0_ALPHA */
- 1168, /* GL_OPERAND1_ALPHA */
- 1174, /* GL_OPERAND2_ALPHA */
- 1180, /* GL_OPERAND3_ALPHA_NV */
- 120, /* GL_BUFFER_OBJECT_APPLE */
- 1988, /* GL_VERTEX_ARRAY_BINDING */
- 1891, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
- 1892, /* GL_TEXTURE_RANGE_POINTER_APPLE */
- 2062, /* GL_YCBCR_422_APPLE */
- 1977, /* GL_UNSIGNED_SHORT_8_8_APPLE */
- 1979, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
- 1901, /* GL_TEXTURE_STORAGE_HINT_APPLE */
- 1679, /* GL_STORAGE_PRIVATE_APPLE */
- 1678, /* GL_STORAGE_CACHED_APPLE */
- 1680, /* GL_STORAGE_SHARED_APPLE */
- 1581, /* GL_SLICE_ACCUM_SUN */
- 1398, /* GL_QUAD_MESH_SUN */
- 1939, /* GL_TRIANGLE_MESH_SUN */
- 2027, /* GL_VERTEX_PROGRAM_ARB */
- 2038, /* GL_VERTEX_STATE_PROGRAM_NV */
- 2014, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
- 2020, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
- 2022, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
- 2024, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
- 349, /* GL_CURRENT_VERTEX_ATTRIB */
- 1347, /* GL_PROGRAM_LENGTH_ARB */
- 1362, /* GL_PROGRAM_STRING_ARB */
- 1090, /* GL_MODELVIEW_PROJECTION_NV */
- 677, /* GL_IDENTITY_NV */
- 729, /* GL_INVERSE_NV */
- 1931, /* GL_TRANSPOSE_NV */
- 730, /* GL_INVERSE_TRANSPOSE_NV */
- 982, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
- 981, /* GL_MAX_PROGRAM_MATRICES_ARB */
- 872, /* GL_MATRIX0_NV */
- 884, /* GL_MATRIX1_NV */
- 896, /* GL_MATRIX2_NV */
- 900, /* GL_MATRIX3_NV */
- 902, /* GL_MATRIX4_NV */
- 904, /* GL_MATRIX5_NV */
- 906, /* GL_MATRIX6_NV */
- 908, /* GL_MATRIX7_NV */
- 332, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
- 329, /* GL_CURRENT_MATRIX_ARB */
- 2030, /* GL_VERTEX_PROGRAM_POINT_SIZE */
- 2033, /* GL_VERTEX_PROGRAM_TWO_SIDE */
- 1359, /* GL_PROGRAM_PARAMETER_NV */
- 2018, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
- 1364, /* GL_PROGRAM_TARGET_NV */
- 1361, /* GL_PROGRAM_RESIDENT_NV */
- 1911, /* GL_TRACK_MATRIX_NV */
- 1912, /* GL_TRACK_MATRIX_TRANSFORM_NV */
- 2028, /* GL_VERTEX_PROGRAM_BINDING_NV */
- 1341, /* GL_PROGRAM_ERROR_POSITION_ARB */
- 373, /* GL_DEPTH_CLAMP */
- 1996, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
- 2003, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
- 2004, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
- 2005, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
- 2006, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
- 2007, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
- 2008, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
- 2009, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
- 2010, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
- 2011, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
- 1997, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
- 1998, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
- 1999, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
- 2000, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
- 2001, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
- 2002, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
- 820, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
- 827, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
- 828, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
- 829, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
- 830, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
- 831, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
- 832, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
- 833, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
- 834, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
- 835, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
- 821, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
- 822, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
- 823, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
- 824, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
- 825, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
- 826, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
- 847, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
- 854, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
- 855, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
- 856, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
- 857, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
- 858, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
- 859, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
- 1340, /* GL_PROGRAM_BINDING_ARB */
- 861, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
- 862, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
- 848, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
- 849, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
- 850, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
- 851, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
- 852, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
- 853, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
- 1814, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
- 1811, /* GL_TEXTURE_COMPRESSED */
- 1131, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
- 282, /* GL_COMPRESSED_TEXTURE_FORMATS */
- 1033, /* GL_MAX_VERTEX_UNITS_ARB */
- 22, /* GL_ACTIVE_VERTEX_UNITS_ARB */
- 2056, /* GL_WEIGHT_SUM_UNITY_ARB */
- 2026, /* GL_VERTEX_BLEND_ARB */
- 351, /* GL_CURRENT_WEIGHT_ARB */
- 2054, /* GL_WEIGHT_ARRAY_TYPE_ARB */
- 2052, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
- 2050, /* GL_WEIGHT_ARRAY_SIZE_ARB */
- 2048, /* GL_WEIGHT_ARRAY_POINTER_ARB */
- 2043, /* GL_WEIGHT_ARRAY_ARB */
- 407, /* GL_DOT3_RGB */
- 408, /* GL_DOT3_RGBA */
- 276, /* GL_COMPRESSED_RGB_FXT1_3DFX */
- 271, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
- 1098, /* GL_MULTISAMPLE_3DFX */
- 1540, /* GL_SAMPLE_BUFFERS_3DFX */
- 1531, /* GL_SAMPLES_3DFX */
- 1078, /* GL_MODELVIEW2_ARB */
- 1081, /* GL_MODELVIEW3_ARB */
- 1082, /* GL_MODELVIEW4_ARB */
- 1083, /* GL_MODELVIEW5_ARB */
- 1084, /* GL_MODELVIEW6_ARB */
- 1085, /* GL_MODELVIEW7_ARB */
- 1086, /* GL_MODELVIEW8_ARB */
- 1087, /* GL_MODELVIEW9_ARB */
- 1057, /* GL_MODELVIEW10_ARB */
- 1058, /* GL_MODELVIEW11_ARB */
- 1059, /* GL_MODELVIEW12_ARB */
- 1060, /* GL_MODELVIEW13_ARB */
- 1061, /* GL_MODELVIEW14_ARB */
- 1062, /* GL_MODELVIEW15_ARB */
- 1063, /* GL_MODELVIEW16_ARB */
- 1064, /* GL_MODELVIEW17_ARB */
- 1065, /* GL_MODELVIEW18_ARB */
- 1066, /* GL_MODELVIEW19_ARB */
- 1068, /* GL_MODELVIEW20_ARB */
- 1069, /* GL_MODELVIEW21_ARB */
- 1070, /* GL_MODELVIEW22_ARB */
- 1071, /* GL_MODELVIEW23_ARB */
- 1072, /* GL_MODELVIEW24_ARB */
- 1073, /* GL_MODELVIEW25_ARB */
- 1074, /* GL_MODELVIEW26_ARB */
- 1075, /* GL_MODELVIEW27_ARB */
- 1076, /* GL_MODELVIEW28_ARB */
- 1077, /* GL_MODELVIEW29_ARB */
- 1079, /* GL_MODELVIEW30_ARB */
- 1080, /* GL_MODELVIEW31_ARB */
- 412, /* GL_DOT3_RGB_EXT */
- 410, /* GL_DOT3_RGBA_EXT */
- 1051, /* GL_MIRROR_CLAMP_EXT */
- 1054, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
- 1093, /* GL_MODULATE_ADD_ATI */
- 1094, /* GL_MODULATE_SIGNED_ADD_ATI */
- 1095, /* GL_MODULATE_SUBTRACT_ATI */
- 2063, /* GL_YCBCR_MESA */
- 1189, /* GL_PACK_INVERT_MESA */
- 354, /* GL_DEBUG_OBJECT_MESA */
- 355, /* GL_DEBUG_PRINT_MESA */
- 353, /* GL_DEBUG_ASSERT_MESA */
- 122, /* GL_BUFFER_SIZE */
- 124, /* GL_BUFFER_USAGE */
- 128, /* GL_BUMP_ROT_MATRIX_ATI */
- 129, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */
- 127, /* GL_BUMP_NUM_TEX_UNITS_ATI */
- 131, /* GL_BUMP_TEX_UNITS_ATI */
- 472, /* GL_DUDV_ATI */
- 471, /* GL_DU8DV8_ATI */
- 126, /* GL_BUMP_ENVMAP_ATI */
- 130, /* GL_BUMP_TARGET_ATI */
- 1133, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
- 1338, /* GL_PROGRAM_BINARY_FORMATS_OES */
- 1643, /* GL_STENCIL_BACK_FUNC */
- 1641, /* GL_STENCIL_BACK_FAIL */
- 1645, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
- 1647, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
- 559, /* GL_FRAGMENT_PROGRAM_ARB */
- 1336, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
- 1367, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
- 1366, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
- 1350, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- 1356, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- 1355, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- 971, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
- 994, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
- 993, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
- 984, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- 990, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- 989, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- 947, /* GL_MAX_DRAW_BUFFERS */
- 416, /* GL_DRAW_BUFFER0 */
- 419, /* GL_DRAW_BUFFER1 */
- 440, /* GL_DRAW_BUFFER2 */
- 443, /* GL_DRAW_BUFFER3 */
- 446, /* GL_DRAW_BUFFER4 */
- 449, /* GL_DRAW_BUFFER5 */
- 452, /* GL_DRAW_BUFFER6 */
- 455, /* GL_DRAW_BUFFER7 */
- 458, /* GL_DRAW_BUFFER8 */
- 461, /* GL_DRAW_BUFFER9 */
- 420, /* GL_DRAW_BUFFER10 */
- 423, /* GL_DRAW_BUFFER11 */
- 426, /* GL_DRAW_BUFFER12 */
- 429, /* GL_DRAW_BUFFER13 */
- 432, /* GL_DRAW_BUFFER14 */
- 435, /* GL_DRAW_BUFFER15 */
- 85, /* GL_BLEND_EQUATION_ALPHA */
- 923, /* GL_MATRIX_PALETTE_ARB */
- 964, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
- 967, /* GL_MAX_PALETTE_MATRICES_ARB */
- 335, /* GL_CURRENT_PALETTE_MATRIX_ARB */
- 911, /* GL_MATRIX_INDEX_ARRAY_ARB */
- 330, /* GL_CURRENT_MATRIX_INDEX_ARB */
- 916, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
- 920, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
- 918, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
- 914, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
- 1849, /* GL_TEXTURE_DEPTH_SIZE */
- 400, /* GL_DEPTH_TEXTURE_MODE */
- 1806, /* GL_TEXTURE_COMPARE_MODE */
- 1804, /* GL_TEXTURE_COMPARE_FUNC */
- 255, /* GL_COMPARE_R_TO_TEXTURE */
- 1266, /* GL_POINT_SPRITE */
- 309, /* GL_COORD_REPLACE */
- 1271, /* GL_POINT_SPRITE_R_MODE_NV */
- 1402, /* GL_QUERY_COUNTER_BITS */
- 338, /* GL_CURRENT_QUERY */
- 1405, /* GL_QUERY_RESULT */
- 1407, /* GL_QUERY_RESULT_AVAILABLE */
- 1026, /* GL_MAX_VERTEX_ATTRIBS */
- 2016, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
- 398, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
- 397, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
- 1006, /* GL_MAX_TEXTURE_COORDS */
- 1008, /* GL_MAX_TEXTURE_IMAGE_UNITS */
- 1343, /* GL_PROGRAM_ERROR_STRING_ARB */
- 1345, /* GL_PROGRAM_FORMAT_ASCII_ARB */
- 1344, /* GL_PROGRAM_FORMAT_ARB */
- 1903, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
- 371, /* GL_DEPTH_BOUNDS_TEST_EXT */
- 370, /* GL_DEPTH_BOUNDS_EXT */
- 53, /* GL_ARRAY_BUFFER */
- 485, /* GL_ELEMENT_ARRAY_BUFFER */
- 54, /* GL_ARRAY_BUFFER_BINDING */
- 486, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
- 1990, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
- 1120, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
- 161, /* GL_COLOR_ARRAY_BUFFER_BINDING */
- 688, /* GL_INDEX_ARRAY_BUFFER_BINDING */
- 1819, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
- 481, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
- 1552, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
- 537, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
- 2044, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
- 2012, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
- 1346, /* GL_PROGRAM_INSTRUCTIONS_ARB */
- 977, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
- 1352, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- 986, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- 1365, /* GL_PROGRAM_TEMPORARIES_ARB */
- 992, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
- 1354, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
- 988, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
- 1358, /* GL_PROGRAM_PARAMETERS_ARB */
- 991, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
- 1353, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
- 987, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
- 1337, /* GL_PROGRAM_ATTRIBS_ARB */
- 972, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
- 1351, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
- 985, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
- 1335, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
- 970, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
- 1349, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- 983, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- 978, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
- 974, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
- 1368, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
- 1928, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
- 1419, /* GL_READ_ONLY */
- 2058, /* GL_WRITE_ONLY */
- 1421, /* GL_READ_WRITE */
- 110, /* GL_BUFFER_ACCESS */
- 114, /* GL_BUFFER_MAPPED */
- 117, /* GL_BUFFER_MAP_POINTER */
- 1910, /* GL_TIME_ELAPSED_EXT */
- 871, /* GL_MATRIX0_ARB */
- 883, /* GL_MATRIX1_ARB */
- 895, /* GL_MATRIX2_ARB */
- 899, /* GL_MATRIX3_ARB */
- 901, /* GL_MATRIX4_ARB */
- 903, /* GL_MATRIX5_ARB */
- 905, /* GL_MATRIX6_ARB */
- 907, /* GL_MATRIX7_ARB */
- 909, /* GL_MATRIX8_ARB */
- 910, /* GL_MATRIX9_ARB */
- 873, /* GL_MATRIX10_ARB */
- 874, /* GL_MATRIX11_ARB */
- 875, /* GL_MATRIX12_ARB */
- 876, /* GL_MATRIX13_ARB */
- 877, /* GL_MATRIX14_ARB */
- 878, /* GL_MATRIX15_ARB */
- 879, /* GL_MATRIX16_ARB */
- 880, /* GL_MATRIX17_ARB */
- 881, /* GL_MATRIX18_ARB */
- 882, /* GL_MATRIX19_ARB */
- 885, /* GL_MATRIX20_ARB */
- 886, /* GL_MATRIX21_ARB */
- 887, /* GL_MATRIX22_ARB */
- 888, /* GL_MATRIX23_ARB */
- 889, /* GL_MATRIX24_ARB */
- 890, /* GL_MATRIX25_ARB */
- 891, /* GL_MATRIX26_ARB */
- 892, /* GL_MATRIX27_ARB */
- 893, /* GL_MATRIX28_ARB */
- 894, /* GL_MATRIX29_ARB */
- 897, /* GL_MATRIX30_ARB */
- 898, /* GL_MATRIX31_ARB */
- 1683, /* GL_STREAM_DRAW */
- 1685, /* GL_STREAM_READ */
- 1681, /* GL_STREAM_COPY */
- 1633, /* GL_STATIC_DRAW */
- 1635, /* GL_STATIC_READ */
- 1631, /* GL_STATIC_COPY */
- 475, /* GL_DYNAMIC_DRAW */
- 477, /* GL_DYNAMIC_READ */
- 473, /* GL_DYNAMIC_COPY */
- 1229, /* GL_PIXEL_PACK_BUFFER */
- 1233, /* GL_PIXEL_UNPACK_BUFFER */
- 1230, /* GL_PIXEL_PACK_BUFFER_BINDING */
- 1234, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
- 362, /* GL_DEPTH24_STENCIL8 */
- 1899, /* GL_TEXTURE_STENCIL_SIZE */
- 1847, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
- 973, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
- 976, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
- 980, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
- 979, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
- 928, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
- 1674, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
- 17, /* GL_ACTIVE_STENCIL_FACE_EXT */
- 1052, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
- 1533, /* GL_SAMPLES_PASSED */
- 1253, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
- 1252, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
- 1251, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
- 1089, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
- 1371, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
- 1881, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
- 121, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */
- 113, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */
- 1433, /* GL_RELEASED_APPLE */
- 2041, /* GL_VOLATILE_APPLE */
- 1472, /* GL_RETAINED_APPLE */
- 1943, /* GL_UNDEFINED_APPLE */
- 1392, /* GL_PURGEABLE_APPLE */
- 560, /* GL_FRAGMENT_SHADER */
- 2036, /* GL_VERTEX_SHADER */
- 1357, /* GL_PROGRAM_OBJECT_ARB */
- 1568, /* GL_SHADER_OBJECT_ARB */
- 954, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
- 1030, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
- 1023, /* GL_MAX_VARYING_FLOATS */
- 1028, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
- 938, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
- 1149, /* GL_OBJECT_TYPE_ARB */
- 1570, /* GL_SHADER_TYPE */
- 525, /* GL_FLOAT_VEC2 */
- 527, /* GL_FLOAT_VEC3 */
- 529, /* GL_FLOAT_VEC4 */
- 717, /* GL_INT_VEC2 */
- 719, /* GL_INT_VEC3 */
- 721, /* GL_INT_VEC4 */
- 102, /* GL_BOOL */
- 104, /* GL_BOOL_VEC2 */
- 106, /* GL_BOOL_VEC3 */
- 108, /* GL_BOOL_VEC4 */
- 513, /* GL_FLOAT_MAT2 */
- 517, /* GL_FLOAT_MAT3 */
- 521, /* GL_FLOAT_MAT4 */
- 1523, /* GL_SAMPLER_1D */
- 1525, /* GL_SAMPLER_2D */
- 1527, /* GL_SAMPLER_3D */
- 1529, /* GL_SAMPLER_CUBE */
- 1524, /* GL_SAMPLER_1D_SHADOW */
- 1526, /* GL_SAMPLER_2D_SHADOW */
- 515, /* GL_FLOAT_MAT2x3 */
- 516, /* GL_FLOAT_MAT2x4 */
- 519, /* GL_FLOAT_MAT3x2 */
- 520, /* GL_FLOAT_MAT3x4 */
- 523, /* GL_FLOAT_MAT4x2 */
- 524, /* GL_FLOAT_MAT4x3 */
- 360, /* GL_DELETE_STATUS */
- 259, /* GL_COMPILE_STATUS */
- 776, /* GL_LINK_STATUS */
- 1984, /* GL_VALIDATE_STATUS */
- 700, /* GL_INFO_LOG_LENGTH */
- 56, /* GL_ATTACHED_SHADERS */
- 20, /* GL_ACTIVE_UNIFORMS */
- 21, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
- 1569, /* GL_SHADER_SOURCE_LENGTH */
+ 448, /* GL_DOUBLE */
+ 698, /* GL_HALF_FLOAT */
+ 544, /* GL_FIXED */
+ 162, /* GL_CLEAR */
+ 58, /* GL_AND */
+ 60, /* GL_AND_REVERSE */
+ 347, /* GL_COPY */
+ 59, /* GL_AND_INVERTED */
+ 1220, /* GL_NOOP */
+ 2288, /* GL_XOR */
+ 1287, /* GL_OR */
+ 1221, /* GL_NOR */
+ 526, /* GL_EQUIV */
+ 798, /* GL_INVERT */
+ 1290, /* GL_OR_REVERSE */
+ 348, /* GL_COPY_INVERTED */
+ 1289, /* GL_OR_INVERTED */
+ 1210, /* GL_NAND */
+ 1744, /* GL_SET */
+ 523, /* GL_EMISSION */
+ 1754, /* GL_SHININESS */
+ 57, /* GL_AMBIENT_AND_DIFFUSE */
+ 229, /* GL_COLOR_INDEXES */
+ 1159, /* GL_MODELVIEW */
+ 1478, /* GL_PROJECTION */
+ 1885, /* GL_TEXTURE */
+ 185, /* GL_COLOR */
+ 395, /* GL_DEPTH */
+ 1816, /* GL_STENCIL */
+ 228, /* GL_COLOR_INDEX */
+ 1837, /* GL_STENCIL_INDEX */
+ 411, /* GL_DEPTH_COMPONENT */
+ 1543, /* GL_RED */
+ 692, /* GL_GREEN */
+ 110, /* GL_BLUE */
+ 32, /* GL_ALPHA */
+ 1599, /* GL_RGB */
+ 1639, /* GL_RGBA */
+ 856, /* GL_LUMINANCE */
+ 883, /* GL_LUMINANCE_ALPHA */
+ 86, /* GL_BITMAP */
+ 1342, /* GL_POINT */
+ 820, /* GL_LINE */
+ 541, /* GL_FILL */
+ 1557, /* GL_RENDER */
+ 537, /* GL_FEEDBACK */
+ 1736, /* GL_SELECT */
+ 547, /* GL_FLAT */
+ 1765, /* GL_SMOOTH */
+ 799, /* GL_KEEP */
+ 1590, /* GL_REPLACE */
+ 727, /* GL_INCR */
+ 391, /* GL_DECR */
+ 2210, /* GL_VENDOR */
+ 1587, /* GL_RENDERER */
+ 2211, /* GL_VERSION */
+ 530, /* GL_EXTENSIONS */
+ 1686, /* GL_S */
+ 1876, /* GL_T */
+ 1526, /* GL_R */
+ 1505, /* GL_Q */
+ 1196, /* GL_MODULATE */
+ 390, /* GL_DECAL */
+ 2042, /* GL_TEXTURE_ENV_MODE */
+ 2041, /* GL_TEXTURE_ENV_COLOR */
+ 2040, /* GL_TEXTURE_ENV */
+ 531, /* GL_EYE_LINEAR */
+ 1248, /* GL_OBJECT_LINEAR */
+ 1791, /* GL_SPHERE_MAP */
+ 2045, /* GL_TEXTURE_GEN_MODE */
+ 1250, /* GL_OBJECT_PLANE */
+ 532, /* GL_EYE_PLANE */
+ 1211, /* GL_NEAREST */
+ 821, /* GL_LINEAR */
+ 1215, /* GL_NEAREST_MIPMAP_NEAREST */
+ 826, /* GL_LINEAR_MIPMAP_NEAREST */
+ 1214, /* GL_NEAREST_MIPMAP_LINEAR */
+ 825, /* GL_LINEAR_MIPMAP_LINEAR */
+ 2068, /* GL_TEXTURE_MAG_FILTER */
+ 2077, /* GL_TEXTURE_MIN_FILTER */
+ 2098, /* GL_TEXTURE_WRAP_S */
+ 2099, /* GL_TEXTURE_WRAP_T */
+ 155, /* GL_CLAMP */
+ 1589, /* GL_REPEAT */
+ 1386, /* GL_POLYGON_OFFSET_UNITS */
+ 1385, /* GL_POLYGON_OFFSET_POINT */
+ 1384, /* GL_POLYGON_OFFSET_LINE */
+ 1529, /* GL_R3_G3_B2 */
+ 2207, /* GL_V2F */
+ 2208, /* GL_V3F */
+ 152, /* GL_C4UB_V2F */
+ 153, /* GL_C4UB_V3F */
+ 150, /* GL_C3F_V3F */
+ 1208, /* GL_N3F_V3F */
+ 151, /* GL_C4F_N3F_V3F */
+ 1881, /* GL_T2F_V3F */
+ 1883, /* GL_T4F_V4F */
+ 1879, /* GL_T2F_C4UB_V3F */
+ 1877, /* GL_T2F_C3F_V3F */
+ 1880, /* GL_T2F_N3F_V3F */
+ 1878, /* GL_T2F_C4F_N3F_V3F */
+ 1882, /* GL_T4F_C4F_N3F_V4F */
+ 169, /* GL_CLIP_DISTANCE0 */
+ 170, /* GL_CLIP_DISTANCE1 */
+ 171, /* GL_CLIP_DISTANCE2 */
+ 172, /* GL_CLIP_DISTANCE3 */
+ 173, /* GL_CLIP_DISTANCE4 */
+ 174, /* GL_CLIP_DISTANCE5 */
+ 175, /* GL_CLIP_DISTANCE6 */
+ 176, /* GL_CLIP_DISTANCE7 */
+ 805, /* GL_LIGHT0 */
+ 806, /* GL_LIGHT1 */
+ 807, /* GL_LIGHT2 */
+ 808, /* GL_LIGHT3 */
+ 809, /* GL_LIGHT4 */
+ 810, /* GL_LIGHT5 */
+ 811, /* GL_LIGHT6 */
+ 812, /* GL_LIGHT7 */
+ 702, /* GL_HINT_BIT */
+ 319, /* GL_CONSTANT_COLOR */
+ 1261, /* GL_ONE_MINUS_CONSTANT_COLOR */
+ 314, /* GL_CONSTANT_ALPHA */
+ 1259, /* GL_ONE_MINUS_CONSTANT_ALPHA */
+ 89, /* GL_BLEND_COLOR */
+ 669, /* GL_FUNC_ADD */
+ 1140, /* GL_MIN */
+ 1009, /* GL_MAX */
+ 96, /* GL_BLEND_EQUATION */
+ 675, /* GL_FUNC_SUBTRACT */
+ 672, /* GL_FUNC_REVERSE_SUBTRACT */
+ 327, /* GL_CONVOLUTION_1D */
+ 328, /* GL_CONVOLUTION_2D */
+ 1739, /* GL_SEPARABLE_2D */
+ 331, /* GL_CONVOLUTION_BORDER_MODE */
+ 335, /* GL_CONVOLUTION_FILTER_SCALE */
+ 333, /* GL_CONVOLUTION_FILTER_BIAS */
+ 1544, /* GL_REDUCE */
+ 337, /* GL_CONVOLUTION_FORMAT */
+ 341, /* GL_CONVOLUTION_WIDTH */
+ 339, /* GL_CONVOLUTION_HEIGHT */
+ 1028, /* GL_MAX_CONVOLUTION_WIDTH */
+ 1026, /* GL_MAX_CONVOLUTION_HEIGHT */
+ 1425, /* GL_POST_CONVOLUTION_RED_SCALE */
+ 1421, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+ 1416, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+ 1412, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+ 1423, /* GL_POST_CONVOLUTION_RED_BIAS */
+ 1419, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+ 1414, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+ 1410, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+ 703, /* GL_HISTOGRAM */
+ 1485, /* GL_PROXY_HISTOGRAM */
+ 719, /* GL_HISTOGRAM_WIDTH */
+ 709, /* GL_HISTOGRAM_FORMAT */
+ 715, /* GL_HISTOGRAM_RED_SIZE */
+ 711, /* GL_HISTOGRAM_GREEN_SIZE */
+ 706, /* GL_HISTOGRAM_BLUE_SIZE */
+ 704, /* GL_HISTOGRAM_ALPHA_SIZE */
+ 713, /* GL_HISTOGRAM_LUMINANCE_SIZE */
+ 717, /* GL_HISTOGRAM_SINK */
+ 1141, /* GL_MINMAX */
+ 1143, /* GL_MINMAX_FORMAT */
+ 1145, /* GL_MINMAX_SINK */
+ 1884, /* GL_TABLE_TOO_LARGE_EXT */
+ 2156, /* GL_UNSIGNED_BYTE_3_3_2 */
+ 2196, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+ 2199, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+ 2168, /* GL_UNSIGNED_INT_8_8_8_8 */
+ 2159, /* GL_UNSIGNED_INT_10_10_10_2 */
+ 1383, /* GL_POLYGON_OFFSET_FILL */
+ 1382, /* GL_POLYGON_OFFSET_FACTOR */
+ 1381, /* GL_POLYGON_OFFSET_BIAS */
+ 1593, /* GL_RESCALE_NORMAL */
+ 41, /* GL_ALPHA4 */
+ 43, /* GL_ALPHA8 */
+ 33, /* GL_ALPHA12 */
+ 35, /* GL_ALPHA16 */
+ 871, /* GL_LUMINANCE4 */
+ 877, /* GL_LUMINANCE8 */
+ 857, /* GL_LUMINANCE12 */
+ 863, /* GL_LUMINANCE16 */
+ 872, /* GL_LUMINANCE4_ALPHA4 */
+ 875, /* GL_LUMINANCE6_ALPHA2 */
+ 880, /* GL_LUMINANCE8_ALPHA8 */
+ 860, /* GL_LUMINANCE12_ALPHA4 */
+ 858, /* GL_LUMINANCE12_ALPHA12 */
+ 866, /* GL_LUMINANCE16_ALPHA16 */
+ 746, /* GL_INTENSITY */
+ 755, /* GL_INTENSITY4 */
+ 757, /* GL_INTENSITY8 */
+ 747, /* GL_INTENSITY12 */
+ 749, /* GL_INTENSITY16 */
+ 1614, /* GL_RGB2_EXT */
+ 1620, /* GL_RGB4 */
+ 1623, /* GL_RGB5 */
+ 1630, /* GL_RGB8 */
+ 1600, /* GL_RGB10 */
+ 1604, /* GL_RGB12 */
+ 1606, /* GL_RGB16 */
+ 1650, /* GL_RGBA2 */
+ 1657, /* GL_RGBA4 */
+ 1626, /* GL_RGB5_A1 */
+ 1662, /* GL_RGBA8 */
+ 1601, /* GL_RGB10_A2 */
+ 1640, /* GL_RGBA12 */
+ 1642, /* GL_RGBA16 */
+ 2085, /* GL_TEXTURE_RED_SIZE */
+ 2053, /* GL_TEXTURE_GREEN_SIZE */
+ 1977, /* GL_TEXTURE_BLUE_SIZE */
+ 1958, /* GL_TEXTURE_ALPHA_SIZE */
+ 2066, /* GL_TEXTURE_LUMINANCE_SIZE */
+ 2057, /* GL_TEXTURE_INTENSITY_SIZE */
+ 1591, /* GL_REPLACE_EXT */
+ 1489, /* GL_PROXY_TEXTURE_1D */
+ 1493, /* GL_PROXY_TEXTURE_2D */
+ 2093, /* GL_TEXTURE_TOO_LARGE_EXT */
+ 2079, /* GL_TEXTURE_PRIORITY */
+ 2087, /* GL_TEXTURE_RESIDENT */
+ 1961, /* GL_TEXTURE_BINDING_1D */
+ 1964, /* GL_TEXTURE_BINDING_2D */
+ 1967, /* GL_TEXTURE_BINDING_3D */
+ 1297, /* GL_PACK_SKIP_IMAGES */
+ 1293, /* GL_PACK_IMAGE_HEIGHT */
+ 2149, /* GL_UNPACK_SKIP_IMAGES */
+ 2146, /* GL_UNPACK_IMAGE_HEIGHT */
+ 1956, /* GL_TEXTURE_3D */
+ 1497, /* GL_PROXY_TEXTURE_3D */
+ 2037, /* GL_TEXTURE_DEPTH */
+ 2096, /* GL_TEXTURE_WRAP_R */
+ 1010, /* GL_MAX_3D_TEXTURE_SIZE */
+ 2212, /* GL_VERTEX_ARRAY */
+ 1223, /* GL_NORMAL_ARRAY */
+ 186, /* GL_COLOR_ARRAY */
+ 731, /* GL_INDEX_ARRAY */
+ 2007, /* GL_TEXTURE_COORD_ARRAY */
+ 515, /* GL_EDGE_FLAG_ARRAY */
+ 2218, /* GL_VERTEX_ARRAY_SIZE */
+ 2220, /* GL_VERTEX_ARRAY_TYPE */
+ 2219, /* GL_VERTEX_ARRAY_STRIDE */
+ 1228, /* GL_NORMAL_ARRAY_TYPE */
+ 1227, /* GL_NORMAL_ARRAY_STRIDE */
+ 190, /* GL_COLOR_ARRAY_SIZE */
+ 192, /* GL_COLOR_ARRAY_TYPE */
+ 191, /* GL_COLOR_ARRAY_STRIDE */
+ 736, /* GL_INDEX_ARRAY_TYPE */
+ 735, /* GL_INDEX_ARRAY_STRIDE */
+ 2011, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+ 2013, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+ 2012, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+ 519, /* GL_EDGE_FLAG_ARRAY_STRIDE */
+ 2217, /* GL_VERTEX_ARRAY_POINTER */
+ 1226, /* GL_NORMAL_ARRAY_POINTER */
+ 189, /* GL_COLOR_ARRAY_POINTER */
+ 734, /* GL_INDEX_ARRAY_POINTER */
+ 2010, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+ 518, /* GL_EDGE_FLAG_ARRAY_POINTER */
+ 1201, /* GL_MULTISAMPLE */
+ 1713, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+ 1715, /* GL_SAMPLE_ALPHA_TO_ONE */
+ 1720, /* GL_SAMPLE_COVERAGE */
+ 1717, /* GL_SAMPLE_BUFFERS */
+ 1708, /* GL_SAMPLES */
+ 1724, /* GL_SAMPLE_COVERAGE_VALUE */
+ 1722, /* GL_SAMPLE_COVERAGE_INVERT */
+ 234, /* GL_COLOR_MATRIX */
+ 236, /* GL_COLOR_MATRIX_STACK_DEPTH */
+ 1022, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
+ 1408, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+ 1404, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+ 1399, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+ 1395, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+ 1406, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+ 1402, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+ 1397, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+ 1393, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+ 1990, /* GL_TEXTURE_COLOR_TABLE_SGI */
+ 1498, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+ 1992, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+ 94, /* GL_BLEND_DST_RGB */
+ 108, /* GL_BLEND_SRC_RGB */
+ 92, /* GL_BLEND_DST_ALPHA */
+ 106, /* GL_BLEND_SRC_ALPHA */
+ 240, /* GL_COLOR_TABLE */
+ 1418, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+ 1401, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+ 1484, /* GL_PROXY_COLOR_TABLE */
+ 1488, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+ 1487, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+ 264, /* GL_COLOR_TABLE_SCALE */
+ 244, /* GL_COLOR_TABLE_BIAS */
+ 249, /* GL_COLOR_TABLE_FORMAT */
+ 266, /* GL_COLOR_TABLE_WIDTH */
+ 261, /* GL_COLOR_TABLE_RED_SIZE */
+ 252, /* GL_COLOR_TABLE_GREEN_SIZE */
+ 246, /* GL_COLOR_TABLE_BLUE_SIZE */
+ 241, /* GL_COLOR_TABLE_ALPHA_SIZE */
+ 258, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
+ 255, /* GL_COLOR_TABLE_INTENSITY_SIZE */
+ 79, /* GL_BGR */
+ 80, /* GL_BGRA */
+ 1037, /* GL_MAX_ELEMENTS_VERTICES */
+ 1036, /* GL_MAX_ELEMENTS_INDICES */
+ 2056, /* GL_TEXTURE_INDEX_SIZE_EXT */
+ 183, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
+ 1364, /* GL_POINT_SIZE_MIN */
+ 1360, /* GL_POINT_SIZE_MAX */
+ 1349, /* GL_POINT_FADE_THRESHOLD_SIZE */
+ 1345, /* GL_POINT_DISTANCE_ATTENUATION */
+ 157, /* GL_CLAMP_TO_BORDER */
+ 160, /* GL_CLAMP_TO_EDGE */
+ 2078, /* GL_TEXTURE_MIN_LOD */
+ 2076, /* GL_TEXTURE_MAX_LOD */
+ 1960, /* GL_TEXTURE_BASE_LEVEL */
+ 2075, /* GL_TEXTURE_MAX_LEVEL */
+ 722, /* GL_IGNORE_BORDER_HP */
+ 318, /* GL_CONSTANT_BORDER_HP */
+ 1592, /* GL_REPLICATE_BORDER_HP */
+ 329, /* GL_CONVOLUTION_BORDER_COLOR */
+ 1256, /* GL_OCCLUSION_TEST_HP */
+ 1257, /* GL_OCCLUSION_TEST_RESULT_HP */
+ 823, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
+ 1984, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+ 1986, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+ 1988, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+ 1989, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ 1987, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+ 1985, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+ 1016, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
+ 1017, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ 1428, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+ 1430, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+ 1427, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+ 1429, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+ 2064, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+ 2065, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+ 2063, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+ 678, /* GL_GENERATE_MIPMAP */
+ 679, /* GL_GENERATE_MIPMAP_HINT */
+ 591, /* GL_FOG_OFFSET_SGIX */
+ 592, /* GL_FOG_OFFSET_VALUE_SGIX */
+ 1998, /* GL_TEXTURE_COMPARE_SGIX */
+ 1997, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+ 2060, /* GL_TEXTURE_LEQUAL_R_SGIX */
+ 2052, /* GL_TEXTURE_GEQUAL_R_SGIX */
+ 412, /* GL_DEPTH_COMPONENT16 */
+ 416, /* GL_DEPTH_COMPONENT24 */
+ 420, /* GL_DEPTH_COMPONENT32 */
+ 354, /* GL_CULL_VERTEX_EXT */
+ 356, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
+ 355, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
+ 2284, /* GL_WRAP_BORDER_SUN */
+ 1991, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+ 816, /* GL_LIGHT_MODEL_COLOR_CONTROL */
+ 1758, /* GL_SINGLE_COLOR */
+ 1742, /* GL_SEPARATE_SPECULAR_COLOR */
+ 1753, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+ 603, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
+ 604, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
+ 615, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
+ 606, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
+ 602, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
+ 601, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
+ 605, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
+ 616, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
+ 633, /* GL_FRAMEBUFFER_DEFAULT */
+ 660, /* GL_FRAMEBUFFER_UNDEFINED */
+ 428, /* GL_DEPTH_STENCIL_ATTACHMENT */
+ 892, /* GL_MAJOR_VERSION */
+ 1147, /* GL_MINOR_VERSION */
+ 1237, /* GL_NUM_EXTENSIONS */
+ 324, /* GL_CONTEXT_FLAGS */
+ 730, /* GL_INDEX */
+ 406, /* GL_DEPTH_BUFFER */
+ 1832, /* GL_STENCIL_BUFFER */
+ 295, /* GL_COMPRESSED_RED */
+ 296, /* GL_COMPRESSED_RG */
+ 2155, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+ 2200, /* GL_UNSIGNED_SHORT_5_6_5 */
+ 2201, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+ 2197, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+ 2194, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+ 2169, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+ 2165, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+ 2073, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+ 2074, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+ 2072, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+ 1151, /* GL_MIRRORED_REPEAT */
+ 1679, /* GL_RGB_S3TC */
+ 1622, /* GL_RGB4_S3TC */
+ 1675, /* GL_RGBA_S3TC */
+ 1661, /* GL_RGBA4_S3TC */
+ 1670, /* GL_RGBA_DXT5_S3TC */
+ 1658, /* GL_RGBA4_DXT5_S3TC */
+ 306, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
+ 301, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
+ 302, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
+ 303, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
+ 1213, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
+ 1212, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
+ 824, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
+ 578, /* GL_FOG_COORDINATE_SOURCE */
+ 570, /* GL_FOG_COORD */
+ 594, /* GL_FRAGMENT_DEPTH */
+ 360, /* GL_CURRENT_FOG_COORD */
+ 577, /* GL_FOG_COORDINATE_ARRAY_TYPE */
+ 576, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
+ 575, /* GL_FOG_COORDINATE_ARRAY_POINTER */
+ 572, /* GL_FOG_COORDINATE_ARRAY */
+ 238, /* GL_COLOR_SUM */
+ 381, /* GL_CURRENT_SECONDARY_COLOR */
+ 1733, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+ 1735, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+ 1734, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+ 1732, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+ 1729, /* GL_SECONDARY_COLOR_ARRAY */
+ 379, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
+ 29, /* GL_ALIASED_POINT_SIZE_RANGE */
+ 28, /* GL_ALIASED_LINE_WIDTH_RANGE */
+ 1886, /* GL_TEXTURE0 */
+ 1888, /* GL_TEXTURE1 */
+ 1910, /* GL_TEXTURE2 */
+ 1932, /* GL_TEXTURE3 */
+ 1938, /* GL_TEXTURE4 */
+ 1940, /* GL_TEXTURE5 */
+ 1942, /* GL_TEXTURE6 */
+ 1944, /* GL_TEXTURE7 */
+ 1946, /* GL_TEXTURE8 */
+ 1948, /* GL_TEXTURE9 */
+ 1889, /* GL_TEXTURE10 */
+ 1891, /* GL_TEXTURE11 */
+ 1893, /* GL_TEXTURE12 */
+ 1895, /* GL_TEXTURE13 */
+ 1897, /* GL_TEXTURE14 */
+ 1899, /* GL_TEXTURE15 */
+ 1901, /* GL_TEXTURE16 */
+ 1903, /* GL_TEXTURE17 */
+ 1905, /* GL_TEXTURE18 */
+ 1907, /* GL_TEXTURE19 */
+ 1911, /* GL_TEXTURE20 */
+ 1913, /* GL_TEXTURE21 */
+ 1915, /* GL_TEXTURE22 */
+ 1917, /* GL_TEXTURE23 */
+ 1919, /* GL_TEXTURE24 */
+ 1921, /* GL_TEXTURE25 */
+ 1923, /* GL_TEXTURE26 */
+ 1925, /* GL_TEXTURE27 */
+ 1927, /* GL_TEXTURE28 */
+ 1929, /* GL_TEXTURE29 */
+ 1933, /* GL_TEXTURE30 */
+ 1935, /* GL_TEXTURE31 */
+ 19, /* GL_ACTIVE_TEXTURE */
+ 163, /* GL_CLIENT_ACTIVE_TEXTURE */
+ 1112, /* GL_MAX_TEXTURE_UNITS */
+ 2128, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+ 2131, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+ 2133, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+ 2125, /* GL_TRANSPOSE_COLOR_MATRIX */
+ 1868, /* GL_SUBTRACT */
+ 1094, /* GL_MAX_RENDERBUFFER_SIZE */
+ 287, /* GL_COMPRESSED_ALPHA */
+ 291, /* GL_COMPRESSED_LUMINANCE */
+ 292, /* GL_COMPRESSED_LUMINANCE_ALPHA */
+ 289, /* GL_COMPRESSED_INTENSITY */
+ 297, /* GL_COMPRESSED_RGB */
+ 298, /* GL_COMPRESSED_RGBA */
+ 2005, /* GL_TEXTURE_COMPRESSION_HINT */
+ 2082, /* GL_TEXTURE_RECTANGLE */
+ 1973, /* GL_TEXTURE_BINDING_RECTANGLE */
+ 1501, /* GL_PROXY_TEXTURE_RECTANGLE */
+ 1091, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */
+ 427, /* GL_DEPTH_STENCIL */
+ 2161, /* GL_UNSIGNED_INT_24_8 */
+ 1107, /* GL_MAX_TEXTURE_LOD_BIAS */
+ 2071, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+ 1109, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
+ 2043, /* GL_TEXTURE_FILTER_CONTROL */
+ 2061, /* GL_TEXTURE_LOD_BIAS */
+ 271, /* GL_COMBINE4 */
+ 1100, /* GL_MAX_SHININESS_NV */
+ 1101, /* GL_MAX_SPOT_EXPONENT_NV */
+ 728, /* GL_INCR_WRAP */
+ 392, /* GL_DECR_WRAP */
+ 1171, /* GL_MODELVIEW1_ARB */
+ 1229, /* GL_NORMAL_MAP */
+ 1552, /* GL_REFLECTION_MAP */
+ 2015, /* GL_TEXTURE_CUBE_MAP */
+ 1970, /* GL_TEXTURE_BINDING_CUBE_MAP */
+ 2027, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+ 2017, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+ 2030, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+ 2020, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+ 2033, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+ 2023, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+ 1499, /* GL_PROXY_TEXTURE_CUBE_MAP */
+ 1030, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
+ 1207, /* GL_MULTISAMPLE_FILTER_HINT_NV */
+ 1442, /* GL_PRIMITIVE_RESTART_NV */
+ 1441, /* GL_PRIMITIVE_RESTART_INDEX_NV */
+ 586, /* GL_FOG_DISTANCE_MODE_NV */
+ 534, /* GL_EYE_RADIAL_NV */
+ 533, /* GL_EYE_PLANE_ABSOLUTE_NV */
+ 270, /* GL_COMBINE */
+ 277, /* GL_COMBINE_RGB */
+ 272, /* GL_COMBINE_ALPHA */
+ 1680, /* GL_RGB_SCALE */
+ 25, /* GL_ADD_SIGNED */
+ 764, /* GL_INTERPOLATE */
+ 313, /* GL_CONSTANT */
+ 1434, /* GL_PRIMARY_COLOR */
+ 1431, /* GL_PREVIOUS */
+ 1773, /* GL_SOURCE0_RGB */
+ 1779, /* GL_SOURCE1_RGB */
+ 1785, /* GL_SOURCE2_RGB */
+ 1789, /* GL_SOURCE3_RGB_NV */
+ 1770, /* GL_SOURCE0_ALPHA */
+ 1776, /* GL_SOURCE1_ALPHA */
+ 1782, /* GL_SOURCE2_ALPHA */
+ 1788, /* GL_SOURCE3_ALPHA_NV */
+ 1270, /* GL_OPERAND0_RGB */
+ 1276, /* GL_OPERAND1_RGB */
+ 1282, /* GL_OPERAND2_RGB */
+ 1286, /* GL_OPERAND3_RGB_NV */
+ 1267, /* GL_OPERAND0_ALPHA */
+ 1273, /* GL_OPERAND1_ALPHA */
+ 1279, /* GL_OPERAND2_ALPHA */
+ 1285, /* GL_OPERAND3_ALPHA_NV */
+ 137, /* GL_BUFFER_OBJECT_APPLE */
+ 2213, /* GL_VERTEX_ARRAY_BINDING */
+ 2080, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
+ 2081, /* GL_TEXTURE_RANGE_POINTER_APPLE */
+ 2289, /* GL_YCBCR_422_APPLE */
+ 2202, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+ 2204, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+ 2092, /* GL_TEXTURE_STORAGE_HINT_APPLE */
+ 1859, /* GL_STORAGE_PRIVATE_APPLE */
+ 1858, /* GL_STORAGE_CACHED_APPLE */
+ 1860, /* GL_STORAGE_SHARED_APPLE */
+ 1760, /* GL_SLICE_ACCUM_SUN */
+ 1510, /* GL_QUAD_MESH_SUN */
+ 2139, /* GL_TRIANGLE_MESH_SUN */
+ 2254, /* GL_VERTEX_PROGRAM_ARB */
+ 2265, /* GL_VERTEX_STATE_PROGRAM_NV */
+ 2239, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+ 2247, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+ 2249, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+ 2251, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+ 383, /* GL_CURRENT_VERTEX_ATTRIB */
+ 1455, /* GL_PROGRAM_LENGTH_ARB */
+ 1471, /* GL_PROGRAM_STRING_ARB */
+ 1194, /* GL_MODELVIEW_PROJECTION_NV */
+ 721, /* GL_IDENTITY_NV */
+ 796, /* GL_INVERSE_NV */
+ 2130, /* GL_TRANSPOSE_NV */
+ 797, /* GL_INVERSE_TRANSPOSE_NV */
+ 1075, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
+ 1074, /* GL_MAX_PROGRAM_MATRICES_ARB */
+ 956, /* GL_MATRIX0_NV */
+ 968, /* GL_MATRIX1_NV */
+ 980, /* GL_MATRIX2_NV */
+ 984, /* GL_MATRIX3_NV */
+ 986, /* GL_MATRIX4_NV */
+ 988, /* GL_MATRIX5_NV */
+ 990, /* GL_MATRIX6_NV */
+ 992, /* GL_MATRIX7_NV */
+ 366, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
+ 363, /* GL_CURRENT_MATRIX_ARB */
+ 1468, /* GL_PROGRAM_POINT_SIZE */
+ 2260, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+ 1467, /* GL_PROGRAM_PARAMETER_NV */
+ 2245, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+ 1473, /* GL_PROGRAM_TARGET_NV */
+ 1470, /* GL_PROGRAM_RESIDENT_NV */
+ 2102, /* GL_TRACK_MATRIX_NV */
+ 2103, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+ 2255, /* GL_VERTEX_PROGRAM_BINDING_NV */
+ 1449, /* GL_PROGRAM_ERROR_POSITION_ARB */
+ 408, /* GL_DEPTH_CLAMP */
+ 2221, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+ 2228, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+ 2229, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+ 2230, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+ 2231, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+ 2232, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+ 2233, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+ 2234, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+ 2235, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+ 2236, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+ 2222, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+ 2223, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+ 2224, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+ 2225, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+ 2226, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+ 2227, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+ 904, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
+ 911, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
+ 912, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
+ 913, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
+ 914, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
+ 915, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
+ 916, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
+ 917, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
+ 918, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
+ 919, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
+ 905, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
+ 906, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
+ 907, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
+ 908, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
+ 909, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
+ 910, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
+ 931, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
+ 938, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
+ 939, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
+ 940, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
+ 941, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
+ 942, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
+ 943, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
+ 1448, /* GL_PROGRAM_BINDING_ARB */
+ 945, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
+ 946, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
+ 932, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
+ 933, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
+ 934, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
+ 935, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
+ 936, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
+ 937, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
+ 2003, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+ 2000, /* GL_TEXTURE_COMPRESSED */
+ 1235, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
+ 311, /* GL_COMPRESSED_TEXTURE_FORMATS */
+ 1134, /* GL_MAX_VERTEX_UNITS_ARB */
+ 23, /* GL_ACTIVE_VERTEX_UNITS_ARB */
+ 2283, /* GL_WEIGHT_SUM_UNITY_ARB */
+ 2253, /* GL_VERTEX_BLEND_ARB */
+ 385, /* GL_CURRENT_WEIGHT_ARB */
+ 2281, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+ 2279, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+ 2277, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+ 2275, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+ 2270, /* GL_WEIGHT_ARRAY_ARB */
+ 442, /* GL_DOT3_RGB */
+ 443, /* GL_DOT3_RGBA */
+ 305, /* GL_COMPRESSED_RGB_FXT1_3DFX */
+ 300, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
+ 1202, /* GL_MULTISAMPLE_3DFX */
+ 1718, /* GL_SAMPLE_BUFFERS_3DFX */
+ 1709, /* GL_SAMPLES_3DFX */
+ 1182, /* GL_MODELVIEW2_ARB */
+ 1185, /* GL_MODELVIEW3_ARB */
+ 1186, /* GL_MODELVIEW4_ARB */
+ 1187, /* GL_MODELVIEW5_ARB */
+ 1188, /* GL_MODELVIEW6_ARB */
+ 1189, /* GL_MODELVIEW7_ARB */
+ 1190, /* GL_MODELVIEW8_ARB */
+ 1191, /* GL_MODELVIEW9_ARB */
+ 1161, /* GL_MODELVIEW10_ARB */
+ 1162, /* GL_MODELVIEW11_ARB */
+ 1163, /* GL_MODELVIEW12_ARB */
+ 1164, /* GL_MODELVIEW13_ARB */
+ 1165, /* GL_MODELVIEW14_ARB */
+ 1166, /* GL_MODELVIEW15_ARB */
+ 1167, /* GL_MODELVIEW16_ARB */
+ 1168, /* GL_MODELVIEW17_ARB */
+ 1169, /* GL_MODELVIEW18_ARB */
+ 1170, /* GL_MODELVIEW19_ARB */
+ 1172, /* GL_MODELVIEW20_ARB */
+ 1173, /* GL_MODELVIEW21_ARB */
+ 1174, /* GL_MODELVIEW22_ARB */
+ 1175, /* GL_MODELVIEW23_ARB */
+ 1176, /* GL_MODELVIEW24_ARB */
+ 1177, /* GL_MODELVIEW25_ARB */
+ 1178, /* GL_MODELVIEW26_ARB */
+ 1179, /* GL_MODELVIEW27_ARB */
+ 1180, /* GL_MODELVIEW28_ARB */
+ 1181, /* GL_MODELVIEW29_ARB */
+ 1183, /* GL_MODELVIEW30_ARB */
+ 1184, /* GL_MODELVIEW31_ARB */
+ 447, /* GL_DOT3_RGB_EXT */
+ 445, /* GL_DOT3_RGBA_EXT */
+ 1155, /* GL_MIRROR_CLAMP_EXT */
+ 1158, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
+ 1197, /* GL_MODULATE_ADD_ATI */
+ 1198, /* GL_MODULATE_SIGNED_ADD_ATI */
+ 1199, /* GL_MODULATE_SUBTRACT_ATI */
+ 2290, /* GL_YCBCR_MESA */
+ 1294, /* GL_PACK_INVERT_MESA */
+ 388, /* GL_DEBUG_OBJECT_MESA */
+ 389, /* GL_DEBUG_PRINT_MESA */
+ 387, /* GL_DEBUG_ASSERT_MESA */
+ 139, /* GL_BUFFER_SIZE */
+ 141, /* GL_BUFFER_USAGE */
+ 145, /* GL_BUMP_ROT_MATRIX_ATI */
+ 146, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */
+ 144, /* GL_BUMP_NUM_TEX_UNITS_ATI */
+ 148, /* GL_BUMP_TEX_UNITS_ATI */
+ 507, /* GL_DUDV_ATI */
+ 506, /* GL_DU8DV8_ATI */
+ 143, /* GL_BUMP_ENVMAP_ATI */
+ 147, /* GL_BUMP_TARGET_ATI */
+ 1238, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
+ 1446, /* GL_PROGRAM_BINARY_FORMATS_OES */
+ 1822, /* GL_STENCIL_BACK_FUNC */
+ 1820, /* GL_STENCIL_BACK_FAIL */
+ 1824, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
+ 1826, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
+ 595, /* GL_FRAGMENT_PROGRAM_ARB */
+ 1444, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ 1476, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ 1475, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+ 1458, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ 1464, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ 1463, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ 1064, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ 1089, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ 1088, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
+ 1077, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ 1083, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ 1082, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ 1652, /* GL_RGBA32F */
+ 1615, /* GL_RGB32F */
+ 1643, /* GL_RGBA16F */
+ 1607, /* GL_RGB16F */
+ 1033, /* GL_MAX_DRAW_BUFFERS */
+ 451, /* GL_DRAW_BUFFER0 */
+ 454, /* GL_DRAW_BUFFER1 */
+ 475, /* GL_DRAW_BUFFER2 */
+ 478, /* GL_DRAW_BUFFER3 */
+ 481, /* GL_DRAW_BUFFER4 */
+ 484, /* GL_DRAW_BUFFER5 */
+ 487, /* GL_DRAW_BUFFER6 */
+ 490, /* GL_DRAW_BUFFER7 */
+ 493, /* GL_DRAW_BUFFER8 */
+ 496, /* GL_DRAW_BUFFER9 */
+ 455, /* GL_DRAW_BUFFER10 */
+ 458, /* GL_DRAW_BUFFER11 */
+ 461, /* GL_DRAW_BUFFER12 */
+ 464, /* GL_DRAW_BUFFER13 */
+ 467, /* GL_DRAW_BUFFER14 */
+ 470, /* GL_DRAW_BUFFER15 */
+ 97, /* GL_BLEND_EQUATION_ALPHA */
+ 1007, /* GL_MATRIX_PALETTE_ARB */
+ 1057, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
+ 1060, /* GL_MAX_PALETTE_MATRICES_ARB */
+ 369, /* GL_CURRENT_PALETTE_MATRIX_ARB */
+ 995, /* GL_MATRIX_INDEX_ARRAY_ARB */
+ 364, /* GL_CURRENT_MATRIX_INDEX_ARB */
+ 1000, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
+ 1004, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
+ 1002, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
+ 998, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
+ 2038, /* GL_TEXTURE_DEPTH_SIZE */
+ 435, /* GL_DEPTH_TEXTURE_MODE */
+ 1995, /* GL_TEXTURE_COMPARE_MODE */
+ 1993, /* GL_TEXTURE_COMPARE_FUNC */
+ 281, /* GL_COMPARE_REF_TO_TEXTURE */
+ 1371, /* GL_POINT_SPRITE */
+ 343, /* GL_COORD_REPLACE */
+ 1376, /* GL_POINT_SPRITE_R_MODE_NV */
+ 1516, /* GL_QUERY_COUNTER_BITS */
+ 372, /* GL_CURRENT_QUERY */
+ 1520, /* GL_QUERY_RESULT */
+ 1522, /* GL_QUERY_RESULT_AVAILABLE */
+ 1126, /* GL_MAX_VERTEX_ATTRIBS */
+ 2243, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+ 433, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
+ 432, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
+ 1103, /* GL_MAX_TEXTURE_COORDS */
+ 1105, /* GL_MAX_TEXTURE_IMAGE_UNITS */
+ 1451, /* GL_PROGRAM_ERROR_STRING_ARB */
+ 1453, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+ 1452, /* GL_PROGRAM_FORMAT_ARB */
+ 2094, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+ 405, /* GL_DEPTH_BOUNDS_TEST_EXT */
+ 404, /* GL_DEPTH_BOUNDS_EXT */
+ 61, /* GL_ARRAY_BUFFER */
+ 520, /* GL_ELEMENT_ARRAY_BUFFER */
+ 62, /* GL_ARRAY_BUFFER_BINDING */
+ 521, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
+ 2215, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+ 1224, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
+ 187, /* GL_COLOR_ARRAY_BUFFER_BINDING */
+ 732, /* GL_INDEX_ARRAY_BUFFER_BINDING */
+ 2008, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+ 516, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
+ 1730, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+ 573, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
+ 2271, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+ 2237, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+ 1454, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+ 1070, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
+ 1460, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ 1079, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ 1474, /* GL_PROGRAM_TEMPORARIES_ARB */
+ 1085, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
+ 1462, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ 1081, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ 1466, /* GL_PROGRAM_PARAMETERS_ARB */
+ 1084, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
+ 1461, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+ 1080, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
+ 1445, /* GL_PROGRAM_ATTRIBS_ARB */
+ 1065, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
+ 1459, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+ 1078, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
+ 1443, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+ 1063, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
+ 1457, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ 1076, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ 1071, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
+ 1067, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
+ 1477, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+ 2127, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+ 1539, /* GL_READ_ONLY */
+ 2285, /* GL_WRITE_ONLY */
+ 1541, /* GL_READ_WRITE */
+ 124, /* GL_BUFFER_ACCESS */
+ 129, /* GL_BUFFER_MAPPED */
+ 134, /* GL_BUFFER_MAP_POINTER */
+ 2101, /* GL_TIME_ELAPSED_EXT */
+ 955, /* GL_MATRIX0_ARB */
+ 967, /* GL_MATRIX1_ARB */
+ 979, /* GL_MATRIX2_ARB */
+ 983, /* GL_MATRIX3_ARB */
+ 985, /* GL_MATRIX4_ARB */
+ 987, /* GL_MATRIX5_ARB */
+ 989, /* GL_MATRIX6_ARB */
+ 991, /* GL_MATRIX7_ARB */
+ 993, /* GL_MATRIX8_ARB */
+ 994, /* GL_MATRIX9_ARB */
+ 957, /* GL_MATRIX10_ARB */
+ 958, /* GL_MATRIX11_ARB */
+ 959, /* GL_MATRIX12_ARB */
+ 960, /* GL_MATRIX13_ARB */
+ 961, /* GL_MATRIX14_ARB */
+ 962, /* GL_MATRIX15_ARB */
+ 963, /* GL_MATRIX16_ARB */
+ 964, /* GL_MATRIX17_ARB */
+ 965, /* GL_MATRIX18_ARB */
+ 966, /* GL_MATRIX19_ARB */
+ 969, /* GL_MATRIX20_ARB */
+ 970, /* GL_MATRIX21_ARB */
+ 971, /* GL_MATRIX22_ARB */
+ 972, /* GL_MATRIX23_ARB */
+ 973, /* GL_MATRIX24_ARB */
+ 974, /* GL_MATRIX25_ARB */
+ 975, /* GL_MATRIX26_ARB */
+ 976, /* GL_MATRIX27_ARB */
+ 977, /* GL_MATRIX28_ARB */
+ 978, /* GL_MATRIX29_ARB */
+ 981, /* GL_MATRIX30_ARB */
+ 982, /* GL_MATRIX31_ARB */
+ 1863, /* GL_STREAM_DRAW */
+ 1865, /* GL_STREAM_READ */
+ 1861, /* GL_STREAM_COPY */
+ 1812, /* GL_STATIC_DRAW */
+ 1814, /* GL_STATIC_READ */
+ 1810, /* GL_STATIC_COPY */
+ 510, /* GL_DYNAMIC_DRAW */
+ 512, /* GL_DYNAMIC_READ */
+ 508, /* GL_DYNAMIC_COPY */
+ 1334, /* GL_PIXEL_PACK_BUFFER */
+ 1338, /* GL_PIXEL_UNPACK_BUFFER */
+ 1335, /* GL_PIXEL_PACK_BUFFER_BINDING */
+ 1339, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
+ 396, /* GL_DEPTH24_STENCIL8 */
+ 2090, /* GL_TEXTURE_STENCIL_SIZE */
+ 2036, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
+ 1066, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
+ 1069, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
+ 1073, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
+ 1072, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
+ 2241, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
+ 1012, /* GL_MAX_ARRAY_TEXTURE_LAYERS */
+ 1149, /* GL_MIN_PROGRAM_TEXEL_OFFSET */
+ 1086, /* GL_MAX_PROGRAM_TEXEL_OFFSET */
+ 1854, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+ 18, /* GL_ACTIVE_STENCIL_FACE_EXT */
+ 1156, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
+ 1711, /* GL_SAMPLES_PASSED */
+ 688, /* GL_GEOMETRY_VERTICES_OUT */
+ 682, /* GL_GEOMETRY_INPUT_TYPE */
+ 684, /* GL_GEOMETRY_OUTPUT_TYPE */
+ 156, /* GL_CLAMP_READ_COLOR */
+ 546, /* GL_FIXED_ONLY */
+ 1358, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
+ 1357, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
+ 1356, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
+ 1193, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 1480, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 2070, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 138, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */
+ 128, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */
+ 1556, /* GL_RELEASED_APPLE */
+ 2268, /* GL_VOLATILE_APPLE */
+ 1595, /* GL_RETAINED_APPLE */
+ 2144, /* GL_UNDEFINED_APPLE */
+ 1504, /* GL_PURGEABLE_APPLE */
+ 596, /* GL_FRAGMENT_SHADER */
+ 2263, /* GL_VERTEX_SHADER */
+ 1465, /* GL_PROGRAM_OBJECT_ARB */
+ 1747, /* GL_SHADER_OBJECT_ARB */
+ 1041, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
+ 1131, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
+ 1122, /* GL_MAX_VARYING_COMPONENTS */
+ 1129, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
+ 1024, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
+ 1254, /* GL_OBJECT_TYPE_ARB */
+ 1749, /* GL_SHADER_TYPE */
+ 561, /* GL_FLOAT_VEC2 */
+ 563, /* GL_FLOAT_VEC3 */
+ 565, /* GL_FLOAT_VEC4 */
+ 784, /* GL_INT_VEC2 */
+ 786, /* GL_INT_VEC3 */
+ 788, /* GL_INT_VEC4 */
+ 116, /* GL_BOOL */
+ 118, /* GL_BOOL_VEC2 */
+ 120, /* GL_BOOL_VEC3 */
+ 122, /* GL_BOOL_VEC4 */
+ 549, /* GL_FLOAT_MAT2 */
+ 553, /* GL_FLOAT_MAT3 */
+ 557, /* GL_FLOAT_MAT4 */
+ 1687, /* GL_SAMPLER_1D */
+ 1693, /* GL_SAMPLER_2D */
+ 1701, /* GL_SAMPLER_3D */
+ 1705, /* GL_SAMPLER_CUBE */
+ 1692, /* GL_SAMPLER_1D_SHADOW */
+ 1700, /* GL_SAMPLER_2D_SHADOW */
+ 1698, /* GL_SAMPLER_2D_RECT */
+ 1699, /* GL_SAMPLER_2D_RECT_SHADOW */
+ 551, /* GL_FLOAT_MAT2x3 */
+ 552, /* GL_FLOAT_MAT2x4 */
+ 555, /* GL_FLOAT_MAT3x2 */
+ 556, /* GL_FLOAT_MAT3x4 */
+ 559, /* GL_FLOAT_MAT4x2 */
+ 560, /* GL_FLOAT_MAT4x3 */
+ 394, /* GL_DELETE_STATUS */
+ 286, /* GL_COMPILE_STATUS */
+ 845, /* GL_LINK_STATUS */
+ 2209, /* GL_VALIDATE_STATUS */
+ 744, /* GL_INFO_LOG_LENGTH */
+ 64, /* GL_ATTACHED_SHADERS */
+ 21, /* GL_ACTIVE_UNIFORMS */
+ 22, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
+ 1748, /* GL_SHADER_SOURCE_LENGTH */
15, /* GL_ACTIVE_ATTRIBUTES */
16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */
- 562, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
- 1572, /* GL_SHADING_LANGUAGE_VERSION */
- 337, /* GL_CURRENT_PROGRAM */
- 1198, /* GL_PALETTE4_RGB8_OES */
- 1200, /* GL_PALETTE4_RGBA8_OES */
- 1196, /* GL_PALETTE4_R5_G6_B5_OES */
- 1199, /* GL_PALETTE4_RGBA4_OES */
- 1197, /* GL_PALETTE4_RGB5_A1_OES */
- 1203, /* GL_PALETTE8_RGB8_OES */
- 1205, /* GL_PALETTE8_RGBA8_OES */
- 1201, /* GL_PALETTE8_R5_G6_B5_OES */
- 1204, /* GL_PALETTE8_RGBA4_OES */
- 1202, /* GL_PALETTE8_RGB5_A1_OES */
- 682, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
- 680, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
- 1250, /* GL_POINT_SIZE_ARRAY_OES */
- 1825, /* GL_TEXTURE_CROP_RECT_OES */
- 912, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
- 1249, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
- 1967, /* GL_UNSIGNED_NORMALIZED */
- 1771, /* GL_TEXTURE_1D_ARRAY_EXT */
- 1381, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
- 1773, /* GL_TEXTURE_2D_ARRAY_EXT */
- 1384, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
- 1780, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
- 1782, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
- 958, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */
- 1625, /* GL_SRGB */
- 1626, /* GL_SRGB8 */
- 1628, /* GL_SRGB_ALPHA */
- 1627, /* GL_SRGB8_ALPHA8 */
- 1585, /* GL_SLUMINANCE_ALPHA */
- 1584, /* GL_SLUMINANCE8_ALPHA8 */
- 1582, /* GL_SLUMINANCE */
- 1583, /* GL_SLUMINANCE8 */
- 280, /* GL_COMPRESSED_SRGB */
- 281, /* GL_COMPRESSED_SRGB_ALPHA */
- 278, /* GL_COMPRESSED_SLUMINANCE */
- 279, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
- 1925, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
- 1919, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
- 1021, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */
- 1924, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
- 1922, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
- 1921, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
- 1332, /* GL_PRIMITIVES_GENERATED_EXT */
- 1923, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
- 1412, /* GL_RASTERIZER_DISCARD_EXT */
- 1019, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */
- 1020, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */
- 712, /* GL_INTERLEAVED_ATTRIBS_EXT */
- 1562, /* GL_SEPARATE_ATTRIBS_EXT */
- 1918, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
- 1917, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
- 1268, /* GL_POINT_SPRITE_COORD_ORIGIN */
- 784, /* GL_LOWER_LEFT */
- 1981, /* GL_UPPER_LEFT */
- 1649, /* GL_STENCIL_BACK_REF */
- 1650, /* GL_STENCIL_BACK_VALUE_MASK */
- 1651, /* GL_STENCIL_BACK_WRITEMASK */
- 465, /* GL_DRAW_FRAMEBUFFER_BINDING */
- 1438, /* GL_RENDERBUFFER_BINDING */
- 1415, /* GL_READ_FRAMEBUFFER */
- 464, /* GL_DRAW_FRAMEBUFFER */
- 1416, /* GL_READ_FRAMEBUFFER_BINDING */
- 1457, /* GL_RENDERBUFFER_SAMPLES */
- 575, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
- 572, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
- 587, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
- 582, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
- 585, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
- 593, /* GL_FRAMEBUFFER_COMPLETE */
- 598, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
- 612, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
- 607, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
- 602, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
- 608, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
- 604, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
- 617, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
- 623, /* GL_FRAMEBUFFER_UNSUPPORTED */
- 621, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
- 934, /* GL_MAX_COLOR_ATTACHMENTS */
- 167, /* GL_COLOR_ATTACHMENT0 */
- 170, /* GL_COLOR_ATTACHMENT1 */
- 184, /* GL_COLOR_ATTACHMENT2 */
- 186, /* GL_COLOR_ATTACHMENT3 */
- 188, /* GL_COLOR_ATTACHMENT4 */
- 190, /* GL_COLOR_ATTACHMENT5 */
- 192, /* GL_COLOR_ATTACHMENT6 */
- 194, /* GL_COLOR_ATTACHMENT7 */
- 196, /* GL_COLOR_ATTACHMENT8 */
- 198, /* GL_COLOR_ATTACHMENT9 */
- 171, /* GL_COLOR_ATTACHMENT10 */
- 173, /* GL_COLOR_ATTACHMENT11 */
- 175, /* GL_COLOR_ATTACHMENT12 */
- 177, /* GL_COLOR_ATTACHMENT13 */
- 179, /* GL_COLOR_ATTACHMENT14 */
- 181, /* GL_COLOR_ATTACHMENT15 */
- 365, /* GL_DEPTH_ATTACHMENT */
- 1638, /* GL_STENCIL_ATTACHMENT */
- 564, /* GL_FRAMEBUFFER */
- 1435, /* GL_RENDERBUFFER */
- 1461, /* GL_RENDERBUFFER_WIDTH */
- 1448, /* GL_RENDERBUFFER_HEIGHT */
- 1451, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
- 1669, /* GL_STENCIL_INDEX_EXT */
- 1658, /* GL_STENCIL_INDEX1 */
- 1663, /* GL_STENCIL_INDEX4 */
- 1666, /* GL_STENCIL_INDEX8 */
- 1659, /* GL_STENCIL_INDEX16 */
- 1455, /* GL_RENDERBUFFER_RED_SIZE */
- 1446, /* GL_RENDERBUFFER_GREEN_SIZE */
- 1441, /* GL_RENDERBUFFER_BLUE_SIZE */
- 1436, /* GL_RENDERBUFFER_ALPHA_SIZE */
- 1443, /* GL_RENDERBUFFER_DEPTH_SIZE */
- 1459, /* GL_RENDERBUFFER_STENCIL_SIZE */
- 615, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
- 1001, /* GL_MAX_SAMPLES */
- 1861, /* GL_TEXTURE_GEN_STR_OES */
- 655, /* GL_HALF_FLOAT_OES */
- 1489, /* GL_RGB565_OES */
- 571, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */
- 611, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */
- 610, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
- 646, /* GL_GEOMETRY_SHADER_ARB */
- 647, /* GL_GEOMETRY_VERTICES_OUT_ARB */
- 644, /* GL_GEOMETRY_INPUT_TYPE_ARB */
- 645, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
- 961, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
- 1035, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
- 960, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */
- 957, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */
- 959, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */
- 785, /* GL_LOW_FLOAT */
- 1037, /* GL_MEDIUM_FLOAT */
- 656, /* GL_HIGH_FLOAT */
- 786, /* GL_LOW_INT */
- 1038, /* GL_MEDIUM_INT */
- 657, /* GL_HIGH_INT */
- 1958, /* GL_UNSIGNED_INT_10_10_10_2_OES */
- 716, /* GL_INT_10_10_10_2_OES */
- 1566, /* GL_SHADER_BINARY_FORMATS */
- 1134, /* GL_NUM_SHADER_BINARY_FORMATS */
- 1567, /* GL_SHADER_COMPILER */
- 1032, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
- 1025, /* GL_MAX_VARYING_VECTORS */
- 956, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
- 1409, /* GL_QUERY_WAIT_NV */
- 1404, /* GL_QUERY_NO_WAIT_NV */
- 1401, /* GL_QUERY_BY_REGION_WAIT_NV */
- 1400, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
- 1914, /* GL_TRANSFORM_FEEDBACK */
- 1920, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
- 1916, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
- 1915, /* GL_TRANSFORM_FEEDBACK_BINDING */
- 1396, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
- 507, /* GL_FIRST_VERTEX_CONVENTION */
- 733, /* GL_LAST_VERTEX_CONVENTION */
- 1373, /* GL_PROVOKING_VERTEX */
- 316, /* GL_COPY_READ_BUFFER */
- 317, /* GL_COPY_WRITE_BUFFER */
- 1516, /* GL_RGBA_SNORM */
- 1512, /* GL_RGBA8_SNORM */
- 1578, /* GL_SIGNED_NORMALIZED */
- 1003, /* GL_MAX_SERVER_WAIT_TIMEOUT */
- 1148, /* GL_OBJECT_TYPE */
- 1690, /* GL_SYNC_CONDITION */
- 1695, /* GL_SYNC_STATUS */
- 1692, /* GL_SYNC_FLAGS */
- 1691, /* GL_SYNC_FENCE */
- 1694, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
- 1952, /* GL_UNSIGNALED */
- 1577, /* GL_SIGNALED */
- 46, /* GL_ALREADY_SIGNALED */
- 1909, /* GL_TIMEOUT_EXPIRED */
- 283, /* GL_CONDITION_SATISFIED */
- 2042, /* GL_WAIT_FAILED */
- 492, /* GL_EVAL_BIT */
- 1413, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
- 778, /* GL_LIST_BIT */
- 1790, /* GL_TEXTURE_BIT */
- 1548, /* GL_SCISSOR_BIT */
- 29, /* GL_ALL_ATTRIB_BITS */
- 1100, /* GL_MULTISAMPLE_BIT */
- 30, /* GL_ALL_CLIENT_ATTRIB_BITS */
+ 598, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
+ 1751, /* GL_SHADING_LANGUAGE_VERSION */
+ 371, /* GL_CURRENT_PROGRAM */
+ 1303, /* GL_PALETTE4_RGB8_OES */
+ 1305, /* GL_PALETTE4_RGBA8_OES */
+ 1301, /* GL_PALETTE4_R5_G6_B5_OES */
+ 1304, /* GL_PALETTE4_RGBA4_OES */
+ 1302, /* GL_PALETTE4_RGB5_A1_OES */
+ 1308, /* GL_PALETTE8_RGB8_OES */
+ 1310, /* GL_PALETTE8_RGBA8_OES */
+ 1306, /* GL_PALETTE8_R5_G6_B5_OES */
+ 1309, /* GL_PALETTE8_RGBA4_OES */
+ 1307, /* GL_PALETTE8_RGB5_A1_OES */
+ 726, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
+ 724, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
+ 1355, /* GL_POINT_SIZE_ARRAY_OES */
+ 2014, /* GL_TEXTURE_CROP_RECT_OES */
+ 996, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
+ 1354, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
+ 2192, /* GL_UNSIGNED_NORMALIZED */
+ 1951, /* GL_TEXTURE_1D_ARRAY */
+ 1490, /* GL_PROXY_TEXTURE_1D_ARRAY */
+ 1954, /* GL_TEXTURE_2D_ARRAY */
+ 1494, /* GL_PROXY_TEXTURE_2D_ARRAY */
+ 1962, /* GL_TEXTURE_BINDING_1D_ARRAY */
+ 1965, /* GL_TEXTURE_BINDING_2D_ARRAY */
+ 1048, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */
+ 1981, /* GL_TEXTURE_BUFFER */
+ 1102, /* GL_MAX_TEXTURE_BUFFER_SIZE */
+ 1969, /* GL_TEXTURE_BINDING_BUFFER */
+ 1982, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
+ 1983, /* GL_TEXTURE_BUFFER_FORMAT */
+ 1527, /* GL_R11F_G11F_B10F */
+ 2158, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
+ 1638, /* GL_RGB9_E5 */
+ 2167, /* GL_UNSIGNED_INT_5_9_9_9_REV */
+ 2088, /* GL_TEXTURE_SHARED_SIZE */
+ 1804, /* GL_SRGB */
+ 1805, /* GL_SRGB8 */
+ 1807, /* GL_SRGB_ALPHA */
+ 1806, /* GL_SRGB8_ALPHA8 */
+ 1764, /* GL_SLUMINANCE_ALPHA */
+ 1763, /* GL_SLUMINANCE8_ALPHA8 */
+ 1761, /* GL_SLUMINANCE */
+ 1762, /* GL_SLUMINANCE8 */
+ 309, /* GL_COMPRESSED_SRGB */
+ 310, /* GL_COMPRESSED_SRGB_ALPHA */
+ 307, /* GL_COMPRESSED_SLUMINANCE */
+ 308, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
+ 2123, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
+ 2112, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
+ 1120, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */
+ 2121, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
+ 2117, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
+ 2115, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
+ 1437, /* GL_PRIMITIVES_GENERATED */
+ 2119, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
+ 1531, /* GL_RASTERIZER_DISCARD */
+ 1116, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */
+ 1118, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */
+ 762, /* GL_INTERLEAVED_ATTRIBS */
+ 1740, /* GL_SEPARATE_ATTRIBS */
+ 2107, /* GL_TRANSFORM_FEEDBACK_BUFFER */
+ 2109, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
+ 1373, /* GL_POINT_SPRITE_COORD_ORIGIN */
+ 853, /* GL_LOWER_LEFT */
+ 2206, /* GL_UPPER_LEFT */
+ 1828, /* GL_STENCIL_BACK_REF */
+ 1829, /* GL_STENCIL_BACK_VALUE_MASK */
+ 1830, /* GL_STENCIL_BACK_WRITEMASK */
+ 500, /* GL_DRAW_FRAMEBUFFER_BINDING */
+ 1561, /* GL_RENDERBUFFER_BINDING */
+ 1535, /* GL_READ_FRAMEBUFFER */
+ 499, /* GL_DRAW_FRAMEBUFFER */
+ 1536, /* GL_READ_FRAMEBUFFER_BINDING */
+ 1580, /* GL_RENDERBUFFER_SAMPLES */
+ 612, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
+ 609, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
+ 624, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
+ 619, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
+ 622, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+ 630, /* GL_FRAMEBUFFER_COMPLETE */
+ 635, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
+ 650, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
+ 644, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
+ 639, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
+ 645, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
+ 641, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
+ 655, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
+ 661, /* GL_FRAMEBUFFER_UNSUPPORTED */
+ 659, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
+ 1020, /* GL_MAX_COLOR_ATTACHMENTS */
+ 193, /* GL_COLOR_ATTACHMENT0 */
+ 196, /* GL_COLOR_ATTACHMENT1 */
+ 210, /* GL_COLOR_ATTACHMENT2 */
+ 212, /* GL_COLOR_ATTACHMENT3 */
+ 214, /* GL_COLOR_ATTACHMENT4 */
+ 216, /* GL_COLOR_ATTACHMENT5 */
+ 218, /* GL_COLOR_ATTACHMENT6 */
+ 220, /* GL_COLOR_ATTACHMENT7 */
+ 222, /* GL_COLOR_ATTACHMENT8 */
+ 224, /* GL_COLOR_ATTACHMENT9 */
+ 197, /* GL_COLOR_ATTACHMENT10 */
+ 199, /* GL_COLOR_ATTACHMENT11 */
+ 201, /* GL_COLOR_ATTACHMENT12 */
+ 203, /* GL_COLOR_ATTACHMENT13 */
+ 205, /* GL_COLOR_ATTACHMENT14 */
+ 207, /* GL_COLOR_ATTACHMENT15 */
+ 399, /* GL_DEPTH_ATTACHMENT */
+ 1817, /* GL_STENCIL_ATTACHMENT */
+ 600, /* GL_FRAMEBUFFER */
+ 1558, /* GL_RENDERBUFFER */
+ 1584, /* GL_RENDERBUFFER_WIDTH */
+ 1571, /* GL_RENDERBUFFER_HEIGHT */
+ 1574, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
+ 1849, /* GL_STENCIL_INDEX_EXT */
+ 1838, /* GL_STENCIL_INDEX1 */
+ 1843, /* GL_STENCIL_INDEX4 */
+ 1846, /* GL_STENCIL_INDEX8 */
+ 1839, /* GL_STENCIL_INDEX16 */
+ 1578, /* GL_RENDERBUFFER_RED_SIZE */
+ 1569, /* GL_RENDERBUFFER_GREEN_SIZE */
+ 1564, /* GL_RENDERBUFFER_BLUE_SIZE */
+ 1559, /* GL_RENDERBUFFER_ALPHA_SIZE */
+ 1566, /* GL_RENDERBUFFER_DEPTH_SIZE */
+ 1582, /* GL_RENDERBUFFER_STENCIL_SIZE */
+ 653, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
+ 1097, /* GL_MAX_SAMPLES */
+ 2050, /* GL_TEXTURE_GEN_STR_OES */
+ 699, /* GL_HALF_FLOAT_OES */
+ 1625, /* GL_RGB565_OES */
+ 1655, /* GL_RGBA32UI */
+ 1618, /* GL_RGB32UI */
+ 40, /* GL_ALPHA32UI_EXT */
+ 754, /* GL_INTENSITY32UI_EXT */
+ 870, /* GL_LUMINANCE32UI_EXT */
+ 887, /* GL_LUMINANCE_ALPHA32UI_EXT */
+ 1646, /* GL_RGBA16UI */
+ 1610, /* GL_RGB16UI */
+ 37, /* GL_ALPHA16UI_EXT */
+ 751, /* GL_INTENSITY16UI_EXT */
+ 865, /* GL_LUMINANCE16UI_EXT */
+ 885, /* GL_LUMINANCE_ALPHA16UI_EXT */
+ 1665, /* GL_RGBA8UI */
+ 1633, /* GL_RGB8UI */
+ 45, /* GL_ALPHA8UI_EXT */
+ 759, /* GL_INTENSITY8UI_EXT */
+ 879, /* GL_LUMINANCE8UI_EXT */
+ 889, /* GL_LUMINANCE_ALPHA8UI_EXT */
+ 1653, /* GL_RGBA32I */
+ 1616, /* GL_RGB32I */
+ 39, /* GL_ALPHA32I_EXT */
+ 753, /* GL_INTENSITY32I_EXT */
+ 869, /* GL_LUMINANCE32I_EXT */
+ 886, /* GL_LUMINANCE_ALPHA32I_EXT */
+ 1644, /* GL_RGBA16I */
+ 1608, /* GL_RGB16I */
+ 36, /* GL_ALPHA16I_EXT */
+ 750, /* GL_INTENSITY16I_EXT */
+ 864, /* GL_LUMINANCE16I_EXT */
+ 884, /* GL_LUMINANCE_ALPHA16I_EXT */
+ 1663, /* GL_RGBA8I */
+ 1631, /* GL_RGB8I */
+ 44, /* GL_ALPHA8I_EXT */
+ 758, /* GL_INTENSITY8I_EXT */
+ 878, /* GL_LUMINANCE8I_EXT */
+ 888, /* GL_LUMINANCE_ALPHA8I_EXT */
+ 1548, /* GL_RED_INTEGER */
+ 695, /* GL_GREEN_INTEGER */
+ 113, /* GL_BLUE_INTEGER */
+ 49, /* GL_ALPHA_INTEGER_EXT */
+ 1677, /* GL_RGB_INTEGER */
+ 1671, /* GL_RGBA_INTEGER */
+ 84, /* GL_BGR_INTEGER */
+ 82, /* GL_BGRA_INTEGER */
+ 891, /* GL_LUMINANCE_INTEGER_EXT */
+ 890, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */
+ 1673, /* GL_RGBA_INTEGER_MODE_EXT */
+ 607, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */
+ 648, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */
+ 647, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
+ 1688, /* GL_SAMPLER_1D_ARRAY */
+ 1694, /* GL_SAMPLER_2D_ARRAY */
+ 1703, /* GL_SAMPLER_BUFFER */
+ 1690, /* GL_SAMPLER_1D_ARRAY_SHADOW */
+ 1696, /* GL_SAMPLER_2D_ARRAY_SHADOW */
+ 1706, /* GL_SAMPLER_CUBE_SHADOW */
+ 2186, /* GL_UNSIGNED_INT_VEC2 */
+ 2188, /* GL_UNSIGNED_INT_VEC3 */
+ 2190, /* GL_UNSIGNED_INT_VEC4 */
+ 768, /* GL_INT_SAMPLER_1D */
+ 772, /* GL_INT_SAMPLER_2D */
+ 778, /* GL_INT_SAMPLER_3D */
+ 782, /* GL_INT_SAMPLER_CUBE */
+ 776, /* GL_INT_SAMPLER_2D_RECT */
+ 769, /* GL_INT_SAMPLER_1D_ARRAY */
+ 773, /* GL_INT_SAMPLER_2D_ARRAY */
+ 780, /* GL_INT_SAMPLER_BUFFER */
+ 2170, /* GL_UNSIGNED_INT_SAMPLER_1D */
+ 2174, /* GL_UNSIGNED_INT_SAMPLER_2D */
+ 2180, /* GL_UNSIGNED_INT_SAMPLER_3D */
+ 2184, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
+ 2178, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
+ 2171, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
+ 2175, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
+ 2182, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
+ 686, /* GL_GEOMETRY_SHADER */
+ 689, /* GL_GEOMETRY_VERTICES_OUT_ARB */
+ 683, /* GL_GEOMETRY_INPUT_TYPE_ARB */
+ 685, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
+ 1054, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
+ 1136, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
+ 1052, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */
+ 1046, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */
+ 1050, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */
+ 854, /* GL_LOW_FLOAT */
+ 1138, /* GL_MEDIUM_FLOAT */
+ 700, /* GL_HIGH_FLOAT */
+ 855, /* GL_LOW_INT */
+ 1139, /* GL_MEDIUM_INT */
+ 701, /* GL_HIGH_INT */
+ 2160, /* GL_UNSIGNED_INT_10_10_10_2_OES */
+ 767, /* GL_INT_10_10_10_2_OES */
+ 1745, /* GL_SHADER_BINARY_FORMATS */
+ 1239, /* GL_NUM_SHADER_BINARY_FORMATS */
+ 1746, /* GL_SHADER_COMPILER */
+ 1133, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
+ 1125, /* GL_MAX_VARYING_VECTORS */
+ 1043, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
+ 1524, /* GL_QUERY_WAIT */
+ 1518, /* GL_QUERY_NO_WAIT */
+ 1514, /* GL_QUERY_BY_REGION_WAIT */
+ 1512, /* GL_QUERY_BY_REGION_NO_WAIT */
+ 2105, /* GL_TRANSFORM_FEEDBACK */
+ 2114, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
+ 2108, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
+ 2106, /* GL_TRANSFORM_FEEDBACK_BINDING */
+ 1508, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
+ 542, /* GL_FIRST_VERTEX_CONVENTION */
+ 800, /* GL_LAST_VERTEX_CONVENTION */
+ 1482, /* GL_PROVOKING_VERTEX */
+ 350, /* GL_COPY_READ_BUFFER */
+ 351, /* GL_COPY_WRITE_BUFFER */
+ 1551, /* GL_RED_SNORM */
+ 1684, /* GL_RG_SNORM */
+ 1683, /* GL_RGB_SNORM */
+ 1676, /* GL_RGBA_SNORM */
+ 1530, /* GL_R8_SNORM */
+ 1598, /* GL_RG8_SNORM */
+ 1637, /* GL_RGB8_SNORM */
+ 1669, /* GL_RGBA8_SNORM */
+ 1528, /* GL_R16_SNORM */
+ 1597, /* GL_RG16_SNORM */
+ 1613, /* GL_RGB16_SNORM */
+ 1649, /* GL_RGBA16_SNORM */
+ 1757, /* GL_SIGNED_NORMALIZED */
+ 1439, /* GL_PRIMITIVE_RESTART */
+ 1440, /* GL_PRIMITIVE_RESTART_INDEX */
+ 1099, /* GL_MAX_SERVER_WAIT_TIMEOUT */
+ 1253, /* GL_OBJECT_TYPE */
+ 1870, /* GL_SYNC_CONDITION */
+ 1875, /* GL_SYNC_STATUS */
+ 1872, /* GL_SYNC_FLAGS */
+ 1871, /* GL_SYNC_FENCE */
+ 1874, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
+ 2153, /* GL_UNSIGNALED */
+ 1756, /* GL_SIGNALED */
+ 54, /* GL_ALREADY_SIGNALED */
+ 2100, /* GL_TIMEOUT_EXPIRED */
+ 312, /* GL_CONDITION_SATISFIED */
+ 2269, /* GL_WAIT_FAILED */
+ 126, /* GL_BUFFER_ACCESS_FLAGS */
+ 132, /* GL_BUFFER_MAP_LENGTH */
+ 133, /* GL_BUFFER_MAP_OFFSET */
+ 1128, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */
+ 1044, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */
+ 1045, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */
+ 1040, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */
+ 326, /* GL_CONTEXT_PROFILE_MASK */
+ 527, /* GL_EVAL_BIT */
+ 1533, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+ 847, /* GL_LIST_BIT */
+ 1976, /* GL_TEXTURE_BIT */
+ 1726, /* GL_SCISSOR_BIT */
+ 30, /* GL_ALL_ATTRIB_BITS */
+ 1204, /* GL_MULTISAMPLE_BIT */
+ 31, /* GL_ALL_CLIENT_ATTRIB_BITS */
};
typedef int (*cfunc)(const void *, const void *);
diff --git a/src/mesa/main/enums.h b/src/mesa/main/enums.h
index b5f69001b8..c03cd34da9 100644
--- a/src/mesa/main/enums.h
+++ b/src/mesa/main/enums.h
@@ -36,6 +36,7 @@
#ifndef _ENUMS_H_
#define _ENUMS_H_
+#include "mfeatures.h"
#if defined(_HAVE_FULL_GL) && _HAVE_FULL_GL
diff --git a/src/mesa/main/es_generator.py b/src/mesa/main/es_generator.py
index ecb34bb5cd..aa8dab7a74 100644
--- a/src/mesa/main/es_generator.py
+++ b/src/mesa/main/es_generator.py
@@ -191,6 +191,8 @@ print """
#include "%s"
#include "%s"
#include "main/mfeatures.h"
+#include "main/compiler.h"
+#include "main/api_exec.h"
#if FEATURE_%s
""" % (versionHeader, versionExtHeader, shortname.upper())
@@ -206,50 +208,7 @@ typedef double GLclampd;
/* Mesa error handling requires these */
extern void *_mesa_get_current_context(void);
extern void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... );
-
-#include "main/compiler.h"
-#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
-/* glapi uses GLAPIENTRY while GLES headers define GL_APIENTRY */
-#ifndef GLAPIENTRY
-#define GLAPIENTRY GL_APIENTRY
-#endif
-#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 "%sapi/main/remap_helper.h"
-
-void
-_mesa_init_remap_table_%s(void)
-{
- _mesa_do_init_remap_table(_mesa_function_pool,
- driDispatchRemapTable_size,
- MESA_remap_table_functions);
-}
-
-void
-_mesa_map_static_functions_%s(void)
-{
-}
-
-#endif
-
-typedef void (*_glapi_proc)(void); /* generic function pointer */
-""" % (shortname, shortname, shortname, shortname, shortname, shortname);
+"""
# Finally we get to the all-important functions
print """/*************************************************************
@@ -713,15 +672,73 @@ for funcName in keys:
# end for each function
print """
+#include "glapi/glapi.h"
+
+#if FEATURE_remap_table
+
+/* cannot include main/dispatch.h here */
+#define _GLAPI_USE_REMAP_TABLE
+#include "%sapi/main/glapidispatch.h"
+
+#define need_MESA_remap_table
+#include "%sapi/main/remap_helper.h"
+
+/* force SET_* macros to use the local remap table */
+#define driDispatchRemapTable remap_table
+static int remap_table[driDispatchRemapTable_size];
+
+static void
+init_remap_table(void)
+{
+ _glthread_DECLARE_STATIC_MUTEX(mutex);
+ static GLboolean initialized = GL_FALSE;
+ const struct gl_function_pool_remap *remap = MESA_remap_table_functions;
+ int i;
+
+ _glthread_LOCK_MUTEX(mutex);
+ if (initialized) {
+ _glthread_UNLOCK_MUTEX(mutex);
+ return;
+ }
+
+ for (i = 0; i < driDispatchRemapTable_size; i++) {
+ GLint offset;
+ const char *spec;
+
+ /* sanity check */
+ ASSERT(i == remap[i].remap_index);
+ spec = _mesa_function_pool + remap[i].pool_index;
+
+ offset = _mesa_map_function_spec(spec);
+ remap_table[i] = offset;
+ }
+ initialized = GL_TRUE;
+ _glthread_UNLOCK_MUTEX(mutex);
+}
+
+#else /* FEATURE_remap_table */
+
+/* cannot include main/dispatch.h here */
+#include "%sapi/main/glapidispatch.h"
+
+static INLINE void
+init_remap_table(void)
+{
+}
+
+#endif /* FEATURE_remap_table */
+
struct _glapi_table *
_mesa_create_exec_table_%s(void)
{
struct _glapi_table *exec;
- exec = _mesa_alloc_dispatch_table(sizeof *exec);
+
+ exec = _mesa_alloc_dispatch_table(_gloffset_COUNT);
if (exec == NULL)
return NULL;
-""" % shortname
+ init_remap_table();
+""" % (shortname, shortname, shortname, shortname)
for func in keys:
prefix = "_es_" if func not in allSpecials else "_check_"
diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index bc8cbef132..3d5830c01c 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -128,6 +128,7 @@ static const struct {
{ OFF, "GL_EXT_framebuffer_sRGB", F(EXT_framebuffer_sRGB) },
{ OFF, "GL_EXT_fog_coord", F(EXT_fog_coord) },
{ OFF, "GL_EXT_gpu_program_parameters", F(EXT_gpu_program_parameters) },
+ { OFF, "GL_EXT_gpu_shader4", F(EXT_gpu_shader4) },
{ ON, "GL_EXT_multi_draw_arrays", F(EXT_multi_draw_arrays) },
{ OFF, "GL_EXT_packed_depth_stencil", F(EXT_packed_depth_stencil) },
{ OFF, "GL_EXT_packed_float", F(EXT_packed_float) },
@@ -139,6 +140,7 @@ static const struct {
{ OFF, "GL_EXT_provoking_vertex", F(EXT_provoking_vertex) },
{ ON, "GL_EXT_rescale_normal", F(EXT_rescale_normal) },
{ OFF, "GL_EXT_secondary_color", F(EXT_secondary_color) },
+ { OFF, "GL_EXT_separate_shader_objects", F(EXT_separate_shader_objects) },
{ ON, "GL_EXT_separate_specular_color", F(EXT_separate_specular_color) },
{ OFF, "GL_EXT_shadow_funcs", F(EXT_shadow_funcs) },
{ OFF, "GL_EXT_shared_texture_palette", F(EXT_shared_texture_palette) },
@@ -260,6 +262,7 @@ _mesa_enable_sw_extensions(struct gl_context *ctx)
ctx->Extensions.ARB_point_sprite = GL_TRUE;
#if FEATURE_ARB_shader_objects
ctx->Extensions.ARB_shader_objects = GL_TRUE;
+ ctx->Extensions.EXT_separate_shader_objects = GL_TRUE;
#endif
#if FEATURE_ARB_shading_language_100
ctx->Extensions.ARB_shading_language_100 = GL_TRUE;
diff --git a/src/mesa/main/extensions.h b/src/mesa/main/extensions.h
index 6eb8539396..a9ed41f86b 100644
--- a/src/mesa/main/extensions.h
+++ b/src/mesa/main/extensions.h
@@ -36,7 +36,10 @@
#ifndef _EXTENSIONS_H_
#define _EXTENSIONS_H_
-#include "mtypes.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct gl_context;
#if _HAVE_FULL_GL
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 3dc78f2bf5..7c3357043f 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -255,7 +255,8 @@ _mesa_get_fb0_attachment(struct gl_context *ctx, struct gl_framebuffer *fb,
* point. Update reference counts, etc.
*/
void
-_mesa_remove_attachment(struct gl_context *ctx, struct gl_renderbuffer_attachment *att)
+_mesa_remove_attachment(struct gl_context *ctx,
+ struct gl_renderbuffer_attachment *att)
{
if (att->Type == GL_TEXTURE) {
ASSERT(att->Texture);
@@ -340,7 +341,8 @@ _mesa_set_renderbuffer_attachment(struct gl_context *ctx,
* Attach a renderbuffer object to a framebuffer object.
*/
void
-_mesa_framebuffer_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb,
+_mesa_framebuffer_renderbuffer(struct gl_context *ctx,
+ struct gl_framebuffer *fb,
GLenum attachment, struct gl_renderbuffer *rb)
{
struct gl_renderbuffer_attachment *att;
@@ -397,6 +399,44 @@ fbo_incomplete(const char *msg, int index)
}
+/**
+ * Is the given base format a legal format for a color renderbuffer?
+ */
+static GLboolean
+is_legal_color_format(const struct gl_context *ctx, GLenum baseFormat)
+{
+ switch (baseFormat) {
+ case GL_RGB:
+ case GL_RGBA:
+ return GL_TRUE;
+ case GL_LUMINANCE:
+ case GL_LUMINANCE_ALPHA:
+ case GL_INTENSITY:
+ case GL_ALPHA:
+ return ctx->Extensions.ARB_framebuffer_object;
+ case GL_RED:
+ case GL_RG:
+ return ctx->Extensions.ARB_texture_rg;
+ default:
+ return GL_FALSE;
+ }
+}
+
+
+/**
+ * Is the given base format a legal format for a depth/stencil renderbuffer?
+ */
+static GLboolean
+is_legal_depth_format(const struct gl_context *ctx, GLenum baseFormat)
+{
+ switch (baseFormat) {
+ case GL_DEPTH_COMPONENT:
+ case GL_DEPTH_STENCIL_EXT:
+ return GL_TRUE;
+ default:
+ return GL_FALSE;
+ }
+}
/**
@@ -448,14 +488,7 @@ test_attachment_completeness(const struct gl_context *ctx, GLenum format,
baseFormat = _mesa_get_format_base_format(texImage->TexFormat);
if (format == GL_COLOR) {
- if (baseFormat != GL_RGB &&
- baseFormat != GL_RGBA &&
- (!ctx->Extensions.ARB_framebuffer_object ||
- baseFormat != GL_ALPHA) &&
- (!ctx->Extensions.ARB_texture_rg ||
- baseFormat != GL_RED) &&
- (!ctx->Extensions.ARB_texture_rg ||
- baseFormat != GL_RG)) {
+ if (!is_legal_color_format(ctx, baseFormat)) {
att_incomplete("bad format");
att->Complete = GL_FALSE;
return;
@@ -563,7 +596,8 @@ test_attachment_completeness(const struct gl_context *ctx, GLenum format,
* framebuffer is complete.
*/
void
-_mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffer *fb)
+_mesa_test_framebuffer_completeness(struct gl_context *ctx,
+ struct gl_framebuffer *fb)
{
GLuint numImages;
GLenum intFormat = GL_NONE; /* color buffers' internal format */
@@ -586,6 +620,7 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffe
for (i = -2; i < (GLint) ctx->Const.MaxColorAttachments; i++) {
struct gl_renderbuffer_attachment *att;
GLenum f;
+ gl_format mesaFormat;
/*
* XXX for ARB_fbo, only check color buffers that are named by
@@ -632,12 +667,10 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffe
minHeight = MIN2(minHeight, texImg->Height);
maxHeight = MAX2(maxHeight, texImg->Height);
f = texImg->_BaseFormat;
+ mesaFormat = texImg->TexFormat;
numImages++;
- if (f != GL_RGB && f != GL_RGBA && f != GL_DEPTH_COMPONENT
- && f != GL_DEPTH_STENCIL_EXT
- && (!ctx->Extensions.ARB_framebuffer_object || f != GL_ALPHA)
- && (!ctx->Extensions.ARB_texture_rg || f != GL_RED)
- && (!ctx->Extensions.ARB_texture_rg || f != GL_RG)) {
+ if (!is_legal_color_format(ctx, f) &&
+ !is_legal_depth_format(ctx, f)) {
fb->_Status = GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT;
fbo_incomplete("texture attachment incomplete", -1);
return;
@@ -649,6 +682,7 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffe
minHeight = MIN2(minHeight, att->Renderbuffer->Height);
maxHeight = MAX2(minHeight, att->Renderbuffer->Height);
f = att->Renderbuffer->InternalFormat;
+ mesaFormat = att->Renderbuffer->Format;
numImages++;
}
else {
@@ -661,6 +695,9 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffe
numSamples = att->Renderbuffer->NumSamples;
}
+ /* check if integer color */
+ fb->_IntegerColor = _mesa_is_format_integer_color(mesaFormat);
+
/* Error-check width, height, format, samples
*/
if (numImages == 1) {
diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h
index 9e18e538a6..2aace2ebd4 100644
--- a/src/mesa/main/fbobject.h
+++ b/src/mesa/main/fbobject.h
@@ -26,7 +26,10 @@
#ifndef FBOBJECT_H
#define FBOBJECT_H
-#include "mtypes.h"
+#include "glheader.h"
+
+struct gl_context;
+struct gl_texture_object;
extern void
_mesa_init_fbobjects(struct gl_context *ctx);
diff --git a/src/mesa/main/ffvertex_prog.h b/src/mesa/main/ffvertex_prog.h
index 72cd6ea115..837a15efca 100644
--- a/src/mesa/main/ffvertex_prog.h
+++ b/src/mesa/main/ffvertex_prog.h
@@ -30,7 +30,7 @@
#define FFVERTEX_PROG_H
-#include "main/mtypes.h"
+struct gl_context;
struct gl_vertex_program *
_mesa_get_fixed_func_vertex_program(struct gl_context *ctx);
diff --git a/src/mesa/main/fog.h b/src/mesa/main/fog.h
index 7df4f0b673..9191a4a54c 100644
--- a/src/mesa/main/fog.h
+++ b/src/mesa/main/fog.h
@@ -37,7 +37,10 @@
#define FOG_H
-#include "mtypes.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct gl_context;
#if _HAVE_FULL_GL
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 654ea038a5..88a04e888e 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -945,6 +945,7 @@ _mesa_get_format_bits(gl_format format, GLenum pname)
* GL_UNSIGNED_NORMALIZED = unsigned int representing [0,1]
* GL_SIGNED_NORMALIZED = signed int representing [-1, 1]
* GL_UNSIGNED_INT = an ordinary unsigned integer
+ * GL_INT = an ordinary signed integer
* GL_FLOAT = an ordinary float
*/
GLenum
@@ -1007,6 +1008,20 @@ _mesa_is_format_packed_depth_stencil(gl_format format)
/**
+ * Is the given format a signed/unsigned integer color format?
+ */
+GLboolean
+_mesa_is_format_integer_color(gl_format format)
+{
+ const struct gl_format_info *info = _mesa_get_format_info(format);
+ return (info->DataType == GL_INT || info->DataType == GL_UNSIGNED_INT) &&
+ info->BaseFormat != GL_DEPTH_COMPONENT &&
+ info->BaseFormat != GL_DEPTH_STENCIL &&
+ info->BaseFormat != GL_STENCIL_INDEX;
+}
+
+
+/**
* Return color encoding for given format.
* \return GL_LINEAR or GL_SRGB
*/
@@ -1179,6 +1194,7 @@ _mesa_format_to_type_and_comps(gl_format format,
case MESA_FORMAT_ARGB8888:
case MESA_FORMAT_ARGB8888_REV:
case MESA_FORMAT_XRGB8888:
+ case MESA_FORMAT_XRGB8888_REV:
*datatype = GL_UNSIGNED_BYTE;
*comps = 4;
return;
@@ -1205,6 +1221,11 @@ _mesa_format_to_type_and_comps(gl_format format,
*comps = 4;
return;
+ case MESA_FORMAT_RGBA5551:
+ *datatype = GL_UNSIGNED_SHORT_5_5_5_1;
+ *comps = 4;
+ return;
+
case MESA_FORMAT_AL88:
case MESA_FORMAT_AL88_REV:
case MESA_FORMAT_RG88:
@@ -1236,6 +1257,7 @@ _mesa_format_to_type_and_comps(gl_format format,
case MESA_FORMAT_I8:
case MESA_FORMAT_CI8:
case MESA_FORMAT_R8:
+ case MESA_FORMAT_S8:
*datatype = GL_UNSIGNED_BYTE;
*comps = 1;
return;
@@ -1281,12 +1303,26 @@ _mesa_format_to_type_and_comps(gl_format format,
*comps = 2;
return;
+ case MESA_FORMAT_SIGNED_R8:
+ *datatype = GL_BYTE;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_SIGNED_RG88:
+ *datatype = GL_BYTE;
+ *comps = 2;
+ return;
case MESA_FORMAT_SIGNED_RGBA8888:
case MESA_FORMAT_SIGNED_RGBA8888_REV:
+ case MESA_FORMAT_SIGNED_RGBX8888:
*datatype = GL_BYTE;
*comps = 4;
return;
+ case MESA_FORMAT_RGBA_16:
+ *datatype = GL_UNSIGNED_SHORT;
+ *comps = 4;
+ return;
+
case MESA_FORMAT_SIGNED_R_16:
*datatype = GL_SHORT;
*comps = 1;
@@ -1411,9 +1447,14 @@ _mesa_format_to_type_and_comps(gl_format format,
*comps = 4;
return;
-
+ case MESA_FORMAT_NONE:
+ case MESA_FORMAT_COUNT:
+ /* For debug builds, warn if any formats are not handled */
+#ifndef DEBUG
default:
- _mesa_problem(NULL, "bad format in _mesa_format_to_type_and_comps");
+#endif
+ _mesa_problem(NULL, "bad format %s in _mesa_format_to_type_and_comps",
+ _mesa_get_format_name(format));
*datatype = 0;
*comps = 1;
}
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index 7674d8eaa4..eeb460dabe 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -199,6 +199,9 @@ _mesa_is_format_compressed(gl_format format);
extern GLboolean
_mesa_is_format_packed_depth_stencil(gl_format format);
+extern GLboolean
+_mesa_is_format_integer_color(gl_format format);
+
extern GLenum
_mesa_get_format_color_encoding(gl_format format);
diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c
index 7d55a84dfc..5530c51c89 100644
--- a/src/mesa/main/framebuffer.c
+++ b/src/mesa/main/framebuffer.c
@@ -875,6 +875,16 @@ _mesa_source_buffer_exists(struct gl_context *ctx, GLenum format)
case GL_BGRA:
case GL_ABGR_EXT:
case GL_COLOR_INDEX:
+ case GL_RED_INTEGER_EXT:
+ case GL_GREEN_INTEGER_EXT:
+ case GL_BLUE_INTEGER_EXT:
+ case GL_ALPHA_INTEGER_EXT:
+ case GL_RGB_INTEGER_EXT:
+ case GL_RGBA_INTEGER_EXT:
+ case GL_BGR_INTEGER_EXT:
+ case GL_BGRA_INTEGER_EXT:
+ case GL_LUMINANCE_INTEGER_EXT:
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
if (ctx->ReadBuffer->_ColorReadBuffer == NULL) {
return GL_FALSE;
}
@@ -951,6 +961,16 @@ _mesa_dest_buffer_exists(struct gl_context *ctx, GLenum format)
case GL_BGRA:
case GL_ABGR_EXT:
case GL_COLOR_INDEX:
+ case GL_RED_INTEGER_EXT:
+ case GL_GREEN_INTEGER_EXT:
+ case GL_BLUE_INTEGER_EXT:
+ case GL_ALPHA_INTEGER_EXT:
+ case GL_RGB_INTEGER_EXT:
+ case GL_RGBA_INTEGER_EXT:
+ case GL_BGR_INTEGER_EXT:
+ case GL_BGRA_INTEGER_EXT:
+ case GL_LUMINANCE_INTEGER_EXT:
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
/* Nothing special since GL_DRAW_BUFFER could be GL_NONE. */
/* Could assert that colorbuffer has RedBits > 0 */
break;
diff --git a/src/mesa/main/framebuffer.h b/src/mesa/main/framebuffer.h
index 13722ea457..20e3ff56b5 100644
--- a/src/mesa/main/framebuffer.h
+++ b/src/mesa/main/framebuffer.h
@@ -26,7 +26,10 @@
#ifndef FRAMEBUFFER_H
#define FRAMEBUFFER_H
-#include "mtypes.h"
+#include "glheader.h"
+
+struct gl_config;
+struct gl_context;
extern struct gl_framebuffer *
_mesa_create_framebuffer(const struct gl_config *visual);
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index 29a21deebc..b54af6ee86 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -173,6 +173,7 @@ union value {
#define BUFFER_INT(field) BUFFER_FIELD(field, TYPE_INT)
#define BUFFER_ENUM(field) BUFFER_FIELD(field, TYPE_ENUM)
+#define BUFFER_BOOL(field) BUFFER_FIELD(field, TYPE_BOOLEAN)
#define CONTEXT_INT(field) CONTEXT_FIELD(field, TYPE_INT)
#define CONTEXT_INT2(field) CONTEXT_FIELD(field, TYPE_INT_2)
@@ -260,6 +261,17 @@ static const int extra_EXT_fog_coord_flush_current[] = {
EXTRA_END
};
+static const int extra_EXT_texture_integer[] = {
+ EXT(EXT_texture_integer),
+ EXTRA_END
+};
+
+static const int extra_EXT_gpu_shader4[] = {
+ EXT(EXT_gpu_shader4),
+ EXTRA_END
+};
+
+
EXTRA_EXT(ARB_multitexture);
EXTRA_EXT(ARB_texture_cube_map);
EXTRA_EXT(MESA_texture_array);
@@ -285,7 +297,7 @@ 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_EXT2(ARB_framebuffer_object, EXT_framebuffer_multisample);
EXTRA_EXT(EXT_framebuffer_object);
EXTRA_EXT(APPLE_vertex_array_object);
EXTRA_EXT(ARB_seamless_cube_map);
@@ -1130,7 +1142,7 @@ static const struct value_desc values[] = {
/* GL_ARB_framebuffer_object */
{ GL_MAX_SAMPLES, CONTEXT_INT(Const.MaxSamples),
- extra_ARB_framebuffer_object },
+ extra_ARB_framebuffer_object_EXT_framebuffer_multisample },
/* GL_APPLE_vertex_array_object */
{ GL_VERTEX_ARRAY_BINDING_APPLE, ARRAY_INT(Name),
@@ -1144,6 +1156,10 @@ static const struct value_desc values[] = {
{ GL_MAX_SERVER_WAIT_TIMEOUT,
CONTEXT_INT64(Const.MaxServerWaitTimeout), extra_ARB_sync },
+ /* GL_EXT_texture_integer */
+ { GL_RGBA_INTEGER_MODE_EXT, BUFFER_BOOL(_IntegerColor),
+ extra_EXT_texture_integer },
+
/* GL_EXT_transform_feedback */
{ GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, LOC_CUSTOM, TYPE_INT, 0,
extra_EXT_transform_feedback },
@@ -1187,6 +1203,14 @@ static const struct value_desc values[] = {
CONTEXT_INT(Const.GeometryProgram.MaxVertexVaryingComponents),
extra_ARB_geometry_shader4 },
+ /* GL_EXT_gpu_shader4 / GL 3.0 */
+ { GL_MIN_PROGRAM_TEXEL_OFFSET,
+ CONTEXT_INT(Const.MinProgramTexelOffset),
+ extra_EXT_gpu_shader4 },
+ { GL_MAX_PROGRAM_TEXEL_OFFSET,
+ CONTEXT_INT(Const.MaxProgramTexelOffset),
+ extra_EXT_gpu_shader4 },
+
/* GL 3.0 */
{ GL_NUM_EXTENSIONS, LOC_CUSTOM, TYPE_INT, 0, extra_version_30 },
{ GL_MAJOR_VERSION, CONTEXT_INT(VersionMajor), extra_version_30 },
@@ -1568,7 +1592,7 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
break;
case GL_CURRENT_PROGRAM:
v->value_int =
- ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0;
+ ctx->Shader.ActiveProgram ? ctx->Shader.ActiveProgram->Name : 0;
break;
case GL_READ_FRAMEBUFFER_BINDING_EXT:
v->value_int = ctx->ReadBuffer->Name;
diff --git a/src/mesa/main/glapidispatch.h b/src/mesa/main/glapidispatch.h
new file mode 100644
index 0000000000..87784269c5
--- /dev/null
+++ b/src/mesa/main/glapidispatch.h
@@ -0,0 +1,4548 @@
+/* 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)
+
+/* total number of offsets below */
+#define _gloffset_COUNT 881
+
+#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_ClampColor 430
+#define _gloffset_ClearBufferfi 431
+#define _gloffset_ClearBufferfv 432
+#define _gloffset_ClearBufferiv 433
+#define _gloffset_ClearBufferuiv 434
+#define _gloffset_GetStringi 435
+#define _gloffset_TexBuffer 436
+#define _gloffset_FramebufferTexture 437
+#define _gloffset_GetBufferParameteri64v 438
+#define _gloffset_GetInteger64i_v 439
+#define _gloffset_VertexAttribDivisor 440
+#define _gloffset_LoadTransposeMatrixdARB 441
+#define _gloffset_LoadTransposeMatrixfARB 442
+#define _gloffset_MultTransposeMatrixdARB 443
+#define _gloffset_MultTransposeMatrixfARB 444
+#define _gloffset_SampleCoverageARB 445
+#define _gloffset_CompressedTexImage1DARB 446
+#define _gloffset_CompressedTexImage2DARB 447
+#define _gloffset_CompressedTexImage3DARB 448
+#define _gloffset_CompressedTexSubImage1DARB 449
+#define _gloffset_CompressedTexSubImage2DARB 450
+#define _gloffset_CompressedTexSubImage3DARB 451
+#define _gloffset_GetCompressedTexImageARB 452
+#define _gloffset_DisableVertexAttribArrayARB 453
+#define _gloffset_EnableVertexAttribArrayARB 454
+#define _gloffset_GetProgramEnvParameterdvARB 455
+#define _gloffset_GetProgramEnvParameterfvARB 456
+#define _gloffset_GetProgramLocalParameterdvARB 457
+#define _gloffset_GetProgramLocalParameterfvARB 458
+#define _gloffset_GetProgramStringARB 459
+#define _gloffset_GetProgramivARB 460
+#define _gloffset_GetVertexAttribdvARB 461
+#define _gloffset_GetVertexAttribfvARB 462
+#define _gloffset_GetVertexAttribivARB 463
+#define _gloffset_ProgramEnvParameter4dARB 464
+#define _gloffset_ProgramEnvParameter4dvARB 465
+#define _gloffset_ProgramEnvParameter4fARB 466
+#define _gloffset_ProgramEnvParameter4fvARB 467
+#define _gloffset_ProgramLocalParameter4dARB 468
+#define _gloffset_ProgramLocalParameter4dvARB 469
+#define _gloffset_ProgramLocalParameter4fARB 470
+#define _gloffset_ProgramLocalParameter4fvARB 471
+#define _gloffset_ProgramStringARB 472
+#define _gloffset_VertexAttrib1dARB 473
+#define _gloffset_VertexAttrib1dvARB 474
+#define _gloffset_VertexAttrib1fARB 475
+#define _gloffset_VertexAttrib1fvARB 476
+#define _gloffset_VertexAttrib1sARB 477
+#define _gloffset_VertexAttrib1svARB 478
+#define _gloffset_VertexAttrib2dARB 479
+#define _gloffset_VertexAttrib2dvARB 480
+#define _gloffset_VertexAttrib2fARB 481
+#define _gloffset_VertexAttrib2fvARB 482
+#define _gloffset_VertexAttrib2sARB 483
+#define _gloffset_VertexAttrib2svARB 484
+#define _gloffset_VertexAttrib3dARB 485
+#define _gloffset_VertexAttrib3dvARB 486
+#define _gloffset_VertexAttrib3fARB 487
+#define _gloffset_VertexAttrib3fvARB 488
+#define _gloffset_VertexAttrib3sARB 489
+#define _gloffset_VertexAttrib3svARB 490
+#define _gloffset_VertexAttrib4NbvARB 491
+#define _gloffset_VertexAttrib4NivARB 492
+#define _gloffset_VertexAttrib4NsvARB 493
+#define _gloffset_VertexAttrib4NubARB 494
+#define _gloffset_VertexAttrib4NubvARB 495
+#define _gloffset_VertexAttrib4NuivARB 496
+#define _gloffset_VertexAttrib4NusvARB 497
+#define _gloffset_VertexAttrib4bvARB 498
+#define _gloffset_VertexAttrib4dARB 499
+#define _gloffset_VertexAttrib4dvARB 500
+#define _gloffset_VertexAttrib4fARB 501
+#define _gloffset_VertexAttrib4fvARB 502
+#define _gloffset_VertexAttrib4ivARB 503
+#define _gloffset_VertexAttrib4sARB 504
+#define _gloffset_VertexAttrib4svARB 505
+#define _gloffset_VertexAttrib4ubvARB 506
+#define _gloffset_VertexAttrib4uivARB 507
+#define _gloffset_VertexAttrib4usvARB 508
+#define _gloffset_VertexAttribPointerARB 509
+#define _gloffset_BindBufferARB 510
+#define _gloffset_BufferDataARB 511
+#define _gloffset_BufferSubDataARB 512
+#define _gloffset_DeleteBuffersARB 513
+#define _gloffset_GenBuffersARB 514
+#define _gloffset_GetBufferParameterivARB 515
+#define _gloffset_GetBufferPointervARB 516
+#define _gloffset_GetBufferSubDataARB 517
+#define _gloffset_IsBufferARB 518
+#define _gloffset_MapBufferARB 519
+#define _gloffset_UnmapBufferARB 520
+#define _gloffset_BeginQueryARB 521
+#define _gloffset_DeleteQueriesARB 522
+#define _gloffset_EndQueryARB 523
+#define _gloffset_GenQueriesARB 524
+#define _gloffset_GetQueryObjectivARB 525
+#define _gloffset_GetQueryObjectuivARB 526
+#define _gloffset_GetQueryivARB 527
+#define _gloffset_IsQueryARB 528
+#define _gloffset_AttachObjectARB 529
+#define _gloffset_CompileShaderARB 530
+#define _gloffset_CreateProgramObjectARB 531
+#define _gloffset_CreateShaderObjectARB 532
+#define _gloffset_DeleteObjectARB 533
+#define _gloffset_DetachObjectARB 534
+#define _gloffset_GetActiveUniformARB 535
+#define _gloffset_GetAttachedObjectsARB 536
+#define _gloffset_GetHandleARB 537
+#define _gloffset_GetInfoLogARB 538
+#define _gloffset_GetObjectParameterfvARB 539
+#define _gloffset_GetObjectParameterivARB 540
+#define _gloffset_GetShaderSourceARB 541
+#define _gloffset_GetUniformLocationARB 542
+#define _gloffset_GetUniformfvARB 543
+#define _gloffset_GetUniformivARB 544
+#define _gloffset_LinkProgramARB 545
+#define _gloffset_ShaderSourceARB 546
+#define _gloffset_Uniform1fARB 547
+#define _gloffset_Uniform1fvARB 548
+#define _gloffset_Uniform1iARB 549
+#define _gloffset_Uniform1ivARB 550
+#define _gloffset_Uniform2fARB 551
+#define _gloffset_Uniform2fvARB 552
+#define _gloffset_Uniform2iARB 553
+#define _gloffset_Uniform2ivARB 554
+#define _gloffset_Uniform3fARB 555
+#define _gloffset_Uniform3fvARB 556
+#define _gloffset_Uniform3iARB 557
+#define _gloffset_Uniform3ivARB 558
+#define _gloffset_Uniform4fARB 559
+#define _gloffset_Uniform4fvARB 560
+#define _gloffset_Uniform4iARB 561
+#define _gloffset_Uniform4ivARB 562
+#define _gloffset_UniformMatrix2fvARB 563
+#define _gloffset_UniformMatrix3fvARB 564
+#define _gloffset_UniformMatrix4fvARB 565
+#define _gloffset_UseProgramObjectARB 566
+#define _gloffset_ValidateProgramARB 567
+#define _gloffset_BindAttribLocationARB 568
+#define _gloffset_GetActiveAttribARB 569
+#define _gloffset_GetAttribLocationARB 570
+#define _gloffset_DrawBuffersARB 571
+#define _gloffset_DrawArraysInstancedARB 572
+#define _gloffset_DrawElementsInstancedARB 573
+#define _gloffset_RenderbufferStorageMultisample 574
+#define _gloffset_FramebufferTextureARB 575
+#define _gloffset_FramebufferTextureFaceARB 576
+#define _gloffset_ProgramParameteriARB 577
+#define _gloffset_FlushMappedBufferRange 578
+#define _gloffset_MapBufferRange 579
+#define _gloffset_BindVertexArray 580
+#define _gloffset_GenVertexArrays 581
+#define _gloffset_CopyBufferSubData 582
+#define _gloffset_ClientWaitSync 583
+#define _gloffset_DeleteSync 584
+#define _gloffset_FenceSync 585
+#define _gloffset_GetInteger64v 586
+#define _gloffset_GetSynciv 587
+#define _gloffset_IsSync 588
+#define _gloffset_WaitSync 589
+#define _gloffset_DrawElementsBaseVertex 590
+#define _gloffset_DrawRangeElementsBaseVertex 591
+#define _gloffset_MultiDrawElementsBaseVertex 592
+#define _gloffset_BindTransformFeedback 593
+#define _gloffset_DeleteTransformFeedbacks 594
+#define _gloffset_DrawTransformFeedback 595
+#define _gloffset_GenTransformFeedbacks 596
+#define _gloffset_IsTransformFeedback 597
+#define _gloffset_PauseTransformFeedback 598
+#define _gloffset_ResumeTransformFeedback 599
+#define _gloffset_PolygonOffsetEXT 600
+#define _gloffset_GetPixelTexGenParameterfvSGIS 601
+#define _gloffset_GetPixelTexGenParameterivSGIS 602
+#define _gloffset_PixelTexGenParameterfSGIS 603
+#define _gloffset_PixelTexGenParameterfvSGIS 604
+#define _gloffset_PixelTexGenParameteriSGIS 605
+#define _gloffset_PixelTexGenParameterivSGIS 606
+#define _gloffset_SampleMaskSGIS 607
+#define _gloffset_SamplePatternSGIS 608
+#define _gloffset_ColorPointerEXT 609
+#define _gloffset_EdgeFlagPointerEXT 610
+#define _gloffset_IndexPointerEXT 611
+#define _gloffset_NormalPointerEXT 612
+#define _gloffset_TexCoordPointerEXT 613
+#define _gloffset_VertexPointerEXT 614
+#define _gloffset_PointParameterfEXT 615
+#define _gloffset_PointParameterfvEXT 616
+#define _gloffset_LockArraysEXT 617
+#define _gloffset_UnlockArraysEXT 618
+#define _gloffset_SecondaryColor3bEXT 619
+#define _gloffset_SecondaryColor3bvEXT 620
+#define _gloffset_SecondaryColor3dEXT 621
+#define _gloffset_SecondaryColor3dvEXT 622
+#define _gloffset_SecondaryColor3fEXT 623
+#define _gloffset_SecondaryColor3fvEXT 624
+#define _gloffset_SecondaryColor3iEXT 625
+#define _gloffset_SecondaryColor3ivEXT 626
+#define _gloffset_SecondaryColor3sEXT 627
+#define _gloffset_SecondaryColor3svEXT 628
+#define _gloffset_SecondaryColor3ubEXT 629
+#define _gloffset_SecondaryColor3ubvEXT 630
+#define _gloffset_SecondaryColor3uiEXT 631
+#define _gloffset_SecondaryColor3uivEXT 632
+#define _gloffset_SecondaryColor3usEXT 633
+#define _gloffset_SecondaryColor3usvEXT 634
+#define _gloffset_SecondaryColorPointerEXT 635
+#define _gloffset_MultiDrawArraysEXT 636
+#define _gloffset_MultiDrawElementsEXT 637
+#define _gloffset_FogCoordPointerEXT 638
+#define _gloffset_FogCoorddEXT 639
+#define _gloffset_FogCoorddvEXT 640
+#define _gloffset_FogCoordfEXT 641
+#define _gloffset_FogCoordfvEXT 642
+#define _gloffset_PixelTexGenSGIX 643
+#define _gloffset_BlendFuncSeparateEXT 644
+#define _gloffset_FlushVertexArrayRangeNV 645
+#define _gloffset_VertexArrayRangeNV 646
+#define _gloffset_CombinerInputNV 647
+#define _gloffset_CombinerOutputNV 648
+#define _gloffset_CombinerParameterfNV 649
+#define _gloffset_CombinerParameterfvNV 650
+#define _gloffset_CombinerParameteriNV 651
+#define _gloffset_CombinerParameterivNV 652
+#define _gloffset_FinalCombinerInputNV 653
+#define _gloffset_GetCombinerInputParameterfvNV 654
+#define _gloffset_GetCombinerInputParameterivNV 655
+#define _gloffset_GetCombinerOutputParameterfvNV 656
+#define _gloffset_GetCombinerOutputParameterivNV 657
+#define _gloffset_GetFinalCombinerInputParameterfvNV 658
+#define _gloffset_GetFinalCombinerInputParameterivNV 659
+#define _gloffset_ResizeBuffersMESA 660
+#define _gloffset_WindowPos2dMESA 661
+#define _gloffset_WindowPos2dvMESA 662
+#define _gloffset_WindowPos2fMESA 663
+#define _gloffset_WindowPos2fvMESA 664
+#define _gloffset_WindowPos2iMESA 665
+#define _gloffset_WindowPos2ivMESA 666
+#define _gloffset_WindowPos2sMESA 667
+#define _gloffset_WindowPos2svMESA 668
+#define _gloffset_WindowPos3dMESA 669
+#define _gloffset_WindowPos3dvMESA 670
+#define _gloffset_WindowPos3fMESA 671
+#define _gloffset_WindowPos3fvMESA 672
+#define _gloffset_WindowPos3iMESA 673
+#define _gloffset_WindowPos3ivMESA 674
+#define _gloffset_WindowPos3sMESA 675
+#define _gloffset_WindowPos3svMESA 676
+#define _gloffset_WindowPos4dMESA 677
+#define _gloffset_WindowPos4dvMESA 678
+#define _gloffset_WindowPos4fMESA 679
+#define _gloffset_WindowPos4fvMESA 680
+#define _gloffset_WindowPos4iMESA 681
+#define _gloffset_WindowPos4ivMESA 682
+#define _gloffset_WindowPos4sMESA 683
+#define _gloffset_WindowPos4svMESA 684
+#define _gloffset_MultiModeDrawArraysIBM 685
+#define _gloffset_MultiModeDrawElementsIBM 686
+#define _gloffset_DeleteFencesNV 687
+#define _gloffset_FinishFenceNV 688
+#define _gloffset_GenFencesNV 689
+#define _gloffset_GetFenceivNV 690
+#define _gloffset_IsFenceNV 691
+#define _gloffset_SetFenceNV 692
+#define _gloffset_TestFenceNV 693
+#define _gloffset_AreProgramsResidentNV 694
+#define _gloffset_BindProgramNV 695
+#define _gloffset_DeleteProgramsNV 696
+#define _gloffset_ExecuteProgramNV 697
+#define _gloffset_GenProgramsNV 698
+#define _gloffset_GetProgramParameterdvNV 699
+#define _gloffset_GetProgramParameterfvNV 700
+#define _gloffset_GetProgramStringNV 701
+#define _gloffset_GetProgramivNV 702
+#define _gloffset_GetTrackMatrixivNV 703
+#define _gloffset_GetVertexAttribPointervNV 704
+#define _gloffset_GetVertexAttribdvNV 705
+#define _gloffset_GetVertexAttribfvNV 706
+#define _gloffset_GetVertexAttribivNV 707
+#define _gloffset_IsProgramNV 708
+#define _gloffset_LoadProgramNV 709
+#define _gloffset_ProgramParameters4dvNV 710
+#define _gloffset_ProgramParameters4fvNV 711
+#define _gloffset_RequestResidentProgramsNV 712
+#define _gloffset_TrackMatrixNV 713
+#define _gloffset_VertexAttrib1dNV 714
+#define _gloffset_VertexAttrib1dvNV 715
+#define _gloffset_VertexAttrib1fNV 716
+#define _gloffset_VertexAttrib1fvNV 717
+#define _gloffset_VertexAttrib1sNV 718
+#define _gloffset_VertexAttrib1svNV 719
+#define _gloffset_VertexAttrib2dNV 720
+#define _gloffset_VertexAttrib2dvNV 721
+#define _gloffset_VertexAttrib2fNV 722
+#define _gloffset_VertexAttrib2fvNV 723
+#define _gloffset_VertexAttrib2sNV 724
+#define _gloffset_VertexAttrib2svNV 725
+#define _gloffset_VertexAttrib3dNV 726
+#define _gloffset_VertexAttrib3dvNV 727
+#define _gloffset_VertexAttrib3fNV 728
+#define _gloffset_VertexAttrib3fvNV 729
+#define _gloffset_VertexAttrib3sNV 730
+#define _gloffset_VertexAttrib3svNV 731
+#define _gloffset_VertexAttrib4dNV 732
+#define _gloffset_VertexAttrib4dvNV 733
+#define _gloffset_VertexAttrib4fNV 734
+#define _gloffset_VertexAttrib4fvNV 735
+#define _gloffset_VertexAttrib4sNV 736
+#define _gloffset_VertexAttrib4svNV 737
+#define _gloffset_VertexAttrib4ubNV 738
+#define _gloffset_VertexAttrib4ubvNV 739
+#define _gloffset_VertexAttribPointerNV 740
+#define _gloffset_VertexAttribs1dvNV 741
+#define _gloffset_VertexAttribs1fvNV 742
+#define _gloffset_VertexAttribs1svNV 743
+#define _gloffset_VertexAttribs2dvNV 744
+#define _gloffset_VertexAttribs2fvNV 745
+#define _gloffset_VertexAttribs2svNV 746
+#define _gloffset_VertexAttribs3dvNV 747
+#define _gloffset_VertexAttribs3fvNV 748
+#define _gloffset_VertexAttribs3svNV 749
+#define _gloffset_VertexAttribs4dvNV 750
+#define _gloffset_VertexAttribs4fvNV 751
+#define _gloffset_VertexAttribs4svNV 752
+#define _gloffset_VertexAttribs4ubvNV 753
+#define _gloffset_GetTexBumpParameterfvATI 754
+#define _gloffset_GetTexBumpParameterivATI 755
+#define _gloffset_TexBumpParameterfvATI 756
+#define _gloffset_TexBumpParameterivATI 757
+#define _gloffset_AlphaFragmentOp1ATI 758
+#define _gloffset_AlphaFragmentOp2ATI 759
+#define _gloffset_AlphaFragmentOp3ATI 760
+#define _gloffset_BeginFragmentShaderATI 761
+#define _gloffset_BindFragmentShaderATI 762
+#define _gloffset_ColorFragmentOp1ATI 763
+#define _gloffset_ColorFragmentOp2ATI 764
+#define _gloffset_ColorFragmentOp3ATI 765
+#define _gloffset_DeleteFragmentShaderATI 766
+#define _gloffset_EndFragmentShaderATI 767
+#define _gloffset_GenFragmentShadersATI 768
+#define _gloffset_PassTexCoordATI 769
+#define _gloffset_SampleMapATI 770
+#define _gloffset_SetFragmentShaderConstantATI 771
+#define _gloffset_PointParameteriNV 772
+#define _gloffset_PointParameterivNV 773
+#define _gloffset_ActiveStencilFaceEXT 774
+#define _gloffset_BindVertexArrayAPPLE 775
+#define _gloffset_DeleteVertexArraysAPPLE 776
+#define _gloffset_GenVertexArraysAPPLE 777
+#define _gloffset_IsVertexArrayAPPLE 778
+#define _gloffset_GetProgramNamedParameterdvNV 779
+#define _gloffset_GetProgramNamedParameterfvNV 780
+#define _gloffset_ProgramNamedParameter4dNV 781
+#define _gloffset_ProgramNamedParameter4dvNV 782
+#define _gloffset_ProgramNamedParameter4fNV 783
+#define _gloffset_ProgramNamedParameter4fvNV 784
+#define _gloffset_PrimitiveRestartIndexNV 785
+#define _gloffset_PrimitiveRestartNV 786
+#define _gloffset_DepthBoundsEXT 787
+#define _gloffset_BlendEquationSeparateEXT 788
+#define _gloffset_BindFramebufferEXT 789
+#define _gloffset_BindRenderbufferEXT 790
+#define _gloffset_CheckFramebufferStatusEXT 791
+#define _gloffset_DeleteFramebuffersEXT 792
+#define _gloffset_DeleteRenderbuffersEXT 793
+#define _gloffset_FramebufferRenderbufferEXT 794
+#define _gloffset_FramebufferTexture1DEXT 795
+#define _gloffset_FramebufferTexture2DEXT 796
+#define _gloffset_FramebufferTexture3DEXT 797
+#define _gloffset_GenFramebuffersEXT 798
+#define _gloffset_GenRenderbuffersEXT 799
+#define _gloffset_GenerateMipmapEXT 800
+#define _gloffset_GetFramebufferAttachmentParameterivEXT 801
+#define _gloffset_GetRenderbufferParameterivEXT 802
+#define _gloffset_IsFramebufferEXT 803
+#define _gloffset_IsRenderbufferEXT 804
+#define _gloffset_RenderbufferStorageEXT 805
+#define _gloffset_BlitFramebufferEXT 806
+#define _gloffset_BufferParameteriAPPLE 807
+#define _gloffset_FlushMappedBufferRangeAPPLE 808
+#define _gloffset_BindFragDataLocationEXT 809
+#define _gloffset_GetFragDataLocationEXT 810
+#define _gloffset_GetUniformuivEXT 811
+#define _gloffset_GetVertexAttribIivEXT 812
+#define _gloffset_GetVertexAttribIuivEXT 813
+#define _gloffset_Uniform1uiEXT 814
+#define _gloffset_Uniform1uivEXT 815
+#define _gloffset_Uniform2uiEXT 816
+#define _gloffset_Uniform2uivEXT 817
+#define _gloffset_Uniform3uiEXT 818
+#define _gloffset_Uniform3uivEXT 819
+#define _gloffset_Uniform4uiEXT 820
+#define _gloffset_Uniform4uivEXT 821
+#define _gloffset_VertexAttribI1iEXT 822
+#define _gloffset_VertexAttribI1ivEXT 823
+#define _gloffset_VertexAttribI1uiEXT 824
+#define _gloffset_VertexAttribI1uivEXT 825
+#define _gloffset_VertexAttribI2iEXT 826
+#define _gloffset_VertexAttribI2ivEXT 827
+#define _gloffset_VertexAttribI2uiEXT 828
+#define _gloffset_VertexAttribI2uivEXT 829
+#define _gloffset_VertexAttribI3iEXT 830
+#define _gloffset_VertexAttribI3ivEXT 831
+#define _gloffset_VertexAttribI3uiEXT 832
+#define _gloffset_VertexAttribI3uivEXT 833
+#define _gloffset_VertexAttribI4bvEXT 834
+#define _gloffset_VertexAttribI4iEXT 835
+#define _gloffset_VertexAttribI4ivEXT 836
+#define _gloffset_VertexAttribI4svEXT 837
+#define _gloffset_VertexAttribI4ubvEXT 838
+#define _gloffset_VertexAttribI4uiEXT 839
+#define _gloffset_VertexAttribI4uivEXT 840
+#define _gloffset_VertexAttribI4usvEXT 841
+#define _gloffset_VertexAttribIPointerEXT 842
+#define _gloffset_FramebufferTextureLayerEXT 843
+#define _gloffset_ColorMaskIndexedEXT 844
+#define _gloffset_DisableIndexedEXT 845
+#define _gloffset_EnableIndexedEXT 846
+#define _gloffset_GetBooleanIndexedvEXT 847
+#define _gloffset_GetIntegerIndexedvEXT 848
+#define _gloffset_IsEnabledIndexedEXT 849
+#define _gloffset_ClearColorIiEXT 850
+#define _gloffset_ClearColorIuiEXT 851
+#define _gloffset_GetTexParameterIivEXT 852
+#define _gloffset_GetTexParameterIuivEXT 853
+#define _gloffset_TexParameterIivEXT 854
+#define _gloffset_TexParameterIuivEXT 855
+#define _gloffset_BeginConditionalRenderNV 856
+#define _gloffset_EndConditionalRenderNV 857
+#define _gloffset_BeginTransformFeedbackEXT 858
+#define _gloffset_BindBufferBaseEXT 859
+#define _gloffset_BindBufferOffsetEXT 860
+#define _gloffset_BindBufferRangeEXT 861
+#define _gloffset_EndTransformFeedbackEXT 862
+#define _gloffset_GetTransformFeedbackVaryingEXT 863
+#define _gloffset_TransformFeedbackVaryingsEXT 864
+#define _gloffset_ProvokingVertexEXT 865
+#define _gloffset_GetTexParameterPointervAPPLE 866
+#define _gloffset_TextureRangeAPPLE 867
+#define _gloffset_GetObjectParameterivAPPLE 868
+#define _gloffset_ObjectPurgeableAPPLE 869
+#define _gloffset_ObjectUnpurgeableAPPLE 870
+#define _gloffset_ActiveProgramEXT 871
+#define _gloffset_CreateShaderProgramEXT 872
+#define _gloffset_UseShaderProgramEXT 873
+#define _gloffset_StencilFuncSeparateATI 874
+#define _gloffset_ProgramEnvParameters4fvEXT 875
+#define _gloffset_ProgramLocalParameters4fvEXT 876
+#define _gloffset_GetQueryObjecti64vEXT 877
+#define _gloffset_GetQueryObjectui64vEXT 878
+#define _gloffset_EGLImageTargetRenderbufferStorageOES 879
+#define _gloffset_EGLImageTargetTexture2DOES 880
+
+#else /* !_GLAPI_USE_REMAP_TABLE */
+
+#define driDispatchRemapTable_size 473
+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 ClampColor_remap_index 22
+#define ClearBufferfi_remap_index 23
+#define ClearBufferfv_remap_index 24
+#define ClearBufferiv_remap_index 25
+#define ClearBufferuiv_remap_index 26
+#define GetStringi_remap_index 27
+#define TexBuffer_remap_index 28
+#define FramebufferTexture_remap_index 29
+#define GetBufferParameteri64v_remap_index 30
+#define GetInteger64i_v_remap_index 31
+#define VertexAttribDivisor_remap_index 32
+#define LoadTransposeMatrixdARB_remap_index 33
+#define LoadTransposeMatrixfARB_remap_index 34
+#define MultTransposeMatrixdARB_remap_index 35
+#define MultTransposeMatrixfARB_remap_index 36
+#define SampleCoverageARB_remap_index 37
+#define CompressedTexImage1DARB_remap_index 38
+#define CompressedTexImage2DARB_remap_index 39
+#define CompressedTexImage3DARB_remap_index 40
+#define CompressedTexSubImage1DARB_remap_index 41
+#define CompressedTexSubImage2DARB_remap_index 42
+#define CompressedTexSubImage3DARB_remap_index 43
+#define GetCompressedTexImageARB_remap_index 44
+#define DisableVertexAttribArrayARB_remap_index 45
+#define EnableVertexAttribArrayARB_remap_index 46
+#define GetProgramEnvParameterdvARB_remap_index 47
+#define GetProgramEnvParameterfvARB_remap_index 48
+#define GetProgramLocalParameterdvARB_remap_index 49
+#define GetProgramLocalParameterfvARB_remap_index 50
+#define GetProgramStringARB_remap_index 51
+#define GetProgramivARB_remap_index 52
+#define GetVertexAttribdvARB_remap_index 53
+#define GetVertexAttribfvARB_remap_index 54
+#define GetVertexAttribivARB_remap_index 55
+#define ProgramEnvParameter4dARB_remap_index 56
+#define ProgramEnvParameter4dvARB_remap_index 57
+#define ProgramEnvParameter4fARB_remap_index 58
+#define ProgramEnvParameter4fvARB_remap_index 59
+#define ProgramLocalParameter4dARB_remap_index 60
+#define ProgramLocalParameter4dvARB_remap_index 61
+#define ProgramLocalParameter4fARB_remap_index 62
+#define ProgramLocalParameter4fvARB_remap_index 63
+#define ProgramStringARB_remap_index 64
+#define VertexAttrib1dARB_remap_index 65
+#define VertexAttrib1dvARB_remap_index 66
+#define VertexAttrib1fARB_remap_index 67
+#define VertexAttrib1fvARB_remap_index 68
+#define VertexAttrib1sARB_remap_index 69
+#define VertexAttrib1svARB_remap_index 70
+#define VertexAttrib2dARB_remap_index 71
+#define VertexAttrib2dvARB_remap_index 72
+#define VertexAttrib2fARB_remap_index 73
+#define VertexAttrib2fvARB_remap_index 74
+#define VertexAttrib2sARB_remap_index 75
+#define VertexAttrib2svARB_remap_index 76
+#define VertexAttrib3dARB_remap_index 77
+#define VertexAttrib3dvARB_remap_index 78
+#define VertexAttrib3fARB_remap_index 79
+#define VertexAttrib3fvARB_remap_index 80
+#define VertexAttrib3sARB_remap_index 81
+#define VertexAttrib3svARB_remap_index 82
+#define VertexAttrib4NbvARB_remap_index 83
+#define VertexAttrib4NivARB_remap_index 84
+#define VertexAttrib4NsvARB_remap_index 85
+#define VertexAttrib4NubARB_remap_index 86
+#define VertexAttrib4NubvARB_remap_index 87
+#define VertexAttrib4NuivARB_remap_index 88
+#define VertexAttrib4NusvARB_remap_index 89
+#define VertexAttrib4bvARB_remap_index 90
+#define VertexAttrib4dARB_remap_index 91
+#define VertexAttrib4dvARB_remap_index 92
+#define VertexAttrib4fARB_remap_index 93
+#define VertexAttrib4fvARB_remap_index 94
+#define VertexAttrib4ivARB_remap_index 95
+#define VertexAttrib4sARB_remap_index 96
+#define VertexAttrib4svARB_remap_index 97
+#define VertexAttrib4ubvARB_remap_index 98
+#define VertexAttrib4uivARB_remap_index 99
+#define VertexAttrib4usvARB_remap_index 100
+#define VertexAttribPointerARB_remap_index 101
+#define BindBufferARB_remap_index 102
+#define BufferDataARB_remap_index 103
+#define BufferSubDataARB_remap_index 104
+#define DeleteBuffersARB_remap_index 105
+#define GenBuffersARB_remap_index 106
+#define GetBufferParameterivARB_remap_index 107
+#define GetBufferPointervARB_remap_index 108
+#define GetBufferSubDataARB_remap_index 109
+#define IsBufferARB_remap_index 110
+#define MapBufferARB_remap_index 111
+#define UnmapBufferARB_remap_index 112
+#define BeginQueryARB_remap_index 113
+#define DeleteQueriesARB_remap_index 114
+#define EndQueryARB_remap_index 115
+#define GenQueriesARB_remap_index 116
+#define GetQueryObjectivARB_remap_index 117
+#define GetQueryObjectuivARB_remap_index 118
+#define GetQueryivARB_remap_index 119
+#define IsQueryARB_remap_index 120
+#define AttachObjectARB_remap_index 121
+#define CompileShaderARB_remap_index 122
+#define CreateProgramObjectARB_remap_index 123
+#define CreateShaderObjectARB_remap_index 124
+#define DeleteObjectARB_remap_index 125
+#define DetachObjectARB_remap_index 126
+#define GetActiveUniformARB_remap_index 127
+#define GetAttachedObjectsARB_remap_index 128
+#define GetHandleARB_remap_index 129
+#define GetInfoLogARB_remap_index 130
+#define GetObjectParameterfvARB_remap_index 131
+#define GetObjectParameterivARB_remap_index 132
+#define GetShaderSourceARB_remap_index 133
+#define GetUniformLocationARB_remap_index 134
+#define GetUniformfvARB_remap_index 135
+#define GetUniformivARB_remap_index 136
+#define LinkProgramARB_remap_index 137
+#define ShaderSourceARB_remap_index 138
+#define Uniform1fARB_remap_index 139
+#define Uniform1fvARB_remap_index 140
+#define Uniform1iARB_remap_index 141
+#define Uniform1ivARB_remap_index 142
+#define Uniform2fARB_remap_index 143
+#define Uniform2fvARB_remap_index 144
+#define Uniform2iARB_remap_index 145
+#define Uniform2ivARB_remap_index 146
+#define Uniform3fARB_remap_index 147
+#define Uniform3fvARB_remap_index 148
+#define Uniform3iARB_remap_index 149
+#define Uniform3ivARB_remap_index 150
+#define Uniform4fARB_remap_index 151
+#define Uniform4fvARB_remap_index 152
+#define Uniform4iARB_remap_index 153
+#define Uniform4ivARB_remap_index 154
+#define UniformMatrix2fvARB_remap_index 155
+#define UniformMatrix3fvARB_remap_index 156
+#define UniformMatrix4fvARB_remap_index 157
+#define UseProgramObjectARB_remap_index 158
+#define ValidateProgramARB_remap_index 159
+#define BindAttribLocationARB_remap_index 160
+#define GetActiveAttribARB_remap_index 161
+#define GetAttribLocationARB_remap_index 162
+#define DrawBuffersARB_remap_index 163
+#define DrawArraysInstancedARB_remap_index 164
+#define DrawElementsInstancedARB_remap_index 165
+#define RenderbufferStorageMultisample_remap_index 166
+#define FramebufferTextureARB_remap_index 167
+#define FramebufferTextureFaceARB_remap_index 168
+#define ProgramParameteriARB_remap_index 169
+#define FlushMappedBufferRange_remap_index 170
+#define MapBufferRange_remap_index 171
+#define BindVertexArray_remap_index 172
+#define GenVertexArrays_remap_index 173
+#define CopyBufferSubData_remap_index 174
+#define ClientWaitSync_remap_index 175
+#define DeleteSync_remap_index 176
+#define FenceSync_remap_index 177
+#define GetInteger64v_remap_index 178
+#define GetSynciv_remap_index 179
+#define IsSync_remap_index 180
+#define WaitSync_remap_index 181
+#define DrawElementsBaseVertex_remap_index 182
+#define DrawRangeElementsBaseVertex_remap_index 183
+#define MultiDrawElementsBaseVertex_remap_index 184
+#define BindTransformFeedback_remap_index 185
+#define DeleteTransformFeedbacks_remap_index 186
+#define DrawTransformFeedback_remap_index 187
+#define GenTransformFeedbacks_remap_index 188
+#define IsTransformFeedback_remap_index 189
+#define PauseTransformFeedback_remap_index 190
+#define ResumeTransformFeedback_remap_index 191
+#define PolygonOffsetEXT_remap_index 192
+#define GetPixelTexGenParameterfvSGIS_remap_index 193
+#define GetPixelTexGenParameterivSGIS_remap_index 194
+#define PixelTexGenParameterfSGIS_remap_index 195
+#define PixelTexGenParameterfvSGIS_remap_index 196
+#define PixelTexGenParameteriSGIS_remap_index 197
+#define PixelTexGenParameterivSGIS_remap_index 198
+#define SampleMaskSGIS_remap_index 199
+#define SamplePatternSGIS_remap_index 200
+#define ColorPointerEXT_remap_index 201
+#define EdgeFlagPointerEXT_remap_index 202
+#define IndexPointerEXT_remap_index 203
+#define NormalPointerEXT_remap_index 204
+#define TexCoordPointerEXT_remap_index 205
+#define VertexPointerEXT_remap_index 206
+#define PointParameterfEXT_remap_index 207
+#define PointParameterfvEXT_remap_index 208
+#define LockArraysEXT_remap_index 209
+#define UnlockArraysEXT_remap_index 210
+#define SecondaryColor3bEXT_remap_index 211
+#define SecondaryColor3bvEXT_remap_index 212
+#define SecondaryColor3dEXT_remap_index 213
+#define SecondaryColor3dvEXT_remap_index 214
+#define SecondaryColor3fEXT_remap_index 215
+#define SecondaryColor3fvEXT_remap_index 216
+#define SecondaryColor3iEXT_remap_index 217
+#define SecondaryColor3ivEXT_remap_index 218
+#define SecondaryColor3sEXT_remap_index 219
+#define SecondaryColor3svEXT_remap_index 220
+#define SecondaryColor3ubEXT_remap_index 221
+#define SecondaryColor3ubvEXT_remap_index 222
+#define SecondaryColor3uiEXT_remap_index 223
+#define SecondaryColor3uivEXT_remap_index 224
+#define SecondaryColor3usEXT_remap_index 225
+#define SecondaryColor3usvEXT_remap_index 226
+#define SecondaryColorPointerEXT_remap_index 227
+#define MultiDrawArraysEXT_remap_index 228
+#define MultiDrawElementsEXT_remap_index 229
+#define FogCoordPointerEXT_remap_index 230
+#define FogCoorddEXT_remap_index 231
+#define FogCoorddvEXT_remap_index 232
+#define FogCoordfEXT_remap_index 233
+#define FogCoordfvEXT_remap_index 234
+#define PixelTexGenSGIX_remap_index 235
+#define BlendFuncSeparateEXT_remap_index 236
+#define FlushVertexArrayRangeNV_remap_index 237
+#define VertexArrayRangeNV_remap_index 238
+#define CombinerInputNV_remap_index 239
+#define CombinerOutputNV_remap_index 240
+#define CombinerParameterfNV_remap_index 241
+#define CombinerParameterfvNV_remap_index 242
+#define CombinerParameteriNV_remap_index 243
+#define CombinerParameterivNV_remap_index 244
+#define FinalCombinerInputNV_remap_index 245
+#define GetCombinerInputParameterfvNV_remap_index 246
+#define GetCombinerInputParameterivNV_remap_index 247
+#define GetCombinerOutputParameterfvNV_remap_index 248
+#define GetCombinerOutputParameterivNV_remap_index 249
+#define GetFinalCombinerInputParameterfvNV_remap_index 250
+#define GetFinalCombinerInputParameterivNV_remap_index 251
+#define ResizeBuffersMESA_remap_index 252
+#define WindowPos2dMESA_remap_index 253
+#define WindowPos2dvMESA_remap_index 254
+#define WindowPos2fMESA_remap_index 255
+#define WindowPos2fvMESA_remap_index 256
+#define WindowPos2iMESA_remap_index 257
+#define WindowPos2ivMESA_remap_index 258
+#define WindowPos2sMESA_remap_index 259
+#define WindowPos2svMESA_remap_index 260
+#define WindowPos3dMESA_remap_index 261
+#define WindowPos3dvMESA_remap_index 262
+#define WindowPos3fMESA_remap_index 263
+#define WindowPos3fvMESA_remap_index 264
+#define WindowPos3iMESA_remap_index 265
+#define WindowPos3ivMESA_remap_index 266
+#define WindowPos3sMESA_remap_index 267
+#define WindowPos3svMESA_remap_index 268
+#define WindowPos4dMESA_remap_index 269
+#define WindowPos4dvMESA_remap_index 270
+#define WindowPos4fMESA_remap_index 271
+#define WindowPos4fvMESA_remap_index 272
+#define WindowPos4iMESA_remap_index 273
+#define WindowPos4ivMESA_remap_index 274
+#define WindowPos4sMESA_remap_index 275
+#define WindowPos4svMESA_remap_index 276
+#define MultiModeDrawArraysIBM_remap_index 277
+#define MultiModeDrawElementsIBM_remap_index 278
+#define DeleteFencesNV_remap_index 279
+#define FinishFenceNV_remap_index 280
+#define GenFencesNV_remap_index 281
+#define GetFenceivNV_remap_index 282
+#define IsFenceNV_remap_index 283
+#define SetFenceNV_remap_index 284
+#define TestFenceNV_remap_index 285
+#define AreProgramsResidentNV_remap_index 286
+#define BindProgramNV_remap_index 287
+#define DeleteProgramsNV_remap_index 288
+#define ExecuteProgramNV_remap_index 289
+#define GenProgramsNV_remap_index 290
+#define GetProgramParameterdvNV_remap_index 291
+#define GetProgramParameterfvNV_remap_index 292
+#define GetProgramStringNV_remap_index 293
+#define GetProgramivNV_remap_index 294
+#define GetTrackMatrixivNV_remap_index 295
+#define GetVertexAttribPointervNV_remap_index 296
+#define GetVertexAttribdvNV_remap_index 297
+#define GetVertexAttribfvNV_remap_index 298
+#define GetVertexAttribivNV_remap_index 299
+#define IsProgramNV_remap_index 300
+#define LoadProgramNV_remap_index 301
+#define ProgramParameters4dvNV_remap_index 302
+#define ProgramParameters4fvNV_remap_index 303
+#define RequestResidentProgramsNV_remap_index 304
+#define TrackMatrixNV_remap_index 305
+#define VertexAttrib1dNV_remap_index 306
+#define VertexAttrib1dvNV_remap_index 307
+#define VertexAttrib1fNV_remap_index 308
+#define VertexAttrib1fvNV_remap_index 309
+#define VertexAttrib1sNV_remap_index 310
+#define VertexAttrib1svNV_remap_index 311
+#define VertexAttrib2dNV_remap_index 312
+#define VertexAttrib2dvNV_remap_index 313
+#define VertexAttrib2fNV_remap_index 314
+#define VertexAttrib2fvNV_remap_index 315
+#define VertexAttrib2sNV_remap_index 316
+#define VertexAttrib2svNV_remap_index 317
+#define VertexAttrib3dNV_remap_index 318
+#define VertexAttrib3dvNV_remap_index 319
+#define VertexAttrib3fNV_remap_index 320
+#define VertexAttrib3fvNV_remap_index 321
+#define VertexAttrib3sNV_remap_index 322
+#define VertexAttrib3svNV_remap_index 323
+#define VertexAttrib4dNV_remap_index 324
+#define VertexAttrib4dvNV_remap_index 325
+#define VertexAttrib4fNV_remap_index 326
+#define VertexAttrib4fvNV_remap_index 327
+#define VertexAttrib4sNV_remap_index 328
+#define VertexAttrib4svNV_remap_index 329
+#define VertexAttrib4ubNV_remap_index 330
+#define VertexAttrib4ubvNV_remap_index 331
+#define VertexAttribPointerNV_remap_index 332
+#define VertexAttribs1dvNV_remap_index 333
+#define VertexAttribs1fvNV_remap_index 334
+#define VertexAttribs1svNV_remap_index 335
+#define VertexAttribs2dvNV_remap_index 336
+#define VertexAttribs2fvNV_remap_index 337
+#define VertexAttribs2svNV_remap_index 338
+#define VertexAttribs3dvNV_remap_index 339
+#define VertexAttribs3fvNV_remap_index 340
+#define VertexAttribs3svNV_remap_index 341
+#define VertexAttribs4dvNV_remap_index 342
+#define VertexAttribs4fvNV_remap_index 343
+#define VertexAttribs4svNV_remap_index 344
+#define VertexAttribs4ubvNV_remap_index 345
+#define GetTexBumpParameterfvATI_remap_index 346
+#define GetTexBumpParameterivATI_remap_index 347
+#define TexBumpParameterfvATI_remap_index 348
+#define TexBumpParameterivATI_remap_index 349
+#define AlphaFragmentOp1ATI_remap_index 350
+#define AlphaFragmentOp2ATI_remap_index 351
+#define AlphaFragmentOp3ATI_remap_index 352
+#define BeginFragmentShaderATI_remap_index 353
+#define BindFragmentShaderATI_remap_index 354
+#define ColorFragmentOp1ATI_remap_index 355
+#define ColorFragmentOp2ATI_remap_index 356
+#define ColorFragmentOp3ATI_remap_index 357
+#define DeleteFragmentShaderATI_remap_index 358
+#define EndFragmentShaderATI_remap_index 359
+#define GenFragmentShadersATI_remap_index 360
+#define PassTexCoordATI_remap_index 361
+#define SampleMapATI_remap_index 362
+#define SetFragmentShaderConstantATI_remap_index 363
+#define PointParameteriNV_remap_index 364
+#define PointParameterivNV_remap_index 365
+#define ActiveStencilFaceEXT_remap_index 366
+#define BindVertexArrayAPPLE_remap_index 367
+#define DeleteVertexArraysAPPLE_remap_index 368
+#define GenVertexArraysAPPLE_remap_index 369
+#define IsVertexArrayAPPLE_remap_index 370
+#define GetProgramNamedParameterdvNV_remap_index 371
+#define GetProgramNamedParameterfvNV_remap_index 372
+#define ProgramNamedParameter4dNV_remap_index 373
+#define ProgramNamedParameter4dvNV_remap_index 374
+#define ProgramNamedParameter4fNV_remap_index 375
+#define ProgramNamedParameter4fvNV_remap_index 376
+#define PrimitiveRestartIndexNV_remap_index 377
+#define PrimitiveRestartNV_remap_index 378
+#define DepthBoundsEXT_remap_index 379
+#define BlendEquationSeparateEXT_remap_index 380
+#define BindFramebufferEXT_remap_index 381
+#define BindRenderbufferEXT_remap_index 382
+#define CheckFramebufferStatusEXT_remap_index 383
+#define DeleteFramebuffersEXT_remap_index 384
+#define DeleteRenderbuffersEXT_remap_index 385
+#define FramebufferRenderbufferEXT_remap_index 386
+#define FramebufferTexture1DEXT_remap_index 387
+#define FramebufferTexture2DEXT_remap_index 388
+#define FramebufferTexture3DEXT_remap_index 389
+#define GenFramebuffersEXT_remap_index 390
+#define GenRenderbuffersEXT_remap_index 391
+#define GenerateMipmapEXT_remap_index 392
+#define GetFramebufferAttachmentParameterivEXT_remap_index 393
+#define GetRenderbufferParameterivEXT_remap_index 394
+#define IsFramebufferEXT_remap_index 395
+#define IsRenderbufferEXT_remap_index 396
+#define RenderbufferStorageEXT_remap_index 397
+#define BlitFramebufferEXT_remap_index 398
+#define BufferParameteriAPPLE_remap_index 399
+#define FlushMappedBufferRangeAPPLE_remap_index 400
+#define BindFragDataLocationEXT_remap_index 401
+#define GetFragDataLocationEXT_remap_index 402
+#define GetUniformuivEXT_remap_index 403
+#define GetVertexAttribIivEXT_remap_index 404
+#define GetVertexAttribIuivEXT_remap_index 405
+#define Uniform1uiEXT_remap_index 406
+#define Uniform1uivEXT_remap_index 407
+#define Uniform2uiEXT_remap_index 408
+#define Uniform2uivEXT_remap_index 409
+#define Uniform3uiEXT_remap_index 410
+#define Uniform3uivEXT_remap_index 411
+#define Uniform4uiEXT_remap_index 412
+#define Uniform4uivEXT_remap_index 413
+#define VertexAttribI1iEXT_remap_index 414
+#define VertexAttribI1ivEXT_remap_index 415
+#define VertexAttribI1uiEXT_remap_index 416
+#define VertexAttribI1uivEXT_remap_index 417
+#define VertexAttribI2iEXT_remap_index 418
+#define VertexAttribI2ivEXT_remap_index 419
+#define VertexAttribI2uiEXT_remap_index 420
+#define VertexAttribI2uivEXT_remap_index 421
+#define VertexAttribI3iEXT_remap_index 422
+#define VertexAttribI3ivEXT_remap_index 423
+#define VertexAttribI3uiEXT_remap_index 424
+#define VertexAttribI3uivEXT_remap_index 425
+#define VertexAttribI4bvEXT_remap_index 426
+#define VertexAttribI4iEXT_remap_index 427
+#define VertexAttribI4ivEXT_remap_index 428
+#define VertexAttribI4svEXT_remap_index 429
+#define VertexAttribI4ubvEXT_remap_index 430
+#define VertexAttribI4uiEXT_remap_index 431
+#define VertexAttribI4uivEXT_remap_index 432
+#define VertexAttribI4usvEXT_remap_index 433
+#define VertexAttribIPointerEXT_remap_index 434
+#define FramebufferTextureLayerEXT_remap_index 435
+#define ColorMaskIndexedEXT_remap_index 436
+#define DisableIndexedEXT_remap_index 437
+#define EnableIndexedEXT_remap_index 438
+#define GetBooleanIndexedvEXT_remap_index 439
+#define GetIntegerIndexedvEXT_remap_index 440
+#define IsEnabledIndexedEXT_remap_index 441
+#define ClearColorIiEXT_remap_index 442
+#define ClearColorIuiEXT_remap_index 443
+#define GetTexParameterIivEXT_remap_index 444
+#define GetTexParameterIuivEXT_remap_index 445
+#define TexParameterIivEXT_remap_index 446
+#define TexParameterIuivEXT_remap_index 447
+#define BeginConditionalRenderNV_remap_index 448
+#define EndConditionalRenderNV_remap_index 449
+#define BeginTransformFeedbackEXT_remap_index 450
+#define BindBufferBaseEXT_remap_index 451
+#define BindBufferOffsetEXT_remap_index 452
+#define BindBufferRangeEXT_remap_index 453
+#define EndTransformFeedbackEXT_remap_index 454
+#define GetTransformFeedbackVaryingEXT_remap_index 455
+#define TransformFeedbackVaryingsEXT_remap_index 456
+#define ProvokingVertexEXT_remap_index 457
+#define GetTexParameterPointervAPPLE_remap_index 458
+#define TextureRangeAPPLE_remap_index 459
+#define GetObjectParameterivAPPLE_remap_index 460
+#define ObjectPurgeableAPPLE_remap_index 461
+#define ObjectUnpurgeableAPPLE_remap_index 462
+#define ActiveProgramEXT_remap_index 463
+#define CreateShaderProgramEXT_remap_index 464
+#define UseShaderProgramEXT_remap_index 465
+#define StencilFuncSeparateATI_remap_index 466
+#define ProgramEnvParameters4fvEXT_remap_index 467
+#define ProgramLocalParameters4fvEXT_remap_index 468
+#define GetQueryObjecti64vEXT_remap_index 469
+#define GetQueryObjectui64vEXT_remap_index 470
+#define EGLImageTargetRenderbufferStorageOES_remap_index 471
+#define EGLImageTargetTexture2DOES_remap_index 472
+
+#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_ClampColor driDispatchRemapTable[ClampColor_remap_index]
+#define _gloffset_ClearBufferfi driDispatchRemapTable[ClearBufferfi_remap_index]
+#define _gloffset_ClearBufferfv driDispatchRemapTable[ClearBufferfv_remap_index]
+#define _gloffset_ClearBufferiv driDispatchRemapTable[ClearBufferiv_remap_index]
+#define _gloffset_ClearBufferuiv driDispatchRemapTable[ClearBufferuiv_remap_index]
+#define _gloffset_GetStringi driDispatchRemapTable[GetStringi_remap_index]
+#define _gloffset_TexBuffer driDispatchRemapTable[TexBuffer_remap_index]
+#define _gloffset_FramebufferTexture driDispatchRemapTable[FramebufferTexture_remap_index]
+#define _gloffset_GetBufferParameteri64v driDispatchRemapTable[GetBufferParameteri64v_remap_index]
+#define _gloffset_GetInteger64i_v driDispatchRemapTable[GetInteger64i_v_remap_index]
+#define _gloffset_VertexAttribDivisor driDispatchRemapTable[VertexAttribDivisor_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_DrawArraysInstancedARB driDispatchRemapTable[DrawArraysInstancedARB_remap_index]
+#define _gloffset_DrawElementsInstancedARB driDispatchRemapTable[DrawElementsInstancedARB_remap_index]
+#define _gloffset_RenderbufferStorageMultisample driDispatchRemapTable[RenderbufferStorageMultisample_remap_index]
+#define _gloffset_FramebufferTextureARB driDispatchRemapTable[FramebufferTextureARB_remap_index]
+#define _gloffset_FramebufferTextureFaceARB driDispatchRemapTable[FramebufferTextureFaceARB_remap_index]
+#define _gloffset_ProgramParameteriARB driDispatchRemapTable[ProgramParameteriARB_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_BindTransformFeedback driDispatchRemapTable[BindTransformFeedback_remap_index]
+#define _gloffset_DeleteTransformFeedbacks driDispatchRemapTable[DeleteTransformFeedbacks_remap_index]
+#define _gloffset_DrawTransformFeedback driDispatchRemapTable[DrawTransformFeedback_remap_index]
+#define _gloffset_GenTransformFeedbacks driDispatchRemapTable[GenTransformFeedbacks_remap_index]
+#define _gloffset_IsTransformFeedback driDispatchRemapTable[IsTransformFeedback_remap_index]
+#define _gloffset_PauseTransformFeedback driDispatchRemapTable[PauseTransformFeedback_remap_index]
+#define _gloffset_ResumeTransformFeedback driDispatchRemapTable[ResumeTransformFeedback_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_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_PrimitiveRestartIndexNV driDispatchRemapTable[PrimitiveRestartIndexNV_remap_index]
+#define _gloffset_PrimitiveRestartNV driDispatchRemapTable[PrimitiveRestartNV_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_BindFragDataLocationEXT driDispatchRemapTable[BindFragDataLocationEXT_remap_index]
+#define _gloffset_GetFragDataLocationEXT driDispatchRemapTable[GetFragDataLocationEXT_remap_index]
+#define _gloffset_GetUniformuivEXT driDispatchRemapTable[GetUniformuivEXT_remap_index]
+#define _gloffset_GetVertexAttribIivEXT driDispatchRemapTable[GetVertexAttribIivEXT_remap_index]
+#define _gloffset_GetVertexAttribIuivEXT driDispatchRemapTable[GetVertexAttribIuivEXT_remap_index]
+#define _gloffset_Uniform1uiEXT driDispatchRemapTable[Uniform1uiEXT_remap_index]
+#define _gloffset_Uniform1uivEXT driDispatchRemapTable[Uniform1uivEXT_remap_index]
+#define _gloffset_Uniform2uiEXT driDispatchRemapTable[Uniform2uiEXT_remap_index]
+#define _gloffset_Uniform2uivEXT driDispatchRemapTable[Uniform2uivEXT_remap_index]
+#define _gloffset_Uniform3uiEXT driDispatchRemapTable[Uniform3uiEXT_remap_index]
+#define _gloffset_Uniform3uivEXT driDispatchRemapTable[Uniform3uivEXT_remap_index]
+#define _gloffset_Uniform4uiEXT driDispatchRemapTable[Uniform4uiEXT_remap_index]
+#define _gloffset_Uniform4uivEXT driDispatchRemapTable[Uniform4uivEXT_remap_index]
+#define _gloffset_VertexAttribI1iEXT driDispatchRemapTable[VertexAttribI1iEXT_remap_index]
+#define _gloffset_VertexAttribI1ivEXT driDispatchRemapTable[VertexAttribI1ivEXT_remap_index]
+#define _gloffset_VertexAttribI1uiEXT driDispatchRemapTable[VertexAttribI1uiEXT_remap_index]
+#define _gloffset_VertexAttribI1uivEXT driDispatchRemapTable[VertexAttribI1uivEXT_remap_index]
+#define _gloffset_VertexAttribI2iEXT driDispatchRemapTable[VertexAttribI2iEXT_remap_index]
+#define _gloffset_VertexAttribI2ivEXT driDispatchRemapTable[VertexAttribI2ivEXT_remap_index]
+#define _gloffset_VertexAttribI2uiEXT driDispatchRemapTable[VertexAttribI2uiEXT_remap_index]
+#define _gloffset_VertexAttribI2uivEXT driDispatchRemapTable[VertexAttribI2uivEXT_remap_index]
+#define _gloffset_VertexAttribI3iEXT driDispatchRemapTable[VertexAttribI3iEXT_remap_index]
+#define _gloffset_VertexAttribI3ivEXT driDispatchRemapTable[VertexAttribI3ivEXT_remap_index]
+#define _gloffset_VertexAttribI3uiEXT driDispatchRemapTable[VertexAttribI3uiEXT_remap_index]
+#define _gloffset_VertexAttribI3uivEXT driDispatchRemapTable[VertexAttribI3uivEXT_remap_index]
+#define _gloffset_VertexAttribI4bvEXT driDispatchRemapTable[VertexAttribI4bvEXT_remap_index]
+#define _gloffset_VertexAttribI4iEXT driDispatchRemapTable[VertexAttribI4iEXT_remap_index]
+#define _gloffset_VertexAttribI4ivEXT driDispatchRemapTable[VertexAttribI4ivEXT_remap_index]
+#define _gloffset_VertexAttribI4svEXT driDispatchRemapTable[VertexAttribI4svEXT_remap_index]
+#define _gloffset_VertexAttribI4ubvEXT driDispatchRemapTable[VertexAttribI4ubvEXT_remap_index]
+#define _gloffset_VertexAttribI4uiEXT driDispatchRemapTable[VertexAttribI4uiEXT_remap_index]
+#define _gloffset_VertexAttribI4uivEXT driDispatchRemapTable[VertexAttribI4uivEXT_remap_index]
+#define _gloffset_VertexAttribI4usvEXT driDispatchRemapTable[VertexAttribI4usvEXT_remap_index]
+#define _gloffset_VertexAttribIPointerEXT driDispatchRemapTable[VertexAttribIPointerEXT_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_ClearColorIiEXT driDispatchRemapTable[ClearColorIiEXT_remap_index]
+#define _gloffset_ClearColorIuiEXT driDispatchRemapTable[ClearColorIuiEXT_remap_index]
+#define _gloffset_GetTexParameterIivEXT driDispatchRemapTable[GetTexParameterIivEXT_remap_index]
+#define _gloffset_GetTexParameterIuivEXT driDispatchRemapTable[GetTexParameterIuivEXT_remap_index]
+#define _gloffset_TexParameterIivEXT driDispatchRemapTable[TexParameterIivEXT_remap_index]
+#define _gloffset_TexParameterIuivEXT driDispatchRemapTable[TexParameterIuivEXT_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_ActiveProgramEXT driDispatchRemapTable[ActiveProgramEXT_remap_index]
+#define _gloffset_CreateShaderProgramEXT driDispatchRemapTable[CreateShaderProgramEXT_remap_index]
+#define _gloffset_UseShaderProgramEXT driDispatchRemapTable[UseShaderProgramEXT_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 /* _GLAPI_USE_REMAP_TABLE */
+
+#define CALL_NewList(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), _gloffset_NewList, parameters)
+#define GET_NewList(disp) GET_by_offset(disp, _gloffset_NewList)
+#define SET_NewList(disp, fn) SET_by_offset(disp, _gloffset_NewList, fn)
+#define CALL_EndList(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_EndList, parameters)
+#define GET_EndList(disp) GET_by_offset(disp, _gloffset_EndList)
+#define SET_EndList(disp, fn) SET_by_offset(disp, _gloffset_EndList, fn)
+#define CALL_CallList(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_CallList, parameters)
+#define GET_CallList(disp) GET_by_offset(disp, _gloffset_CallList)
+#define SET_CallList(disp, fn) SET_by_offset(disp, _gloffset_CallList, fn)
+#define CALL_CallLists(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLenum, const GLvoid *)), _gloffset_CallLists, parameters)
+#define GET_CallLists(disp) GET_by_offset(disp, _gloffset_CallLists)
+#define SET_CallLists(disp, fn) SET_by_offset(disp, _gloffset_CallLists, fn)
+#define CALL_DeleteLists(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei)), _gloffset_DeleteLists, parameters)
+#define GET_DeleteLists(disp) GET_by_offset(disp, _gloffset_DeleteLists)
+#define SET_DeleteLists(disp, fn) SET_by_offset(disp, _gloffset_DeleteLists, fn)
+#define CALL_GenLists(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLsizei)), _gloffset_GenLists, parameters)
+#define GET_GenLists(disp) GET_by_offset(disp, _gloffset_GenLists)
+#define SET_GenLists(disp, fn) SET_by_offset(disp, _gloffset_GenLists, fn)
+#define CALL_ListBase(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_ListBase, parameters)
+#define GET_ListBase(disp) GET_by_offset(disp, _gloffset_ListBase)
+#define SET_ListBase(disp, fn) SET_by_offset(disp, _gloffset_ListBase, fn)
+#define CALL_Begin(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_Begin, parameters)
+#define GET_Begin(disp) GET_by_offset(disp, _gloffset_Begin)
+#define SET_Begin(disp, fn) SET_by_offset(disp, _gloffset_Begin, fn)
+#define CALL_Bitmap(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLsizei, GLfloat, GLfloat, GLfloat, GLfloat, const GLubyte *)), _gloffset_Bitmap, parameters)
+#define GET_Bitmap(disp) GET_by_offset(disp, _gloffset_Bitmap)
+#define SET_Bitmap(disp, fn) SET_by_offset(disp, _gloffset_Bitmap, fn)
+#define CALL_Color3b(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbyte, GLbyte, GLbyte)), _gloffset_Color3b, parameters)
+#define GET_Color3b(disp) GET_by_offset(disp, _gloffset_Color3b)
+#define SET_Color3b(disp, fn) SET_by_offset(disp, _gloffset_Color3b, fn)
+#define CALL_Color3bv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLbyte *)), _gloffset_Color3bv, parameters)
+#define GET_Color3bv(disp) GET_by_offset(disp, _gloffset_Color3bv)
+#define SET_Color3bv(disp, fn) SET_by_offset(disp, _gloffset_Color3bv, fn)
+#define CALL_Color3d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_Color3d, parameters)
+#define GET_Color3d(disp) GET_by_offset(disp, _gloffset_Color3d)
+#define SET_Color3d(disp, fn) SET_by_offset(disp, _gloffset_Color3d, fn)
+#define CALL_Color3dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Color3dv, parameters)
+#define GET_Color3dv(disp) GET_by_offset(disp, _gloffset_Color3dv)
+#define SET_Color3dv(disp, fn) SET_by_offset(disp, _gloffset_Color3dv, fn)
+#define CALL_Color3f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_Color3f, parameters)
+#define GET_Color3f(disp) GET_by_offset(disp, _gloffset_Color3f)
+#define SET_Color3f(disp, fn) SET_by_offset(disp, _gloffset_Color3f, fn)
+#define CALL_Color3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Color3fv, parameters)
+#define GET_Color3fv(disp) GET_by_offset(disp, _gloffset_Color3fv)
+#define SET_Color3fv(disp, fn) SET_by_offset(disp, _gloffset_Color3fv, fn)
+#define CALL_Color3i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_Color3i, parameters)
+#define GET_Color3i(disp) GET_by_offset(disp, _gloffset_Color3i)
+#define SET_Color3i(disp, fn) SET_by_offset(disp, _gloffset_Color3i, fn)
+#define CALL_Color3iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Color3iv, parameters)
+#define GET_Color3iv(disp) GET_by_offset(disp, _gloffset_Color3iv)
+#define SET_Color3iv(disp, fn) SET_by_offset(disp, _gloffset_Color3iv, fn)
+#define CALL_Color3s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_Color3s, parameters)
+#define GET_Color3s(disp) GET_by_offset(disp, _gloffset_Color3s)
+#define SET_Color3s(disp, fn) SET_by_offset(disp, _gloffset_Color3s, fn)
+#define CALL_Color3sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Color3sv, parameters)
+#define GET_Color3sv(disp) GET_by_offset(disp, _gloffset_Color3sv)
+#define SET_Color3sv(disp, fn) SET_by_offset(disp, _gloffset_Color3sv, fn)
+#define CALL_Color3ub(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte, GLubyte, GLubyte)), _gloffset_Color3ub, parameters)
+#define GET_Color3ub(disp) GET_by_offset(disp, _gloffset_Color3ub)
+#define SET_Color3ub(disp, fn) SET_by_offset(disp, _gloffset_Color3ub, fn)
+#define CALL_Color3ubv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), _gloffset_Color3ubv, parameters)
+#define GET_Color3ubv(disp) GET_by_offset(disp, _gloffset_Color3ubv)
+#define SET_Color3ubv(disp, fn) SET_by_offset(disp, _gloffset_Color3ubv, fn)
+#define CALL_Color3ui(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint)), _gloffset_Color3ui, parameters)
+#define GET_Color3ui(disp) GET_by_offset(disp, _gloffset_Color3ui)
+#define SET_Color3ui(disp, fn) SET_by_offset(disp, _gloffset_Color3ui, fn)
+#define CALL_Color3uiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLuint *)), _gloffset_Color3uiv, parameters)
+#define GET_Color3uiv(disp) GET_by_offset(disp, _gloffset_Color3uiv)
+#define SET_Color3uiv(disp, fn) SET_by_offset(disp, _gloffset_Color3uiv, fn)
+#define CALL_Color3us(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLushort, GLushort, GLushort)), _gloffset_Color3us, parameters)
+#define GET_Color3us(disp) GET_by_offset(disp, _gloffset_Color3us)
+#define SET_Color3us(disp, fn) SET_by_offset(disp, _gloffset_Color3us, fn)
+#define CALL_Color3usv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLushort *)), _gloffset_Color3usv, parameters)
+#define GET_Color3usv(disp) GET_by_offset(disp, _gloffset_Color3usv)
+#define SET_Color3usv(disp, fn) SET_by_offset(disp, _gloffset_Color3usv, fn)
+#define CALL_Color4b(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbyte, GLbyte, GLbyte, GLbyte)), _gloffset_Color4b, parameters)
+#define GET_Color4b(disp) GET_by_offset(disp, _gloffset_Color4b)
+#define SET_Color4b(disp, fn) SET_by_offset(disp, _gloffset_Color4b, fn)
+#define CALL_Color4bv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLbyte *)), _gloffset_Color4bv, parameters)
+#define GET_Color4bv(disp) GET_by_offset(disp, _gloffset_Color4bv)
+#define SET_Color4bv(disp, fn) SET_by_offset(disp, _gloffset_Color4bv, fn)
+#define CALL_Color4d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Color4d, parameters)
+#define GET_Color4d(disp) GET_by_offset(disp, _gloffset_Color4d)
+#define SET_Color4d(disp, fn) SET_by_offset(disp, _gloffset_Color4d, fn)
+#define CALL_Color4dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Color4dv, parameters)
+#define GET_Color4dv(disp) GET_by_offset(disp, _gloffset_Color4dv)
+#define SET_Color4dv(disp, fn) SET_by_offset(disp, _gloffset_Color4dv, fn)
+#define CALL_Color4f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_Color4f, parameters)
+#define GET_Color4f(disp) GET_by_offset(disp, _gloffset_Color4f)
+#define SET_Color4f(disp, fn) SET_by_offset(disp, _gloffset_Color4f, fn)
+#define CALL_Color4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Color4fv, parameters)
+#define GET_Color4fv(disp) GET_by_offset(disp, _gloffset_Color4fv)
+#define SET_Color4fv(disp, fn) SET_by_offset(disp, _gloffset_Color4fv, fn)
+#define CALL_Color4i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_Color4i, parameters)
+#define GET_Color4i(disp) GET_by_offset(disp, _gloffset_Color4i)
+#define SET_Color4i(disp, fn) SET_by_offset(disp, _gloffset_Color4i, fn)
+#define CALL_Color4iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Color4iv, parameters)
+#define GET_Color4iv(disp) GET_by_offset(disp, _gloffset_Color4iv)
+#define SET_Color4iv(disp, fn) SET_by_offset(disp, _gloffset_Color4iv, fn)
+#define CALL_Color4s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_Color4s, parameters)
+#define GET_Color4s(disp) GET_by_offset(disp, _gloffset_Color4s)
+#define SET_Color4s(disp, fn) SET_by_offset(disp, _gloffset_Color4s, fn)
+#define CALL_Color4sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Color4sv, parameters)
+#define GET_Color4sv(disp) GET_by_offset(disp, _gloffset_Color4sv)
+#define SET_Color4sv(disp, fn) SET_by_offset(disp, _gloffset_Color4sv, fn)
+#define CALL_Color4ub(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte, GLubyte, GLubyte, GLubyte)), _gloffset_Color4ub, parameters)
+#define GET_Color4ub(disp) GET_by_offset(disp, _gloffset_Color4ub)
+#define SET_Color4ub(disp, fn) SET_by_offset(disp, _gloffset_Color4ub, fn)
+#define CALL_Color4ubv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), _gloffset_Color4ubv, parameters)
+#define GET_Color4ubv(disp) GET_by_offset(disp, _gloffset_Color4ubv)
+#define SET_Color4ubv(disp, fn) SET_by_offset(disp, _gloffset_Color4ubv, fn)
+#define CALL_Color4ui(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint, GLuint)), _gloffset_Color4ui, parameters)
+#define GET_Color4ui(disp) GET_by_offset(disp, _gloffset_Color4ui)
+#define SET_Color4ui(disp, fn) SET_by_offset(disp, _gloffset_Color4ui, fn)
+#define CALL_Color4uiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLuint *)), _gloffset_Color4uiv, parameters)
+#define GET_Color4uiv(disp) GET_by_offset(disp, _gloffset_Color4uiv)
+#define SET_Color4uiv(disp, fn) SET_by_offset(disp, _gloffset_Color4uiv, fn)
+#define CALL_Color4us(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLushort, GLushort, GLushort, GLushort)), _gloffset_Color4us, parameters)
+#define GET_Color4us(disp) GET_by_offset(disp, _gloffset_Color4us)
+#define SET_Color4us(disp, fn) SET_by_offset(disp, _gloffset_Color4us, fn)
+#define CALL_Color4usv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLushort *)), _gloffset_Color4usv, parameters)
+#define GET_Color4usv(disp) GET_by_offset(disp, _gloffset_Color4usv)
+#define SET_Color4usv(disp, fn) SET_by_offset(disp, _gloffset_Color4usv, fn)
+#define CALL_EdgeFlag(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLboolean)), _gloffset_EdgeFlag, parameters)
+#define GET_EdgeFlag(disp) GET_by_offset(disp, _gloffset_EdgeFlag)
+#define SET_EdgeFlag(disp, fn) SET_by_offset(disp, _gloffset_EdgeFlag, fn)
+#define CALL_EdgeFlagv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLboolean *)), _gloffset_EdgeFlagv, parameters)
+#define GET_EdgeFlagv(disp) GET_by_offset(disp, _gloffset_EdgeFlagv)
+#define SET_EdgeFlagv(disp, fn) SET_by_offset(disp, _gloffset_EdgeFlagv, fn)
+#define CALL_End(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_End, parameters)
+#define GET_End(disp) GET_by_offset(disp, _gloffset_End)
+#define SET_End(disp, fn) SET_by_offset(disp, _gloffset_End, fn)
+#define CALL_Indexd(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble)), _gloffset_Indexd, parameters)
+#define GET_Indexd(disp) GET_by_offset(disp, _gloffset_Indexd)
+#define SET_Indexd(disp, fn) SET_by_offset(disp, _gloffset_Indexd, fn)
+#define CALL_Indexdv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Indexdv, parameters)
+#define GET_Indexdv(disp) GET_by_offset(disp, _gloffset_Indexdv)
+#define SET_Indexdv(disp, fn) SET_by_offset(disp, _gloffset_Indexdv, fn)
+#define CALL_Indexf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_Indexf, parameters)
+#define GET_Indexf(disp) GET_by_offset(disp, _gloffset_Indexf)
+#define SET_Indexf(disp, fn) SET_by_offset(disp, _gloffset_Indexf, fn)
+#define CALL_Indexfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Indexfv, parameters)
+#define GET_Indexfv(disp) GET_by_offset(disp, _gloffset_Indexfv)
+#define SET_Indexfv(disp, fn) SET_by_offset(disp, _gloffset_Indexfv, fn)
+#define CALL_Indexi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint)), _gloffset_Indexi, parameters)
+#define GET_Indexi(disp) GET_by_offset(disp, _gloffset_Indexi)
+#define SET_Indexi(disp, fn) SET_by_offset(disp, _gloffset_Indexi, fn)
+#define CALL_Indexiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Indexiv, parameters)
+#define GET_Indexiv(disp) GET_by_offset(disp, _gloffset_Indexiv)
+#define SET_Indexiv(disp, fn) SET_by_offset(disp, _gloffset_Indexiv, fn)
+#define CALL_Indexs(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort)), _gloffset_Indexs, parameters)
+#define GET_Indexs(disp) GET_by_offset(disp, _gloffset_Indexs)
+#define SET_Indexs(disp, fn) SET_by_offset(disp, _gloffset_Indexs, fn)
+#define CALL_Indexsv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Indexsv, parameters)
+#define GET_Indexsv(disp) GET_by_offset(disp, _gloffset_Indexsv)
+#define SET_Indexsv(disp, fn) SET_by_offset(disp, _gloffset_Indexsv, fn)
+#define CALL_Normal3b(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbyte, GLbyte, GLbyte)), _gloffset_Normal3b, parameters)
+#define GET_Normal3b(disp) GET_by_offset(disp, _gloffset_Normal3b)
+#define SET_Normal3b(disp, fn) SET_by_offset(disp, _gloffset_Normal3b, fn)
+#define CALL_Normal3bv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLbyte *)), _gloffset_Normal3bv, parameters)
+#define GET_Normal3bv(disp) GET_by_offset(disp, _gloffset_Normal3bv)
+#define SET_Normal3bv(disp, fn) SET_by_offset(disp, _gloffset_Normal3bv, fn)
+#define CALL_Normal3d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_Normal3d, parameters)
+#define GET_Normal3d(disp) GET_by_offset(disp, _gloffset_Normal3d)
+#define SET_Normal3d(disp, fn) SET_by_offset(disp, _gloffset_Normal3d, fn)
+#define CALL_Normal3dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Normal3dv, parameters)
+#define GET_Normal3dv(disp) GET_by_offset(disp, _gloffset_Normal3dv)
+#define SET_Normal3dv(disp, fn) SET_by_offset(disp, _gloffset_Normal3dv, fn)
+#define CALL_Normal3f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_Normal3f, parameters)
+#define GET_Normal3f(disp) GET_by_offset(disp, _gloffset_Normal3f)
+#define SET_Normal3f(disp, fn) SET_by_offset(disp, _gloffset_Normal3f, fn)
+#define CALL_Normal3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Normal3fv, parameters)
+#define GET_Normal3fv(disp) GET_by_offset(disp, _gloffset_Normal3fv)
+#define SET_Normal3fv(disp, fn) SET_by_offset(disp, _gloffset_Normal3fv, fn)
+#define CALL_Normal3i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_Normal3i, parameters)
+#define GET_Normal3i(disp) GET_by_offset(disp, _gloffset_Normal3i)
+#define SET_Normal3i(disp, fn) SET_by_offset(disp, _gloffset_Normal3i, fn)
+#define CALL_Normal3iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Normal3iv, parameters)
+#define GET_Normal3iv(disp) GET_by_offset(disp, _gloffset_Normal3iv)
+#define SET_Normal3iv(disp, fn) SET_by_offset(disp, _gloffset_Normal3iv, fn)
+#define CALL_Normal3s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_Normal3s, parameters)
+#define GET_Normal3s(disp) GET_by_offset(disp, _gloffset_Normal3s)
+#define SET_Normal3s(disp, fn) SET_by_offset(disp, _gloffset_Normal3s, fn)
+#define CALL_Normal3sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Normal3sv, parameters)
+#define GET_Normal3sv(disp) GET_by_offset(disp, _gloffset_Normal3sv)
+#define SET_Normal3sv(disp, fn) SET_by_offset(disp, _gloffset_Normal3sv, fn)
+#define CALL_RasterPos2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), _gloffset_RasterPos2d, parameters)
+#define GET_RasterPos2d(disp) GET_by_offset(disp, _gloffset_RasterPos2d)
+#define SET_RasterPos2d(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2d, fn)
+#define CALL_RasterPos2dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_RasterPos2dv, parameters)
+#define GET_RasterPos2dv(disp) GET_by_offset(disp, _gloffset_RasterPos2dv)
+#define SET_RasterPos2dv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2dv, fn)
+#define CALL_RasterPos2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_RasterPos2f, parameters)
+#define GET_RasterPos2f(disp) GET_by_offset(disp, _gloffset_RasterPos2f)
+#define SET_RasterPos2f(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2f, fn)
+#define CALL_RasterPos2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_RasterPos2fv, parameters)
+#define GET_RasterPos2fv(disp) GET_by_offset(disp, _gloffset_RasterPos2fv)
+#define SET_RasterPos2fv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2fv, fn)
+#define CALL_RasterPos2i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_RasterPos2i, parameters)
+#define GET_RasterPos2i(disp) GET_by_offset(disp, _gloffset_RasterPos2i)
+#define SET_RasterPos2i(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2i, fn)
+#define CALL_RasterPos2iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_RasterPos2iv, parameters)
+#define GET_RasterPos2iv(disp) GET_by_offset(disp, _gloffset_RasterPos2iv)
+#define SET_RasterPos2iv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2iv, fn)
+#define CALL_RasterPos2s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort)), _gloffset_RasterPos2s, parameters)
+#define GET_RasterPos2s(disp) GET_by_offset(disp, _gloffset_RasterPos2s)
+#define SET_RasterPos2s(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2s, fn)
+#define CALL_RasterPos2sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_RasterPos2sv, parameters)
+#define GET_RasterPos2sv(disp) GET_by_offset(disp, _gloffset_RasterPos2sv)
+#define SET_RasterPos2sv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos2sv, fn)
+#define CALL_RasterPos3d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_RasterPos3d, parameters)
+#define GET_RasterPos3d(disp) GET_by_offset(disp, _gloffset_RasterPos3d)
+#define SET_RasterPos3d(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3d, fn)
+#define CALL_RasterPos3dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_RasterPos3dv, parameters)
+#define GET_RasterPos3dv(disp) GET_by_offset(disp, _gloffset_RasterPos3dv)
+#define SET_RasterPos3dv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3dv, fn)
+#define CALL_RasterPos3f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_RasterPos3f, parameters)
+#define GET_RasterPos3f(disp) GET_by_offset(disp, _gloffset_RasterPos3f)
+#define SET_RasterPos3f(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3f, fn)
+#define CALL_RasterPos3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_RasterPos3fv, parameters)
+#define GET_RasterPos3fv(disp) GET_by_offset(disp, _gloffset_RasterPos3fv)
+#define SET_RasterPos3fv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3fv, fn)
+#define CALL_RasterPos3i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_RasterPos3i, parameters)
+#define GET_RasterPos3i(disp) GET_by_offset(disp, _gloffset_RasterPos3i)
+#define SET_RasterPos3i(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3i, fn)
+#define CALL_RasterPos3iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_RasterPos3iv, parameters)
+#define GET_RasterPos3iv(disp) GET_by_offset(disp, _gloffset_RasterPos3iv)
+#define SET_RasterPos3iv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3iv, fn)
+#define CALL_RasterPos3s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_RasterPos3s, parameters)
+#define GET_RasterPos3s(disp) GET_by_offset(disp, _gloffset_RasterPos3s)
+#define SET_RasterPos3s(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3s, fn)
+#define CALL_RasterPos3sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_RasterPos3sv, parameters)
+#define GET_RasterPos3sv(disp) GET_by_offset(disp, _gloffset_RasterPos3sv)
+#define SET_RasterPos3sv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos3sv, fn)
+#define CALL_RasterPos4d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_RasterPos4d, parameters)
+#define GET_RasterPos4d(disp) GET_by_offset(disp, _gloffset_RasterPos4d)
+#define SET_RasterPos4d(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4d, fn)
+#define CALL_RasterPos4dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_RasterPos4dv, parameters)
+#define GET_RasterPos4dv(disp) GET_by_offset(disp, _gloffset_RasterPos4dv)
+#define SET_RasterPos4dv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4dv, fn)
+#define CALL_RasterPos4f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_RasterPos4f, parameters)
+#define GET_RasterPos4f(disp) GET_by_offset(disp, _gloffset_RasterPos4f)
+#define SET_RasterPos4f(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4f, fn)
+#define CALL_RasterPos4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_RasterPos4fv, parameters)
+#define GET_RasterPos4fv(disp) GET_by_offset(disp, _gloffset_RasterPos4fv)
+#define SET_RasterPos4fv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4fv, fn)
+#define CALL_RasterPos4i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_RasterPos4i, parameters)
+#define GET_RasterPos4i(disp) GET_by_offset(disp, _gloffset_RasterPos4i)
+#define SET_RasterPos4i(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4i, fn)
+#define CALL_RasterPos4iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_RasterPos4iv, parameters)
+#define GET_RasterPos4iv(disp) GET_by_offset(disp, _gloffset_RasterPos4iv)
+#define SET_RasterPos4iv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4iv, fn)
+#define CALL_RasterPos4s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_RasterPos4s, parameters)
+#define GET_RasterPos4s(disp) GET_by_offset(disp, _gloffset_RasterPos4s)
+#define SET_RasterPos4s(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4s, fn)
+#define CALL_RasterPos4sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_RasterPos4sv, parameters)
+#define GET_RasterPos4sv(disp) GET_by_offset(disp, _gloffset_RasterPos4sv)
+#define SET_RasterPos4sv(disp, fn) SET_by_offset(disp, _gloffset_RasterPos4sv, fn)
+#define CALL_Rectd(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Rectd, parameters)
+#define GET_Rectd(disp) GET_by_offset(disp, _gloffset_Rectd)
+#define SET_Rectd(disp, fn) SET_by_offset(disp, _gloffset_Rectd, fn)
+#define CALL_Rectdv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *, const GLdouble *)), _gloffset_Rectdv, parameters)
+#define GET_Rectdv(disp) GET_by_offset(disp, _gloffset_Rectdv)
+#define SET_Rectdv(disp, fn) SET_by_offset(disp, _gloffset_Rectdv, fn)
+#define CALL_Rectf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_Rectf, parameters)
+#define GET_Rectf(disp) GET_by_offset(disp, _gloffset_Rectf)
+#define SET_Rectf(disp, fn) SET_by_offset(disp, _gloffset_Rectf, fn)
+#define CALL_Rectfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *, const GLfloat *)), _gloffset_Rectfv, parameters)
+#define GET_Rectfv(disp) GET_by_offset(disp, _gloffset_Rectfv)
+#define SET_Rectfv(disp, fn) SET_by_offset(disp, _gloffset_Rectfv, fn)
+#define CALL_Recti(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_Recti, parameters)
+#define GET_Recti(disp) GET_by_offset(disp, _gloffset_Recti)
+#define SET_Recti(disp, fn) SET_by_offset(disp, _gloffset_Recti, fn)
+#define CALL_Rectiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *, const GLint *)), _gloffset_Rectiv, parameters)
+#define GET_Rectiv(disp) GET_by_offset(disp, _gloffset_Rectiv)
+#define SET_Rectiv(disp, fn) SET_by_offset(disp, _gloffset_Rectiv, fn)
+#define CALL_Rects(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_Rects, parameters)
+#define GET_Rects(disp) GET_by_offset(disp, _gloffset_Rects)
+#define SET_Rects(disp, fn) SET_by_offset(disp, _gloffset_Rects, fn)
+#define CALL_Rectsv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *, const GLshort *)), _gloffset_Rectsv, parameters)
+#define GET_Rectsv(disp) GET_by_offset(disp, _gloffset_Rectsv)
+#define SET_Rectsv(disp, fn) SET_by_offset(disp, _gloffset_Rectsv, fn)
+#define CALL_TexCoord1d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble)), _gloffset_TexCoord1d, parameters)
+#define GET_TexCoord1d(disp) GET_by_offset(disp, _gloffset_TexCoord1d)
+#define SET_TexCoord1d(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1d, fn)
+#define CALL_TexCoord1dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_TexCoord1dv, parameters)
+#define GET_TexCoord1dv(disp) GET_by_offset(disp, _gloffset_TexCoord1dv)
+#define SET_TexCoord1dv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1dv, fn)
+#define CALL_TexCoord1f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_TexCoord1f, parameters)
+#define GET_TexCoord1f(disp) GET_by_offset(disp, _gloffset_TexCoord1f)
+#define SET_TexCoord1f(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1f, fn)
+#define CALL_TexCoord1fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_TexCoord1fv, parameters)
+#define GET_TexCoord1fv(disp) GET_by_offset(disp, _gloffset_TexCoord1fv)
+#define SET_TexCoord1fv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1fv, fn)
+#define CALL_TexCoord1i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint)), _gloffset_TexCoord1i, parameters)
+#define GET_TexCoord1i(disp) GET_by_offset(disp, _gloffset_TexCoord1i)
+#define SET_TexCoord1i(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1i, fn)
+#define CALL_TexCoord1iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_TexCoord1iv, parameters)
+#define GET_TexCoord1iv(disp) GET_by_offset(disp, _gloffset_TexCoord1iv)
+#define SET_TexCoord1iv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1iv, fn)
+#define CALL_TexCoord1s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort)), _gloffset_TexCoord1s, parameters)
+#define GET_TexCoord1s(disp) GET_by_offset(disp, _gloffset_TexCoord1s)
+#define SET_TexCoord1s(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1s, fn)
+#define CALL_TexCoord1sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_TexCoord1sv, parameters)
+#define GET_TexCoord1sv(disp) GET_by_offset(disp, _gloffset_TexCoord1sv)
+#define SET_TexCoord1sv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord1sv, fn)
+#define CALL_TexCoord2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), _gloffset_TexCoord2d, parameters)
+#define GET_TexCoord2d(disp) GET_by_offset(disp, _gloffset_TexCoord2d)
+#define SET_TexCoord2d(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2d, fn)
+#define CALL_TexCoord2dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_TexCoord2dv, parameters)
+#define GET_TexCoord2dv(disp) GET_by_offset(disp, _gloffset_TexCoord2dv)
+#define SET_TexCoord2dv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2dv, fn)
+#define CALL_TexCoord2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_TexCoord2f, parameters)
+#define GET_TexCoord2f(disp) GET_by_offset(disp, _gloffset_TexCoord2f)
+#define SET_TexCoord2f(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2f, fn)
+#define CALL_TexCoord2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_TexCoord2fv, parameters)
+#define GET_TexCoord2fv(disp) GET_by_offset(disp, _gloffset_TexCoord2fv)
+#define SET_TexCoord2fv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2fv, fn)
+#define CALL_TexCoord2i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_TexCoord2i, parameters)
+#define GET_TexCoord2i(disp) GET_by_offset(disp, _gloffset_TexCoord2i)
+#define SET_TexCoord2i(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2i, fn)
+#define CALL_TexCoord2iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_TexCoord2iv, parameters)
+#define GET_TexCoord2iv(disp) GET_by_offset(disp, _gloffset_TexCoord2iv)
+#define SET_TexCoord2iv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2iv, fn)
+#define CALL_TexCoord2s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort)), _gloffset_TexCoord2s, parameters)
+#define GET_TexCoord2s(disp) GET_by_offset(disp, _gloffset_TexCoord2s)
+#define SET_TexCoord2s(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2s, fn)
+#define CALL_TexCoord2sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_TexCoord2sv, parameters)
+#define GET_TexCoord2sv(disp) GET_by_offset(disp, _gloffset_TexCoord2sv)
+#define SET_TexCoord2sv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord2sv, fn)
+#define CALL_TexCoord3d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_TexCoord3d, parameters)
+#define GET_TexCoord3d(disp) GET_by_offset(disp, _gloffset_TexCoord3d)
+#define SET_TexCoord3d(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3d, fn)
+#define CALL_TexCoord3dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_TexCoord3dv, parameters)
+#define GET_TexCoord3dv(disp) GET_by_offset(disp, _gloffset_TexCoord3dv)
+#define SET_TexCoord3dv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3dv, fn)
+#define CALL_TexCoord3f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_TexCoord3f, parameters)
+#define GET_TexCoord3f(disp) GET_by_offset(disp, _gloffset_TexCoord3f)
+#define SET_TexCoord3f(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3f, fn)
+#define CALL_TexCoord3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_TexCoord3fv, parameters)
+#define GET_TexCoord3fv(disp) GET_by_offset(disp, _gloffset_TexCoord3fv)
+#define SET_TexCoord3fv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3fv, fn)
+#define CALL_TexCoord3i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_TexCoord3i, parameters)
+#define GET_TexCoord3i(disp) GET_by_offset(disp, _gloffset_TexCoord3i)
+#define SET_TexCoord3i(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3i, fn)
+#define CALL_TexCoord3iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_TexCoord3iv, parameters)
+#define GET_TexCoord3iv(disp) GET_by_offset(disp, _gloffset_TexCoord3iv)
+#define SET_TexCoord3iv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3iv, fn)
+#define CALL_TexCoord3s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_TexCoord3s, parameters)
+#define GET_TexCoord3s(disp) GET_by_offset(disp, _gloffset_TexCoord3s)
+#define SET_TexCoord3s(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3s, fn)
+#define CALL_TexCoord3sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_TexCoord3sv, parameters)
+#define GET_TexCoord3sv(disp) GET_by_offset(disp, _gloffset_TexCoord3sv)
+#define SET_TexCoord3sv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord3sv, fn)
+#define CALL_TexCoord4d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_TexCoord4d, parameters)
+#define GET_TexCoord4d(disp) GET_by_offset(disp, _gloffset_TexCoord4d)
+#define SET_TexCoord4d(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4d, fn)
+#define CALL_TexCoord4dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_TexCoord4dv, parameters)
+#define GET_TexCoord4dv(disp) GET_by_offset(disp, _gloffset_TexCoord4dv)
+#define SET_TexCoord4dv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4dv, fn)
+#define CALL_TexCoord4f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_TexCoord4f, parameters)
+#define GET_TexCoord4f(disp) GET_by_offset(disp, _gloffset_TexCoord4f)
+#define SET_TexCoord4f(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4f, fn)
+#define CALL_TexCoord4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_TexCoord4fv, parameters)
+#define GET_TexCoord4fv(disp) GET_by_offset(disp, _gloffset_TexCoord4fv)
+#define SET_TexCoord4fv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4fv, fn)
+#define CALL_TexCoord4i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_TexCoord4i, parameters)
+#define GET_TexCoord4i(disp) GET_by_offset(disp, _gloffset_TexCoord4i)
+#define SET_TexCoord4i(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4i, fn)
+#define CALL_TexCoord4iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_TexCoord4iv, parameters)
+#define GET_TexCoord4iv(disp) GET_by_offset(disp, _gloffset_TexCoord4iv)
+#define SET_TexCoord4iv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4iv, fn)
+#define CALL_TexCoord4s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_TexCoord4s, parameters)
+#define GET_TexCoord4s(disp) GET_by_offset(disp, _gloffset_TexCoord4s)
+#define SET_TexCoord4s(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4s, fn)
+#define CALL_TexCoord4sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_TexCoord4sv, parameters)
+#define GET_TexCoord4sv(disp) GET_by_offset(disp, _gloffset_TexCoord4sv)
+#define SET_TexCoord4sv(disp, fn) SET_by_offset(disp, _gloffset_TexCoord4sv, fn)
+#define CALL_Vertex2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), _gloffset_Vertex2d, parameters)
+#define GET_Vertex2d(disp) GET_by_offset(disp, _gloffset_Vertex2d)
+#define SET_Vertex2d(disp, fn) SET_by_offset(disp, _gloffset_Vertex2d, fn)
+#define CALL_Vertex2dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Vertex2dv, parameters)
+#define GET_Vertex2dv(disp) GET_by_offset(disp, _gloffset_Vertex2dv)
+#define SET_Vertex2dv(disp, fn) SET_by_offset(disp, _gloffset_Vertex2dv, fn)
+#define CALL_Vertex2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_Vertex2f, parameters)
+#define GET_Vertex2f(disp) GET_by_offset(disp, _gloffset_Vertex2f)
+#define SET_Vertex2f(disp, fn) SET_by_offset(disp, _gloffset_Vertex2f, fn)
+#define CALL_Vertex2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Vertex2fv, parameters)
+#define GET_Vertex2fv(disp) GET_by_offset(disp, _gloffset_Vertex2fv)
+#define SET_Vertex2fv(disp, fn) SET_by_offset(disp, _gloffset_Vertex2fv, fn)
+#define CALL_Vertex2i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_Vertex2i, parameters)
+#define GET_Vertex2i(disp) GET_by_offset(disp, _gloffset_Vertex2i)
+#define SET_Vertex2i(disp, fn) SET_by_offset(disp, _gloffset_Vertex2i, fn)
+#define CALL_Vertex2iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Vertex2iv, parameters)
+#define GET_Vertex2iv(disp) GET_by_offset(disp, _gloffset_Vertex2iv)
+#define SET_Vertex2iv(disp, fn) SET_by_offset(disp, _gloffset_Vertex2iv, fn)
+#define CALL_Vertex2s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort)), _gloffset_Vertex2s, parameters)
+#define GET_Vertex2s(disp) GET_by_offset(disp, _gloffset_Vertex2s)
+#define SET_Vertex2s(disp, fn) SET_by_offset(disp, _gloffset_Vertex2s, fn)
+#define CALL_Vertex2sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Vertex2sv, parameters)
+#define GET_Vertex2sv(disp) GET_by_offset(disp, _gloffset_Vertex2sv)
+#define SET_Vertex2sv(disp, fn) SET_by_offset(disp, _gloffset_Vertex2sv, fn)
+#define CALL_Vertex3d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_Vertex3d, parameters)
+#define GET_Vertex3d(disp) GET_by_offset(disp, _gloffset_Vertex3d)
+#define SET_Vertex3d(disp, fn) SET_by_offset(disp, _gloffset_Vertex3d, fn)
+#define CALL_Vertex3dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Vertex3dv, parameters)
+#define GET_Vertex3dv(disp) GET_by_offset(disp, _gloffset_Vertex3dv)
+#define SET_Vertex3dv(disp, fn) SET_by_offset(disp, _gloffset_Vertex3dv, fn)
+#define CALL_Vertex3f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_Vertex3f, parameters)
+#define GET_Vertex3f(disp) GET_by_offset(disp, _gloffset_Vertex3f)
+#define SET_Vertex3f(disp, fn) SET_by_offset(disp, _gloffset_Vertex3f, fn)
+#define CALL_Vertex3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Vertex3fv, parameters)
+#define GET_Vertex3fv(disp) GET_by_offset(disp, _gloffset_Vertex3fv)
+#define SET_Vertex3fv(disp, fn) SET_by_offset(disp, _gloffset_Vertex3fv, fn)
+#define CALL_Vertex3i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_Vertex3i, parameters)
+#define GET_Vertex3i(disp) GET_by_offset(disp, _gloffset_Vertex3i)
+#define SET_Vertex3i(disp, fn) SET_by_offset(disp, _gloffset_Vertex3i, fn)
+#define CALL_Vertex3iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Vertex3iv, parameters)
+#define GET_Vertex3iv(disp) GET_by_offset(disp, _gloffset_Vertex3iv)
+#define SET_Vertex3iv(disp, fn) SET_by_offset(disp, _gloffset_Vertex3iv, fn)
+#define CALL_Vertex3s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_Vertex3s, parameters)
+#define GET_Vertex3s(disp) GET_by_offset(disp, _gloffset_Vertex3s)
+#define SET_Vertex3s(disp, fn) SET_by_offset(disp, _gloffset_Vertex3s, fn)
+#define CALL_Vertex3sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Vertex3sv, parameters)
+#define GET_Vertex3sv(disp) GET_by_offset(disp, _gloffset_Vertex3sv)
+#define SET_Vertex3sv(disp, fn) SET_by_offset(disp, _gloffset_Vertex3sv, fn)
+#define CALL_Vertex4d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Vertex4d, parameters)
+#define GET_Vertex4d(disp) GET_by_offset(disp, _gloffset_Vertex4d)
+#define SET_Vertex4d(disp, fn) SET_by_offset(disp, _gloffset_Vertex4d, fn)
+#define CALL_Vertex4dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_Vertex4dv, parameters)
+#define GET_Vertex4dv(disp) GET_by_offset(disp, _gloffset_Vertex4dv)
+#define SET_Vertex4dv(disp, fn) SET_by_offset(disp, _gloffset_Vertex4dv, fn)
+#define CALL_Vertex4f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_Vertex4f, parameters)
+#define GET_Vertex4f(disp) GET_by_offset(disp, _gloffset_Vertex4f)
+#define SET_Vertex4f(disp, fn) SET_by_offset(disp, _gloffset_Vertex4f, fn)
+#define CALL_Vertex4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_Vertex4fv, parameters)
+#define GET_Vertex4fv(disp) GET_by_offset(disp, _gloffset_Vertex4fv)
+#define SET_Vertex4fv(disp, fn) SET_by_offset(disp, _gloffset_Vertex4fv, fn)
+#define CALL_Vertex4i(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_Vertex4i, parameters)
+#define GET_Vertex4i(disp) GET_by_offset(disp, _gloffset_Vertex4i)
+#define SET_Vertex4i(disp, fn) SET_by_offset(disp, _gloffset_Vertex4i, fn)
+#define CALL_Vertex4iv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_Vertex4iv, parameters)
+#define GET_Vertex4iv(disp) GET_by_offset(disp, _gloffset_Vertex4iv)
+#define SET_Vertex4iv(disp, fn) SET_by_offset(disp, _gloffset_Vertex4iv, fn)
+#define CALL_Vertex4s(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_Vertex4s, parameters)
+#define GET_Vertex4s(disp) GET_by_offset(disp, _gloffset_Vertex4s)
+#define SET_Vertex4s(disp, fn) SET_by_offset(disp, _gloffset_Vertex4s, fn)
+#define CALL_Vertex4sv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_Vertex4sv, parameters)
+#define GET_Vertex4sv(disp) GET_by_offset(disp, _gloffset_Vertex4sv)
+#define SET_Vertex4sv(disp, fn) SET_by_offset(disp, _gloffset_Vertex4sv, fn)
+#define CALL_ClipPlane(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLdouble *)), _gloffset_ClipPlane, parameters)
+#define GET_ClipPlane(disp) GET_by_offset(disp, _gloffset_ClipPlane)
+#define SET_ClipPlane(disp, fn) SET_by_offset(disp, _gloffset_ClipPlane, fn)
+#define CALL_ColorMaterial(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_ColorMaterial, parameters)
+#define GET_ColorMaterial(disp) GET_by_offset(disp, _gloffset_ColorMaterial)
+#define SET_ColorMaterial(disp, fn) SET_by_offset(disp, _gloffset_ColorMaterial, fn)
+#define CALL_CullFace(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_CullFace, parameters)
+#define GET_CullFace(disp) GET_by_offset(disp, _gloffset_CullFace)
+#define SET_CullFace(disp, fn) SET_by_offset(disp, _gloffset_CullFace, fn)
+#define CALL_Fogf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_Fogf, parameters)
+#define GET_Fogf(disp) GET_by_offset(disp, _gloffset_Fogf)
+#define SET_Fogf(disp, fn) SET_by_offset(disp, _gloffset_Fogf, fn)
+#define CALL_Fogfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_Fogfv, parameters)
+#define GET_Fogfv(disp) GET_by_offset(disp, _gloffset_Fogfv)
+#define SET_Fogfv(disp, fn) SET_by_offset(disp, _gloffset_Fogfv, fn)
+#define CALL_Fogi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_Fogi, parameters)
+#define GET_Fogi(disp) GET_by_offset(disp, _gloffset_Fogi)
+#define SET_Fogi(disp, fn) SET_by_offset(disp, _gloffset_Fogi, fn)
+#define CALL_Fogiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_Fogiv, parameters)
+#define GET_Fogiv(disp) GET_by_offset(disp, _gloffset_Fogiv)
+#define SET_Fogiv(disp, fn) SET_by_offset(disp, _gloffset_Fogiv, fn)
+#define CALL_FrontFace(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_FrontFace, parameters)
+#define GET_FrontFace(disp) GET_by_offset(disp, _gloffset_FrontFace)
+#define SET_FrontFace(disp, fn) SET_by_offset(disp, _gloffset_FrontFace, fn)
+#define CALL_Hint(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_Hint, parameters)
+#define GET_Hint(disp) GET_by_offset(disp, _gloffset_Hint)
+#define SET_Hint(disp, fn) SET_by_offset(disp, _gloffset_Hint, fn)
+#define CALL_Lightf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_Lightf, parameters)
+#define GET_Lightf(disp) GET_by_offset(disp, _gloffset_Lightf)
+#define SET_Lightf(disp, fn) SET_by_offset(disp, _gloffset_Lightf, fn)
+#define CALL_Lightfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_Lightfv, parameters)
+#define GET_Lightfv(disp) GET_by_offset(disp, _gloffset_Lightfv)
+#define SET_Lightfv(disp, fn) SET_by_offset(disp, _gloffset_Lightfv, fn)
+#define CALL_Lighti(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_Lighti, parameters)
+#define GET_Lighti(disp) GET_by_offset(disp, _gloffset_Lighti)
+#define SET_Lighti(disp, fn) SET_by_offset(disp, _gloffset_Lighti, fn)
+#define CALL_Lightiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_Lightiv, parameters)
+#define GET_Lightiv(disp) GET_by_offset(disp, _gloffset_Lightiv)
+#define SET_Lightiv(disp, fn) SET_by_offset(disp, _gloffset_Lightiv, fn)
+#define CALL_LightModelf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_LightModelf, parameters)
+#define GET_LightModelf(disp) GET_by_offset(disp, _gloffset_LightModelf)
+#define SET_LightModelf(disp, fn) SET_by_offset(disp, _gloffset_LightModelf, fn)
+#define CALL_LightModelfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_LightModelfv, parameters)
+#define GET_LightModelfv(disp) GET_by_offset(disp, _gloffset_LightModelfv)
+#define SET_LightModelfv(disp, fn) SET_by_offset(disp, _gloffset_LightModelfv, fn)
+#define CALL_LightModeli(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_LightModeli, parameters)
+#define GET_LightModeli(disp) GET_by_offset(disp, _gloffset_LightModeli)
+#define SET_LightModeli(disp, fn) SET_by_offset(disp, _gloffset_LightModeli, fn)
+#define CALL_LightModeliv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_LightModeliv, parameters)
+#define GET_LightModeliv(disp) GET_by_offset(disp, _gloffset_LightModeliv)
+#define SET_LightModeliv(disp, fn) SET_by_offset(disp, _gloffset_LightModeliv, fn)
+#define CALL_LineStipple(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLushort)), _gloffset_LineStipple, parameters)
+#define GET_LineStipple(disp) GET_by_offset(disp, _gloffset_LineStipple)
+#define SET_LineStipple(disp, fn) SET_by_offset(disp, _gloffset_LineStipple, fn)
+#define CALL_LineWidth(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_LineWidth, parameters)
+#define GET_LineWidth(disp) GET_by_offset(disp, _gloffset_LineWidth)
+#define SET_LineWidth(disp, fn) SET_by_offset(disp, _gloffset_LineWidth, fn)
+#define CALL_Materialf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_Materialf, parameters)
+#define GET_Materialf(disp) GET_by_offset(disp, _gloffset_Materialf)
+#define SET_Materialf(disp, fn) SET_by_offset(disp, _gloffset_Materialf, fn)
+#define CALL_Materialfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_Materialfv, parameters)
+#define GET_Materialfv(disp) GET_by_offset(disp, _gloffset_Materialfv)
+#define SET_Materialfv(disp, fn) SET_by_offset(disp, _gloffset_Materialfv, fn)
+#define CALL_Materiali(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_Materiali, parameters)
+#define GET_Materiali(disp) GET_by_offset(disp, _gloffset_Materiali)
+#define SET_Materiali(disp, fn) SET_by_offset(disp, _gloffset_Materiali, fn)
+#define CALL_Materialiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_Materialiv, parameters)
+#define GET_Materialiv(disp) GET_by_offset(disp, _gloffset_Materialiv)
+#define SET_Materialiv(disp, fn) SET_by_offset(disp, _gloffset_Materialiv, fn)
+#define CALL_PointSize(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_PointSize, parameters)
+#define GET_PointSize(disp) GET_by_offset(disp, _gloffset_PointSize)
+#define SET_PointSize(disp, fn) SET_by_offset(disp, _gloffset_PointSize, fn)
+#define CALL_PolygonMode(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_PolygonMode, parameters)
+#define GET_PolygonMode(disp) GET_by_offset(disp, _gloffset_PolygonMode)
+#define SET_PolygonMode(disp, fn) SET_by_offset(disp, _gloffset_PolygonMode, fn)
+#define CALL_PolygonStipple(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), _gloffset_PolygonStipple, parameters)
+#define GET_PolygonStipple(disp) GET_by_offset(disp, _gloffset_PolygonStipple)
+#define SET_PolygonStipple(disp, fn) SET_by_offset(disp, _gloffset_PolygonStipple, fn)
+#define CALL_Scissor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLsizei, GLsizei)), _gloffset_Scissor, parameters)
+#define GET_Scissor(disp) GET_by_offset(disp, _gloffset_Scissor)
+#define SET_Scissor(disp, fn) SET_by_offset(disp, _gloffset_Scissor, fn)
+#define CALL_ShadeModel(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ShadeModel, parameters)
+#define GET_ShadeModel(disp) GET_by_offset(disp, _gloffset_ShadeModel)
+#define SET_ShadeModel(disp, fn) SET_by_offset(disp, _gloffset_ShadeModel, fn)
+#define CALL_TexParameterf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_TexParameterf, parameters)
+#define GET_TexParameterf(disp) GET_by_offset(disp, _gloffset_TexParameterf)
+#define SET_TexParameterf(disp, fn) SET_by_offset(disp, _gloffset_TexParameterf, fn)
+#define CALL_TexParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_TexParameterfv, parameters)
+#define GET_TexParameterfv(disp) GET_by_offset(disp, _gloffset_TexParameterfv)
+#define SET_TexParameterfv(disp, fn) SET_by_offset(disp, _gloffset_TexParameterfv, fn)
+#define CALL_TexParameteri(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_TexParameteri, parameters)
+#define GET_TexParameteri(disp) GET_by_offset(disp, _gloffset_TexParameteri)
+#define SET_TexParameteri(disp, fn) SET_by_offset(disp, _gloffset_TexParameteri, fn)
+#define CALL_TexParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_TexParameteriv, parameters)
+#define GET_TexParameteriv(disp) GET_by_offset(disp, _gloffset_TexParameteriv)
+#define SET_TexParameteriv(disp, fn) SET_by_offset(disp, _gloffset_TexParameteriv, fn)
+#define CALL_TexImage1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const GLvoid *)), _gloffset_TexImage1D, parameters)
+#define GET_TexImage1D(disp) GET_by_offset(disp, _gloffset_TexImage1D)
+#define SET_TexImage1D(disp, fn) SET_by_offset(disp, _gloffset_TexImage1D, fn)
+#define CALL_TexImage2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *)), _gloffset_TexImage2D, parameters)
+#define GET_TexImage2D(disp) GET_by_offset(disp, _gloffset_TexImage2D)
+#define SET_TexImage2D(disp, fn) SET_by_offset(disp, _gloffset_TexImage2D, fn)
+#define CALL_TexEnvf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_TexEnvf, parameters)
+#define GET_TexEnvf(disp) GET_by_offset(disp, _gloffset_TexEnvf)
+#define SET_TexEnvf(disp, fn) SET_by_offset(disp, _gloffset_TexEnvf, fn)
+#define CALL_TexEnvfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_TexEnvfv, parameters)
+#define GET_TexEnvfv(disp) GET_by_offset(disp, _gloffset_TexEnvfv)
+#define SET_TexEnvfv(disp, fn) SET_by_offset(disp, _gloffset_TexEnvfv, fn)
+#define CALL_TexEnvi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_TexEnvi, parameters)
+#define GET_TexEnvi(disp) GET_by_offset(disp, _gloffset_TexEnvi)
+#define SET_TexEnvi(disp, fn) SET_by_offset(disp, _gloffset_TexEnvi, fn)
+#define CALL_TexEnviv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_TexEnviv, parameters)
+#define GET_TexEnviv(disp) GET_by_offset(disp, _gloffset_TexEnviv)
+#define SET_TexEnviv(disp, fn) SET_by_offset(disp, _gloffset_TexEnviv, fn)
+#define CALL_TexGend(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLdouble)), _gloffset_TexGend, parameters)
+#define GET_TexGend(disp) GET_by_offset(disp, _gloffset_TexGend)
+#define SET_TexGend(disp, fn) SET_by_offset(disp, _gloffset_TexGend, fn)
+#define CALL_TexGendv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLdouble *)), _gloffset_TexGendv, parameters)
+#define GET_TexGendv(disp) GET_by_offset(disp, _gloffset_TexGendv)
+#define SET_TexGendv(disp, fn) SET_by_offset(disp, _gloffset_TexGendv, fn)
+#define CALL_TexGenf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_TexGenf, parameters)
+#define GET_TexGenf(disp) GET_by_offset(disp, _gloffset_TexGenf)
+#define SET_TexGenf(disp, fn) SET_by_offset(disp, _gloffset_TexGenf, fn)
+#define CALL_TexGenfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_TexGenfv, parameters)
+#define GET_TexGenfv(disp) GET_by_offset(disp, _gloffset_TexGenfv)
+#define SET_TexGenfv(disp, fn) SET_by_offset(disp, _gloffset_TexGenfv, fn)
+#define CALL_TexGeni(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_TexGeni, parameters)
+#define GET_TexGeni(disp) GET_by_offset(disp, _gloffset_TexGeni)
+#define SET_TexGeni(disp, fn) SET_by_offset(disp, _gloffset_TexGeni, fn)
+#define CALL_TexGeniv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_TexGeniv, parameters)
+#define GET_TexGeniv(disp) GET_by_offset(disp, _gloffset_TexGeniv)
+#define SET_TexGeniv(disp, fn) SET_by_offset(disp, _gloffset_TexGeniv, fn)
+#define CALL_FeedbackBuffer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLenum, GLfloat *)), _gloffset_FeedbackBuffer, parameters)
+#define GET_FeedbackBuffer(disp) GET_by_offset(disp, _gloffset_FeedbackBuffer)
+#define SET_FeedbackBuffer(disp, fn) SET_by_offset(disp, _gloffset_FeedbackBuffer, fn)
+#define CALL_SelectBuffer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_SelectBuffer, parameters)
+#define GET_SelectBuffer(disp) GET_by_offset(disp, _gloffset_SelectBuffer)
+#define SET_SelectBuffer(disp, fn) SET_by_offset(disp, _gloffset_SelectBuffer, fn)
+#define CALL_RenderMode(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLenum)), _gloffset_RenderMode, parameters)
+#define GET_RenderMode(disp) GET_by_offset(disp, _gloffset_RenderMode)
+#define SET_RenderMode(disp, fn) SET_by_offset(disp, _gloffset_RenderMode, fn)
+#define CALL_InitNames(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_InitNames, parameters)
+#define GET_InitNames(disp) GET_by_offset(disp, _gloffset_InitNames)
+#define SET_InitNames(disp, fn) SET_by_offset(disp, _gloffset_InitNames, fn)
+#define CALL_LoadName(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_LoadName, parameters)
+#define GET_LoadName(disp) GET_by_offset(disp, _gloffset_LoadName)
+#define SET_LoadName(disp, fn) SET_by_offset(disp, _gloffset_LoadName, fn)
+#define CALL_PassThrough(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_PassThrough, parameters)
+#define GET_PassThrough(disp) GET_by_offset(disp, _gloffset_PassThrough)
+#define SET_PassThrough(disp, fn) SET_by_offset(disp, _gloffset_PassThrough, fn)
+#define CALL_PopName(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PopName, parameters)
+#define GET_PopName(disp) GET_by_offset(disp, _gloffset_PopName)
+#define SET_PopName(disp, fn) SET_by_offset(disp, _gloffset_PopName, fn)
+#define CALL_PushName(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_PushName, parameters)
+#define GET_PushName(disp) GET_by_offset(disp, _gloffset_PushName)
+#define SET_PushName(disp, fn) SET_by_offset(disp, _gloffset_PushName, fn)
+#define CALL_DrawBuffer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_DrawBuffer, parameters)
+#define GET_DrawBuffer(disp) GET_by_offset(disp, _gloffset_DrawBuffer)
+#define SET_DrawBuffer(disp, fn) SET_by_offset(disp, _gloffset_DrawBuffer, fn)
+#define CALL_Clear(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbitfield)), _gloffset_Clear, parameters)
+#define GET_Clear(disp) GET_by_offset(disp, _gloffset_Clear)
+#define SET_Clear(disp, fn) SET_by_offset(disp, _gloffset_Clear, fn)
+#define CALL_ClearAccum(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_ClearAccum, parameters)
+#define GET_ClearAccum(disp) GET_by_offset(disp, _gloffset_ClearAccum)
+#define SET_ClearAccum(disp, fn) SET_by_offset(disp, _gloffset_ClearAccum, fn)
+#define CALL_ClearIndex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_ClearIndex, parameters)
+#define GET_ClearIndex(disp) GET_by_offset(disp, _gloffset_ClearIndex)
+#define SET_ClearIndex(disp, fn) SET_by_offset(disp, _gloffset_ClearIndex, fn)
+#define CALL_ClearColor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLclampf, GLclampf, GLclampf)), _gloffset_ClearColor, parameters)
+#define GET_ClearColor(disp) GET_by_offset(disp, _gloffset_ClearColor)
+#define SET_ClearColor(disp, fn) SET_by_offset(disp, _gloffset_ClearColor, fn)
+#define CALL_ClearStencil(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint)), _gloffset_ClearStencil, parameters)
+#define GET_ClearStencil(disp) GET_by_offset(disp, _gloffset_ClearStencil)
+#define SET_ClearStencil(disp, fn) SET_by_offset(disp, _gloffset_ClearStencil, fn)
+#define CALL_ClearDepth(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampd)), _gloffset_ClearDepth, parameters)
+#define GET_ClearDepth(disp) GET_by_offset(disp, _gloffset_ClearDepth)
+#define SET_ClearDepth(disp, fn) SET_by_offset(disp, _gloffset_ClearDepth, fn)
+#define CALL_StencilMask(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_StencilMask, parameters)
+#define GET_StencilMask(disp) GET_by_offset(disp, _gloffset_StencilMask)
+#define SET_StencilMask(disp, fn) SET_by_offset(disp, _gloffset_StencilMask, fn)
+#define CALL_ColorMask(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLboolean, GLboolean, GLboolean, GLboolean)), _gloffset_ColorMask, parameters)
+#define GET_ColorMask(disp) GET_by_offset(disp, _gloffset_ColorMask)
+#define SET_ColorMask(disp, fn) SET_by_offset(disp, _gloffset_ColorMask, fn)
+#define CALL_DepthMask(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLboolean)), _gloffset_DepthMask, parameters)
+#define GET_DepthMask(disp) GET_by_offset(disp, _gloffset_DepthMask)
+#define SET_DepthMask(disp, fn) SET_by_offset(disp, _gloffset_DepthMask, fn)
+#define CALL_IndexMask(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_IndexMask, parameters)
+#define GET_IndexMask(disp) GET_by_offset(disp, _gloffset_IndexMask)
+#define SET_IndexMask(disp, fn) SET_by_offset(disp, _gloffset_IndexMask, fn)
+#define CALL_Accum(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_Accum, parameters)
+#define GET_Accum(disp) GET_by_offset(disp, _gloffset_Accum)
+#define SET_Accum(disp, fn) SET_by_offset(disp, _gloffset_Accum, fn)
+#define CALL_Disable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_Disable, parameters)
+#define GET_Disable(disp) GET_by_offset(disp, _gloffset_Disable)
+#define SET_Disable(disp, fn) SET_by_offset(disp, _gloffset_Disable, fn)
+#define CALL_Enable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_Enable, parameters)
+#define GET_Enable(disp) GET_by_offset(disp, _gloffset_Enable)
+#define SET_Enable(disp, fn) SET_by_offset(disp, _gloffset_Enable, fn)
+#define CALL_Finish(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_Finish, parameters)
+#define GET_Finish(disp) GET_by_offset(disp, _gloffset_Finish)
+#define SET_Finish(disp, fn) SET_by_offset(disp, _gloffset_Finish, fn)
+#define CALL_Flush(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_Flush, parameters)
+#define GET_Flush(disp) GET_by_offset(disp, _gloffset_Flush)
+#define SET_Flush(disp, fn) SET_by_offset(disp, _gloffset_Flush, fn)
+#define CALL_PopAttrib(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PopAttrib, parameters)
+#define GET_PopAttrib(disp) GET_by_offset(disp, _gloffset_PopAttrib)
+#define SET_PopAttrib(disp, fn) SET_by_offset(disp, _gloffset_PopAttrib, fn)
+#define CALL_PushAttrib(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbitfield)), _gloffset_PushAttrib, parameters)
+#define GET_PushAttrib(disp) GET_by_offset(disp, _gloffset_PushAttrib)
+#define SET_PushAttrib(disp, fn) SET_by_offset(disp, _gloffset_PushAttrib, fn)
+#define CALL_Map1d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble, GLdouble, GLint, GLint, const GLdouble *)), _gloffset_Map1d, parameters)
+#define GET_Map1d(disp) GET_by_offset(disp, _gloffset_Map1d)
+#define SET_Map1d(disp, fn) SET_by_offset(disp, _gloffset_Map1d, fn)
+#define CALL_Map1f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat, GLfloat, GLint, GLint, const GLfloat *)), _gloffset_Map1f, parameters)
+#define GET_Map1f(disp) GET_by_offset(disp, _gloffset_Map1f)
+#define SET_Map1f(disp, fn) SET_by_offset(disp, _gloffset_Map1f, fn)
+#define CALL_Map2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *)), _gloffset_Map2d, parameters)
+#define GET_Map2d(disp) GET_by_offset(disp, _gloffset_Map2d)
+#define SET_Map2d(disp, fn) SET_by_offset(disp, _gloffset_Map2d, fn)
+#define CALL_Map2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *)), _gloffset_Map2f, parameters)
+#define GET_Map2f(disp) GET_by_offset(disp, _gloffset_Map2f)
+#define SET_Map2f(disp, fn) SET_by_offset(disp, _gloffset_Map2f, fn)
+#define CALL_MapGrid1d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLdouble, GLdouble)), _gloffset_MapGrid1d, parameters)
+#define GET_MapGrid1d(disp) GET_by_offset(disp, _gloffset_MapGrid1d)
+#define SET_MapGrid1d(disp, fn) SET_by_offset(disp, _gloffset_MapGrid1d, fn)
+#define CALL_MapGrid1f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat)), _gloffset_MapGrid1f, parameters)
+#define GET_MapGrid1f(disp) GET_by_offset(disp, _gloffset_MapGrid1f)
+#define SET_MapGrid1f(disp, fn) SET_by_offset(disp, _gloffset_MapGrid1f, fn)
+#define CALL_MapGrid2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLdouble, GLdouble, GLint, GLdouble, GLdouble)), _gloffset_MapGrid2d, parameters)
+#define GET_MapGrid2d(disp) GET_by_offset(disp, _gloffset_MapGrid2d)
+#define SET_MapGrid2d(disp, fn) SET_by_offset(disp, _gloffset_MapGrid2d, fn)
+#define CALL_MapGrid2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLint, GLfloat, GLfloat)), _gloffset_MapGrid2f, parameters)
+#define GET_MapGrid2f(disp) GET_by_offset(disp, _gloffset_MapGrid2f)
+#define SET_MapGrid2f(disp, fn) SET_by_offset(disp, _gloffset_MapGrid2f, fn)
+#define CALL_EvalCoord1d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble)), _gloffset_EvalCoord1d, parameters)
+#define GET_EvalCoord1d(disp) GET_by_offset(disp, _gloffset_EvalCoord1d)
+#define SET_EvalCoord1d(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord1d, fn)
+#define CALL_EvalCoord1dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_EvalCoord1dv, parameters)
+#define GET_EvalCoord1dv(disp) GET_by_offset(disp, _gloffset_EvalCoord1dv)
+#define SET_EvalCoord1dv(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord1dv, fn)
+#define CALL_EvalCoord1f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_EvalCoord1f, parameters)
+#define GET_EvalCoord1f(disp) GET_by_offset(disp, _gloffset_EvalCoord1f)
+#define SET_EvalCoord1f(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord1f, fn)
+#define CALL_EvalCoord1fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_EvalCoord1fv, parameters)
+#define GET_EvalCoord1fv(disp) GET_by_offset(disp, _gloffset_EvalCoord1fv)
+#define SET_EvalCoord1fv(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord1fv, fn)
+#define CALL_EvalCoord2d(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), _gloffset_EvalCoord2d, parameters)
+#define GET_EvalCoord2d(disp) GET_by_offset(disp, _gloffset_EvalCoord2d)
+#define SET_EvalCoord2d(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord2d, fn)
+#define CALL_EvalCoord2dv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_EvalCoord2dv, parameters)
+#define GET_EvalCoord2dv(disp) GET_by_offset(disp, _gloffset_EvalCoord2dv)
+#define SET_EvalCoord2dv(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord2dv, fn)
+#define CALL_EvalCoord2f(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_EvalCoord2f, parameters)
+#define GET_EvalCoord2f(disp) GET_by_offset(disp, _gloffset_EvalCoord2f)
+#define SET_EvalCoord2f(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord2f, fn)
+#define CALL_EvalCoord2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_EvalCoord2fv, parameters)
+#define GET_EvalCoord2fv(disp) GET_by_offset(disp, _gloffset_EvalCoord2fv)
+#define SET_EvalCoord2fv(disp, fn) SET_by_offset(disp, _gloffset_EvalCoord2fv, fn)
+#define CALL_EvalMesh1(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint)), _gloffset_EvalMesh1, parameters)
+#define GET_EvalMesh1(disp) GET_by_offset(disp, _gloffset_EvalMesh1)
+#define SET_EvalMesh1(disp, fn) SET_by_offset(disp, _gloffset_EvalMesh1, fn)
+#define CALL_EvalPoint1(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint)), _gloffset_EvalPoint1, parameters)
+#define GET_EvalPoint1(disp) GET_by_offset(disp, _gloffset_EvalPoint1)
+#define SET_EvalPoint1(disp, fn) SET_by_offset(disp, _gloffset_EvalPoint1, fn)
+#define CALL_EvalMesh2(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint)), _gloffset_EvalMesh2, parameters)
+#define GET_EvalMesh2(disp) GET_by_offset(disp, _gloffset_EvalMesh2)
+#define SET_EvalMesh2(disp, fn) SET_by_offset(disp, _gloffset_EvalMesh2, fn)
+#define CALL_EvalPoint2(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_EvalPoint2, parameters)
+#define GET_EvalPoint2(disp) GET_by_offset(disp, _gloffset_EvalPoint2)
+#define SET_EvalPoint2(disp, fn) SET_by_offset(disp, _gloffset_EvalPoint2, fn)
+#define CALL_AlphaFunc(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLclampf)), _gloffset_AlphaFunc, parameters)
+#define GET_AlphaFunc(disp) GET_by_offset(disp, _gloffset_AlphaFunc)
+#define SET_AlphaFunc(disp, fn) SET_by_offset(disp, _gloffset_AlphaFunc, fn)
+#define CALL_BlendFunc(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_BlendFunc, parameters)
+#define GET_BlendFunc(disp) GET_by_offset(disp, _gloffset_BlendFunc)
+#define SET_BlendFunc(disp, fn) SET_by_offset(disp, _gloffset_BlendFunc, fn)
+#define CALL_LogicOp(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_LogicOp, parameters)
+#define GET_LogicOp(disp) GET_by_offset(disp, _gloffset_LogicOp)
+#define SET_LogicOp(disp, fn) SET_by_offset(disp, _gloffset_LogicOp, fn)
+#define CALL_StencilFunc(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLuint)), _gloffset_StencilFunc, parameters)
+#define GET_StencilFunc(disp) GET_by_offset(disp, _gloffset_StencilFunc)
+#define SET_StencilFunc(disp, fn) SET_by_offset(disp, _gloffset_StencilFunc, fn)
+#define CALL_StencilOp(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum)), _gloffset_StencilOp, parameters)
+#define GET_StencilOp(disp) GET_by_offset(disp, _gloffset_StencilOp)
+#define SET_StencilOp(disp, fn) SET_by_offset(disp, _gloffset_StencilOp, fn)
+#define CALL_DepthFunc(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_DepthFunc, parameters)
+#define GET_DepthFunc(disp) GET_by_offset(disp, _gloffset_DepthFunc)
+#define SET_DepthFunc(disp, fn) SET_by_offset(disp, _gloffset_DepthFunc, fn)
+#define CALL_PixelZoom(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_PixelZoom, parameters)
+#define GET_PixelZoom(disp) GET_by_offset(disp, _gloffset_PixelZoom)
+#define SET_PixelZoom(disp, fn) SET_by_offset(disp, _gloffset_PixelZoom, fn)
+#define CALL_PixelTransferf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_PixelTransferf, parameters)
+#define GET_PixelTransferf(disp) GET_by_offset(disp, _gloffset_PixelTransferf)
+#define SET_PixelTransferf(disp, fn) SET_by_offset(disp, _gloffset_PixelTransferf, fn)
+#define CALL_PixelTransferi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_PixelTransferi, parameters)
+#define GET_PixelTransferi(disp) GET_by_offset(disp, _gloffset_PixelTransferi)
+#define SET_PixelTransferi(disp, fn) SET_by_offset(disp, _gloffset_PixelTransferi, fn)
+#define CALL_PixelStoref(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_PixelStoref, parameters)
+#define GET_PixelStoref(disp) GET_by_offset(disp, _gloffset_PixelStoref)
+#define SET_PixelStoref(disp, fn) SET_by_offset(disp, _gloffset_PixelStoref, fn)
+#define CALL_PixelStorei(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_PixelStorei, parameters)
+#define GET_PixelStorei(disp) GET_by_offset(disp, _gloffset_PixelStorei)
+#define SET_PixelStorei(disp, fn) SET_by_offset(disp, _gloffset_PixelStorei, fn)
+#define CALL_PixelMapfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLfloat *)), _gloffset_PixelMapfv, parameters)
+#define GET_PixelMapfv(disp) GET_by_offset(disp, _gloffset_PixelMapfv)
+#define SET_PixelMapfv(disp, fn) SET_by_offset(disp, _gloffset_PixelMapfv, fn)
+#define CALL_PixelMapuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLuint *)), _gloffset_PixelMapuiv, parameters)
+#define GET_PixelMapuiv(disp) GET_by_offset(disp, _gloffset_PixelMapuiv)
+#define SET_PixelMapuiv(disp, fn) SET_by_offset(disp, _gloffset_PixelMapuiv, fn)
+#define CALL_PixelMapusv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLushort *)), _gloffset_PixelMapusv, parameters)
+#define GET_PixelMapusv(disp) GET_by_offset(disp, _gloffset_PixelMapusv)
+#define SET_PixelMapusv(disp, fn) SET_by_offset(disp, _gloffset_PixelMapusv, fn)
+#define CALL_ReadBuffer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ReadBuffer, parameters)
+#define GET_ReadBuffer(disp) GET_by_offset(disp, _gloffset_ReadBuffer)
+#define SET_ReadBuffer(disp, fn) SET_by_offset(disp, _gloffset_ReadBuffer, fn)
+#define CALL_CopyPixels(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLsizei, GLsizei, GLenum)), _gloffset_CopyPixels, parameters)
+#define GET_CopyPixels(disp) GET_by_offset(disp, _gloffset_CopyPixels)
+#define SET_CopyPixels(disp, fn) SET_by_offset(disp, _gloffset_CopyPixels, fn)
+#define CALL_ReadPixels(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid *)), _gloffset_ReadPixels, parameters)
+#define GET_ReadPixels(disp) GET_by_offset(disp, _gloffset_ReadPixels)
+#define SET_ReadPixels(disp, fn) SET_by_offset(disp, _gloffset_ReadPixels, fn)
+#define CALL_DrawPixels(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_DrawPixels, parameters)
+#define GET_DrawPixels(disp) GET_by_offset(disp, _gloffset_DrawPixels)
+#define SET_DrawPixels(disp, fn) SET_by_offset(disp, _gloffset_DrawPixels, fn)
+#define CALL_GetBooleanv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLboolean *)), _gloffset_GetBooleanv, parameters)
+#define GET_GetBooleanv(disp) GET_by_offset(disp, _gloffset_GetBooleanv)
+#define SET_GetBooleanv(disp, fn) SET_by_offset(disp, _gloffset_GetBooleanv, fn)
+#define CALL_GetClipPlane(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble *)), _gloffset_GetClipPlane, parameters)
+#define GET_GetClipPlane(disp) GET_by_offset(disp, _gloffset_GetClipPlane)
+#define SET_GetClipPlane(disp, fn) SET_by_offset(disp, _gloffset_GetClipPlane, fn)
+#define CALL_GetDoublev(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble *)), _gloffset_GetDoublev, parameters)
+#define GET_GetDoublev(disp) GET_by_offset(disp, _gloffset_GetDoublev)
+#define SET_GetDoublev(disp, fn) SET_by_offset(disp, _gloffset_GetDoublev, fn)
+#define CALL_GetError(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(void)), _gloffset_GetError, parameters)
+#define GET_GetError(disp) GET_by_offset(disp, _gloffset_GetError)
+#define SET_GetError(disp, fn) SET_by_offset(disp, _gloffset_GetError, fn)
+#define CALL_GetFloatv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), _gloffset_GetFloatv, parameters)
+#define GET_GetFloatv(disp) GET_by_offset(disp, _gloffset_GetFloatv)
+#define SET_GetFloatv(disp, fn) SET_by_offset(disp, _gloffset_GetFloatv, fn)
+#define CALL_GetIntegerv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), _gloffset_GetIntegerv, parameters)
+#define GET_GetIntegerv(disp) GET_by_offset(disp, _gloffset_GetIntegerv)
+#define SET_GetIntegerv(disp, fn) SET_by_offset(disp, _gloffset_GetIntegerv, fn)
+#define CALL_GetLightfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetLightfv, parameters)
+#define GET_GetLightfv(disp) GET_by_offset(disp, _gloffset_GetLightfv)
+#define SET_GetLightfv(disp, fn) SET_by_offset(disp, _gloffset_GetLightfv, fn)
+#define CALL_GetLightiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetLightiv, parameters)
+#define GET_GetLightiv(disp) GET_by_offset(disp, _gloffset_GetLightiv)
+#define SET_GetLightiv(disp, fn) SET_by_offset(disp, _gloffset_GetLightiv, fn)
+#define CALL_GetMapdv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLdouble *)), _gloffset_GetMapdv, parameters)
+#define GET_GetMapdv(disp) GET_by_offset(disp, _gloffset_GetMapdv)
+#define SET_GetMapdv(disp, fn) SET_by_offset(disp, _gloffset_GetMapdv, fn)
+#define CALL_GetMapfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetMapfv, parameters)
+#define GET_GetMapfv(disp) GET_by_offset(disp, _gloffset_GetMapfv)
+#define SET_GetMapfv(disp, fn) SET_by_offset(disp, _gloffset_GetMapfv, fn)
+#define CALL_GetMapiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetMapiv, parameters)
+#define GET_GetMapiv(disp) GET_by_offset(disp, _gloffset_GetMapiv)
+#define SET_GetMapiv(disp, fn) SET_by_offset(disp, _gloffset_GetMapiv, fn)
+#define CALL_GetMaterialfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetMaterialfv, parameters)
+#define GET_GetMaterialfv(disp) GET_by_offset(disp, _gloffset_GetMaterialfv)
+#define SET_GetMaterialfv(disp, fn) SET_by_offset(disp, _gloffset_GetMaterialfv, fn)
+#define CALL_GetMaterialiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetMaterialiv, parameters)
+#define GET_GetMaterialiv(disp) GET_by_offset(disp, _gloffset_GetMaterialiv)
+#define SET_GetMaterialiv(disp, fn) SET_by_offset(disp, _gloffset_GetMaterialiv, fn)
+#define CALL_GetPixelMapfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), _gloffset_GetPixelMapfv, parameters)
+#define GET_GetPixelMapfv(disp) GET_by_offset(disp, _gloffset_GetPixelMapfv)
+#define SET_GetPixelMapfv(disp, fn) SET_by_offset(disp, _gloffset_GetPixelMapfv, fn)
+#define CALL_GetPixelMapuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint *)), _gloffset_GetPixelMapuiv, parameters)
+#define GET_GetPixelMapuiv(disp) GET_by_offset(disp, _gloffset_GetPixelMapuiv)
+#define SET_GetPixelMapuiv(disp, fn) SET_by_offset(disp, _gloffset_GetPixelMapuiv, fn)
+#define CALL_GetPixelMapusv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLushort *)), _gloffset_GetPixelMapusv, parameters)
+#define GET_GetPixelMapusv(disp) GET_by_offset(disp, _gloffset_GetPixelMapusv)
+#define SET_GetPixelMapusv(disp, fn) SET_by_offset(disp, _gloffset_GetPixelMapusv, fn)
+#define CALL_GetPolygonStipple(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte *)), _gloffset_GetPolygonStipple, parameters)
+#define GET_GetPolygonStipple(disp) GET_by_offset(disp, _gloffset_GetPolygonStipple)
+#define SET_GetPolygonStipple(disp, fn) SET_by_offset(disp, _gloffset_GetPolygonStipple, fn)
+#define CALL_GetString(disp, parameters) CALL_by_offset(disp, (const GLubyte * (GLAPIENTRYP)(GLenum)), _gloffset_GetString, parameters)
+#define GET_GetString(disp) GET_by_offset(disp, _gloffset_GetString)
+#define SET_GetString(disp, fn) SET_by_offset(disp, _gloffset_GetString, fn)
+#define CALL_GetTexEnvfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetTexEnvfv, parameters)
+#define GET_GetTexEnvfv(disp) GET_by_offset(disp, _gloffset_GetTexEnvfv)
+#define SET_GetTexEnvfv(disp, fn) SET_by_offset(disp, _gloffset_GetTexEnvfv, fn)
+#define CALL_GetTexEnviv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetTexEnviv, parameters)
+#define GET_GetTexEnviv(disp) GET_by_offset(disp, _gloffset_GetTexEnviv)
+#define SET_GetTexEnviv(disp, fn) SET_by_offset(disp, _gloffset_GetTexEnviv, fn)
+#define CALL_GetTexGendv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLdouble *)), _gloffset_GetTexGendv, parameters)
+#define GET_GetTexGendv(disp) GET_by_offset(disp, _gloffset_GetTexGendv)
+#define SET_GetTexGendv(disp, fn) SET_by_offset(disp, _gloffset_GetTexGendv, fn)
+#define CALL_GetTexGenfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetTexGenfv, parameters)
+#define GET_GetTexGenfv(disp) GET_by_offset(disp, _gloffset_GetTexGenfv)
+#define SET_GetTexGenfv(disp, fn) SET_by_offset(disp, _gloffset_GetTexGenfv, fn)
+#define CALL_GetTexGeniv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetTexGeniv, parameters)
+#define GET_GetTexGeniv(disp) GET_by_offset(disp, _gloffset_GetTexGeniv)
+#define SET_GetTexGeniv(disp, fn) SET_by_offset(disp, _gloffset_GetTexGeniv, fn)
+#define CALL_GetTexImage(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLenum, GLvoid *)), _gloffset_GetTexImage, parameters)
+#define GET_GetTexImage(disp) GET_by_offset(disp, _gloffset_GetTexImage)
+#define SET_GetTexImage(disp, fn) SET_by_offset(disp, _gloffset_GetTexImage, fn)
+#define CALL_GetTexParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetTexParameterfv, parameters)
+#define GET_GetTexParameterfv(disp) GET_by_offset(disp, _gloffset_GetTexParameterfv)
+#define SET_GetTexParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetTexParameterfv, fn)
+#define CALL_GetTexParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetTexParameteriv, parameters)
+#define GET_GetTexParameteriv(disp) GET_by_offset(disp, _gloffset_GetTexParameteriv)
+#define SET_GetTexParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetTexParameteriv, fn)
+#define CALL_GetTexLevelParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLfloat *)), _gloffset_GetTexLevelParameterfv, parameters)
+#define GET_GetTexLevelParameterfv(disp) GET_by_offset(disp, _gloffset_GetTexLevelParameterfv)
+#define SET_GetTexLevelParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetTexLevelParameterfv, fn)
+#define CALL_GetTexLevelParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLint *)), _gloffset_GetTexLevelParameteriv, parameters)
+#define GET_GetTexLevelParameteriv(disp) GET_by_offset(disp, _gloffset_GetTexLevelParameteriv)
+#define SET_GetTexLevelParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetTexLevelParameteriv, fn)
+#define CALL_IsEnabled(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum)), _gloffset_IsEnabled, parameters)
+#define GET_IsEnabled(disp) GET_by_offset(disp, _gloffset_IsEnabled)
+#define SET_IsEnabled(disp, fn) SET_by_offset(disp, _gloffset_IsEnabled, fn)
+#define CALL_IsList(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsList, parameters)
+#define GET_IsList(disp) GET_by_offset(disp, _gloffset_IsList)
+#define SET_IsList(disp, fn) SET_by_offset(disp, _gloffset_IsList, fn)
+#define CALL_DepthRange(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampd, GLclampd)), _gloffset_DepthRange, parameters)
+#define GET_DepthRange(disp) GET_by_offset(disp, _gloffset_DepthRange)
+#define SET_DepthRange(disp, fn) SET_by_offset(disp, _gloffset_DepthRange, fn)
+#define CALL_Frustum(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Frustum, parameters)
+#define GET_Frustum(disp) GET_by_offset(disp, _gloffset_Frustum)
+#define SET_Frustum(disp, fn) SET_by_offset(disp, _gloffset_Frustum, fn)
+#define CALL_LoadIdentity(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_LoadIdentity, parameters)
+#define GET_LoadIdentity(disp) GET_by_offset(disp, _gloffset_LoadIdentity)
+#define SET_LoadIdentity(disp, fn) SET_by_offset(disp, _gloffset_LoadIdentity, fn)
+#define CALL_LoadMatrixf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_LoadMatrixf, parameters)
+#define GET_LoadMatrixf(disp) GET_by_offset(disp, _gloffset_LoadMatrixf)
+#define SET_LoadMatrixf(disp, fn) SET_by_offset(disp, _gloffset_LoadMatrixf, fn)
+#define CALL_LoadMatrixd(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_LoadMatrixd, parameters)
+#define GET_LoadMatrixd(disp) GET_by_offset(disp, _gloffset_LoadMatrixd)
+#define SET_LoadMatrixd(disp, fn) SET_by_offset(disp, _gloffset_LoadMatrixd, fn)
+#define CALL_MatrixMode(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_MatrixMode, parameters)
+#define GET_MatrixMode(disp) GET_by_offset(disp, _gloffset_MatrixMode)
+#define SET_MatrixMode(disp, fn) SET_by_offset(disp, _gloffset_MatrixMode, fn)
+#define CALL_MultMatrixf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_MultMatrixf, parameters)
+#define GET_MultMatrixf(disp) GET_by_offset(disp, _gloffset_MultMatrixf)
+#define SET_MultMatrixf(disp, fn) SET_by_offset(disp, _gloffset_MultMatrixf, fn)
+#define CALL_MultMatrixd(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_MultMatrixd, parameters)
+#define GET_MultMatrixd(disp) GET_by_offset(disp, _gloffset_MultMatrixd)
+#define SET_MultMatrixd(disp, fn) SET_by_offset(disp, _gloffset_MultMatrixd, fn)
+#define CALL_Ortho(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Ortho, parameters)
+#define GET_Ortho(disp) GET_by_offset(disp, _gloffset_Ortho)
+#define SET_Ortho(disp, fn) SET_by_offset(disp, _gloffset_Ortho, fn)
+#define CALL_PopMatrix(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PopMatrix, parameters)
+#define GET_PopMatrix(disp) GET_by_offset(disp, _gloffset_PopMatrix)
+#define SET_PopMatrix(disp, fn) SET_by_offset(disp, _gloffset_PopMatrix, fn)
+#define CALL_PushMatrix(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PushMatrix, parameters)
+#define GET_PushMatrix(disp) GET_by_offset(disp, _gloffset_PushMatrix)
+#define SET_PushMatrix(disp, fn) SET_by_offset(disp, _gloffset_PushMatrix, fn)
+#define CALL_Rotated(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_Rotated, parameters)
+#define GET_Rotated(disp) GET_by_offset(disp, _gloffset_Rotated)
+#define SET_Rotated(disp, fn) SET_by_offset(disp, _gloffset_Rotated, fn)
+#define CALL_Rotatef(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_Rotatef, parameters)
+#define GET_Rotatef(disp) GET_by_offset(disp, _gloffset_Rotatef)
+#define SET_Rotatef(disp, fn) SET_by_offset(disp, _gloffset_Rotatef, fn)
+#define CALL_Scaled(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_Scaled, parameters)
+#define GET_Scaled(disp) GET_by_offset(disp, _gloffset_Scaled)
+#define SET_Scaled(disp, fn) SET_by_offset(disp, _gloffset_Scaled, fn)
+#define CALL_Scalef(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_Scalef, parameters)
+#define GET_Scalef(disp) GET_by_offset(disp, _gloffset_Scalef)
+#define SET_Scalef(disp, fn) SET_by_offset(disp, _gloffset_Scalef, fn)
+#define CALL_Translated(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_Translated, parameters)
+#define GET_Translated(disp) GET_by_offset(disp, _gloffset_Translated)
+#define SET_Translated(disp, fn) SET_by_offset(disp, _gloffset_Translated, fn)
+#define CALL_Translatef(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_Translatef, parameters)
+#define GET_Translatef(disp) GET_by_offset(disp, _gloffset_Translatef)
+#define SET_Translatef(disp, fn) SET_by_offset(disp, _gloffset_Translatef, fn)
+#define CALL_Viewport(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLsizei, GLsizei)), _gloffset_Viewport, parameters)
+#define GET_Viewport(disp) GET_by_offset(disp, _gloffset_Viewport)
+#define SET_Viewport(disp, fn) SET_by_offset(disp, _gloffset_Viewport, fn)
+#define CALL_ArrayElement(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint)), _gloffset_ArrayElement, parameters)
+#define GET_ArrayElement(disp) GET_by_offset(disp, _gloffset_ArrayElement)
+#define SET_ArrayElement(disp, fn) SET_by_offset(disp, _gloffset_ArrayElement, fn)
+#define CALL_BindTexture(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindTexture, parameters)
+#define GET_BindTexture(disp) GET_by_offset(disp, _gloffset_BindTexture)
+#define SET_BindTexture(disp, fn) SET_by_offset(disp, _gloffset_BindTexture, fn)
+#define CALL_ColorPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_ColorPointer, parameters)
+#define GET_ColorPointer(disp) GET_by_offset(disp, _gloffset_ColorPointer)
+#define SET_ColorPointer(disp, fn) SET_by_offset(disp, _gloffset_ColorPointer, fn)
+#define CALL_DisableClientState(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_DisableClientState, parameters)
+#define GET_DisableClientState(disp) GET_by_offset(disp, _gloffset_DisableClientState)
+#define SET_DisableClientState(disp, fn) SET_by_offset(disp, _gloffset_DisableClientState, fn)
+#define CALL_DrawArrays(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei)), _gloffset_DrawArrays, parameters)
+#define GET_DrawArrays(disp) GET_by_offset(disp, _gloffset_DrawArrays)
+#define SET_DrawArrays(disp, fn) SET_by_offset(disp, _gloffset_DrawArrays, fn)
+#define CALL_DrawElements(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *)), _gloffset_DrawElements, parameters)
+#define GET_DrawElements(disp) GET_by_offset(disp, _gloffset_DrawElements)
+#define SET_DrawElements(disp, fn) SET_by_offset(disp, _gloffset_DrawElements, fn)
+#define CALL_EdgeFlagPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLvoid *)), _gloffset_EdgeFlagPointer, parameters)
+#define GET_EdgeFlagPointer(disp) GET_by_offset(disp, _gloffset_EdgeFlagPointer)
+#define SET_EdgeFlagPointer(disp, fn) SET_by_offset(disp, _gloffset_EdgeFlagPointer, fn)
+#define CALL_EnableClientState(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_EnableClientState, parameters)
+#define GET_EnableClientState(disp) GET_by_offset(disp, _gloffset_EnableClientState)
+#define SET_EnableClientState(disp, fn) SET_by_offset(disp, _gloffset_EnableClientState, fn)
+#define CALL_IndexPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLvoid *)), _gloffset_IndexPointer, parameters)
+#define GET_IndexPointer(disp) GET_by_offset(disp, _gloffset_IndexPointer)
+#define SET_IndexPointer(disp, fn) SET_by_offset(disp, _gloffset_IndexPointer, fn)
+#define CALL_Indexub(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte)), _gloffset_Indexub, parameters)
+#define GET_Indexub(disp) GET_by_offset(disp, _gloffset_Indexub)
+#define SET_Indexub(disp, fn) SET_by_offset(disp, _gloffset_Indexub, fn)
+#define CALL_Indexubv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), _gloffset_Indexubv, parameters)
+#define GET_Indexubv(disp) GET_by_offset(disp, _gloffset_Indexubv)
+#define SET_Indexubv(disp, fn) SET_by_offset(disp, _gloffset_Indexubv, fn)
+#define CALL_InterleavedArrays(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLvoid *)), _gloffset_InterleavedArrays, parameters)
+#define GET_InterleavedArrays(disp) GET_by_offset(disp, _gloffset_InterleavedArrays)
+#define SET_InterleavedArrays(disp, fn) SET_by_offset(disp, _gloffset_InterleavedArrays, fn)
+#define CALL_NormalPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLvoid *)), _gloffset_NormalPointer, parameters)
+#define GET_NormalPointer(disp) GET_by_offset(disp, _gloffset_NormalPointer)
+#define SET_NormalPointer(disp, fn) SET_by_offset(disp, _gloffset_NormalPointer, fn)
+#define CALL_PolygonOffset(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_PolygonOffset, parameters)
+#define GET_PolygonOffset(disp) GET_by_offset(disp, _gloffset_PolygonOffset)
+#define SET_PolygonOffset(disp, fn) SET_by_offset(disp, _gloffset_PolygonOffset, fn)
+#define CALL_TexCoordPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_TexCoordPointer, parameters)
+#define GET_TexCoordPointer(disp) GET_by_offset(disp, _gloffset_TexCoordPointer)
+#define SET_TexCoordPointer(disp, fn) SET_by_offset(disp, _gloffset_TexCoordPointer, fn)
+#define CALL_VertexPointer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_VertexPointer, parameters)
+#define GET_VertexPointer(disp) GET_by_offset(disp, _gloffset_VertexPointer)
+#define SET_VertexPointer(disp, fn) SET_by_offset(disp, _gloffset_VertexPointer, fn)
+#define CALL_AreTexturesResident(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsizei, const GLuint *, GLboolean *)), _gloffset_AreTexturesResident, parameters)
+#define GET_AreTexturesResident(disp) GET_by_offset(disp, _gloffset_AreTexturesResident)
+#define SET_AreTexturesResident(disp, fn) SET_by_offset(disp, _gloffset_AreTexturesResident, fn)
+#define CALL_CopyTexImage1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint)), _gloffset_CopyTexImage1D, parameters)
+#define GET_CopyTexImage1D(disp) GET_by_offset(disp, _gloffset_CopyTexImage1D)
+#define SET_CopyTexImage1D(disp, fn) SET_by_offset(disp, _gloffset_CopyTexImage1D, fn)
+#define CALL_CopyTexImage2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint)), _gloffset_CopyTexImage2D, parameters)
+#define GET_CopyTexImage2D(disp) GET_by_offset(disp, _gloffset_CopyTexImage2D)
+#define SET_CopyTexImage2D(disp, fn) SET_by_offset(disp, _gloffset_CopyTexImage2D, fn)
+#define CALL_CopyTexSubImage1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei)), _gloffset_CopyTexSubImage1D, parameters)
+#define GET_CopyTexSubImage1D(disp) GET_by_offset(disp, _gloffset_CopyTexSubImage1D)
+#define SET_CopyTexSubImage1D(disp, fn) SET_by_offset(disp, _gloffset_CopyTexSubImage1D, fn)
+#define CALL_CopyTexSubImage2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei)), _gloffset_CopyTexSubImage2D, parameters)
+#define GET_CopyTexSubImage2D(disp) GET_by_offset(disp, _gloffset_CopyTexSubImage2D)
+#define SET_CopyTexSubImage2D(disp, fn) SET_by_offset(disp, _gloffset_CopyTexSubImage2D, fn)
+#define CALL_DeleteTextures(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteTextures, parameters)
+#define GET_DeleteTextures(disp) GET_by_offset(disp, _gloffset_DeleteTextures)
+#define SET_DeleteTextures(disp, fn) SET_by_offset(disp, _gloffset_DeleteTextures, fn)
+#define CALL_GenTextures(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenTextures, parameters)
+#define GET_GenTextures(disp) GET_by_offset(disp, _gloffset_GenTextures)
+#define SET_GenTextures(disp, fn) SET_by_offset(disp, _gloffset_GenTextures, fn)
+#define CALL_GetPointerv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid **)), _gloffset_GetPointerv, parameters)
+#define GET_GetPointerv(disp) GET_by_offset(disp, _gloffset_GetPointerv)
+#define SET_GetPointerv(disp, fn) SET_by_offset(disp, _gloffset_GetPointerv, fn)
+#define CALL_IsTexture(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsTexture, parameters)
+#define GET_IsTexture(disp) GET_by_offset(disp, _gloffset_IsTexture)
+#define SET_IsTexture(disp, fn) SET_by_offset(disp, _gloffset_IsTexture, fn)
+#define CALL_PrioritizeTextures(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *, const GLclampf *)), _gloffset_PrioritizeTextures, parameters)
+#define GET_PrioritizeTextures(disp) GET_by_offset(disp, _gloffset_PrioritizeTextures)
+#define SET_PrioritizeTextures(disp, fn) SET_by_offset(disp, _gloffset_PrioritizeTextures, fn)
+#define CALL_TexSubImage1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_TexSubImage1D, parameters)
+#define GET_TexSubImage1D(disp) GET_by_offset(disp, _gloffset_TexSubImage1D)
+#define SET_TexSubImage1D(disp, fn) SET_by_offset(disp, _gloffset_TexSubImage1D, fn)
+#define CALL_TexSubImage2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_TexSubImage2D, parameters)
+#define GET_TexSubImage2D(disp) GET_by_offset(disp, _gloffset_TexSubImage2D)
+#define SET_TexSubImage2D(disp, fn) SET_by_offset(disp, _gloffset_TexSubImage2D, fn)
+#define CALL_PopClientAttrib(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PopClientAttrib, parameters)
+#define GET_PopClientAttrib(disp) GET_by_offset(disp, _gloffset_PopClientAttrib)
+#define SET_PopClientAttrib(disp, fn) SET_by_offset(disp, _gloffset_PopClientAttrib, fn)
+#define CALL_PushClientAttrib(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbitfield)), _gloffset_PushClientAttrib, parameters)
+#define GET_PushClientAttrib(disp) GET_by_offset(disp, _gloffset_PushClientAttrib)
+#define SET_PushClientAttrib(disp, fn) SET_by_offset(disp, _gloffset_PushClientAttrib, fn)
+#define CALL_BlendColor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLclampf, GLclampf, GLclampf)), _gloffset_BlendColor, parameters)
+#define GET_BlendColor(disp) GET_by_offset(disp, _gloffset_BlendColor)
+#define SET_BlendColor(disp, fn) SET_by_offset(disp, _gloffset_BlendColor, fn)
+#define CALL_BlendEquation(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_BlendEquation, parameters)
+#define GET_BlendEquation(disp) GET_by_offset(disp, _gloffset_BlendEquation)
+#define SET_BlendEquation(disp, fn) SET_by_offset(disp, _gloffset_BlendEquation, fn)
+#define CALL_DrawRangeElements(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *)), _gloffset_DrawRangeElements, parameters)
+#define GET_DrawRangeElements(disp) GET_by_offset(disp, _gloffset_DrawRangeElements)
+#define SET_DrawRangeElements(disp, fn) SET_by_offset(disp, _gloffset_DrawRangeElements, fn)
+#define CALL_ColorTable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_ColorTable, parameters)
+#define GET_ColorTable(disp) GET_by_offset(disp, _gloffset_ColorTable)
+#define SET_ColorTable(disp, fn) SET_by_offset(disp, _gloffset_ColorTable, fn)
+#define CALL_ColorTableParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_ColorTableParameterfv, parameters)
+#define GET_ColorTableParameterfv(disp) GET_by_offset(disp, _gloffset_ColorTableParameterfv)
+#define SET_ColorTableParameterfv(disp, fn) SET_by_offset(disp, _gloffset_ColorTableParameterfv, fn)
+#define CALL_ColorTableParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_ColorTableParameteriv, parameters)
+#define GET_ColorTableParameteriv(disp) GET_by_offset(disp, _gloffset_ColorTableParameteriv)
+#define SET_ColorTableParameteriv(disp, fn) SET_by_offset(disp, _gloffset_ColorTableParameteriv, fn)
+#define CALL_CopyColorTable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLint, GLsizei)), _gloffset_CopyColorTable, parameters)
+#define GET_CopyColorTable(disp) GET_by_offset(disp, _gloffset_CopyColorTable)
+#define SET_CopyColorTable(disp, fn) SET_by_offset(disp, _gloffset_CopyColorTable, fn)
+#define CALL_GetColorTable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLvoid *)), _gloffset_GetColorTable, parameters)
+#define GET_GetColorTable(disp) GET_by_offset(disp, _gloffset_GetColorTable)
+#define SET_GetColorTable(disp, fn) SET_by_offset(disp, _gloffset_GetColorTable, fn)
+#define CALL_GetColorTableParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetColorTableParameterfv, parameters)
+#define GET_GetColorTableParameterfv(disp) GET_by_offset(disp, _gloffset_GetColorTableParameterfv)
+#define SET_GetColorTableParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetColorTableParameterfv, fn)
+#define CALL_GetColorTableParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetColorTableParameteriv, parameters)
+#define GET_GetColorTableParameteriv(disp) GET_by_offset(disp, _gloffset_GetColorTableParameteriv)
+#define SET_GetColorTableParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetColorTableParameteriv, fn)
+#define CALL_ColorSubTable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_ColorSubTable, parameters)
+#define GET_ColorSubTable(disp) GET_by_offset(disp, _gloffset_ColorSubTable)
+#define SET_ColorSubTable(disp, fn) SET_by_offset(disp, _gloffset_ColorSubTable, fn)
+#define CALL_CopyColorSubTable(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLint, GLint, GLsizei)), _gloffset_CopyColorSubTable, parameters)
+#define GET_CopyColorSubTable(disp) GET_by_offset(disp, _gloffset_CopyColorSubTable)
+#define SET_CopyColorSubTable(disp, fn) SET_by_offset(disp, _gloffset_CopyColorSubTable, fn)
+#define CALL_ConvolutionFilter1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_ConvolutionFilter1D, parameters)
+#define GET_ConvolutionFilter1D(disp) GET_by_offset(disp, _gloffset_ConvolutionFilter1D)
+#define SET_ConvolutionFilter1D(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionFilter1D, fn)
+#define CALL_ConvolutionFilter2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_ConvolutionFilter2D, parameters)
+#define GET_ConvolutionFilter2D(disp) GET_by_offset(disp, _gloffset_ConvolutionFilter2D)
+#define SET_ConvolutionFilter2D(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionFilter2D, fn)
+#define CALL_ConvolutionParameterf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat)), _gloffset_ConvolutionParameterf, parameters)
+#define GET_ConvolutionParameterf(disp) GET_by_offset(disp, _gloffset_ConvolutionParameterf)
+#define SET_ConvolutionParameterf(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionParameterf, fn)
+#define CALL_ConvolutionParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLfloat *)), _gloffset_ConvolutionParameterfv, parameters)
+#define GET_ConvolutionParameterfv(disp) GET_by_offset(disp, _gloffset_ConvolutionParameterfv)
+#define SET_ConvolutionParameterfv(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionParameterfv, fn)
+#define CALL_ConvolutionParameteri(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_ConvolutionParameteri, parameters)
+#define GET_ConvolutionParameteri(disp) GET_by_offset(disp, _gloffset_ConvolutionParameteri)
+#define SET_ConvolutionParameteri(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionParameteri, fn)
+#define CALL_ConvolutionParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_ConvolutionParameteriv, parameters)
+#define GET_ConvolutionParameteriv(disp) GET_by_offset(disp, _gloffset_ConvolutionParameteriv)
+#define SET_ConvolutionParameteriv(disp, fn) SET_by_offset(disp, _gloffset_ConvolutionParameteriv, fn)
+#define CALL_CopyConvolutionFilter1D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLint, GLsizei)), _gloffset_CopyConvolutionFilter1D, parameters)
+#define GET_CopyConvolutionFilter1D(disp) GET_by_offset(disp, _gloffset_CopyConvolutionFilter1D)
+#define SET_CopyConvolutionFilter1D(disp, fn) SET_by_offset(disp, _gloffset_CopyConvolutionFilter1D, fn)
+#define CALL_CopyConvolutionFilter2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLint, GLsizei, GLsizei)), _gloffset_CopyConvolutionFilter2D, parameters)
+#define GET_CopyConvolutionFilter2D(disp) GET_by_offset(disp, _gloffset_CopyConvolutionFilter2D)
+#define SET_CopyConvolutionFilter2D(disp, fn) SET_by_offset(disp, _gloffset_CopyConvolutionFilter2D, fn)
+#define CALL_GetConvolutionFilter(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLvoid *)), _gloffset_GetConvolutionFilter, parameters)
+#define GET_GetConvolutionFilter(disp) GET_by_offset(disp, _gloffset_GetConvolutionFilter)
+#define SET_GetConvolutionFilter(disp, fn) SET_by_offset(disp, _gloffset_GetConvolutionFilter, fn)
+#define CALL_GetConvolutionParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetConvolutionParameterfv, parameters)
+#define GET_GetConvolutionParameterfv(disp) GET_by_offset(disp, _gloffset_GetConvolutionParameterfv)
+#define SET_GetConvolutionParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetConvolutionParameterfv, fn)
+#define CALL_GetConvolutionParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetConvolutionParameteriv, parameters)
+#define GET_GetConvolutionParameteriv(disp) GET_by_offset(disp, _gloffset_GetConvolutionParameteriv)
+#define SET_GetConvolutionParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetConvolutionParameteriv, fn)
+#define CALL_GetSeparableFilter(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *)), _gloffset_GetSeparableFilter, parameters)
+#define GET_GetSeparableFilter(disp) GET_by_offset(disp, _gloffset_GetSeparableFilter)
+#define SET_GetSeparableFilter(disp, fn) SET_by_offset(disp, _gloffset_GetSeparableFilter, fn)
+#define CALL_SeparableFilter2D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *)), _gloffset_SeparableFilter2D, parameters)
+#define GET_SeparableFilter2D(disp) GET_by_offset(disp, _gloffset_SeparableFilter2D)
+#define SET_SeparableFilter2D(disp, fn) SET_by_offset(disp, _gloffset_SeparableFilter2D, fn)
+#define CALL_GetHistogram(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLboolean, GLenum, GLenum, GLvoid *)), _gloffset_GetHistogram, parameters)
+#define GET_GetHistogram(disp) GET_by_offset(disp, _gloffset_GetHistogram)
+#define SET_GetHistogram(disp, fn) SET_by_offset(disp, _gloffset_GetHistogram, fn)
+#define CALL_GetHistogramParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetHistogramParameterfv, parameters)
+#define GET_GetHistogramParameterfv(disp) GET_by_offset(disp, _gloffset_GetHistogramParameterfv)
+#define SET_GetHistogramParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetHistogramParameterfv, fn)
+#define CALL_GetHistogramParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetHistogramParameteriv, parameters)
+#define GET_GetHistogramParameteriv(disp) GET_by_offset(disp, _gloffset_GetHistogramParameteriv)
+#define SET_GetHistogramParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetHistogramParameteriv, fn)
+#define CALL_GetMinmax(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLboolean, GLenum, GLenum, GLvoid *)), _gloffset_GetMinmax, parameters)
+#define GET_GetMinmax(disp) GET_by_offset(disp, _gloffset_GetMinmax)
+#define SET_GetMinmax(disp, fn) SET_by_offset(disp, _gloffset_GetMinmax, fn)
+#define CALL_GetMinmaxParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetMinmaxParameterfv, parameters)
+#define GET_GetMinmaxParameterfv(disp) GET_by_offset(disp, _gloffset_GetMinmaxParameterfv)
+#define SET_GetMinmaxParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetMinmaxParameterfv, fn)
+#define CALL_GetMinmaxParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetMinmaxParameteriv, parameters)
+#define GET_GetMinmaxParameteriv(disp) GET_by_offset(disp, _gloffset_GetMinmaxParameteriv)
+#define SET_GetMinmaxParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetMinmaxParameteriv, fn)
+#define CALL_Histogram(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, GLboolean)), _gloffset_Histogram, parameters)
+#define GET_Histogram(disp) GET_by_offset(disp, _gloffset_Histogram)
+#define SET_Histogram(disp, fn) SET_by_offset(disp, _gloffset_Histogram, fn)
+#define CALL_Minmax(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLboolean)), _gloffset_Minmax, parameters)
+#define GET_Minmax(disp) GET_by_offset(disp, _gloffset_Minmax)
+#define SET_Minmax(disp, fn) SET_by_offset(disp, _gloffset_Minmax, fn)
+#define CALL_ResetHistogram(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ResetHistogram, parameters)
+#define GET_ResetHistogram(disp) GET_by_offset(disp, _gloffset_ResetHistogram)
+#define SET_ResetHistogram(disp, fn) SET_by_offset(disp, _gloffset_ResetHistogram, fn)
+#define CALL_ResetMinmax(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ResetMinmax, parameters)
+#define GET_ResetMinmax(disp) GET_by_offset(disp, _gloffset_ResetMinmax)
+#define SET_ResetMinmax(disp, fn) SET_by_offset(disp, _gloffset_ResetMinmax, fn)
+#define CALL_TexImage3D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *)), _gloffset_TexImage3D, parameters)
+#define GET_TexImage3D(disp) GET_by_offset(disp, _gloffset_TexImage3D)
+#define SET_TexImage3D(disp, fn) SET_by_offset(disp, _gloffset_TexImage3D, fn)
+#define CALL_TexSubImage3D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)), _gloffset_TexSubImage3D, parameters)
+#define GET_TexSubImage3D(disp) GET_by_offset(disp, _gloffset_TexSubImage3D)
+#define SET_TexSubImage3D(disp, fn) SET_by_offset(disp, _gloffset_TexSubImage3D, fn)
+#define CALL_CopyTexSubImage3D(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei)), _gloffset_CopyTexSubImage3D, parameters)
+#define GET_CopyTexSubImage3D(disp) GET_by_offset(disp, _gloffset_CopyTexSubImage3D)
+#define SET_CopyTexSubImage3D(disp, fn) SET_by_offset(disp, _gloffset_CopyTexSubImage3D, fn)
+#define CALL_ActiveTextureARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ActiveTextureARB, parameters)
+#define GET_ActiveTextureARB(disp) GET_by_offset(disp, _gloffset_ActiveTextureARB)
+#define SET_ActiveTextureARB(disp, fn) SET_by_offset(disp, _gloffset_ActiveTextureARB, fn)
+#define CALL_ClientActiveTextureARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ClientActiveTextureARB, parameters)
+#define GET_ClientActiveTextureARB(disp) GET_by_offset(disp, _gloffset_ClientActiveTextureARB)
+#define SET_ClientActiveTextureARB(disp, fn) SET_by_offset(disp, _gloffset_ClientActiveTextureARB, fn)
+#define CALL_MultiTexCoord1dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble)), _gloffset_MultiTexCoord1dARB, parameters)
+#define GET_MultiTexCoord1dARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1dARB)
+#define SET_MultiTexCoord1dARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1dARB, fn)
+#define CALL_MultiTexCoord1dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLdouble *)), _gloffset_MultiTexCoord1dvARB, parameters)
+#define GET_MultiTexCoord1dvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1dvARB)
+#define SET_MultiTexCoord1dvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1dvARB, fn)
+#define CALL_MultiTexCoord1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_MultiTexCoord1fARB, parameters)
+#define GET_MultiTexCoord1fARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1fARB)
+#define SET_MultiTexCoord1fARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1fARB, fn)
+#define CALL_MultiTexCoord1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_MultiTexCoord1fvARB, parameters)
+#define GET_MultiTexCoord1fvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1fvARB)
+#define SET_MultiTexCoord1fvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1fvARB, fn)
+#define CALL_MultiTexCoord1iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_MultiTexCoord1iARB, parameters)
+#define GET_MultiTexCoord1iARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1iARB)
+#define SET_MultiTexCoord1iARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1iARB, fn)
+#define CALL_MultiTexCoord1ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_MultiTexCoord1ivARB, parameters)
+#define GET_MultiTexCoord1ivARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1ivARB)
+#define SET_MultiTexCoord1ivARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1ivARB, fn)
+#define CALL_MultiTexCoord1sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLshort)), _gloffset_MultiTexCoord1sARB, parameters)
+#define GET_MultiTexCoord1sARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1sARB)
+#define SET_MultiTexCoord1sARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1sARB, fn)
+#define CALL_MultiTexCoord1svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLshort *)), _gloffset_MultiTexCoord1svARB, parameters)
+#define GET_MultiTexCoord1svARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord1svARB)
+#define SET_MultiTexCoord1svARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord1svARB, fn)
+#define CALL_MultiTexCoord2dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble, GLdouble)), _gloffset_MultiTexCoord2dARB, parameters)
+#define GET_MultiTexCoord2dARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2dARB)
+#define SET_MultiTexCoord2dARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2dARB, fn)
+#define CALL_MultiTexCoord2dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLdouble *)), _gloffset_MultiTexCoord2dvARB, parameters)
+#define GET_MultiTexCoord2dvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2dvARB)
+#define SET_MultiTexCoord2dvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2dvARB, fn)
+#define CALL_MultiTexCoord2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat, GLfloat)), _gloffset_MultiTexCoord2fARB, parameters)
+#define GET_MultiTexCoord2fARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2fARB)
+#define SET_MultiTexCoord2fARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2fARB, fn)
+#define CALL_MultiTexCoord2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_MultiTexCoord2fvARB, parameters)
+#define GET_MultiTexCoord2fvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2fvARB)
+#define SET_MultiTexCoord2fvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2fvARB, fn)
+#define CALL_MultiTexCoord2iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint)), _gloffset_MultiTexCoord2iARB, parameters)
+#define GET_MultiTexCoord2iARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2iARB)
+#define SET_MultiTexCoord2iARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2iARB, fn)
+#define CALL_MultiTexCoord2ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_MultiTexCoord2ivARB, parameters)
+#define GET_MultiTexCoord2ivARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2ivARB)
+#define SET_MultiTexCoord2ivARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2ivARB, fn)
+#define CALL_MultiTexCoord2sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLshort, GLshort)), _gloffset_MultiTexCoord2sARB, parameters)
+#define GET_MultiTexCoord2sARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2sARB)
+#define SET_MultiTexCoord2sARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2sARB, fn)
+#define CALL_MultiTexCoord2svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLshort *)), _gloffset_MultiTexCoord2svARB, parameters)
+#define GET_MultiTexCoord2svARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord2svARB)
+#define SET_MultiTexCoord2svARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord2svARB, fn)
+#define CALL_MultiTexCoord3dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble, GLdouble, GLdouble)), _gloffset_MultiTexCoord3dARB, parameters)
+#define GET_MultiTexCoord3dARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3dARB)
+#define SET_MultiTexCoord3dARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3dARB, fn)
+#define CALL_MultiTexCoord3dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLdouble *)), _gloffset_MultiTexCoord3dvARB, parameters)
+#define GET_MultiTexCoord3dvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3dvARB)
+#define SET_MultiTexCoord3dvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3dvARB, fn)
+#define CALL_MultiTexCoord3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat, GLfloat, GLfloat)), _gloffset_MultiTexCoord3fARB, parameters)
+#define GET_MultiTexCoord3fARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3fARB)
+#define SET_MultiTexCoord3fARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3fARB, fn)
+#define CALL_MultiTexCoord3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_MultiTexCoord3fvARB, parameters)
+#define GET_MultiTexCoord3fvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3fvARB)
+#define SET_MultiTexCoord3fvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3fvARB, fn)
+#define CALL_MultiTexCoord3iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint)), _gloffset_MultiTexCoord3iARB, parameters)
+#define GET_MultiTexCoord3iARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3iARB)
+#define SET_MultiTexCoord3iARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3iARB, fn)
+#define CALL_MultiTexCoord3ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_MultiTexCoord3ivARB, parameters)
+#define GET_MultiTexCoord3ivARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3ivARB)
+#define SET_MultiTexCoord3ivARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3ivARB, fn)
+#define CALL_MultiTexCoord3sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLshort, GLshort, GLshort)), _gloffset_MultiTexCoord3sARB, parameters)
+#define GET_MultiTexCoord3sARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3sARB)
+#define SET_MultiTexCoord3sARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3sARB, fn)
+#define CALL_MultiTexCoord3svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLshort *)), _gloffset_MultiTexCoord3svARB, parameters)
+#define GET_MultiTexCoord3svARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord3svARB)
+#define SET_MultiTexCoord3svARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord3svARB, fn)
+#define CALL_MultiTexCoord4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_MultiTexCoord4dARB, parameters)
+#define GET_MultiTexCoord4dARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4dARB)
+#define SET_MultiTexCoord4dARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4dARB, fn)
+#define CALL_MultiTexCoord4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLdouble *)), _gloffset_MultiTexCoord4dvARB, parameters)
+#define GET_MultiTexCoord4dvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4dvARB)
+#define SET_MultiTexCoord4dvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4dvARB, fn)
+#define CALL_MultiTexCoord4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_MultiTexCoord4fARB, parameters)
+#define GET_MultiTexCoord4fARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4fARB)
+#define SET_MultiTexCoord4fARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4fARB, fn)
+#define CALL_MultiTexCoord4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_MultiTexCoord4fvARB, parameters)
+#define GET_MultiTexCoord4fvARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4fvARB)
+#define SET_MultiTexCoord4fvARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4fvARB, fn)
+#define CALL_MultiTexCoord4iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint)), _gloffset_MultiTexCoord4iARB, parameters)
+#define GET_MultiTexCoord4iARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4iARB)
+#define SET_MultiTexCoord4iARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4iARB, fn)
+#define CALL_MultiTexCoord4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_MultiTexCoord4ivARB, parameters)
+#define GET_MultiTexCoord4ivARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4ivARB)
+#define SET_MultiTexCoord4ivARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4ivARB, fn)
+#define CALL_MultiTexCoord4sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLshort, GLshort, GLshort, GLshort)), _gloffset_MultiTexCoord4sARB, parameters)
+#define GET_MultiTexCoord4sARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4sARB)
+#define SET_MultiTexCoord4sARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4sARB, fn)
+#define CALL_MultiTexCoord4svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLshort *)), _gloffset_MultiTexCoord4svARB, parameters)
+#define GET_MultiTexCoord4svARB(disp) GET_by_offset(disp, _gloffset_MultiTexCoord4svARB)
+#define SET_MultiTexCoord4svARB(disp, fn) SET_by_offset(disp, _gloffset_MultiTexCoord4svARB, fn)
+#define CALL_AttachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_AttachShader, parameters)
+#define GET_AttachShader(disp) GET_by_offset(disp, _gloffset_AttachShader)
+#define SET_AttachShader(disp, fn) SET_by_offset(disp, _gloffset_AttachShader, fn)
+#define CALL_CreateProgram(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(void)), _gloffset_CreateProgram, parameters)
+#define GET_CreateProgram(disp) GET_by_offset(disp, _gloffset_CreateProgram)
+#define SET_CreateProgram(disp, fn) SET_by_offset(disp, _gloffset_CreateProgram, fn)
+#define CALL_CreateShader(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLenum)), _gloffset_CreateShader, parameters)
+#define GET_CreateShader(disp) GET_by_offset(disp, _gloffset_CreateShader)
+#define SET_CreateShader(disp, fn) SET_by_offset(disp, _gloffset_CreateShader, fn)
+#define CALL_DeleteProgram(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_DeleteProgram, parameters)
+#define GET_DeleteProgram(disp) GET_by_offset(disp, _gloffset_DeleteProgram)
+#define SET_DeleteProgram(disp, fn) SET_by_offset(disp, _gloffset_DeleteProgram, fn)
+#define CALL_DeleteShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_DeleteShader, parameters)
+#define GET_DeleteShader(disp) GET_by_offset(disp, _gloffset_DeleteShader)
+#define SET_DeleteShader(disp, fn) SET_by_offset(disp, _gloffset_DeleteShader, fn)
+#define CALL_DetachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_DetachShader, parameters)
+#define GET_DetachShader(disp) GET_by_offset(disp, _gloffset_DetachShader)
+#define SET_DetachShader(disp, fn) SET_by_offset(disp, _gloffset_DetachShader, fn)
+#define CALL_GetAttachedShaders(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLuint *)), _gloffset_GetAttachedShaders, parameters)
+#define GET_GetAttachedShaders(disp) GET_by_offset(disp, _gloffset_GetAttachedShaders)
+#define SET_GetAttachedShaders(disp, fn) SET_by_offset(disp, _gloffset_GetAttachedShaders, fn)
+#define CALL_GetProgramInfoLog(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLchar *)), _gloffset_GetProgramInfoLog, parameters)
+#define GET_GetProgramInfoLog(disp) GET_by_offset(disp, _gloffset_GetProgramInfoLog)
+#define SET_GetProgramInfoLog(disp, fn) SET_by_offset(disp, _gloffset_GetProgramInfoLog, fn)
+#define CALL_GetProgramiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetProgramiv, parameters)
+#define GET_GetProgramiv(disp) GET_by_offset(disp, _gloffset_GetProgramiv)
+#define SET_GetProgramiv(disp, fn) SET_by_offset(disp, _gloffset_GetProgramiv, fn)
+#define CALL_GetShaderInfoLog(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLchar *)), _gloffset_GetShaderInfoLog, parameters)
+#define GET_GetShaderInfoLog(disp) GET_by_offset(disp, _gloffset_GetShaderInfoLog)
+#define SET_GetShaderInfoLog(disp, fn) SET_by_offset(disp, _gloffset_GetShaderInfoLog, fn)
+#define CALL_GetShaderiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetShaderiv, parameters)
+#define GET_GetShaderiv(disp) GET_by_offset(disp, _gloffset_GetShaderiv)
+#define SET_GetShaderiv(disp, fn) SET_by_offset(disp, _gloffset_GetShaderiv, fn)
+#define CALL_IsProgram(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsProgram, parameters)
+#define GET_IsProgram(disp) GET_by_offset(disp, _gloffset_IsProgram)
+#define SET_IsProgram(disp, fn) SET_by_offset(disp, _gloffset_IsProgram, fn)
+#define CALL_IsShader(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsShader, parameters)
+#define GET_IsShader(disp) GET_by_offset(disp, _gloffset_IsShader)
+#define SET_IsShader(disp, fn) SET_by_offset(disp, _gloffset_IsShader, fn)
+#define CALL_StencilFuncSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLuint)), _gloffset_StencilFuncSeparate, parameters)
+#define GET_StencilFuncSeparate(disp) GET_by_offset(disp, _gloffset_StencilFuncSeparate)
+#define SET_StencilFuncSeparate(disp, fn) SET_by_offset(disp, _gloffset_StencilFuncSeparate, fn)
+#define CALL_StencilMaskSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_StencilMaskSeparate, parameters)
+#define GET_StencilMaskSeparate(disp) GET_by_offset(disp, _gloffset_StencilMaskSeparate)
+#define SET_StencilMaskSeparate(disp, fn) SET_by_offset(disp, _gloffset_StencilMaskSeparate, fn)
+#define CALL_StencilOpSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), _gloffset_StencilOpSeparate, parameters)
+#define GET_StencilOpSeparate(disp) GET_by_offset(disp, _gloffset_StencilOpSeparate)
+#define SET_StencilOpSeparate(disp, fn) SET_by_offset(disp, _gloffset_StencilOpSeparate, fn)
+#define CALL_UniformMatrix2x3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix2x3fv, parameters)
+#define GET_UniformMatrix2x3fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix2x3fv)
+#define SET_UniformMatrix2x3fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix2x3fv, fn)
+#define CALL_UniformMatrix2x4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix2x4fv, parameters)
+#define GET_UniformMatrix2x4fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix2x4fv)
+#define SET_UniformMatrix2x4fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix2x4fv, fn)
+#define CALL_UniformMatrix3x2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix3x2fv, parameters)
+#define GET_UniformMatrix3x2fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix3x2fv)
+#define SET_UniformMatrix3x2fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix3x2fv, fn)
+#define CALL_UniformMatrix3x4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix3x4fv, parameters)
+#define GET_UniformMatrix3x4fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix3x4fv)
+#define SET_UniformMatrix3x4fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix3x4fv, fn)
+#define CALL_UniformMatrix4x2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix4x2fv, parameters)
+#define GET_UniformMatrix4x2fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix4x2fv)
+#define SET_UniformMatrix4x2fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix4x2fv, fn)
+#define CALL_UniformMatrix4x3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix4x3fv, parameters)
+#define GET_UniformMatrix4x3fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix4x3fv)
+#define SET_UniformMatrix4x3fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix4x3fv, fn)
+#define CALL_ClampColor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_ClampColor, parameters)
+#define GET_ClampColor(disp) GET_by_offset(disp, _gloffset_ClampColor)
+#define SET_ClampColor(disp, fn) SET_by_offset(disp, _gloffset_ClampColor, fn)
+#define CALL_ClearBufferfi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat, const GLint)), _gloffset_ClearBufferfi, parameters)
+#define GET_ClearBufferfi(disp) GET_by_offset(disp, _gloffset_ClearBufferfi)
+#define SET_ClearBufferfi(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferfi, fn)
+#define CALL_ClearBufferfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat *)), _gloffset_ClearBufferfv, parameters)
+#define GET_ClearBufferfv(disp) GET_by_offset(disp, _gloffset_ClearBufferfv)
+#define SET_ClearBufferfv(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferfv, fn)
+#define CALL_ClearBufferiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLint *)), _gloffset_ClearBufferiv, parameters)
+#define GET_ClearBufferiv(disp) GET_by_offset(disp, _gloffset_ClearBufferiv)
+#define SET_ClearBufferiv(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferiv, fn)
+#define CALL_ClearBufferuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLuint *)), _gloffset_ClearBufferuiv, parameters)
+#define GET_ClearBufferuiv(disp) GET_by_offset(disp, _gloffset_ClearBufferuiv)
+#define SET_ClearBufferuiv(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferuiv, fn)
+#define CALL_GetStringi(disp, parameters) CALL_by_offset(disp, (const GLubyte * (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_GetStringi, parameters)
+#define GET_GetStringi(disp) GET_by_offset(disp, _gloffset_GetStringi)
+#define SET_GetStringi(disp, fn) SET_by_offset(disp, _gloffset_GetStringi, fn)
+#define CALL_TexBuffer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint)), _gloffset_TexBuffer, parameters)
+#define GET_TexBuffer(disp) GET_by_offset(disp, _gloffset_TexBuffer)
+#define SET_TexBuffer(disp, fn) SET_by_offset(disp, _gloffset_TexBuffer, fn)
+#define CALL_FramebufferTexture(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint)), _gloffset_FramebufferTexture, parameters)
+#define GET_FramebufferTexture(disp) GET_by_offset(disp, _gloffset_FramebufferTexture)
+#define SET_FramebufferTexture(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTexture, fn)
+#define CALL_GetBufferParameteri64v(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint64 *)), _gloffset_GetBufferParameteri64v, parameters)
+#define GET_GetBufferParameteri64v(disp) GET_by_offset(disp, _gloffset_GetBufferParameteri64v)
+#define SET_GetBufferParameteri64v(disp, fn) SET_by_offset(disp, _gloffset_GetBufferParameteri64v, fn)
+#define CALL_GetInteger64i_v(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLint64 *)), _gloffset_GetInteger64i_v, parameters)
+#define GET_GetInteger64i_v(disp) GET_by_offset(disp, _gloffset_GetInteger64i_v)
+#define SET_GetInteger64i_v(disp, fn) SET_by_offset(disp, _gloffset_GetInteger64i_v, fn)
+#define CALL_VertexAttribDivisor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_VertexAttribDivisor, parameters)
+#define GET_VertexAttribDivisor(disp) GET_by_offset(disp, _gloffset_VertexAttribDivisor)
+#define SET_VertexAttribDivisor(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribDivisor, fn)
+#define CALL_LoadTransposeMatrixdARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_LoadTransposeMatrixdARB, parameters)
+#define GET_LoadTransposeMatrixdARB(disp) GET_by_offset(disp, _gloffset_LoadTransposeMatrixdARB)
+#define SET_LoadTransposeMatrixdARB(disp, fn) SET_by_offset(disp, _gloffset_LoadTransposeMatrixdARB, fn)
+#define CALL_LoadTransposeMatrixfARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_LoadTransposeMatrixfARB, parameters)
+#define GET_LoadTransposeMatrixfARB(disp) GET_by_offset(disp, _gloffset_LoadTransposeMatrixfARB)
+#define SET_LoadTransposeMatrixfARB(disp, fn) SET_by_offset(disp, _gloffset_LoadTransposeMatrixfARB, fn)
+#define CALL_MultTransposeMatrixdARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_MultTransposeMatrixdARB, parameters)
+#define GET_MultTransposeMatrixdARB(disp) GET_by_offset(disp, _gloffset_MultTransposeMatrixdARB)
+#define SET_MultTransposeMatrixdARB(disp, fn) SET_by_offset(disp, _gloffset_MultTransposeMatrixdARB, fn)
+#define CALL_MultTransposeMatrixfARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_MultTransposeMatrixfARB, parameters)
+#define GET_MultTransposeMatrixfARB(disp) GET_by_offset(disp, _gloffset_MultTransposeMatrixfARB)
+#define SET_MultTransposeMatrixfARB(disp, fn) SET_by_offset(disp, _gloffset_MultTransposeMatrixfARB, fn)
+#define CALL_SampleCoverageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLboolean)), _gloffset_SampleCoverageARB, parameters)
+#define GET_SampleCoverageARB(disp) GET_by_offset(disp, _gloffset_SampleCoverageARB)
+#define SET_SampleCoverageARB(disp, fn) SET_by_offset(disp, _gloffset_SampleCoverageARB, fn)
+#define CALL_CompressedTexImage1DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *)), _gloffset_CompressedTexImage1DARB, parameters)
+#define GET_CompressedTexImage1DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexImage1DARB)
+#define SET_CompressedTexImage1DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexImage1DARB, fn)
+#define CALL_CompressedTexImage2DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)), _gloffset_CompressedTexImage2DARB, parameters)
+#define GET_CompressedTexImage2DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexImage2DARB)
+#define SET_CompressedTexImage2DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexImage2DARB, fn)
+#define CALL_CompressedTexImage3DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)), _gloffset_CompressedTexImage3DARB, parameters)
+#define GET_CompressedTexImage3DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexImage3DARB)
+#define SET_CompressedTexImage3DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexImage3DARB, fn)
+#define CALL_CompressedTexSubImage1DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *)), _gloffset_CompressedTexSubImage1DARB, parameters)
+#define GET_CompressedTexSubImage1DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexSubImage1DARB)
+#define SET_CompressedTexSubImage1DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexSubImage1DARB, fn)
+#define CALL_CompressedTexSubImage2DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)), _gloffset_CompressedTexSubImage2DARB, parameters)
+#define GET_CompressedTexSubImage2DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexSubImage2DARB)
+#define SET_CompressedTexSubImage2DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexSubImage2DARB, fn)
+#define CALL_CompressedTexSubImage3DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)), _gloffset_CompressedTexSubImage3DARB, parameters)
+#define GET_CompressedTexSubImage3DARB(disp) GET_by_offset(disp, _gloffset_CompressedTexSubImage3DARB)
+#define SET_CompressedTexSubImage3DARB(disp, fn) SET_by_offset(disp, _gloffset_CompressedTexSubImage3DARB, fn)
+#define CALL_GetCompressedTexImageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLvoid *)), _gloffset_GetCompressedTexImageARB, parameters)
+#define GET_GetCompressedTexImageARB(disp) GET_by_offset(disp, _gloffset_GetCompressedTexImageARB)
+#define SET_GetCompressedTexImageARB(disp, fn) SET_by_offset(disp, _gloffset_GetCompressedTexImageARB, fn)
+#define CALL_DisableVertexAttribArrayARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_DisableVertexAttribArrayARB, parameters)
+#define GET_DisableVertexAttribArrayARB(disp) GET_by_offset(disp, _gloffset_DisableVertexAttribArrayARB)
+#define SET_DisableVertexAttribArrayARB(disp, fn) SET_by_offset(disp, _gloffset_DisableVertexAttribArrayARB, fn)
+#define CALL_EnableVertexAttribArrayARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_EnableVertexAttribArrayARB, parameters)
+#define GET_EnableVertexAttribArrayARB(disp) GET_by_offset(disp, _gloffset_EnableVertexAttribArrayARB)
+#define SET_EnableVertexAttribArrayARB(disp, fn) SET_by_offset(disp, _gloffset_EnableVertexAttribArrayARB, fn)
+#define CALL_GetProgramEnvParameterdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble *)), _gloffset_GetProgramEnvParameterdvARB, parameters)
+#define GET_GetProgramEnvParameterdvARB(disp) GET_by_offset(disp, _gloffset_GetProgramEnvParameterdvARB)
+#define SET_GetProgramEnvParameterdvARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramEnvParameterdvARB, fn)
+#define CALL_GetProgramEnvParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat *)), _gloffset_GetProgramEnvParameterfvARB, parameters)
+#define GET_GetProgramEnvParameterfvARB(disp) GET_by_offset(disp, _gloffset_GetProgramEnvParameterfvARB)
+#define SET_GetProgramEnvParameterfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramEnvParameterfvARB, fn)
+#define CALL_GetProgramLocalParameterdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble *)), _gloffset_GetProgramLocalParameterdvARB, parameters)
+#define GET_GetProgramLocalParameterdvARB(disp) GET_by_offset(disp, _gloffset_GetProgramLocalParameterdvARB)
+#define SET_GetProgramLocalParameterdvARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramLocalParameterdvARB, fn)
+#define CALL_GetProgramLocalParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat *)), _gloffset_GetProgramLocalParameterfvARB, parameters)
+#define GET_GetProgramLocalParameterfvARB(disp) GET_by_offset(disp, _gloffset_GetProgramLocalParameterfvARB)
+#define SET_GetProgramLocalParameterfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramLocalParameterfvARB, fn)
+#define CALL_GetProgramStringARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid *)), _gloffset_GetProgramStringARB, parameters)
+#define GET_GetProgramStringARB(disp) GET_by_offset(disp, _gloffset_GetProgramStringARB)
+#define SET_GetProgramStringARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramStringARB, fn)
+#define CALL_GetProgramivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetProgramivARB, parameters)
+#define GET_GetProgramivARB(disp) GET_by_offset(disp, _gloffset_GetProgramivARB)
+#define SET_GetProgramivARB(disp, fn) SET_by_offset(disp, _gloffset_GetProgramivARB, fn)
+#define CALL_GetVertexAttribdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLdouble *)), _gloffset_GetVertexAttribdvARB, parameters)
+#define GET_GetVertexAttribdvARB(disp) GET_by_offset(disp, _gloffset_GetVertexAttribdvARB)
+#define SET_GetVertexAttribdvARB(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribdvARB, fn)
+#define CALL_GetVertexAttribfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), _gloffset_GetVertexAttribfvARB, parameters)
+#define GET_GetVertexAttribfvARB(disp) GET_by_offset(disp, _gloffset_GetVertexAttribfvARB)
+#define SET_GetVertexAttribfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribfvARB, fn)
+#define CALL_GetVertexAttribivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetVertexAttribivARB, parameters)
+#define GET_GetVertexAttribivARB(disp) GET_by_offset(disp, _gloffset_GetVertexAttribivARB)
+#define SET_GetVertexAttribivARB(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribivARB, fn)
+#define CALL_ProgramEnvParameter4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_ProgramEnvParameter4dARB, parameters)
+#define GET_ProgramEnvParameter4dARB(disp) GET_by_offset(disp, _gloffset_ProgramEnvParameter4dARB)
+#define SET_ProgramEnvParameter4dARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramEnvParameter4dARB, fn)
+#define CALL_ProgramEnvParameter4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLdouble *)), _gloffset_ProgramEnvParameter4dvARB, parameters)
+#define GET_ProgramEnvParameter4dvARB(disp) GET_by_offset(disp, _gloffset_ProgramEnvParameter4dvARB)
+#define SET_ProgramEnvParameter4dvARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramEnvParameter4dvARB, fn)
+#define CALL_ProgramEnvParameter4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_ProgramEnvParameter4fARB, parameters)
+#define GET_ProgramEnvParameter4fARB(disp) GET_by_offset(disp, _gloffset_ProgramEnvParameter4fARB)
+#define SET_ProgramEnvParameter4fARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramEnvParameter4fARB, fn)
+#define CALL_ProgramEnvParameter4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), _gloffset_ProgramEnvParameter4fvARB, parameters)
+#define GET_ProgramEnvParameter4fvARB(disp) GET_by_offset(disp, _gloffset_ProgramEnvParameter4fvARB)
+#define SET_ProgramEnvParameter4fvARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramEnvParameter4fvARB, fn)
+#define CALL_ProgramLocalParameter4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_ProgramLocalParameter4dARB, parameters)
+#define GET_ProgramLocalParameter4dARB(disp) GET_by_offset(disp, _gloffset_ProgramLocalParameter4dARB)
+#define SET_ProgramLocalParameter4dARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramLocalParameter4dARB, fn)
+#define CALL_ProgramLocalParameter4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLdouble *)), _gloffset_ProgramLocalParameter4dvARB, parameters)
+#define GET_ProgramLocalParameter4dvARB(disp) GET_by_offset(disp, _gloffset_ProgramLocalParameter4dvARB)
+#define SET_ProgramLocalParameter4dvARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramLocalParameter4dvARB, fn)
+#define CALL_ProgramLocalParameter4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_ProgramLocalParameter4fARB, parameters)
+#define GET_ProgramLocalParameter4fARB(disp) GET_by_offset(disp, _gloffset_ProgramLocalParameter4fARB)
+#define SET_ProgramLocalParameter4fARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramLocalParameter4fARB, fn)
+#define CALL_ProgramLocalParameter4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), _gloffset_ProgramLocalParameter4fvARB, parameters)
+#define GET_ProgramLocalParameter4fvARB(disp) GET_by_offset(disp, _gloffset_ProgramLocalParameter4fvARB)
+#define SET_ProgramLocalParameter4fvARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramLocalParameter4fvARB, fn)
+#define CALL_ProgramStringARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, const GLvoid *)), _gloffset_ProgramStringARB, parameters)
+#define GET_ProgramStringARB(disp) GET_by_offset(disp, _gloffset_ProgramStringARB)
+#define SET_ProgramStringARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramStringARB, fn)
+#define CALL_VertexAttrib1dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble)), _gloffset_VertexAttrib1dARB, parameters)
+#define GET_VertexAttrib1dARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1dARB)
+#define SET_VertexAttrib1dARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1dARB, fn)
+#define CALL_VertexAttrib1dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib1dvARB, parameters)
+#define GET_VertexAttrib1dvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1dvARB)
+#define SET_VertexAttrib1dvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1dvARB, fn)
+#define CALL_VertexAttrib1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat)), _gloffset_VertexAttrib1fARB, parameters)
+#define GET_VertexAttrib1fARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1fARB)
+#define SET_VertexAttrib1fARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1fARB, fn)
+#define CALL_VertexAttrib1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib1fvARB, parameters)
+#define GET_VertexAttrib1fvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1fvARB)
+#define SET_VertexAttrib1fvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1fvARB, fn)
+#define CALL_VertexAttrib1sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort)), _gloffset_VertexAttrib1sARB, parameters)
+#define GET_VertexAttrib1sARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1sARB)
+#define SET_VertexAttrib1sARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1sARB, fn)
+#define CALL_VertexAttrib1svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib1svARB, parameters)
+#define GET_VertexAttrib1svARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib1svARB)
+#define SET_VertexAttrib1svARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1svARB, fn)
+#define CALL_VertexAttrib2dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble)), _gloffset_VertexAttrib2dARB, parameters)
+#define GET_VertexAttrib2dARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2dARB)
+#define SET_VertexAttrib2dARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2dARB, fn)
+#define CALL_VertexAttrib2dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib2dvARB, parameters)
+#define GET_VertexAttrib2dvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2dvARB)
+#define SET_VertexAttrib2dvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2dvARB, fn)
+#define CALL_VertexAttrib2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat)), _gloffset_VertexAttrib2fARB, parameters)
+#define GET_VertexAttrib2fARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2fARB)
+#define SET_VertexAttrib2fARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2fARB, fn)
+#define CALL_VertexAttrib2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib2fvARB, parameters)
+#define GET_VertexAttrib2fvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2fvARB)
+#define SET_VertexAttrib2fvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2fvARB, fn)
+#define CALL_VertexAttrib2sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort)), _gloffset_VertexAttrib2sARB, parameters)
+#define GET_VertexAttrib2sARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2sARB)
+#define SET_VertexAttrib2sARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2sARB, fn)
+#define CALL_VertexAttrib2svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib2svARB, parameters)
+#define GET_VertexAttrib2svARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib2svARB)
+#define SET_VertexAttrib2svARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2svARB, fn)
+#define CALL_VertexAttrib3dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble)), _gloffset_VertexAttrib3dARB, parameters)
+#define GET_VertexAttrib3dARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3dARB)
+#define SET_VertexAttrib3dARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3dARB, fn)
+#define CALL_VertexAttrib3dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib3dvARB, parameters)
+#define GET_VertexAttrib3dvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3dvARB)
+#define SET_VertexAttrib3dvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3dvARB, fn)
+#define CALL_VertexAttrib3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat)), _gloffset_VertexAttrib3fARB, parameters)
+#define GET_VertexAttrib3fARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3fARB)
+#define SET_VertexAttrib3fARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3fARB, fn)
+#define CALL_VertexAttrib3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib3fvARB, parameters)
+#define GET_VertexAttrib3fvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3fvARB)
+#define SET_VertexAttrib3fvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3fvARB, fn)
+#define CALL_VertexAttrib3sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort)), _gloffset_VertexAttrib3sARB, parameters)
+#define GET_VertexAttrib3sARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3sARB)
+#define SET_VertexAttrib3sARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3sARB, fn)
+#define CALL_VertexAttrib3svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib3svARB, parameters)
+#define GET_VertexAttrib3svARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib3svARB)
+#define SET_VertexAttrib3svARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3svARB, fn)
+#define CALL_VertexAttrib4NbvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), _gloffset_VertexAttrib4NbvARB, parameters)
+#define GET_VertexAttrib4NbvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NbvARB)
+#define SET_VertexAttrib4NbvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NbvARB, fn)
+#define CALL_VertexAttrib4NivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttrib4NivARB, parameters)
+#define GET_VertexAttrib4NivARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NivARB)
+#define SET_VertexAttrib4NivARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NivARB, fn)
+#define CALL_VertexAttrib4NsvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib4NsvARB, parameters)
+#define GET_VertexAttrib4NsvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NsvARB)
+#define SET_VertexAttrib4NsvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NsvARB, fn)
+#define CALL_VertexAttrib4NubARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte)), _gloffset_VertexAttrib4NubARB, parameters)
+#define GET_VertexAttrib4NubARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NubARB)
+#define SET_VertexAttrib4NubARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NubARB, fn)
+#define CALL_VertexAttrib4NubvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), _gloffset_VertexAttrib4NubvARB, parameters)
+#define GET_VertexAttrib4NubvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NubvARB)
+#define SET_VertexAttrib4NubvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NubvARB, fn)
+#define CALL_VertexAttrib4NuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttrib4NuivARB, parameters)
+#define GET_VertexAttrib4NuivARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NuivARB)
+#define SET_VertexAttrib4NuivARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NuivARB, fn)
+#define CALL_VertexAttrib4NusvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), _gloffset_VertexAttrib4NusvARB, parameters)
+#define GET_VertexAttrib4NusvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4NusvARB)
+#define SET_VertexAttrib4NusvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4NusvARB, fn)
+#define CALL_VertexAttrib4bvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), _gloffset_VertexAttrib4bvARB, parameters)
+#define GET_VertexAttrib4bvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4bvARB)
+#define SET_VertexAttrib4bvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4bvARB, fn)
+#define CALL_VertexAttrib4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_VertexAttrib4dARB, parameters)
+#define GET_VertexAttrib4dARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4dARB)
+#define SET_VertexAttrib4dARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4dARB, fn)
+#define CALL_VertexAttrib4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib4dvARB, parameters)
+#define GET_VertexAttrib4dvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4dvARB)
+#define SET_VertexAttrib4dvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4dvARB, fn)
+#define CALL_VertexAttrib4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_VertexAttrib4fARB, parameters)
+#define GET_VertexAttrib4fARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4fARB)
+#define SET_VertexAttrib4fARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4fARB, fn)
+#define CALL_VertexAttrib4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib4fvARB, parameters)
+#define GET_VertexAttrib4fvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4fvARB)
+#define SET_VertexAttrib4fvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4fvARB, fn)
+#define CALL_VertexAttrib4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttrib4ivARB, parameters)
+#define GET_VertexAttrib4ivARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4ivARB)
+#define SET_VertexAttrib4ivARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4ivARB, fn)
+#define CALL_VertexAttrib4sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort, GLshort)), _gloffset_VertexAttrib4sARB, parameters)
+#define GET_VertexAttrib4sARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4sARB)
+#define SET_VertexAttrib4sARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4sARB, fn)
+#define CALL_VertexAttrib4svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib4svARB, parameters)
+#define GET_VertexAttrib4svARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4svARB)
+#define SET_VertexAttrib4svARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4svARB, fn)
+#define CALL_VertexAttrib4ubvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), _gloffset_VertexAttrib4ubvARB, parameters)
+#define GET_VertexAttrib4ubvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4ubvARB)
+#define SET_VertexAttrib4ubvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4ubvARB, fn)
+#define CALL_VertexAttrib4uivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttrib4uivARB, parameters)
+#define GET_VertexAttrib4uivARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4uivARB)
+#define SET_VertexAttrib4uivARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4uivARB, fn)
+#define CALL_VertexAttrib4usvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), _gloffset_VertexAttrib4usvARB, parameters)
+#define GET_VertexAttrib4usvARB(disp) GET_by_offset(disp, _gloffset_VertexAttrib4usvARB)
+#define SET_VertexAttrib4usvARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4usvARB, fn)
+#define CALL_VertexAttribPointerARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *)), _gloffset_VertexAttribPointerARB, parameters)
+#define GET_VertexAttribPointerARB(disp) GET_by_offset(disp, _gloffset_VertexAttribPointerARB)
+#define SET_VertexAttribPointerARB(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribPointerARB, fn)
+#define CALL_BindBufferARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindBufferARB, parameters)
+#define GET_BindBufferARB(disp) GET_by_offset(disp, _gloffset_BindBufferARB)
+#define SET_BindBufferARB(disp, fn) SET_by_offset(disp, _gloffset_BindBufferARB, fn)
+#define CALL_BufferDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizeiptrARB, const GLvoid *, GLenum)), _gloffset_BufferDataARB, parameters)
+#define GET_BufferDataARB(disp) GET_by_offset(disp, _gloffset_BufferDataARB)
+#define SET_BufferDataARB(disp, fn) SET_by_offset(disp, _gloffset_BufferDataARB, fn)
+#define CALL_BufferSubDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *)), _gloffset_BufferSubDataARB, parameters)
+#define GET_BufferSubDataARB(disp) GET_by_offset(disp, _gloffset_BufferSubDataARB)
+#define SET_BufferSubDataARB(disp, fn) SET_by_offset(disp, _gloffset_BufferSubDataARB, fn)
+#define CALL_DeleteBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteBuffersARB, parameters)
+#define GET_DeleteBuffersARB(disp) GET_by_offset(disp, _gloffset_DeleteBuffersARB)
+#define SET_DeleteBuffersARB(disp, fn) SET_by_offset(disp, _gloffset_DeleteBuffersARB, fn)
+#define CALL_GenBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenBuffersARB, parameters)
+#define GET_GenBuffersARB(disp) GET_by_offset(disp, _gloffset_GenBuffersARB)
+#define SET_GenBuffersARB(disp, fn) SET_by_offset(disp, _gloffset_GenBuffersARB, fn)
+#define CALL_GetBufferParameterivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetBufferParameterivARB, parameters)
+#define GET_GetBufferParameterivARB(disp) GET_by_offset(disp, _gloffset_GetBufferParameterivARB)
+#define SET_GetBufferParameterivARB(disp, fn) SET_by_offset(disp, _gloffset_GetBufferParameterivARB, fn)
+#define CALL_GetBufferPointervARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid **)), _gloffset_GetBufferPointervARB, parameters)
+#define GET_GetBufferPointervARB(disp) GET_by_offset(disp, _gloffset_GetBufferPointervARB)
+#define SET_GetBufferPointervARB(disp, fn) SET_by_offset(disp, _gloffset_GetBufferPointervARB, fn)
+#define CALL_GetBufferSubDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *)), _gloffset_GetBufferSubDataARB, parameters)
+#define GET_GetBufferSubDataARB(disp) GET_by_offset(disp, _gloffset_GetBufferSubDataARB)
+#define SET_GetBufferSubDataARB(disp, fn) SET_by_offset(disp, _gloffset_GetBufferSubDataARB, fn)
+#define CALL_IsBufferARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsBufferARB, parameters)
+#define GET_IsBufferARB(disp) GET_by_offset(disp, _gloffset_IsBufferARB)
+#define SET_IsBufferARB(disp, fn) SET_by_offset(disp, _gloffset_IsBufferARB, fn)
+#define CALL_MapBufferARB(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_MapBufferARB, parameters)
+#define GET_MapBufferARB(disp) GET_by_offset(disp, _gloffset_MapBufferARB)
+#define SET_MapBufferARB(disp, fn) SET_by_offset(disp, _gloffset_MapBufferARB, fn)
+#define CALL_UnmapBufferARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum)), _gloffset_UnmapBufferARB, parameters)
+#define GET_UnmapBufferARB(disp) GET_by_offset(disp, _gloffset_UnmapBufferARB)
+#define SET_UnmapBufferARB(disp, fn) SET_by_offset(disp, _gloffset_UnmapBufferARB, fn)
+#define CALL_BeginQueryARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BeginQueryARB, parameters)
+#define GET_BeginQueryARB(disp) GET_by_offset(disp, _gloffset_BeginQueryARB)
+#define SET_BeginQueryARB(disp, fn) SET_by_offset(disp, _gloffset_BeginQueryARB, fn)
+#define CALL_DeleteQueriesARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteQueriesARB, parameters)
+#define GET_DeleteQueriesARB(disp) GET_by_offset(disp, _gloffset_DeleteQueriesARB)
+#define SET_DeleteQueriesARB(disp, fn) SET_by_offset(disp, _gloffset_DeleteQueriesARB, fn)
+#define CALL_EndQueryARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_EndQueryARB, parameters)
+#define GET_EndQueryARB(disp) GET_by_offset(disp, _gloffset_EndQueryARB)
+#define SET_EndQueryARB(disp, fn) SET_by_offset(disp, _gloffset_EndQueryARB, fn)
+#define CALL_GenQueriesARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenQueriesARB, parameters)
+#define GET_GenQueriesARB(disp) GET_by_offset(disp, _gloffset_GenQueriesARB)
+#define SET_GenQueriesARB(disp, fn) SET_by_offset(disp, _gloffset_GenQueriesARB, fn)
+#define CALL_GetQueryObjectivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetQueryObjectivARB, parameters)
+#define GET_GetQueryObjectivARB(disp) GET_by_offset(disp, _gloffset_GetQueryObjectivARB)
+#define SET_GetQueryObjectivARB(disp, fn) SET_by_offset(disp, _gloffset_GetQueryObjectivARB, fn)
+#define CALL_GetQueryObjectuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint *)), _gloffset_GetQueryObjectuivARB, parameters)
+#define GET_GetQueryObjectuivARB(disp) GET_by_offset(disp, _gloffset_GetQueryObjectuivARB)
+#define SET_GetQueryObjectuivARB(disp, fn) SET_by_offset(disp, _gloffset_GetQueryObjectuivARB, fn)
+#define CALL_GetQueryivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetQueryivARB, parameters)
+#define GET_GetQueryivARB(disp) GET_by_offset(disp, _gloffset_GetQueryivARB)
+#define SET_GetQueryivARB(disp, fn) SET_by_offset(disp, _gloffset_GetQueryivARB, fn)
+#define CALL_IsQueryARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsQueryARB, parameters)
+#define GET_IsQueryARB(disp) GET_by_offset(disp, _gloffset_IsQueryARB)
+#define SET_IsQueryARB(disp, fn) SET_by_offset(disp, _gloffset_IsQueryARB, fn)
+#define CALL_AttachObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLhandleARB)), _gloffset_AttachObjectARB, parameters)
+#define GET_AttachObjectARB(disp) GET_by_offset(disp, _gloffset_AttachObjectARB)
+#define SET_AttachObjectARB(disp, fn) SET_by_offset(disp, _gloffset_AttachObjectARB, fn)
+#define CALL_CompileShaderARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), _gloffset_CompileShaderARB, parameters)
+#define GET_CompileShaderARB(disp) GET_by_offset(disp, _gloffset_CompileShaderARB)
+#define SET_CompileShaderARB(disp, fn) SET_by_offset(disp, _gloffset_CompileShaderARB, fn)
+#define CALL_CreateProgramObjectARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(void)), _gloffset_CreateProgramObjectARB, parameters)
+#define GET_CreateProgramObjectARB(disp) GET_by_offset(disp, _gloffset_CreateProgramObjectARB)
+#define SET_CreateProgramObjectARB(disp, fn) SET_by_offset(disp, _gloffset_CreateProgramObjectARB, fn)
+#define CALL_CreateShaderObjectARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(GLenum)), _gloffset_CreateShaderObjectARB, parameters)
+#define GET_CreateShaderObjectARB(disp) GET_by_offset(disp, _gloffset_CreateShaderObjectARB)
+#define SET_CreateShaderObjectARB(disp, fn) SET_by_offset(disp, _gloffset_CreateShaderObjectARB, fn)
+#define CALL_DeleteObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), _gloffset_DeleteObjectARB, parameters)
+#define GET_DeleteObjectARB(disp) GET_by_offset(disp, _gloffset_DeleteObjectARB)
+#define SET_DeleteObjectARB(disp, fn) SET_by_offset(disp, _gloffset_DeleteObjectARB, fn)
+#define CALL_DetachObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLhandleARB)), _gloffset_DetachObjectARB, parameters)
+#define GET_DetachObjectARB(disp) GET_by_offset(disp, _gloffset_DetachObjectARB)
+#define SET_DetachObjectARB(disp, fn) SET_by_offset(disp, _gloffset_DetachObjectARB, fn)
+#define CALL_GetActiveUniformARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)), _gloffset_GetActiveUniformARB, parameters)
+#define GET_GetActiveUniformARB(disp) GET_by_offset(disp, _gloffset_GetActiveUniformARB)
+#define SET_GetActiveUniformARB(disp, fn) SET_by_offset(disp, _gloffset_GetActiveUniformARB, fn)
+#define CALL_GetAttachedObjectsARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLhandleARB *)), _gloffset_GetAttachedObjectsARB, parameters)
+#define GET_GetAttachedObjectsARB(disp) GET_by_offset(disp, _gloffset_GetAttachedObjectsARB)
+#define SET_GetAttachedObjectsARB(disp, fn) SET_by_offset(disp, _gloffset_GetAttachedObjectsARB, fn)
+#define CALL_GetHandleARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(GLenum)), _gloffset_GetHandleARB, parameters)
+#define GET_GetHandleARB(disp) GET_by_offset(disp, _gloffset_GetHandleARB)
+#define SET_GetHandleARB(disp, fn) SET_by_offset(disp, _gloffset_GetHandleARB, fn)
+#define CALL_GetInfoLogARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *)), _gloffset_GetInfoLogARB, parameters)
+#define GET_GetInfoLogARB(disp) GET_by_offset(disp, _gloffset_GetInfoLogARB)
+#define SET_GetInfoLogARB(disp, fn) SET_by_offset(disp, _gloffset_GetInfoLogARB, fn)
+#define CALL_GetObjectParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLenum, GLfloat *)), _gloffset_GetObjectParameterfvARB, parameters)
+#define GET_GetObjectParameterfvARB(disp) GET_by_offset(disp, _gloffset_GetObjectParameterfvARB)
+#define SET_GetObjectParameterfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetObjectParameterfvARB, fn)
+#define CALL_GetObjectParameterivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLenum, GLint *)), _gloffset_GetObjectParameterivARB, parameters)
+#define GET_GetObjectParameterivARB(disp) GET_by_offset(disp, _gloffset_GetObjectParameterivARB)
+#define SET_GetObjectParameterivARB(disp, fn) SET_by_offset(disp, _gloffset_GetObjectParameterivARB, fn)
+#define CALL_GetShaderSourceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *)), _gloffset_GetShaderSourceARB, parameters)
+#define GET_GetShaderSourceARB(disp) GET_by_offset(disp, _gloffset_GetShaderSourceARB)
+#define SET_GetShaderSourceARB(disp, fn) SET_by_offset(disp, _gloffset_GetShaderSourceARB, fn)
+#define CALL_GetUniformLocationARB(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLhandleARB, const GLcharARB *)), _gloffset_GetUniformLocationARB, parameters)
+#define GET_GetUniformLocationARB(disp) GET_by_offset(disp, _gloffset_GetUniformLocationARB)
+#define SET_GetUniformLocationARB(disp, fn) SET_by_offset(disp, _gloffset_GetUniformLocationARB, fn)
+#define CALL_GetUniformfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLfloat *)), _gloffset_GetUniformfvARB, parameters)
+#define GET_GetUniformfvARB(disp) GET_by_offset(disp, _gloffset_GetUniformfvARB)
+#define SET_GetUniformfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetUniformfvARB, fn)
+#define CALL_GetUniformivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLint *)), _gloffset_GetUniformivARB, parameters)
+#define GET_GetUniformivARB(disp) GET_by_offset(disp, _gloffset_GetUniformivARB)
+#define SET_GetUniformivARB(disp, fn) SET_by_offset(disp, _gloffset_GetUniformivARB, fn)
+#define CALL_LinkProgramARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), _gloffset_LinkProgramARB, parameters)
+#define GET_LinkProgramARB(disp) GET_by_offset(disp, _gloffset_LinkProgramARB)
+#define SET_LinkProgramARB(disp, fn) SET_by_offset(disp, _gloffset_LinkProgramARB, fn)
+#define CALL_ShaderSourceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, const GLcharARB **, const GLint *)), _gloffset_ShaderSourceARB, parameters)
+#define GET_ShaderSourceARB(disp) GET_by_offset(disp, _gloffset_ShaderSourceARB)
+#define SET_ShaderSourceARB(disp, fn) SET_by_offset(disp, _gloffset_ShaderSourceARB, fn)
+#define CALL_Uniform1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat)), _gloffset_Uniform1fARB, parameters)
+#define GET_Uniform1fARB(disp) GET_by_offset(disp, _gloffset_Uniform1fARB)
+#define SET_Uniform1fARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform1fARB, fn)
+#define CALL_Uniform1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), _gloffset_Uniform1fvARB, parameters)
+#define GET_Uniform1fvARB(disp) GET_by_offset(disp, _gloffset_Uniform1fvARB)
+#define SET_Uniform1fvARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform1fvARB, fn)
+#define CALL_Uniform1iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_Uniform1iARB, parameters)
+#define GET_Uniform1iARB(disp) GET_by_offset(disp, _gloffset_Uniform1iARB)
+#define SET_Uniform1iARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform1iARB, fn)
+#define CALL_Uniform1ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), _gloffset_Uniform1ivARB, parameters)
+#define GET_Uniform1ivARB(disp) GET_by_offset(disp, _gloffset_Uniform1ivARB)
+#define SET_Uniform1ivARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform1ivARB, fn)
+#define CALL_Uniform2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat)), _gloffset_Uniform2fARB, parameters)
+#define GET_Uniform2fARB(disp) GET_by_offset(disp, _gloffset_Uniform2fARB)
+#define SET_Uniform2fARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform2fARB, fn)
+#define CALL_Uniform2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), _gloffset_Uniform2fvARB, parameters)
+#define GET_Uniform2fvARB(disp) GET_by_offset(disp, _gloffset_Uniform2fvARB)
+#define SET_Uniform2fvARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform2fvARB, fn)
+#define CALL_Uniform2iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_Uniform2iARB, parameters)
+#define GET_Uniform2iARB(disp) GET_by_offset(disp, _gloffset_Uniform2iARB)
+#define SET_Uniform2iARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform2iARB, fn)
+#define CALL_Uniform2ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), _gloffset_Uniform2ivARB, parameters)
+#define GET_Uniform2ivARB(disp) GET_by_offset(disp, _gloffset_Uniform2ivARB)
+#define SET_Uniform2ivARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform2ivARB, fn)
+#define CALL_Uniform3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLfloat)), _gloffset_Uniform3fARB, parameters)
+#define GET_Uniform3fARB(disp) GET_by_offset(disp, _gloffset_Uniform3fARB)
+#define SET_Uniform3fARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform3fARB, fn)
+#define CALL_Uniform3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), _gloffset_Uniform3fvARB, parameters)
+#define GET_Uniform3fvARB(disp) GET_by_offset(disp, _gloffset_Uniform3fvARB)
+#define SET_Uniform3fvARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform3fvARB, fn)
+#define CALL_Uniform3iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_Uniform3iARB, parameters)
+#define GET_Uniform3iARB(disp) GET_by_offset(disp, _gloffset_Uniform3iARB)
+#define SET_Uniform3iARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform3iARB, fn)
+#define CALL_Uniform3ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), _gloffset_Uniform3ivARB, parameters)
+#define GET_Uniform3ivARB(disp) GET_by_offset(disp, _gloffset_Uniform3ivARB)
+#define SET_Uniform3ivARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform3ivARB, fn)
+#define CALL_Uniform4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_Uniform4fARB, parameters)
+#define GET_Uniform4fARB(disp) GET_by_offset(disp, _gloffset_Uniform4fARB)
+#define SET_Uniform4fARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform4fARB, fn)
+#define CALL_Uniform4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), _gloffset_Uniform4fvARB, parameters)
+#define GET_Uniform4fvARB(disp) GET_by_offset(disp, _gloffset_Uniform4fvARB)
+#define SET_Uniform4fvARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform4fvARB, fn)
+#define CALL_Uniform4iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint)), _gloffset_Uniform4iARB, parameters)
+#define GET_Uniform4iARB(disp) GET_by_offset(disp, _gloffset_Uniform4iARB)
+#define SET_Uniform4iARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform4iARB, fn)
+#define CALL_Uniform4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), _gloffset_Uniform4ivARB, parameters)
+#define GET_Uniform4ivARB(disp) GET_by_offset(disp, _gloffset_Uniform4ivARB)
+#define SET_Uniform4ivARB(disp, fn) SET_by_offset(disp, _gloffset_Uniform4ivARB, fn)
+#define CALL_UniformMatrix2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix2fvARB, parameters)
+#define GET_UniformMatrix2fvARB(disp) GET_by_offset(disp, _gloffset_UniformMatrix2fvARB)
+#define SET_UniformMatrix2fvARB(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix2fvARB, fn)
+#define CALL_UniformMatrix3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix3fvARB, parameters)
+#define GET_UniformMatrix3fvARB(disp) GET_by_offset(disp, _gloffset_UniformMatrix3fvARB)
+#define SET_UniformMatrix3fvARB(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix3fvARB, fn)
+#define CALL_UniformMatrix4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix4fvARB, parameters)
+#define GET_UniformMatrix4fvARB(disp) GET_by_offset(disp, _gloffset_UniformMatrix4fvARB)
+#define SET_UniformMatrix4fvARB(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix4fvARB, fn)
+#define CALL_UseProgramObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), _gloffset_UseProgramObjectARB, parameters)
+#define GET_UseProgramObjectARB(disp) GET_by_offset(disp, _gloffset_UseProgramObjectARB)
+#define SET_UseProgramObjectARB(disp, fn) SET_by_offset(disp, _gloffset_UseProgramObjectARB, fn)
+#define CALL_ValidateProgramARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), _gloffset_ValidateProgramARB, parameters)
+#define GET_ValidateProgramARB(disp) GET_by_offset(disp, _gloffset_ValidateProgramARB)
+#define SET_ValidateProgramARB(disp, fn) SET_by_offset(disp, _gloffset_ValidateProgramARB, fn)
+#define CALL_BindAttribLocationARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, const GLcharARB *)), _gloffset_BindAttribLocationARB, parameters)
+#define GET_BindAttribLocationARB(disp) GET_by_offset(disp, _gloffset_BindAttribLocationARB)
+#define SET_BindAttribLocationARB(disp, fn) SET_by_offset(disp, _gloffset_BindAttribLocationARB, fn)
+#define CALL_GetActiveAttribARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)), _gloffset_GetActiveAttribARB, parameters)
+#define GET_GetActiveAttribARB(disp) GET_by_offset(disp, _gloffset_GetActiveAttribARB)
+#define SET_GetActiveAttribARB(disp, fn) SET_by_offset(disp, _gloffset_GetActiveAttribARB, fn)
+#define CALL_GetAttribLocationARB(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLhandleARB, const GLcharARB *)), _gloffset_GetAttribLocationARB, parameters)
+#define GET_GetAttribLocationARB(disp) GET_by_offset(disp, _gloffset_GetAttribLocationARB)
+#define SET_GetAttribLocationARB(disp, fn) SET_by_offset(disp, _gloffset_GetAttribLocationARB, fn)
+#define CALL_DrawBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLenum *)), _gloffset_DrawBuffersARB, parameters)
+#define GET_DrawBuffersARB(disp) GET_by_offset(disp, _gloffset_DrawBuffersARB)
+#define SET_DrawBuffersARB(disp, fn) SET_by_offset(disp, _gloffset_DrawBuffersARB, fn)
+#define CALL_DrawArraysInstancedARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei, GLsizei)), _gloffset_DrawArraysInstancedARB, parameters)
+#define GET_DrawArraysInstancedARB(disp) GET_by_offset(disp, _gloffset_DrawArraysInstancedARB)
+#define SET_DrawArraysInstancedARB(disp, fn) SET_by_offset(disp, _gloffset_DrawArraysInstancedARB, fn)
+#define CALL_DrawElementsInstancedARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei)), _gloffset_DrawElementsInstancedARB, parameters)
+#define GET_DrawElementsInstancedARB(disp) GET_by_offset(disp, _gloffset_DrawElementsInstancedARB)
+#define SET_DrawElementsInstancedARB(disp, fn) SET_by_offset(disp, _gloffset_DrawElementsInstancedARB, fn)
+#define CALL_RenderbufferStorageMultisample(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)), _gloffset_RenderbufferStorageMultisample, parameters)
+#define GET_RenderbufferStorageMultisample(disp) GET_by_offset(disp, _gloffset_RenderbufferStorageMultisample)
+#define SET_RenderbufferStorageMultisample(disp, fn) SET_by_offset(disp, _gloffset_RenderbufferStorageMultisample, fn)
+#define CALL_FramebufferTextureARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint)), _gloffset_FramebufferTextureARB, parameters)
+#define GET_FramebufferTextureARB(disp) GET_by_offset(disp, _gloffset_FramebufferTextureARB)
+#define SET_FramebufferTextureARB(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTextureARB, fn)
+#define CALL_FramebufferTextureFaceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint, GLenum)), _gloffset_FramebufferTextureFaceARB, parameters)
+#define GET_FramebufferTextureFaceARB(disp) GET_by_offset(disp, _gloffset_FramebufferTextureFaceARB)
+#define SET_FramebufferTextureFaceARB(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTextureFaceARB, fn)
+#define CALL_ProgramParameteriARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint)), _gloffset_ProgramParameteriARB, parameters)
+#define GET_ProgramParameteriARB(disp) GET_by_offset(disp, _gloffset_ProgramParameteriARB)
+#define SET_ProgramParameteriARB(disp, fn) SET_by_offset(disp, _gloffset_ProgramParameteriARB, fn)
+#define CALL_FlushMappedBufferRange(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr)), _gloffset_FlushMappedBufferRange, parameters)
+#define GET_FlushMappedBufferRange(disp) GET_by_offset(disp, _gloffset_FlushMappedBufferRange)
+#define SET_FlushMappedBufferRange(disp, fn) SET_by_offset(disp, _gloffset_FlushMappedBufferRange, fn)
+#define CALL_MapBufferRange(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr, GLbitfield)), _gloffset_MapBufferRange, parameters)
+#define GET_MapBufferRange(disp) GET_by_offset(disp, _gloffset_MapBufferRange)
+#define SET_MapBufferRange(disp, fn) SET_by_offset(disp, _gloffset_MapBufferRange, fn)
+#define CALL_BindVertexArray(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_BindVertexArray, parameters)
+#define GET_BindVertexArray(disp) GET_by_offset(disp, _gloffset_BindVertexArray)
+#define SET_BindVertexArray(disp, fn) SET_by_offset(disp, _gloffset_BindVertexArray, fn)
+#define CALL_GenVertexArrays(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenVertexArrays, parameters)
+#define GET_GenVertexArrays(disp) GET_by_offset(disp, _gloffset_GenVertexArrays)
+#define SET_GenVertexArrays(disp, fn) SET_by_offset(disp, _gloffset_GenVertexArrays, fn)
+#define CALL_CopyBufferSubData(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr)), _gloffset_CopyBufferSubData, parameters)
+#define GET_CopyBufferSubData(disp) GET_by_offset(disp, _gloffset_CopyBufferSubData)
+#define SET_CopyBufferSubData(disp, fn) SET_by_offset(disp, _gloffset_CopyBufferSubData, fn)
+#define CALL_ClientWaitSync(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLsync, GLbitfield, GLuint64)), _gloffset_ClientWaitSync, parameters)
+#define GET_ClientWaitSync(disp) GET_by_offset(disp, _gloffset_ClientWaitSync)
+#define SET_ClientWaitSync(disp, fn) SET_by_offset(disp, _gloffset_ClientWaitSync, fn)
+#define CALL_DeleteSync(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync)), _gloffset_DeleteSync, parameters)
+#define GET_DeleteSync(disp) GET_by_offset(disp, _gloffset_DeleteSync)
+#define SET_DeleteSync(disp, fn) SET_by_offset(disp, _gloffset_DeleteSync, fn)
+#define CALL_FenceSync(disp, parameters) CALL_by_offset(disp, (GLsync (GLAPIENTRYP)(GLenum, GLbitfield)), _gloffset_FenceSync, parameters)
+#define GET_FenceSync(disp) GET_by_offset(disp, _gloffset_FenceSync)
+#define SET_FenceSync(disp, fn) SET_by_offset(disp, _gloffset_FenceSync, fn)
+#define CALL_GetInteger64v(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint64 *)), _gloffset_GetInteger64v, parameters)
+#define GET_GetInteger64v(disp) GET_by_offset(disp, _gloffset_GetInteger64v)
+#define SET_GetInteger64v(disp, fn) SET_by_offset(disp, _gloffset_GetInteger64v, fn)
+#define CALL_GetSynciv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync, GLenum, GLsizei, GLsizei *, GLint *)), _gloffset_GetSynciv, parameters)
+#define GET_GetSynciv(disp) GET_by_offset(disp, _gloffset_GetSynciv)
+#define SET_GetSynciv(disp, fn) SET_by_offset(disp, _gloffset_GetSynciv, fn)
+#define CALL_IsSync(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsync)), _gloffset_IsSync, parameters)
+#define GET_IsSync(disp) GET_by_offset(disp, _gloffset_IsSync)
+#define SET_IsSync(disp, fn) SET_by_offset(disp, _gloffset_IsSync, fn)
+#define CALL_WaitSync(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync, GLbitfield, GLuint64)), _gloffset_WaitSync, parameters)
+#define GET_WaitSync(disp) GET_by_offset(disp, _gloffset_WaitSync)
+#define SET_WaitSync(disp, fn) SET_by_offset(disp, _gloffset_WaitSync, fn)
+#define CALL_DrawElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLint)), _gloffset_DrawElementsBaseVertex, parameters)
+#define GET_DrawElementsBaseVertex(disp) GET_by_offset(disp, _gloffset_DrawElementsBaseVertex)
+#define SET_DrawElementsBaseVertex(disp, fn) SET_by_offset(disp, _gloffset_DrawElementsBaseVertex, fn)
+#define CALL_DrawRangeElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *, GLint)), _gloffset_DrawRangeElementsBaseVertex, parameters)
+#define GET_DrawRangeElementsBaseVertex(disp) GET_by_offset(disp, _gloffset_DrawRangeElementsBaseVertex)
+#define SET_DrawRangeElementsBaseVertex(disp, fn) SET_by_offset(disp, _gloffset_DrawRangeElementsBaseVertex, fn)
+#define CALL_MultiDrawElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei, const GLint *)), _gloffset_MultiDrawElementsBaseVertex, parameters)
+#define GET_MultiDrawElementsBaseVertex(disp) GET_by_offset(disp, _gloffset_MultiDrawElementsBaseVertex)
+#define SET_MultiDrawElementsBaseVertex(disp, fn) SET_by_offset(disp, _gloffset_MultiDrawElementsBaseVertex, fn)
+#define CALL_BindTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindTransformFeedback, parameters)
+#define GET_BindTransformFeedback(disp) GET_by_offset(disp, _gloffset_BindTransformFeedback)
+#define SET_BindTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_BindTransformFeedback, fn)
+#define CALL_DeleteTransformFeedbacks(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteTransformFeedbacks, parameters)
+#define GET_DeleteTransformFeedbacks(disp) GET_by_offset(disp, _gloffset_DeleteTransformFeedbacks)
+#define SET_DeleteTransformFeedbacks(disp, fn) SET_by_offset(disp, _gloffset_DeleteTransformFeedbacks, fn)
+#define CALL_DrawTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_DrawTransformFeedback, parameters)
+#define GET_DrawTransformFeedback(disp) GET_by_offset(disp, _gloffset_DrawTransformFeedback)
+#define SET_DrawTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_DrawTransformFeedback, fn)
+#define CALL_GenTransformFeedbacks(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenTransformFeedbacks, parameters)
+#define GET_GenTransformFeedbacks(disp) GET_by_offset(disp, _gloffset_GenTransformFeedbacks)
+#define SET_GenTransformFeedbacks(disp, fn) SET_by_offset(disp, _gloffset_GenTransformFeedbacks, fn)
+#define CALL_IsTransformFeedback(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsTransformFeedback, parameters)
+#define GET_IsTransformFeedback(disp) GET_by_offset(disp, _gloffset_IsTransformFeedback)
+#define SET_IsTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_IsTransformFeedback, fn)
+#define CALL_PauseTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PauseTransformFeedback, parameters)
+#define GET_PauseTransformFeedback(disp) GET_by_offset(disp, _gloffset_PauseTransformFeedback)
+#define SET_PauseTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_PauseTransformFeedback, fn)
+#define CALL_ResumeTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_ResumeTransformFeedback, parameters)
+#define GET_ResumeTransformFeedback(disp) GET_by_offset(disp, _gloffset_ResumeTransformFeedback)
+#define SET_ResumeTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_ResumeTransformFeedback, fn)
+#define CALL_PolygonOffsetEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_PolygonOffsetEXT, parameters)
+#define GET_PolygonOffsetEXT(disp) GET_by_offset(disp, _gloffset_PolygonOffsetEXT)
+#define SET_PolygonOffsetEXT(disp, fn) SET_by_offset(disp, _gloffset_PolygonOffsetEXT, fn)
+#define CALL_GetPixelTexGenParameterfvSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), _gloffset_GetPixelTexGenParameterfvSGIS, parameters)
+#define GET_GetPixelTexGenParameterfvSGIS(disp) GET_by_offset(disp, _gloffset_GetPixelTexGenParameterfvSGIS)
+#define SET_GetPixelTexGenParameterfvSGIS(disp, fn) SET_by_offset(disp, _gloffset_GetPixelTexGenParameterfvSGIS, fn)
+#define CALL_GetPixelTexGenParameterivSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), _gloffset_GetPixelTexGenParameterivSGIS, parameters)
+#define GET_GetPixelTexGenParameterivSGIS(disp) GET_by_offset(disp, _gloffset_GetPixelTexGenParameterivSGIS)
+#define SET_GetPixelTexGenParameterivSGIS(disp, fn) SET_by_offset(disp, _gloffset_GetPixelTexGenParameterivSGIS, fn)
+#define CALL_PixelTexGenParameterfSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_PixelTexGenParameterfSGIS, parameters)
+#define GET_PixelTexGenParameterfSGIS(disp) GET_by_offset(disp, _gloffset_PixelTexGenParameterfSGIS)
+#define SET_PixelTexGenParameterfSGIS(disp, fn) SET_by_offset(disp, _gloffset_PixelTexGenParameterfSGIS, fn)
+#define CALL_PixelTexGenParameterfvSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_PixelTexGenParameterfvSGIS, parameters)
+#define GET_PixelTexGenParameterfvSGIS(disp) GET_by_offset(disp, _gloffset_PixelTexGenParameterfvSGIS)
+#define SET_PixelTexGenParameterfvSGIS(disp, fn) SET_by_offset(disp, _gloffset_PixelTexGenParameterfvSGIS, fn)
+#define CALL_PixelTexGenParameteriSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_PixelTexGenParameteriSGIS, parameters)
+#define GET_PixelTexGenParameteriSGIS(disp) GET_by_offset(disp, _gloffset_PixelTexGenParameteriSGIS)
+#define SET_PixelTexGenParameteriSGIS(disp, fn) SET_by_offset(disp, _gloffset_PixelTexGenParameteriSGIS, fn)
+#define CALL_PixelTexGenParameterivSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_PixelTexGenParameterivSGIS, parameters)
+#define GET_PixelTexGenParameterivSGIS(disp) GET_by_offset(disp, _gloffset_PixelTexGenParameterivSGIS)
+#define SET_PixelTexGenParameterivSGIS(disp, fn) SET_by_offset(disp, _gloffset_PixelTexGenParameterivSGIS, fn)
+#define CALL_SampleMaskSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLboolean)), _gloffset_SampleMaskSGIS, parameters)
+#define GET_SampleMaskSGIS(disp) GET_by_offset(disp, _gloffset_SampleMaskSGIS)
+#define SET_SampleMaskSGIS(disp, fn) SET_by_offset(disp, _gloffset_SampleMaskSGIS, fn)
+#define CALL_SamplePatternSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_SamplePatternSGIS, parameters)
+#define GET_SamplePatternSGIS(disp) GET_by_offset(disp, _gloffset_SamplePatternSGIS)
+#define SET_SamplePatternSGIS(disp, fn) SET_by_offset(disp, _gloffset_SamplePatternSGIS, fn)
+#define CALL_ColorPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), _gloffset_ColorPointerEXT, parameters)
+#define GET_ColorPointerEXT(disp) GET_by_offset(disp, _gloffset_ColorPointerEXT)
+#define SET_ColorPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_ColorPointerEXT, fn)
+#define CALL_EdgeFlagPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLsizei, const GLboolean *)), _gloffset_EdgeFlagPointerEXT, parameters)
+#define GET_EdgeFlagPointerEXT(disp) GET_by_offset(disp, _gloffset_EdgeFlagPointerEXT)
+#define SET_EdgeFlagPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_EdgeFlagPointerEXT, fn)
+#define CALL_IndexPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, const GLvoid *)), _gloffset_IndexPointerEXT, parameters)
+#define GET_IndexPointerEXT(disp) GET_by_offset(disp, _gloffset_IndexPointerEXT)
+#define SET_IndexPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_IndexPointerEXT, fn)
+#define CALL_NormalPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, const GLvoid *)), _gloffset_NormalPointerEXT, parameters)
+#define GET_NormalPointerEXT(disp) GET_by_offset(disp, _gloffset_NormalPointerEXT)
+#define SET_NormalPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_NormalPointerEXT, fn)
+#define CALL_TexCoordPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), _gloffset_TexCoordPointerEXT, parameters)
+#define GET_TexCoordPointerEXT(disp) GET_by_offset(disp, _gloffset_TexCoordPointerEXT)
+#define SET_TexCoordPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_TexCoordPointerEXT, fn)
+#define CALL_VertexPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), _gloffset_VertexPointerEXT, parameters)
+#define GET_VertexPointerEXT(disp) GET_by_offset(disp, _gloffset_VertexPointerEXT)
+#define SET_VertexPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexPointerEXT, fn)
+#define CALL_PointParameterfEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_PointParameterfEXT, parameters)
+#define GET_PointParameterfEXT(disp) GET_by_offset(disp, _gloffset_PointParameterfEXT)
+#define SET_PointParameterfEXT(disp, fn) SET_by_offset(disp, _gloffset_PointParameterfEXT, fn)
+#define CALL_PointParameterfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_PointParameterfvEXT, parameters)
+#define GET_PointParameterfvEXT(disp) GET_by_offset(disp, _gloffset_PointParameterfvEXT)
+#define SET_PointParameterfvEXT(disp, fn) SET_by_offset(disp, _gloffset_PointParameterfvEXT, fn)
+#define CALL_LockArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei)), _gloffset_LockArraysEXT, parameters)
+#define GET_LockArraysEXT(disp) GET_by_offset(disp, _gloffset_LockArraysEXT)
+#define SET_LockArraysEXT(disp, fn) SET_by_offset(disp, _gloffset_LockArraysEXT, fn)
+#define CALL_UnlockArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_UnlockArraysEXT, parameters)
+#define GET_UnlockArraysEXT(disp) GET_by_offset(disp, _gloffset_UnlockArraysEXT)
+#define SET_UnlockArraysEXT(disp, fn) SET_by_offset(disp, _gloffset_UnlockArraysEXT, fn)
+#define CALL_SecondaryColor3bEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbyte, GLbyte, GLbyte)), _gloffset_SecondaryColor3bEXT, parameters)
+#define GET_SecondaryColor3bEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3bEXT)
+#define SET_SecondaryColor3bEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3bEXT, fn)
+#define CALL_SecondaryColor3bvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLbyte *)), _gloffset_SecondaryColor3bvEXT, parameters)
+#define GET_SecondaryColor3bvEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3bvEXT)
+#define SET_SecondaryColor3bvEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3bvEXT, fn)
+#define CALL_SecondaryColor3dEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_SecondaryColor3dEXT, parameters)
+#define GET_SecondaryColor3dEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3dEXT)
+#define SET_SecondaryColor3dEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3dEXT, fn)
+#define CALL_SecondaryColor3dvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_SecondaryColor3dvEXT, parameters)
+#define GET_SecondaryColor3dvEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3dvEXT)
+#define SET_SecondaryColor3dvEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3dvEXT, fn)
+#define CALL_SecondaryColor3fEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_SecondaryColor3fEXT, parameters)
+#define GET_SecondaryColor3fEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3fEXT)
+#define SET_SecondaryColor3fEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3fEXT, fn)
+#define CALL_SecondaryColor3fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_SecondaryColor3fvEXT, parameters)
+#define GET_SecondaryColor3fvEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3fvEXT)
+#define SET_SecondaryColor3fvEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3fvEXT, fn)
+#define CALL_SecondaryColor3iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_SecondaryColor3iEXT, parameters)
+#define GET_SecondaryColor3iEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3iEXT)
+#define SET_SecondaryColor3iEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3iEXT, fn)
+#define CALL_SecondaryColor3ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_SecondaryColor3ivEXT, parameters)
+#define GET_SecondaryColor3ivEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3ivEXT)
+#define SET_SecondaryColor3ivEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3ivEXT, fn)
+#define CALL_SecondaryColor3sEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_SecondaryColor3sEXT, parameters)
+#define GET_SecondaryColor3sEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3sEXT)
+#define SET_SecondaryColor3sEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3sEXT, fn)
+#define CALL_SecondaryColor3svEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_SecondaryColor3svEXT, parameters)
+#define GET_SecondaryColor3svEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3svEXT)
+#define SET_SecondaryColor3svEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3svEXT, fn)
+#define CALL_SecondaryColor3ubEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte, GLubyte, GLubyte)), _gloffset_SecondaryColor3ubEXT, parameters)
+#define GET_SecondaryColor3ubEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3ubEXT)
+#define SET_SecondaryColor3ubEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3ubEXT, fn)
+#define CALL_SecondaryColor3ubvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), _gloffset_SecondaryColor3ubvEXT, parameters)
+#define GET_SecondaryColor3ubvEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3ubvEXT)
+#define SET_SecondaryColor3ubvEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3ubvEXT, fn)
+#define CALL_SecondaryColor3uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint)), _gloffset_SecondaryColor3uiEXT, parameters)
+#define GET_SecondaryColor3uiEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3uiEXT)
+#define SET_SecondaryColor3uiEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3uiEXT, fn)
+#define CALL_SecondaryColor3uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLuint *)), _gloffset_SecondaryColor3uivEXT, parameters)
+#define GET_SecondaryColor3uivEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3uivEXT)
+#define SET_SecondaryColor3uivEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3uivEXT, fn)
+#define CALL_SecondaryColor3usEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLushort, GLushort, GLushort)), _gloffset_SecondaryColor3usEXT, parameters)
+#define GET_SecondaryColor3usEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3usEXT)
+#define SET_SecondaryColor3usEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3usEXT, fn)
+#define CALL_SecondaryColor3usvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLushort *)), _gloffset_SecondaryColor3usvEXT, parameters)
+#define GET_SecondaryColor3usvEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColor3usvEXT)
+#define SET_SecondaryColor3usvEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColor3usvEXT, fn)
+#define CALL_SecondaryColorPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_SecondaryColorPointerEXT, parameters)
+#define GET_SecondaryColorPointerEXT(disp) GET_by_offset(disp, _gloffset_SecondaryColorPointerEXT)
+#define SET_SecondaryColorPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_SecondaryColorPointerEXT, fn)
+#define CALL_MultiDrawArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *, const GLsizei *, GLsizei)), _gloffset_MultiDrawArraysEXT, parameters)
+#define GET_MultiDrawArraysEXT(disp) GET_by_offset(disp, _gloffset_MultiDrawArraysEXT)
+#define SET_MultiDrawArraysEXT(disp, fn) SET_by_offset(disp, _gloffset_MultiDrawArraysEXT, fn)
+#define CALL_MultiDrawElementsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei)), _gloffset_MultiDrawElementsEXT, parameters)
+#define GET_MultiDrawElementsEXT(disp) GET_by_offset(disp, _gloffset_MultiDrawElementsEXT)
+#define SET_MultiDrawElementsEXT(disp, fn) SET_by_offset(disp, _gloffset_MultiDrawElementsEXT, fn)
+#define CALL_FogCoordPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLvoid *)), _gloffset_FogCoordPointerEXT, parameters)
+#define GET_FogCoordPointerEXT(disp) GET_by_offset(disp, _gloffset_FogCoordPointerEXT)
+#define SET_FogCoordPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_FogCoordPointerEXT, fn)
+#define CALL_FogCoorddEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble)), _gloffset_FogCoorddEXT, parameters)
+#define GET_FogCoorddEXT(disp) GET_by_offset(disp, _gloffset_FogCoorddEXT)
+#define SET_FogCoorddEXT(disp, fn) SET_by_offset(disp, _gloffset_FogCoorddEXT, fn)
+#define CALL_FogCoorddvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_FogCoorddvEXT, parameters)
+#define GET_FogCoorddvEXT(disp) GET_by_offset(disp, _gloffset_FogCoorddvEXT)
+#define SET_FogCoorddvEXT(disp, fn) SET_by_offset(disp, _gloffset_FogCoorddvEXT, fn)
+#define CALL_FogCoordfEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), _gloffset_FogCoordfEXT, parameters)
+#define GET_FogCoordfEXT(disp) GET_by_offset(disp, _gloffset_FogCoordfEXT)
+#define SET_FogCoordfEXT(disp, fn) SET_by_offset(disp, _gloffset_FogCoordfEXT, fn)
+#define CALL_FogCoordfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_FogCoordfvEXT, parameters)
+#define GET_FogCoordfvEXT(disp) GET_by_offset(disp, _gloffset_FogCoordfvEXT)
+#define SET_FogCoordfvEXT(disp, fn) SET_by_offset(disp, _gloffset_FogCoordfvEXT, fn)
+#define CALL_PixelTexGenSGIX(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_PixelTexGenSGIX, parameters)
+#define GET_PixelTexGenSGIX(disp) GET_by_offset(disp, _gloffset_PixelTexGenSGIX)
+#define SET_PixelTexGenSGIX(disp, fn) SET_by_offset(disp, _gloffset_PixelTexGenSGIX, fn)
+#define CALL_BlendFuncSeparateEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), _gloffset_BlendFuncSeparateEXT, parameters)
+#define GET_BlendFuncSeparateEXT(disp) GET_by_offset(disp, _gloffset_BlendFuncSeparateEXT)
+#define SET_BlendFuncSeparateEXT(disp, fn) SET_by_offset(disp, _gloffset_BlendFuncSeparateEXT, fn)
+#define CALL_FlushVertexArrayRangeNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_FlushVertexArrayRangeNV, parameters)
+#define GET_FlushVertexArrayRangeNV(disp) GET_by_offset(disp, _gloffset_FlushVertexArrayRangeNV)
+#define SET_FlushVertexArrayRangeNV(disp, fn) SET_by_offset(disp, _gloffset_FlushVertexArrayRangeNV, fn)
+#define CALL_VertexArrayRangeNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLvoid *)), _gloffset_VertexArrayRangeNV, parameters)
+#define GET_VertexArrayRangeNV(disp) GET_by_offset(disp, _gloffset_VertexArrayRangeNV)
+#define SET_VertexArrayRangeNV(disp, fn) SET_by_offset(disp, _gloffset_VertexArrayRangeNV, fn)
+#define CALL_CombinerInputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum)), _gloffset_CombinerInputNV, parameters)
+#define GET_CombinerInputNV(disp) GET_by_offset(disp, _gloffset_CombinerInputNV)
+#define SET_CombinerInputNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerInputNV, fn)
+#define CALL_CombinerOutputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean)), _gloffset_CombinerOutputNV, parameters)
+#define GET_CombinerOutputNV(disp) GET_by_offset(disp, _gloffset_CombinerOutputNV)
+#define SET_CombinerOutputNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerOutputNV, fn)
+#define CALL_CombinerParameterfNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), _gloffset_CombinerParameterfNV, parameters)
+#define GET_CombinerParameterfNV(disp) GET_by_offset(disp, _gloffset_CombinerParameterfNV)
+#define SET_CombinerParameterfNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerParameterfNV, fn)
+#define CALL_CombinerParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_CombinerParameterfvNV, parameters)
+#define GET_CombinerParameterfvNV(disp) GET_by_offset(disp, _gloffset_CombinerParameterfvNV)
+#define SET_CombinerParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerParameterfvNV, fn)
+#define CALL_CombinerParameteriNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_CombinerParameteriNV, parameters)
+#define GET_CombinerParameteriNV(disp) GET_by_offset(disp, _gloffset_CombinerParameteriNV)
+#define SET_CombinerParameteriNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerParameteriNV, fn)
+#define CALL_CombinerParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_CombinerParameterivNV, parameters)
+#define GET_CombinerParameterivNV(disp) GET_by_offset(disp, _gloffset_CombinerParameterivNV)
+#define SET_CombinerParameterivNV(disp, fn) SET_by_offset(disp, _gloffset_CombinerParameterivNV, fn)
+#define CALL_FinalCombinerInputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), _gloffset_FinalCombinerInputNV, parameters)
+#define GET_FinalCombinerInputNV(disp) GET_by_offset(disp, _gloffset_FinalCombinerInputNV)
+#define SET_FinalCombinerInputNV(disp, fn) SET_by_offset(disp, _gloffset_FinalCombinerInputNV, fn)
+#define CALL_GetCombinerInputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLfloat *)), _gloffset_GetCombinerInputParameterfvNV, parameters)
+#define GET_GetCombinerInputParameterfvNV(disp) GET_by_offset(disp, _gloffset_GetCombinerInputParameterfvNV)
+#define SET_GetCombinerInputParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetCombinerInputParameterfvNV, fn)
+#define CALL_GetCombinerInputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLint *)), _gloffset_GetCombinerInputParameterivNV, parameters)
+#define GET_GetCombinerInputParameterivNV(disp) GET_by_offset(disp, _gloffset_GetCombinerInputParameterivNV)
+#define SET_GetCombinerInputParameterivNV(disp, fn) SET_by_offset(disp, _gloffset_GetCombinerInputParameterivNV, fn)
+#define CALL_GetCombinerOutputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLfloat *)), _gloffset_GetCombinerOutputParameterfvNV, parameters)
+#define GET_GetCombinerOutputParameterfvNV(disp) GET_by_offset(disp, _gloffset_GetCombinerOutputParameterfvNV)
+#define SET_GetCombinerOutputParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetCombinerOutputParameterfvNV, fn)
+#define CALL_GetCombinerOutputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLint *)), _gloffset_GetCombinerOutputParameterivNV, parameters)
+#define GET_GetCombinerOutputParameterivNV(disp) GET_by_offset(disp, _gloffset_GetCombinerOutputParameterivNV)
+#define SET_GetCombinerOutputParameterivNV(disp, fn) SET_by_offset(disp, _gloffset_GetCombinerOutputParameterivNV, fn)
+#define CALL_GetFinalCombinerInputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), _gloffset_GetFinalCombinerInputParameterfvNV, parameters)
+#define GET_GetFinalCombinerInputParameterfvNV(disp) GET_by_offset(disp, _gloffset_GetFinalCombinerInputParameterfvNV)
+#define SET_GetFinalCombinerInputParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetFinalCombinerInputParameterfvNV, fn)
+#define CALL_GetFinalCombinerInputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetFinalCombinerInputParameterivNV, parameters)
+#define GET_GetFinalCombinerInputParameterivNV(disp) GET_by_offset(disp, _gloffset_GetFinalCombinerInputParameterivNV)
+#define SET_GetFinalCombinerInputParameterivNV(disp, fn) SET_by_offset(disp, _gloffset_GetFinalCombinerInputParameterivNV, fn)
+#define CALL_ResizeBuffersMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_ResizeBuffersMESA, parameters)
+#define GET_ResizeBuffersMESA(disp) GET_by_offset(disp, _gloffset_ResizeBuffersMESA)
+#define SET_ResizeBuffersMESA(disp, fn) SET_by_offset(disp, _gloffset_ResizeBuffersMESA, fn)
+#define CALL_WindowPos2dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), _gloffset_WindowPos2dMESA, parameters)
+#define GET_WindowPos2dMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2dMESA)
+#define SET_WindowPos2dMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2dMESA, fn)
+#define CALL_WindowPos2dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_WindowPos2dvMESA, parameters)
+#define GET_WindowPos2dvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2dvMESA)
+#define SET_WindowPos2dvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2dvMESA, fn)
+#define CALL_WindowPos2fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_WindowPos2fMESA, parameters)
+#define GET_WindowPos2fMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2fMESA)
+#define SET_WindowPos2fMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2fMESA, fn)
+#define CALL_WindowPos2fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_WindowPos2fvMESA, parameters)
+#define GET_WindowPos2fvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2fvMESA)
+#define SET_WindowPos2fvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2fvMESA, fn)
+#define CALL_WindowPos2iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), _gloffset_WindowPos2iMESA, parameters)
+#define GET_WindowPos2iMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2iMESA)
+#define SET_WindowPos2iMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2iMESA, fn)
+#define CALL_WindowPos2ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_WindowPos2ivMESA, parameters)
+#define GET_WindowPos2ivMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2ivMESA)
+#define SET_WindowPos2ivMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2ivMESA, fn)
+#define CALL_WindowPos2sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort)), _gloffset_WindowPos2sMESA, parameters)
+#define GET_WindowPos2sMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2sMESA)
+#define SET_WindowPos2sMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2sMESA, fn)
+#define CALL_WindowPos2svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_WindowPos2svMESA, parameters)
+#define GET_WindowPos2svMESA(disp) GET_by_offset(disp, _gloffset_WindowPos2svMESA)
+#define SET_WindowPos2svMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos2svMESA, fn)
+#define CALL_WindowPos3dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), _gloffset_WindowPos3dMESA, parameters)
+#define GET_WindowPos3dMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3dMESA)
+#define SET_WindowPos3dMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3dMESA, fn)
+#define CALL_WindowPos3dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_WindowPos3dvMESA, parameters)
+#define GET_WindowPos3dvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3dvMESA)
+#define SET_WindowPos3dvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3dvMESA, fn)
+#define CALL_WindowPos3fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), _gloffset_WindowPos3fMESA, parameters)
+#define GET_WindowPos3fMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3fMESA)
+#define SET_WindowPos3fMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3fMESA, fn)
+#define CALL_WindowPos3fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_WindowPos3fvMESA, parameters)
+#define GET_WindowPos3fvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3fvMESA)
+#define SET_WindowPos3fvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3fvMESA, fn)
+#define CALL_WindowPos3iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), _gloffset_WindowPos3iMESA, parameters)
+#define GET_WindowPos3iMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3iMESA)
+#define SET_WindowPos3iMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3iMESA, fn)
+#define CALL_WindowPos3ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_WindowPos3ivMESA, parameters)
+#define GET_WindowPos3ivMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3ivMESA)
+#define SET_WindowPos3ivMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3ivMESA, fn)
+#define CALL_WindowPos3sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), _gloffset_WindowPos3sMESA, parameters)
+#define GET_WindowPos3sMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3sMESA)
+#define SET_WindowPos3sMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3sMESA, fn)
+#define CALL_WindowPos3svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_WindowPos3svMESA, parameters)
+#define GET_WindowPos3svMESA(disp) GET_by_offset(disp, _gloffset_WindowPos3svMESA)
+#define SET_WindowPos3svMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos3svMESA, fn)
+#define CALL_WindowPos4dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_WindowPos4dMESA, parameters)
+#define GET_WindowPos4dMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4dMESA)
+#define SET_WindowPos4dMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4dMESA, fn)
+#define CALL_WindowPos4dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_WindowPos4dvMESA, parameters)
+#define GET_WindowPos4dvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4dvMESA)
+#define SET_WindowPos4dvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4dvMESA, fn)
+#define CALL_WindowPos4fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_WindowPos4fMESA, parameters)
+#define GET_WindowPos4fMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4fMESA)
+#define SET_WindowPos4fMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4fMESA, fn)
+#define CALL_WindowPos4fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), _gloffset_WindowPos4fvMESA, parameters)
+#define GET_WindowPos4fvMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4fvMESA)
+#define SET_WindowPos4fvMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4fvMESA, fn)
+#define CALL_WindowPos4iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_WindowPos4iMESA, parameters)
+#define GET_WindowPos4iMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4iMESA)
+#define SET_WindowPos4iMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4iMESA, fn)
+#define CALL_WindowPos4ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), _gloffset_WindowPos4ivMESA, parameters)
+#define GET_WindowPos4ivMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4ivMESA)
+#define SET_WindowPos4ivMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4ivMESA, fn)
+#define CALL_WindowPos4sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), _gloffset_WindowPos4sMESA, parameters)
+#define GET_WindowPos4sMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4sMESA)
+#define SET_WindowPos4sMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4sMESA, fn)
+#define CALL_WindowPos4svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), _gloffset_WindowPos4svMESA, parameters)
+#define GET_WindowPos4svMESA(disp) GET_by_offset(disp, _gloffset_WindowPos4svMESA)
+#define SET_WindowPos4svMESA(disp, fn) SET_by_offset(disp, _gloffset_WindowPos4svMESA, fn)
+#define CALL_MultiModeDrawArraysIBM(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint)), _gloffset_MultiModeDrawArraysIBM, parameters)
+#define GET_MultiModeDrawArraysIBM(disp) GET_by_offset(disp, _gloffset_MultiModeDrawArraysIBM)
+#define SET_MultiModeDrawArraysIBM(disp, fn) SET_by_offset(disp, _gloffset_MultiModeDrawArraysIBM, fn)
+#define CALL_MultiModeDrawElementsIBM(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLenum *, const GLsizei *, GLenum, const GLvoid * const *, GLsizei, GLint)), _gloffset_MultiModeDrawElementsIBM, parameters)
+#define GET_MultiModeDrawElementsIBM(disp) GET_by_offset(disp, _gloffset_MultiModeDrawElementsIBM)
+#define SET_MultiModeDrawElementsIBM(disp, fn) SET_by_offset(disp, _gloffset_MultiModeDrawElementsIBM, fn)
+#define CALL_DeleteFencesNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteFencesNV, parameters)
+#define GET_DeleteFencesNV(disp) GET_by_offset(disp, _gloffset_DeleteFencesNV)
+#define SET_DeleteFencesNV(disp, fn) SET_by_offset(disp, _gloffset_DeleteFencesNV, fn)
+#define CALL_FinishFenceNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_FinishFenceNV, parameters)
+#define GET_FinishFenceNV(disp) GET_by_offset(disp, _gloffset_FinishFenceNV)
+#define SET_FinishFenceNV(disp, fn) SET_by_offset(disp, _gloffset_FinishFenceNV, fn)
+#define CALL_GenFencesNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenFencesNV, parameters)
+#define GET_GenFencesNV(disp) GET_by_offset(disp, _gloffset_GenFencesNV)
+#define SET_GenFencesNV(disp, fn) SET_by_offset(disp, _gloffset_GenFencesNV, fn)
+#define CALL_GetFenceivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetFenceivNV, parameters)
+#define GET_GetFenceivNV(disp) GET_by_offset(disp, _gloffset_GetFenceivNV)
+#define SET_GetFenceivNV(disp, fn) SET_by_offset(disp, _gloffset_GetFenceivNV, fn)
+#define CALL_IsFenceNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsFenceNV, parameters)
+#define GET_IsFenceNV(disp) GET_by_offset(disp, _gloffset_IsFenceNV)
+#define SET_IsFenceNV(disp, fn) SET_by_offset(disp, _gloffset_IsFenceNV, fn)
+#define CALL_SetFenceNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), _gloffset_SetFenceNV, parameters)
+#define GET_SetFenceNV(disp) GET_by_offset(disp, _gloffset_SetFenceNV)
+#define SET_SetFenceNV(disp, fn) SET_by_offset(disp, _gloffset_SetFenceNV, fn)
+#define CALL_TestFenceNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_TestFenceNV, parameters)
+#define GET_TestFenceNV(disp) GET_by_offset(disp, _gloffset_TestFenceNV)
+#define SET_TestFenceNV(disp, fn) SET_by_offset(disp, _gloffset_TestFenceNV, fn)
+#define CALL_AreProgramsResidentNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsizei, const GLuint *, GLboolean *)), _gloffset_AreProgramsResidentNV, parameters)
+#define GET_AreProgramsResidentNV(disp) GET_by_offset(disp, _gloffset_AreProgramsResidentNV)
+#define SET_AreProgramsResidentNV(disp, fn) SET_by_offset(disp, _gloffset_AreProgramsResidentNV, fn)
+#define CALL_BindProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindProgramNV, parameters)
+#define GET_BindProgramNV(disp) GET_by_offset(disp, _gloffset_BindProgramNV)
+#define SET_BindProgramNV(disp, fn) SET_by_offset(disp, _gloffset_BindProgramNV, fn)
+#define CALL_DeleteProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteProgramsNV, parameters)
+#define GET_DeleteProgramsNV(disp) GET_by_offset(disp, _gloffset_DeleteProgramsNV)
+#define SET_DeleteProgramsNV(disp, fn) SET_by_offset(disp, _gloffset_DeleteProgramsNV, fn)
+#define CALL_ExecuteProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), _gloffset_ExecuteProgramNV, parameters)
+#define GET_ExecuteProgramNV(disp) GET_by_offset(disp, _gloffset_ExecuteProgramNV)
+#define SET_ExecuteProgramNV(disp, fn) SET_by_offset(disp, _gloffset_ExecuteProgramNV, fn)
+#define CALL_GenProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenProgramsNV, parameters)
+#define GET_GenProgramsNV(disp) GET_by_offset(disp, _gloffset_GenProgramsNV)
+#define SET_GenProgramsNV(disp, fn) SET_by_offset(disp, _gloffset_GenProgramsNV, fn)
+#define CALL_GetProgramParameterdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLdouble *)), _gloffset_GetProgramParameterdvNV, parameters)
+#define GET_GetProgramParameterdvNV(disp) GET_by_offset(disp, _gloffset_GetProgramParameterdvNV)
+#define SET_GetProgramParameterdvNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramParameterdvNV, fn)
+#define CALL_GetProgramParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLfloat *)), _gloffset_GetProgramParameterfvNV, parameters)
+#define GET_GetProgramParameterfvNV(disp) GET_by_offset(disp, _gloffset_GetProgramParameterfvNV)
+#define SET_GetProgramParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramParameterfvNV, fn)
+#define CALL_GetProgramStringNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLubyte *)), _gloffset_GetProgramStringNV, parameters)
+#define GET_GetProgramStringNV(disp) GET_by_offset(disp, _gloffset_GetProgramStringNV)
+#define SET_GetProgramStringNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramStringNV, fn)
+#define CALL_GetProgramivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetProgramivNV, parameters)
+#define GET_GetProgramivNV(disp) GET_by_offset(disp, _gloffset_GetProgramivNV)
+#define SET_GetProgramivNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramivNV, fn)
+#define CALL_GetTrackMatrixivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLint *)), _gloffset_GetTrackMatrixivNV, parameters)
+#define GET_GetTrackMatrixivNV(disp) GET_by_offset(disp, _gloffset_GetTrackMatrixivNV)
+#define SET_GetTrackMatrixivNV(disp, fn) SET_by_offset(disp, _gloffset_GetTrackMatrixivNV, fn)
+#define CALL_GetVertexAttribPointervNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLvoid **)), _gloffset_GetVertexAttribPointervNV, parameters)
+#define GET_GetVertexAttribPointervNV(disp) GET_by_offset(disp, _gloffset_GetVertexAttribPointervNV)
+#define SET_GetVertexAttribPointervNV(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribPointervNV, fn)
+#define CALL_GetVertexAttribdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLdouble *)), _gloffset_GetVertexAttribdvNV, parameters)
+#define GET_GetVertexAttribdvNV(disp) GET_by_offset(disp, _gloffset_GetVertexAttribdvNV)
+#define SET_GetVertexAttribdvNV(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribdvNV, fn)
+#define CALL_GetVertexAttribfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), _gloffset_GetVertexAttribfvNV, parameters)
+#define GET_GetVertexAttribfvNV(disp) GET_by_offset(disp, _gloffset_GetVertexAttribfvNV)
+#define SET_GetVertexAttribfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribfvNV, fn)
+#define CALL_GetVertexAttribivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetVertexAttribivNV, parameters)
+#define GET_GetVertexAttribivNV(disp) GET_by_offset(disp, _gloffset_GetVertexAttribivNV)
+#define SET_GetVertexAttribivNV(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribivNV, fn)
+#define CALL_IsProgramNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsProgramNV, parameters)
+#define GET_IsProgramNV(disp) GET_by_offset(disp, _gloffset_IsProgramNV)
+#define SET_IsProgramNV(disp, fn) SET_by_offset(disp, _gloffset_IsProgramNV, fn)
+#define CALL_LoadProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLubyte *)), _gloffset_LoadProgramNV, parameters)
+#define GET_LoadProgramNV(disp) GET_by_offset(disp, _gloffset_LoadProgramNV)
+#define SET_LoadProgramNV(disp, fn) SET_by_offset(disp, _gloffset_LoadProgramNV, fn)
+#define CALL_ProgramParameters4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLdouble *)), _gloffset_ProgramParameters4dvNV, parameters)
+#define GET_ProgramParameters4dvNV(disp) GET_by_offset(disp, _gloffset_ProgramParameters4dvNV)
+#define SET_ProgramParameters4dvNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramParameters4dvNV, fn)
+#define CALL_ProgramParameters4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), _gloffset_ProgramParameters4fvNV, parameters)
+#define GET_ProgramParameters4fvNV(disp) GET_by_offset(disp, _gloffset_ProgramParameters4fvNV)
+#define SET_ProgramParameters4fvNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramParameters4fvNV, fn)
+#define CALL_RequestResidentProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_RequestResidentProgramsNV, parameters)
+#define GET_RequestResidentProgramsNV(disp) GET_by_offset(disp, _gloffset_RequestResidentProgramsNV)
+#define SET_RequestResidentProgramsNV(disp, fn) SET_by_offset(disp, _gloffset_RequestResidentProgramsNV, fn)
+#define CALL_TrackMatrixNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLenum)), _gloffset_TrackMatrixNV, parameters)
+#define GET_TrackMatrixNV(disp) GET_by_offset(disp, _gloffset_TrackMatrixNV)
+#define SET_TrackMatrixNV(disp, fn) SET_by_offset(disp, _gloffset_TrackMatrixNV, fn)
+#define CALL_VertexAttrib1dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble)), _gloffset_VertexAttrib1dNV, parameters)
+#define GET_VertexAttrib1dNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1dNV)
+#define SET_VertexAttrib1dNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1dNV, fn)
+#define CALL_VertexAttrib1dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib1dvNV, parameters)
+#define GET_VertexAttrib1dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1dvNV)
+#define SET_VertexAttrib1dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1dvNV, fn)
+#define CALL_VertexAttrib1fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat)), _gloffset_VertexAttrib1fNV, parameters)
+#define GET_VertexAttrib1fNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1fNV)
+#define SET_VertexAttrib1fNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1fNV, fn)
+#define CALL_VertexAttrib1fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib1fvNV, parameters)
+#define GET_VertexAttrib1fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1fvNV)
+#define SET_VertexAttrib1fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1fvNV, fn)
+#define CALL_VertexAttrib1sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort)), _gloffset_VertexAttrib1sNV, parameters)
+#define GET_VertexAttrib1sNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1sNV)
+#define SET_VertexAttrib1sNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1sNV, fn)
+#define CALL_VertexAttrib1svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib1svNV, parameters)
+#define GET_VertexAttrib1svNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib1svNV)
+#define SET_VertexAttrib1svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib1svNV, fn)
+#define CALL_VertexAttrib2dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble)), _gloffset_VertexAttrib2dNV, parameters)
+#define GET_VertexAttrib2dNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2dNV)
+#define SET_VertexAttrib2dNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2dNV, fn)
+#define CALL_VertexAttrib2dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib2dvNV, parameters)
+#define GET_VertexAttrib2dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2dvNV)
+#define SET_VertexAttrib2dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2dvNV, fn)
+#define CALL_VertexAttrib2fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat)), _gloffset_VertexAttrib2fNV, parameters)
+#define GET_VertexAttrib2fNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2fNV)
+#define SET_VertexAttrib2fNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2fNV, fn)
+#define CALL_VertexAttrib2fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib2fvNV, parameters)
+#define GET_VertexAttrib2fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2fvNV)
+#define SET_VertexAttrib2fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2fvNV, fn)
+#define CALL_VertexAttrib2sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort)), _gloffset_VertexAttrib2sNV, parameters)
+#define GET_VertexAttrib2sNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2sNV)
+#define SET_VertexAttrib2sNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2sNV, fn)
+#define CALL_VertexAttrib2svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib2svNV, parameters)
+#define GET_VertexAttrib2svNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib2svNV)
+#define SET_VertexAttrib2svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib2svNV, fn)
+#define CALL_VertexAttrib3dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble)), _gloffset_VertexAttrib3dNV, parameters)
+#define GET_VertexAttrib3dNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3dNV)
+#define SET_VertexAttrib3dNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3dNV, fn)
+#define CALL_VertexAttrib3dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib3dvNV, parameters)
+#define GET_VertexAttrib3dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3dvNV)
+#define SET_VertexAttrib3dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3dvNV, fn)
+#define CALL_VertexAttrib3fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat)), _gloffset_VertexAttrib3fNV, parameters)
+#define GET_VertexAttrib3fNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3fNV)
+#define SET_VertexAttrib3fNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3fNV, fn)
+#define CALL_VertexAttrib3fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib3fvNV, parameters)
+#define GET_VertexAttrib3fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3fvNV)
+#define SET_VertexAttrib3fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3fvNV, fn)
+#define CALL_VertexAttrib3sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort)), _gloffset_VertexAttrib3sNV, parameters)
+#define GET_VertexAttrib3sNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3sNV)
+#define SET_VertexAttrib3sNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3sNV, fn)
+#define CALL_VertexAttrib3svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib3svNV, parameters)
+#define GET_VertexAttrib3svNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib3svNV)
+#define SET_VertexAttrib3svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib3svNV, fn)
+#define CALL_VertexAttrib4dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_VertexAttrib4dNV, parameters)
+#define GET_VertexAttrib4dNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4dNV)
+#define SET_VertexAttrib4dNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4dNV, fn)
+#define CALL_VertexAttrib4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), _gloffset_VertexAttrib4dvNV, parameters)
+#define GET_VertexAttrib4dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4dvNV)
+#define SET_VertexAttrib4dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4dvNV, fn)
+#define CALL_VertexAttrib4fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_VertexAttrib4fNV, parameters)
+#define GET_VertexAttrib4fNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4fNV)
+#define SET_VertexAttrib4fNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4fNV, fn)
+#define CALL_VertexAttrib4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_VertexAttrib4fvNV, parameters)
+#define GET_VertexAttrib4fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4fvNV)
+#define SET_VertexAttrib4fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4fvNV, fn)
+#define CALL_VertexAttrib4sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort, GLshort)), _gloffset_VertexAttrib4sNV, parameters)
+#define GET_VertexAttrib4sNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4sNV)
+#define SET_VertexAttrib4sNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4sNV, fn)
+#define CALL_VertexAttrib4svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttrib4svNV, parameters)
+#define GET_VertexAttrib4svNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4svNV)
+#define SET_VertexAttrib4svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4svNV, fn)
+#define CALL_VertexAttrib4ubNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte)), _gloffset_VertexAttrib4ubNV, parameters)
+#define GET_VertexAttrib4ubNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4ubNV)
+#define SET_VertexAttrib4ubNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4ubNV, fn)
+#define CALL_VertexAttrib4ubvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), _gloffset_VertexAttrib4ubvNV, parameters)
+#define GET_VertexAttrib4ubvNV(disp) GET_by_offset(disp, _gloffset_VertexAttrib4ubvNV)
+#define SET_VertexAttrib4ubvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttrib4ubvNV, fn)
+#define CALL_VertexAttribPointerNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_VertexAttribPointerNV, parameters)
+#define GET_VertexAttribPointerNV(disp) GET_by_offset(disp, _gloffset_VertexAttribPointerNV)
+#define SET_VertexAttribPointerNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribPointerNV, fn)
+#define CALL_VertexAttribs1dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), _gloffset_VertexAttribs1dvNV, parameters)
+#define GET_VertexAttribs1dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs1dvNV)
+#define SET_VertexAttribs1dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs1dvNV, fn)
+#define CALL_VertexAttribs1fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), _gloffset_VertexAttribs1fvNV, parameters)
+#define GET_VertexAttribs1fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs1fvNV)
+#define SET_VertexAttribs1fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs1fvNV, fn)
+#define CALL_VertexAttribs1svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), _gloffset_VertexAttribs1svNV, parameters)
+#define GET_VertexAttribs1svNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs1svNV)
+#define SET_VertexAttribs1svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs1svNV, fn)
+#define CALL_VertexAttribs2dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), _gloffset_VertexAttribs2dvNV, parameters)
+#define GET_VertexAttribs2dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs2dvNV)
+#define SET_VertexAttribs2dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs2dvNV, fn)
+#define CALL_VertexAttribs2fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), _gloffset_VertexAttribs2fvNV, parameters)
+#define GET_VertexAttribs2fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs2fvNV)
+#define SET_VertexAttribs2fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs2fvNV, fn)
+#define CALL_VertexAttribs2svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), _gloffset_VertexAttribs2svNV, parameters)
+#define GET_VertexAttribs2svNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs2svNV)
+#define SET_VertexAttribs2svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs2svNV, fn)
+#define CALL_VertexAttribs3dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), _gloffset_VertexAttribs3dvNV, parameters)
+#define GET_VertexAttribs3dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs3dvNV)
+#define SET_VertexAttribs3dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs3dvNV, fn)
+#define CALL_VertexAttribs3fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), _gloffset_VertexAttribs3fvNV, parameters)
+#define GET_VertexAttribs3fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs3fvNV)
+#define SET_VertexAttribs3fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs3fvNV, fn)
+#define CALL_VertexAttribs3svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), _gloffset_VertexAttribs3svNV, parameters)
+#define GET_VertexAttribs3svNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs3svNV)
+#define SET_VertexAttribs3svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs3svNV, fn)
+#define CALL_VertexAttribs4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), _gloffset_VertexAttribs4dvNV, parameters)
+#define GET_VertexAttribs4dvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs4dvNV)
+#define SET_VertexAttribs4dvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs4dvNV, fn)
+#define CALL_VertexAttribs4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), _gloffset_VertexAttribs4fvNV, parameters)
+#define GET_VertexAttribs4fvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs4fvNV)
+#define SET_VertexAttribs4fvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs4fvNV, fn)
+#define CALL_VertexAttribs4svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), _gloffset_VertexAttribs4svNV, parameters)
+#define GET_VertexAttribs4svNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs4svNV)
+#define SET_VertexAttribs4svNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs4svNV, fn)
+#define CALL_VertexAttribs4ubvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *)), _gloffset_VertexAttribs4ubvNV, parameters)
+#define GET_VertexAttribs4ubvNV(disp) GET_by_offset(disp, _gloffset_VertexAttribs4ubvNV)
+#define SET_VertexAttribs4ubvNV(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribs4ubvNV, fn)
+#define CALL_GetTexBumpParameterfvATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), _gloffset_GetTexBumpParameterfvATI, parameters)
+#define GET_GetTexBumpParameterfvATI(disp) GET_by_offset(disp, _gloffset_GetTexBumpParameterfvATI)
+#define SET_GetTexBumpParameterfvATI(disp, fn) SET_by_offset(disp, _gloffset_GetTexBumpParameterfvATI, fn)
+#define CALL_GetTexBumpParameterivATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), _gloffset_GetTexBumpParameterivATI, parameters)
+#define GET_GetTexBumpParameterivATI(disp) GET_by_offset(disp, _gloffset_GetTexBumpParameterivATI)
+#define SET_GetTexBumpParameterivATI(disp, fn) SET_by_offset(disp, _gloffset_GetTexBumpParameterivATI, fn)
+#define CALL_TexBumpParameterfvATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), _gloffset_TexBumpParameterfvATI, parameters)
+#define GET_TexBumpParameterfvATI(disp) GET_by_offset(disp, _gloffset_TexBumpParameterfvATI)
+#define SET_TexBumpParameterfvATI(disp, fn) SET_by_offset(disp, _gloffset_TexBumpParameterfvATI, fn)
+#define CALL_TexBumpParameterivATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_TexBumpParameterivATI, parameters)
+#define GET_TexBumpParameterivATI(disp) GET_by_offset(disp, _gloffset_TexBumpParameterivATI)
+#define SET_TexBumpParameterivATI(disp, fn) SET_by_offset(disp, _gloffset_TexBumpParameterivATI, fn)
+#define CALL_AlphaFragmentOp1ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_AlphaFragmentOp1ATI, parameters)
+#define GET_AlphaFragmentOp1ATI(disp) GET_by_offset(disp, _gloffset_AlphaFragmentOp1ATI)
+#define SET_AlphaFragmentOp1ATI(disp, fn) SET_by_offset(disp, _gloffset_AlphaFragmentOp1ATI, fn)
+#define CALL_AlphaFragmentOp2ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_AlphaFragmentOp2ATI, parameters)
+#define GET_AlphaFragmentOp2ATI(disp) GET_by_offset(disp, _gloffset_AlphaFragmentOp2ATI)
+#define SET_AlphaFragmentOp2ATI(disp, fn) SET_by_offset(disp, _gloffset_AlphaFragmentOp2ATI, fn)
+#define CALL_AlphaFragmentOp3ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_AlphaFragmentOp3ATI, parameters)
+#define GET_AlphaFragmentOp3ATI(disp) GET_by_offset(disp, _gloffset_AlphaFragmentOp3ATI)
+#define SET_AlphaFragmentOp3ATI(disp, fn) SET_by_offset(disp, _gloffset_AlphaFragmentOp3ATI, fn)
+#define CALL_BeginFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_BeginFragmentShaderATI, parameters)
+#define GET_BeginFragmentShaderATI(disp) GET_by_offset(disp, _gloffset_BeginFragmentShaderATI)
+#define SET_BeginFragmentShaderATI(disp, fn) SET_by_offset(disp, _gloffset_BeginFragmentShaderATI, fn)
+#define CALL_BindFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_BindFragmentShaderATI, parameters)
+#define GET_BindFragmentShaderATI(disp) GET_by_offset(disp, _gloffset_BindFragmentShaderATI)
+#define SET_BindFragmentShaderATI(disp, fn) SET_by_offset(disp, _gloffset_BindFragmentShaderATI, fn)
+#define CALL_ColorFragmentOp1ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_ColorFragmentOp1ATI, parameters)
+#define GET_ColorFragmentOp1ATI(disp) GET_by_offset(disp, _gloffset_ColorFragmentOp1ATI)
+#define SET_ColorFragmentOp1ATI(disp, fn) SET_by_offset(disp, _gloffset_ColorFragmentOp1ATI, fn)
+#define CALL_ColorFragmentOp2ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_ColorFragmentOp2ATI, parameters)
+#define GET_ColorFragmentOp2ATI(disp) GET_by_offset(disp, _gloffset_ColorFragmentOp2ATI)
+#define SET_ColorFragmentOp2ATI(disp, fn) SET_by_offset(disp, _gloffset_ColorFragmentOp2ATI, 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)), _gloffset_ColorFragmentOp3ATI, parameters)
+#define GET_ColorFragmentOp3ATI(disp) GET_by_offset(disp, _gloffset_ColorFragmentOp3ATI)
+#define SET_ColorFragmentOp3ATI(disp, fn) SET_by_offset(disp, _gloffset_ColorFragmentOp3ATI, fn)
+#define CALL_DeleteFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_DeleteFragmentShaderATI, parameters)
+#define GET_DeleteFragmentShaderATI(disp) GET_by_offset(disp, _gloffset_DeleteFragmentShaderATI)
+#define SET_DeleteFragmentShaderATI(disp, fn) SET_by_offset(disp, _gloffset_DeleteFragmentShaderATI, fn)
+#define CALL_EndFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_EndFragmentShaderATI, parameters)
+#define GET_EndFragmentShaderATI(disp) GET_by_offset(disp, _gloffset_EndFragmentShaderATI)
+#define SET_EndFragmentShaderATI(disp, fn) SET_by_offset(disp, _gloffset_EndFragmentShaderATI, fn)
+#define CALL_GenFragmentShadersATI(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLuint)), _gloffset_GenFragmentShadersATI, parameters)
+#define GET_GenFragmentShadersATI(disp) GET_by_offset(disp, _gloffset_GenFragmentShadersATI)
+#define SET_GenFragmentShadersATI(disp, fn) SET_by_offset(disp, _gloffset_GenFragmentShadersATI, fn)
+#define CALL_PassTexCoordATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLenum)), _gloffset_PassTexCoordATI, parameters)
+#define GET_PassTexCoordATI(disp) GET_by_offset(disp, _gloffset_PassTexCoordATI)
+#define SET_PassTexCoordATI(disp, fn) SET_by_offset(disp, _gloffset_PassTexCoordATI, fn)
+#define CALL_SampleMapATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLenum)), _gloffset_SampleMapATI, parameters)
+#define GET_SampleMapATI(disp) GET_by_offset(disp, _gloffset_SampleMapATI)
+#define SET_SampleMapATI(disp, fn) SET_by_offset(disp, _gloffset_SampleMapATI, fn)
+#define CALL_SetFragmentShaderConstantATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), _gloffset_SetFragmentShaderConstantATI, parameters)
+#define GET_SetFragmentShaderConstantATI(disp) GET_by_offset(disp, _gloffset_SetFragmentShaderConstantATI)
+#define SET_SetFragmentShaderConstantATI(disp, fn) SET_by_offset(disp, _gloffset_SetFragmentShaderConstantATI, fn)
+#define CALL_PointParameteriNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), _gloffset_PointParameteriNV, parameters)
+#define GET_PointParameteriNV(disp) GET_by_offset(disp, _gloffset_PointParameteriNV)
+#define SET_PointParameteriNV(disp, fn) SET_by_offset(disp, _gloffset_PointParameteriNV, fn)
+#define CALL_PointParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), _gloffset_PointParameterivNV, parameters)
+#define GET_PointParameterivNV(disp) GET_by_offset(disp, _gloffset_PointParameterivNV)
+#define SET_PointParameterivNV(disp, fn) SET_by_offset(disp, _gloffset_PointParameterivNV, fn)
+#define CALL_ActiveStencilFaceEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ActiveStencilFaceEXT, parameters)
+#define GET_ActiveStencilFaceEXT(disp) GET_by_offset(disp, _gloffset_ActiveStencilFaceEXT)
+#define SET_ActiveStencilFaceEXT(disp, fn) SET_by_offset(disp, _gloffset_ActiveStencilFaceEXT, fn)
+#define CALL_BindVertexArrayAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_BindVertexArrayAPPLE, parameters)
+#define GET_BindVertexArrayAPPLE(disp) GET_by_offset(disp, _gloffset_BindVertexArrayAPPLE)
+#define SET_BindVertexArrayAPPLE(disp, fn) SET_by_offset(disp, _gloffset_BindVertexArrayAPPLE, fn)
+#define CALL_DeleteVertexArraysAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteVertexArraysAPPLE, parameters)
+#define GET_DeleteVertexArraysAPPLE(disp) GET_by_offset(disp, _gloffset_DeleteVertexArraysAPPLE)
+#define SET_DeleteVertexArraysAPPLE(disp, fn) SET_by_offset(disp, _gloffset_DeleteVertexArraysAPPLE, fn)
+#define CALL_GenVertexArraysAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenVertexArraysAPPLE, parameters)
+#define GET_GenVertexArraysAPPLE(disp) GET_by_offset(disp, _gloffset_GenVertexArraysAPPLE)
+#define SET_GenVertexArraysAPPLE(disp, fn) SET_by_offset(disp, _gloffset_GenVertexArraysAPPLE, fn)
+#define CALL_IsVertexArrayAPPLE(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsVertexArrayAPPLE, parameters)
+#define GET_IsVertexArrayAPPLE(disp) GET_by_offset(disp, _gloffset_IsVertexArrayAPPLE)
+#define SET_IsVertexArrayAPPLE(disp, fn) SET_by_offset(disp, _gloffset_IsVertexArrayAPPLE, fn)
+#define CALL_GetProgramNamedParameterdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLdouble *)), _gloffset_GetProgramNamedParameterdvNV, parameters)
+#define GET_GetProgramNamedParameterdvNV(disp) GET_by_offset(disp, _gloffset_GetProgramNamedParameterdvNV)
+#define SET_GetProgramNamedParameterdvNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramNamedParameterdvNV, fn)
+#define CALL_GetProgramNamedParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLfloat *)), _gloffset_GetProgramNamedParameterfvNV, parameters)
+#define GET_GetProgramNamedParameterfvNV(disp) GET_by_offset(disp, _gloffset_GetProgramNamedParameterfvNV)
+#define SET_GetProgramNamedParameterfvNV(disp, fn) SET_by_offset(disp, _gloffset_GetProgramNamedParameterfvNV, fn)
+#define CALL_ProgramNamedParameter4dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble)), _gloffset_ProgramNamedParameter4dNV, parameters)
+#define GET_ProgramNamedParameter4dNV(disp) GET_by_offset(disp, _gloffset_ProgramNamedParameter4dNV)
+#define SET_ProgramNamedParameter4dNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramNamedParameter4dNV, fn)
+#define CALL_ProgramNamedParameter4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, const GLdouble *)), _gloffset_ProgramNamedParameter4dvNV, parameters)
+#define GET_ProgramNamedParameter4dvNV(disp) GET_by_offset(disp, _gloffset_ProgramNamedParameter4dvNV)
+#define SET_ProgramNamedParameter4dvNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramNamedParameter4dvNV, fn)
+#define CALL_ProgramNamedParameter4fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat)), _gloffset_ProgramNamedParameter4fNV, parameters)
+#define GET_ProgramNamedParameter4fNV(disp) GET_by_offset(disp, _gloffset_ProgramNamedParameter4fNV)
+#define SET_ProgramNamedParameter4fNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramNamedParameter4fNV, fn)
+#define CALL_ProgramNamedParameter4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, const GLfloat *)), _gloffset_ProgramNamedParameter4fvNV, parameters)
+#define GET_ProgramNamedParameter4fvNV(disp) GET_by_offset(disp, _gloffset_ProgramNamedParameter4fvNV)
+#define SET_ProgramNamedParameter4fvNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramNamedParameter4fvNV, fn)
+#define CALL_PrimitiveRestartIndexNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_PrimitiveRestartIndexNV, parameters)
+#define GET_PrimitiveRestartIndexNV(disp) GET_by_offset(disp, _gloffset_PrimitiveRestartIndexNV)
+#define SET_PrimitiveRestartIndexNV(disp, fn) SET_by_offset(disp, _gloffset_PrimitiveRestartIndexNV, fn)
+#define CALL_PrimitiveRestartNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_PrimitiveRestartNV, parameters)
+#define GET_PrimitiveRestartNV(disp) GET_by_offset(disp, _gloffset_PrimitiveRestartNV)
+#define SET_PrimitiveRestartNV(disp, fn) SET_by_offset(disp, _gloffset_PrimitiveRestartNV, fn)
+#define CALL_DepthBoundsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampd, GLclampd)), _gloffset_DepthBoundsEXT, parameters)
+#define GET_DepthBoundsEXT(disp) GET_by_offset(disp, _gloffset_DepthBoundsEXT)
+#define SET_DepthBoundsEXT(disp, fn) SET_by_offset(disp, _gloffset_DepthBoundsEXT, fn)
+#define CALL_BlendEquationSeparateEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_BlendEquationSeparateEXT, parameters)
+#define GET_BlendEquationSeparateEXT(disp) GET_by_offset(disp, _gloffset_BlendEquationSeparateEXT)
+#define SET_BlendEquationSeparateEXT(disp, fn) SET_by_offset(disp, _gloffset_BlendEquationSeparateEXT, fn)
+#define CALL_BindFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindFramebufferEXT, parameters)
+#define GET_BindFramebufferEXT(disp) GET_by_offset(disp, _gloffset_BindFramebufferEXT)
+#define SET_BindFramebufferEXT(disp, fn) SET_by_offset(disp, _gloffset_BindFramebufferEXT, fn)
+#define CALL_BindRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindRenderbufferEXT, parameters)
+#define GET_BindRenderbufferEXT(disp) GET_by_offset(disp, _gloffset_BindRenderbufferEXT)
+#define SET_BindRenderbufferEXT(disp, fn) SET_by_offset(disp, _gloffset_BindRenderbufferEXT, fn)
+#define CALL_CheckFramebufferStatusEXT(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum)), _gloffset_CheckFramebufferStatusEXT, parameters)
+#define GET_CheckFramebufferStatusEXT(disp) GET_by_offset(disp, _gloffset_CheckFramebufferStatusEXT)
+#define SET_CheckFramebufferStatusEXT(disp, fn) SET_by_offset(disp, _gloffset_CheckFramebufferStatusEXT, fn)
+#define CALL_DeleteFramebuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteFramebuffersEXT, parameters)
+#define GET_DeleteFramebuffersEXT(disp) GET_by_offset(disp, _gloffset_DeleteFramebuffersEXT)
+#define SET_DeleteFramebuffersEXT(disp, fn) SET_by_offset(disp, _gloffset_DeleteFramebuffersEXT, fn)
+#define CALL_DeleteRenderbuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteRenderbuffersEXT, parameters)
+#define GET_DeleteRenderbuffersEXT(disp) GET_by_offset(disp, _gloffset_DeleteRenderbuffersEXT)
+#define SET_DeleteRenderbuffersEXT(disp, fn) SET_by_offset(disp, _gloffset_DeleteRenderbuffersEXT, fn)
+#define CALL_FramebufferRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint)), _gloffset_FramebufferRenderbufferEXT, parameters)
+#define GET_FramebufferRenderbufferEXT(disp) GET_by_offset(disp, _gloffset_FramebufferRenderbufferEXT)
+#define SET_FramebufferRenderbufferEXT(disp, fn) SET_by_offset(disp, _gloffset_FramebufferRenderbufferEXT, fn)
+#define CALL_FramebufferTexture1DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint)), _gloffset_FramebufferTexture1DEXT, parameters)
+#define GET_FramebufferTexture1DEXT(disp) GET_by_offset(disp, _gloffset_FramebufferTexture1DEXT)
+#define SET_FramebufferTexture1DEXT(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTexture1DEXT, fn)
+#define CALL_FramebufferTexture2DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint)), _gloffset_FramebufferTexture2DEXT, parameters)
+#define GET_FramebufferTexture2DEXT(disp) GET_by_offset(disp, _gloffset_FramebufferTexture2DEXT)
+#define SET_FramebufferTexture2DEXT(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTexture2DEXT, fn)
+#define CALL_FramebufferTexture3DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint, GLint)), _gloffset_FramebufferTexture3DEXT, parameters)
+#define GET_FramebufferTexture3DEXT(disp) GET_by_offset(disp, _gloffset_FramebufferTexture3DEXT)
+#define SET_FramebufferTexture3DEXT(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTexture3DEXT, fn)
+#define CALL_GenFramebuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenFramebuffersEXT, parameters)
+#define GET_GenFramebuffersEXT(disp) GET_by_offset(disp, _gloffset_GenFramebuffersEXT)
+#define SET_GenFramebuffersEXT(disp, fn) SET_by_offset(disp, _gloffset_GenFramebuffersEXT, fn)
+#define CALL_GenRenderbuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenRenderbuffersEXT, parameters)
+#define GET_GenRenderbuffersEXT(disp) GET_by_offset(disp, _gloffset_GenRenderbuffersEXT)
+#define SET_GenRenderbuffersEXT(disp, fn) SET_by_offset(disp, _gloffset_GenRenderbuffersEXT, fn)
+#define CALL_GenerateMipmapEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_GenerateMipmapEXT, parameters)
+#define GET_GenerateMipmapEXT(disp) GET_by_offset(disp, _gloffset_GenerateMipmapEXT)
+#define SET_GenerateMipmapEXT(disp, fn) SET_by_offset(disp, _gloffset_GenerateMipmapEXT, fn)
+#define CALL_GetFramebufferAttachmentParameterivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLint *)), _gloffset_GetFramebufferAttachmentParameterivEXT, parameters)
+#define GET_GetFramebufferAttachmentParameterivEXT(disp) GET_by_offset(disp, _gloffset_GetFramebufferAttachmentParameterivEXT)
+#define SET_GetFramebufferAttachmentParameterivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetFramebufferAttachmentParameterivEXT, fn)
+#define CALL_GetRenderbufferParameterivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetRenderbufferParameterivEXT, parameters)
+#define GET_GetRenderbufferParameterivEXT(disp) GET_by_offset(disp, _gloffset_GetRenderbufferParameterivEXT)
+#define SET_GetRenderbufferParameterivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetRenderbufferParameterivEXT, fn)
+#define CALL_IsFramebufferEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsFramebufferEXT, parameters)
+#define GET_IsFramebufferEXT(disp) GET_by_offset(disp, _gloffset_IsFramebufferEXT)
+#define SET_IsFramebufferEXT(disp, fn) SET_by_offset(disp, _gloffset_IsFramebufferEXT, fn)
+#define CALL_IsRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsRenderbufferEXT, parameters)
+#define GET_IsRenderbufferEXT(disp) GET_by_offset(disp, _gloffset_IsRenderbufferEXT)
+#define SET_IsRenderbufferEXT(disp, fn) SET_by_offset(disp, _gloffset_IsRenderbufferEXT, fn)
+#define CALL_RenderbufferStorageEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLsizei)), _gloffset_RenderbufferStorageEXT, parameters)
+#define GET_RenderbufferStorageEXT(disp) GET_by_offset(disp, _gloffset_RenderbufferStorageEXT)
+#define SET_RenderbufferStorageEXT(disp, fn) SET_by_offset(disp, _gloffset_RenderbufferStorageEXT, fn)
+#define CALL_BlitFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum)), _gloffset_BlitFramebufferEXT, parameters)
+#define GET_BlitFramebufferEXT(disp) GET_by_offset(disp, _gloffset_BlitFramebufferEXT)
+#define SET_BlitFramebufferEXT(disp, fn) SET_by_offset(disp, _gloffset_BlitFramebufferEXT, fn)
+#define CALL_BufferParameteriAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), _gloffset_BufferParameteriAPPLE, parameters)
+#define GET_BufferParameteriAPPLE(disp) GET_by_offset(disp, _gloffset_BufferParameteriAPPLE)
+#define SET_BufferParameteriAPPLE(disp, fn) SET_by_offset(disp, _gloffset_BufferParameteriAPPLE, fn)
+#define CALL_FlushMappedBufferRangeAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr)), _gloffset_FlushMappedBufferRangeAPPLE, parameters)
+#define GET_FlushMappedBufferRangeAPPLE(disp) GET_by_offset(disp, _gloffset_FlushMappedBufferRangeAPPLE)
+#define SET_FlushMappedBufferRangeAPPLE(disp, fn) SET_by_offset(disp, _gloffset_FlushMappedBufferRangeAPPLE, fn)
+#define CALL_BindFragDataLocationEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, const GLchar *)), _gloffset_BindFragDataLocationEXT, parameters)
+#define GET_BindFragDataLocationEXT(disp) GET_by_offset(disp, _gloffset_BindFragDataLocationEXT)
+#define SET_BindFragDataLocationEXT(disp, fn) SET_by_offset(disp, _gloffset_BindFragDataLocationEXT, fn)
+#define CALL_GetFragDataLocationEXT(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLuint, const GLchar *)), _gloffset_GetFragDataLocationEXT, parameters)
+#define GET_GetFragDataLocationEXT(disp) GET_by_offset(disp, _gloffset_GetFragDataLocationEXT)
+#define SET_GetFragDataLocationEXT(disp, fn) SET_by_offset(disp, _gloffset_GetFragDataLocationEXT, fn)
+#define CALL_GetUniformuivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLuint *)), _gloffset_GetUniformuivEXT, parameters)
+#define GET_GetUniformuivEXT(disp) GET_by_offset(disp, _gloffset_GetUniformuivEXT)
+#define SET_GetUniformuivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetUniformuivEXT, fn)
+#define CALL_GetVertexAttribIivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetVertexAttribIivEXT, parameters)
+#define GET_GetVertexAttribIivEXT(disp) GET_by_offset(disp, _gloffset_GetVertexAttribIivEXT)
+#define SET_GetVertexAttribIivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribIivEXT, fn)
+#define CALL_GetVertexAttribIuivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint *)), _gloffset_GetVertexAttribIuivEXT, parameters)
+#define GET_GetVertexAttribIuivEXT(disp) GET_by_offset(disp, _gloffset_GetVertexAttribIuivEXT)
+#define SET_GetVertexAttribIuivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetVertexAttribIuivEXT, fn)
+#define CALL_Uniform1uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLuint)), _gloffset_Uniform1uiEXT, parameters)
+#define GET_Uniform1uiEXT(disp) GET_by_offset(disp, _gloffset_Uniform1uiEXT)
+#define SET_Uniform1uiEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform1uiEXT, fn)
+#define CALL_Uniform1uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLuint *)), _gloffset_Uniform1uivEXT, parameters)
+#define GET_Uniform1uivEXT(disp) GET_by_offset(disp, _gloffset_Uniform1uivEXT)
+#define SET_Uniform1uivEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform1uivEXT, fn)
+#define CALL_Uniform2uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLuint, GLuint)), _gloffset_Uniform2uiEXT, parameters)
+#define GET_Uniform2uiEXT(disp) GET_by_offset(disp, _gloffset_Uniform2uiEXT)
+#define SET_Uniform2uiEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform2uiEXT, fn)
+#define CALL_Uniform2uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLuint *)), _gloffset_Uniform2uivEXT, parameters)
+#define GET_Uniform2uivEXT(disp) GET_by_offset(disp, _gloffset_Uniform2uivEXT)
+#define SET_Uniform2uivEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform2uivEXT, fn)
+#define CALL_Uniform3uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLuint, GLuint, GLuint)), _gloffset_Uniform3uiEXT, parameters)
+#define GET_Uniform3uiEXT(disp) GET_by_offset(disp, _gloffset_Uniform3uiEXT)
+#define SET_Uniform3uiEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform3uiEXT, fn)
+#define CALL_Uniform3uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLuint *)), _gloffset_Uniform3uivEXT, parameters)
+#define GET_Uniform3uivEXT(disp) GET_by_offset(disp, _gloffset_Uniform3uivEXT)
+#define SET_Uniform3uivEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform3uivEXT, fn)
+#define CALL_Uniform4uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLuint, GLuint, GLuint, GLuint)), _gloffset_Uniform4uiEXT, parameters)
+#define GET_Uniform4uiEXT(disp) GET_by_offset(disp, _gloffset_Uniform4uiEXT)
+#define SET_Uniform4uiEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform4uiEXT, fn)
+#define CALL_Uniform4uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLuint *)), _gloffset_Uniform4uivEXT, parameters)
+#define GET_Uniform4uivEXT(disp) GET_by_offset(disp, _gloffset_Uniform4uivEXT)
+#define SET_Uniform4uivEXT(disp, fn) SET_by_offset(disp, _gloffset_Uniform4uivEXT, fn)
+#define CALL_VertexAttribI1iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint)), _gloffset_VertexAttribI1iEXT, parameters)
+#define GET_VertexAttribI1iEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI1iEXT)
+#define SET_VertexAttribI1iEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI1iEXT, fn)
+#define CALL_VertexAttribI1ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttribI1ivEXT, parameters)
+#define GET_VertexAttribI1ivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI1ivEXT)
+#define SET_VertexAttribI1ivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI1ivEXT, fn)
+#define CALL_VertexAttribI1uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_VertexAttribI1uiEXT, parameters)
+#define GET_VertexAttribI1uiEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI1uiEXT)
+#define SET_VertexAttribI1uiEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI1uiEXT, fn)
+#define CALL_VertexAttribI1uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttribI1uivEXT, parameters)
+#define GET_VertexAttribI1uivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI1uivEXT)
+#define SET_VertexAttribI1uivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI1uivEXT, fn)
+#define CALL_VertexAttribI2iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLint)), _gloffset_VertexAttribI2iEXT, parameters)
+#define GET_VertexAttribI2iEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI2iEXT)
+#define SET_VertexAttribI2iEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI2iEXT, fn)
+#define CALL_VertexAttribI2ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttribI2ivEXT, parameters)
+#define GET_VertexAttribI2ivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI2ivEXT)
+#define SET_VertexAttribI2ivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI2ivEXT, fn)
+#define CALL_VertexAttribI2uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint)), _gloffset_VertexAttribI2uiEXT, parameters)
+#define GET_VertexAttribI2uiEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI2uiEXT)
+#define SET_VertexAttribI2uiEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI2uiEXT, fn)
+#define CALL_VertexAttribI2uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttribI2uivEXT, parameters)
+#define GET_VertexAttribI2uivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI2uivEXT)
+#define SET_VertexAttribI2uivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI2uivEXT, fn)
+#define CALL_VertexAttribI3iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLint, GLint)), _gloffset_VertexAttribI3iEXT, parameters)
+#define GET_VertexAttribI3iEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI3iEXT)
+#define SET_VertexAttribI3iEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI3iEXT, fn)
+#define CALL_VertexAttribI3ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttribI3ivEXT, parameters)
+#define GET_VertexAttribI3ivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI3ivEXT)
+#define SET_VertexAttribI3ivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI3ivEXT, fn)
+#define CALL_VertexAttribI3uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint, GLuint)), _gloffset_VertexAttribI3uiEXT, parameters)
+#define GET_VertexAttribI3uiEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI3uiEXT)
+#define SET_VertexAttribI3uiEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI3uiEXT, fn)
+#define CALL_VertexAttribI3uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttribI3uivEXT, parameters)
+#define GET_VertexAttribI3uivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI3uivEXT)
+#define SET_VertexAttribI3uivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI3uivEXT, fn)
+#define CALL_VertexAttribI4bvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), _gloffset_VertexAttribI4bvEXT, parameters)
+#define GET_VertexAttribI4bvEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4bvEXT)
+#define SET_VertexAttribI4bvEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4bvEXT, fn)
+#define CALL_VertexAttribI4iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLint, GLint, GLint)), _gloffset_VertexAttribI4iEXT, parameters)
+#define GET_VertexAttribI4iEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4iEXT)
+#define SET_VertexAttribI4iEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4iEXT, fn)
+#define CALL_VertexAttribI4ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), _gloffset_VertexAttribI4ivEXT, parameters)
+#define GET_VertexAttribI4ivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4ivEXT)
+#define SET_VertexAttribI4ivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4ivEXT, fn)
+#define CALL_VertexAttribI4svEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), _gloffset_VertexAttribI4svEXT, parameters)
+#define GET_VertexAttribI4svEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4svEXT)
+#define SET_VertexAttribI4svEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4svEXT, fn)
+#define CALL_VertexAttribI4ubvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), _gloffset_VertexAttribI4ubvEXT, parameters)
+#define GET_VertexAttribI4ubvEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4ubvEXT)
+#define SET_VertexAttribI4ubvEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4ubvEXT, fn)
+#define CALL_VertexAttribI4uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint, GLuint, GLuint)), _gloffset_VertexAttribI4uiEXT, parameters)
+#define GET_VertexAttribI4uiEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4uiEXT)
+#define SET_VertexAttribI4uiEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4uiEXT, fn)
+#define CALL_VertexAttribI4uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), _gloffset_VertexAttribI4uivEXT, parameters)
+#define GET_VertexAttribI4uivEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4uivEXT)
+#define SET_VertexAttribI4uivEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4uivEXT, fn)
+#define CALL_VertexAttribI4usvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), _gloffset_VertexAttribI4usvEXT, parameters)
+#define GET_VertexAttribI4usvEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribI4usvEXT)
+#define SET_VertexAttribI4usvEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribI4usvEXT, fn)
+#define CALL_VertexAttribIPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLsizei, const GLvoid *)), _gloffset_VertexAttribIPointerEXT, parameters)
+#define GET_VertexAttribIPointerEXT(disp) GET_by_offset(disp, _gloffset_VertexAttribIPointerEXT)
+#define SET_VertexAttribIPointerEXT(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribIPointerEXT, fn)
+#define CALL_FramebufferTextureLayerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint, GLint)), _gloffset_FramebufferTextureLayerEXT, parameters)
+#define GET_FramebufferTextureLayerEXT(disp) GET_by_offset(disp, _gloffset_FramebufferTextureLayerEXT)
+#define SET_FramebufferTextureLayerEXT(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTextureLayerEXT, fn)
+#define CALL_ColorMaskIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean)), _gloffset_ColorMaskIndexedEXT, parameters)
+#define GET_ColorMaskIndexedEXT(disp) GET_by_offset(disp, _gloffset_ColorMaskIndexedEXT)
+#define SET_ColorMaskIndexedEXT(disp, fn) SET_by_offset(disp, _gloffset_ColorMaskIndexedEXT, fn)
+#define CALL_DisableIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_DisableIndexedEXT, parameters)
+#define GET_DisableIndexedEXT(disp) GET_by_offset(disp, _gloffset_DisableIndexedEXT)
+#define SET_DisableIndexedEXT(disp, fn) SET_by_offset(disp, _gloffset_DisableIndexedEXT, fn)
+#define CALL_EnableIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_EnableIndexedEXT, parameters)
+#define GET_EnableIndexedEXT(disp) GET_by_offset(disp, _gloffset_EnableIndexedEXT)
+#define SET_EnableIndexedEXT(disp, fn) SET_by_offset(disp, _gloffset_EnableIndexedEXT, fn)
+#define CALL_GetBooleanIndexedvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLboolean *)), _gloffset_GetBooleanIndexedvEXT, parameters)
+#define GET_GetBooleanIndexedvEXT(disp) GET_by_offset(disp, _gloffset_GetBooleanIndexedvEXT)
+#define SET_GetBooleanIndexedvEXT(disp, fn) SET_by_offset(disp, _gloffset_GetBooleanIndexedvEXT, fn)
+#define CALL_GetIntegerIndexedvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLint *)), _gloffset_GetIntegerIndexedvEXT, parameters)
+#define GET_GetIntegerIndexedvEXT(disp) GET_by_offset(disp, _gloffset_GetIntegerIndexedvEXT)
+#define SET_GetIntegerIndexedvEXT(disp, fn) SET_by_offset(disp, _gloffset_GetIntegerIndexedvEXT, fn)
+#define CALL_IsEnabledIndexedEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_IsEnabledIndexedEXT, parameters)
+#define GET_IsEnabledIndexedEXT(disp) GET_by_offset(disp, _gloffset_IsEnabledIndexedEXT)
+#define SET_IsEnabledIndexedEXT(disp, fn) SET_by_offset(disp, _gloffset_IsEnabledIndexedEXT, fn)
+#define CALL_ClearColorIiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), _gloffset_ClearColorIiEXT, parameters)
+#define GET_ClearColorIiEXT(disp) GET_by_offset(disp, _gloffset_ClearColorIiEXT)
+#define SET_ClearColorIiEXT(disp, fn) SET_by_offset(disp, _gloffset_ClearColorIiEXT, fn)
+#define CALL_ClearColorIuiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint, GLuint)), _gloffset_ClearColorIuiEXT, parameters)
+#define GET_ClearColorIuiEXT(disp) GET_by_offset(disp, _gloffset_ClearColorIuiEXT)
+#define SET_ClearColorIuiEXT(disp, fn) SET_by_offset(disp, _gloffset_ClearColorIuiEXT, fn)
+#define CALL_GetTexParameterIivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), _gloffset_GetTexParameterIivEXT, parameters)
+#define GET_GetTexParameterIivEXT(disp) GET_by_offset(disp, _gloffset_GetTexParameterIivEXT)
+#define SET_GetTexParameterIivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetTexParameterIivEXT, fn)
+#define CALL_GetTexParameterIuivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint *)), _gloffset_GetTexParameterIuivEXT, parameters)
+#define GET_GetTexParameterIuivEXT(disp) GET_by_offset(disp, _gloffset_GetTexParameterIuivEXT)
+#define SET_GetTexParameterIuivEXT(disp, fn) SET_by_offset(disp, _gloffset_GetTexParameterIuivEXT, fn)
+#define CALL_TexParameterIivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLint *)), _gloffset_TexParameterIivEXT, parameters)
+#define GET_TexParameterIivEXT(disp) GET_by_offset(disp, _gloffset_TexParameterIivEXT)
+#define SET_TexParameterIivEXT(disp, fn) SET_by_offset(disp, _gloffset_TexParameterIivEXT, fn)
+#define CALL_TexParameterIuivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, const GLuint *)), _gloffset_TexParameterIuivEXT, parameters)
+#define GET_TexParameterIuivEXT(disp) GET_by_offset(disp, _gloffset_TexParameterIuivEXT)
+#define SET_TexParameterIuivEXT(disp, fn) SET_by_offset(disp, _gloffset_TexParameterIuivEXT, fn)
+#define CALL_BeginConditionalRenderNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), _gloffset_BeginConditionalRenderNV, parameters)
+#define GET_BeginConditionalRenderNV(disp) GET_by_offset(disp, _gloffset_BeginConditionalRenderNV)
+#define SET_BeginConditionalRenderNV(disp, fn) SET_by_offset(disp, _gloffset_BeginConditionalRenderNV, fn)
+#define CALL_EndConditionalRenderNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_EndConditionalRenderNV, parameters)
+#define GET_EndConditionalRenderNV(disp) GET_by_offset(disp, _gloffset_EndConditionalRenderNV)
+#define SET_EndConditionalRenderNV(disp, fn) SET_by_offset(disp, _gloffset_EndConditionalRenderNV, fn)
+#define CALL_BeginTransformFeedbackEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_BeginTransformFeedbackEXT, parameters)
+#define GET_BeginTransformFeedbackEXT(disp) GET_by_offset(disp, _gloffset_BeginTransformFeedbackEXT)
+#define SET_BeginTransformFeedbackEXT(disp, fn) SET_by_offset(disp, _gloffset_BeginTransformFeedbackEXT, fn)
+#define CALL_BindBufferBaseEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint)), _gloffset_BindBufferBaseEXT, parameters)
+#define GET_BindBufferBaseEXT(disp) GET_by_offset(disp, _gloffset_BindBufferBaseEXT)
+#define SET_BindBufferBaseEXT(disp, fn) SET_by_offset(disp, _gloffset_BindBufferBaseEXT, fn)
+#define CALL_BindBufferOffsetEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLintptr)), _gloffset_BindBufferOffsetEXT, parameters)
+#define GET_BindBufferOffsetEXT(disp) GET_by_offset(disp, _gloffset_BindBufferOffsetEXT)
+#define SET_BindBufferOffsetEXT(disp, fn) SET_by_offset(disp, _gloffset_BindBufferOffsetEXT, fn)
+#define CALL_BindBufferRangeEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr)), _gloffset_BindBufferRangeEXT, parameters)
+#define GET_BindBufferRangeEXT(disp) GET_by_offset(disp, _gloffset_BindBufferRangeEXT)
+#define SET_BindBufferRangeEXT(disp, fn) SET_by_offset(disp, _gloffset_BindBufferRangeEXT, fn)
+#define CALL_EndTransformFeedbackEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), _gloffset_EndTransformFeedbackEXT, parameters)
+#define GET_EndTransformFeedbackEXT(disp) GET_by_offset(disp, _gloffset_EndTransformFeedbackEXT)
+#define SET_EndTransformFeedbackEXT(disp, fn) SET_by_offset(disp, _gloffset_EndTransformFeedbackEXT, fn)
+#define CALL_GetTransformFeedbackVaryingEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *)), _gloffset_GetTransformFeedbackVaryingEXT, parameters)
+#define GET_GetTransformFeedbackVaryingEXT(disp) GET_by_offset(disp, _gloffset_GetTransformFeedbackVaryingEXT)
+#define SET_GetTransformFeedbackVaryingEXT(disp, fn) SET_by_offset(disp, _gloffset_GetTransformFeedbackVaryingEXT, fn)
+#define CALL_TransformFeedbackVaryingsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const char **, GLenum)), _gloffset_TransformFeedbackVaryingsEXT, parameters)
+#define GET_TransformFeedbackVaryingsEXT(disp) GET_by_offset(disp, _gloffset_TransformFeedbackVaryingsEXT)
+#define SET_TransformFeedbackVaryingsEXT(disp, fn) SET_by_offset(disp, _gloffset_TransformFeedbackVaryingsEXT, fn)
+#define CALL_ProvokingVertexEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), _gloffset_ProvokingVertexEXT, parameters)
+#define GET_ProvokingVertexEXT(disp) GET_by_offset(disp, _gloffset_ProvokingVertexEXT)
+#define SET_ProvokingVertexEXT(disp, fn) SET_by_offset(disp, _gloffset_ProvokingVertexEXT, fn)
+#define CALL_GetTexParameterPointervAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid **)), _gloffset_GetTexParameterPointervAPPLE, parameters)
+#define GET_GetTexParameterPointervAPPLE(disp) GET_by_offset(disp, _gloffset_GetTexParameterPointervAPPLE)
+#define SET_GetTexParameterPointervAPPLE(disp, fn) SET_by_offset(disp, _gloffset_GetTexParameterPointervAPPLE, fn)
+#define CALL_TextureRangeAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLvoid *)), _gloffset_TextureRangeAPPLE, parameters)
+#define GET_TextureRangeAPPLE(disp) GET_by_offset(disp, _gloffset_TextureRangeAPPLE)
+#define SET_TextureRangeAPPLE(disp, fn) SET_by_offset(disp, _gloffset_TextureRangeAPPLE, fn)
+#define CALL_GetObjectParameterivAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLint *)), _gloffset_GetObjectParameterivAPPLE, parameters)
+#define GET_GetObjectParameterivAPPLE(disp) GET_by_offset(disp, _gloffset_GetObjectParameterivAPPLE)
+#define SET_GetObjectParameterivAPPLE(disp, fn) SET_by_offset(disp, _gloffset_GetObjectParameterivAPPLE, fn)
+#define CALL_ObjectPurgeableAPPLE(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum, GLuint, GLenum)), _gloffset_ObjectPurgeableAPPLE, parameters)
+#define GET_ObjectPurgeableAPPLE(disp) GET_by_offset(disp, _gloffset_ObjectPurgeableAPPLE)
+#define SET_ObjectPurgeableAPPLE(disp, fn) SET_by_offset(disp, _gloffset_ObjectPurgeableAPPLE, fn)
+#define CALL_ObjectUnpurgeableAPPLE(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum, GLuint, GLenum)), _gloffset_ObjectUnpurgeableAPPLE, parameters)
+#define GET_ObjectUnpurgeableAPPLE(disp) GET_by_offset(disp, _gloffset_ObjectUnpurgeableAPPLE)
+#define SET_ObjectUnpurgeableAPPLE(disp, fn) SET_by_offset(disp, _gloffset_ObjectUnpurgeableAPPLE, fn)
+#define CALL_ActiveProgramEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_ActiveProgramEXT, parameters)
+#define GET_ActiveProgramEXT(disp) GET_by_offset(disp, _gloffset_ActiveProgramEXT)
+#define SET_ActiveProgramEXT(disp, fn) SET_by_offset(disp, _gloffset_ActiveProgramEXT, fn)
+#define CALL_CreateShaderProgramEXT(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLenum, const GLchar *)), _gloffset_CreateShaderProgramEXT, parameters)
+#define GET_CreateShaderProgramEXT(disp) GET_by_offset(disp, _gloffset_CreateShaderProgramEXT)
+#define SET_CreateShaderProgramEXT(disp, fn) SET_by_offset(disp, _gloffset_CreateShaderProgramEXT, fn)
+#define CALL_UseShaderProgramEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_UseShaderProgramEXT, parameters)
+#define GET_UseShaderProgramEXT(disp) GET_by_offset(disp, _gloffset_UseShaderProgramEXT)
+#define SET_UseShaderProgramEXT(disp, fn) SET_by_offset(disp, _gloffset_UseShaderProgramEXT, fn)
+#define CALL_StencilFuncSeparateATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLuint)), _gloffset_StencilFuncSeparateATI, parameters)
+#define GET_StencilFuncSeparateATI(disp) GET_by_offset(disp, _gloffset_StencilFuncSeparateATI)
+#define SET_StencilFuncSeparateATI(disp, fn) SET_by_offset(disp, _gloffset_StencilFuncSeparateATI, fn)
+#define CALL_ProgramEnvParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), _gloffset_ProgramEnvParameters4fvEXT, parameters)
+#define GET_ProgramEnvParameters4fvEXT(disp) GET_by_offset(disp, _gloffset_ProgramEnvParameters4fvEXT)
+#define SET_ProgramEnvParameters4fvEXT(disp, fn) SET_by_offset(disp, _gloffset_ProgramEnvParameters4fvEXT, fn)
+#define CALL_ProgramLocalParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), _gloffset_ProgramLocalParameters4fvEXT, parameters)
+#define GET_ProgramLocalParameters4fvEXT(disp) GET_by_offset(disp, _gloffset_ProgramLocalParameters4fvEXT)
+#define SET_ProgramLocalParameters4fvEXT(disp, fn) SET_by_offset(disp, _gloffset_ProgramLocalParameters4fvEXT, fn)
+#define CALL_GetQueryObjecti64vEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint64EXT *)), _gloffset_GetQueryObjecti64vEXT, parameters)
+#define GET_GetQueryObjecti64vEXT(disp) GET_by_offset(disp, _gloffset_GetQueryObjecti64vEXT)
+#define SET_GetQueryObjecti64vEXT(disp, fn) SET_by_offset(disp, _gloffset_GetQueryObjecti64vEXT, fn)
+#define CALL_GetQueryObjectui64vEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint64EXT *)), _gloffset_GetQueryObjectui64vEXT, parameters)
+#define GET_GetQueryObjectui64vEXT(disp) GET_by_offset(disp, _gloffset_GetQueryObjectui64vEXT)
+#define SET_GetQueryObjectui64vEXT(disp, fn) SET_by_offset(disp, _gloffset_GetQueryObjectui64vEXT, fn)
+#define CALL_EGLImageTargetRenderbufferStorageOES(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid *)), _gloffset_EGLImageTargetRenderbufferStorageOES, parameters)
+#define GET_EGLImageTargetRenderbufferStorageOES(disp) GET_by_offset(disp, _gloffset_EGLImageTargetRenderbufferStorageOES)
+#define SET_EGLImageTargetRenderbufferStorageOES(disp, fn) SET_by_offset(disp, _gloffset_EGLImageTargetRenderbufferStorageOES, fn)
+#define CALL_EGLImageTargetTexture2DOES(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid *)), _gloffset_EGLImageTargetTexture2DOES, parameters)
+#define GET_EGLImageTargetTexture2DOES(disp) GET_by_offset(disp, _gloffset_EGLImageTargetTexture2DOES)
+#define SET_EGLImageTargetTexture2DOES(disp, fn) SET_by_offset(disp, _gloffset_EGLImageTargetTexture2DOES, fn)
+
+#endif /* !defined( _GLAPI_DISPATCH_H_ ) */
diff --git a/src/mesa/main/hint.h b/src/mesa/main/hint.h
index 66e78ad655..6c62068743 100644
--- a/src/mesa/main/hint.h
+++ b/src/mesa/main/hint.h
@@ -36,8 +36,10 @@
#ifndef HINT_H
#define HINT_H
+#include "glheader.h"
+#include "mfeatures.h"
-#include "mtypes.h"
+struct gl_context;
#if _HAVE_FULL_GL
diff --git a/src/mesa/main/histogram.h b/src/mesa/main/histogram.h
index 240087141b..577324222c 100644
--- a/src/mesa/main/histogram.h
+++ b/src/mesa/main/histogram.h
@@ -36,7 +36,10 @@
#ifndef HISTOGRAM_H
#define HISTOGRAM_H
-#include "main/mtypes.h"
+#include "compiler.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
#if FEATURE_histogram
diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c
index 4b5d7dadc9..df1527b47f 100644
--- a/src/mesa/main/image.c
+++ b/src/mesa/main/image.c
@@ -32,7 +32,6 @@
#include "glheader.h"
#include "colormac.h"
-#include "enums.h"
#include "image.h"
#include "imports.h"
#include "macros.h"
@@ -86,36 +85,6 @@ _mesa_type_is_packed(GLenum type)
return GL_FALSE;
}
-/**
- * Flip the 8 bits in each byte of the given array.
- *
- * \param p array.
- * \param n number of bytes.
- *
- * \todo try this trick to flip bytes someday:
- * \code
- * v = ((v & 0x55555555) << 1) | ((v >> 1) & 0x55555555);
- * v = ((v & 0x33333333) << 2) | ((v >> 2) & 0x33333333);
- * v = ((v & 0x0f0f0f0f) << 4) | ((v >> 4) & 0x0f0f0f0f);
- * \endcode
- */
-static void
-flip_bytes( GLubyte *p, GLuint n )
-{
- GLuint i, a, b;
- for (i = 0; i < n; i++) {
- b = (GLuint) p[i]; /* words are often faster than bytes */
- a = ((b & 0x01) << 7) |
- ((b & 0x02) << 5) |
- ((b & 0x04) << 3) |
- ((b & 0x08) << 1) |
- ((b & 0x10) >> 1) |
- ((b & 0x20) >> 3) |
- ((b & 0x40) >> 5) |
- ((b & 0x80) >> 7);
- p[i] = (GLubyte) a;
- }
-}
/**
@@ -346,13 +315,15 @@ _mesa_bytes_per_pixel( GLenum format, GLenum type )
return comps * sizeof(GLhalfARB);
case GL_UNSIGNED_BYTE_3_3_2:
case GL_UNSIGNED_BYTE_2_3_3_REV:
- if (format == GL_RGB || format == GL_BGR)
+ if (format == GL_RGB || format == GL_BGR ||
+ format == GL_RGB_INTEGER_EXT || format == GL_BGR_INTEGER_EXT)
return sizeof(GLubyte);
else
return -1; /* error */
case GL_UNSIGNED_SHORT_5_6_5:
case GL_UNSIGNED_SHORT_5_6_5_REV:
- if (format == GL_RGB || format == GL_BGR)
+ if (format == GL_RGB || format == GL_BGR ||
+ format == GL_RGB_INTEGER_EXT || format == GL_BGR_INTEGER_EXT)
return sizeof(GLushort);
else
return -1; /* error */
@@ -360,7 +331,8 @@ _mesa_bytes_per_pixel( GLenum format, GLenum type )
case GL_UNSIGNED_SHORT_4_4_4_4_REV:
case GL_UNSIGNED_SHORT_5_5_5_1:
case GL_UNSIGNED_SHORT_1_5_5_5_REV:
- if (format == GL_RGBA || format == GL_BGRA || format == GL_ABGR_EXT)
+ if (format == GL_RGBA || format == GL_BGRA || format == GL_ABGR_EXT ||
+ format == GL_RGBA_INTEGER_EXT || format == GL_BGRA_INTEGER_EXT)
return sizeof(GLushort);
else
return -1;
@@ -368,7 +340,8 @@ _mesa_bytes_per_pixel( GLenum format, GLenum type )
case GL_UNSIGNED_INT_8_8_8_8_REV:
case GL_UNSIGNED_INT_10_10_10_2:
case GL_UNSIGNED_INT_2_10_10_10_REV:
- if (format == GL_RGBA || format == GL_BGRA || format == GL_ABGR_EXT)
+ if (format == GL_RGBA || format == GL_BGRA || format == GL_ABGR_EXT ||
+ format == GL_RGBA_INTEGER_EXT || format == GL_BGRA_INTEGER_EXT)
return sizeof(GLuint);
else
return -1;
@@ -399,7 +372,8 @@ _mesa_bytes_per_pixel( GLenum format, GLenum type )
* otherwise.
*/
GLboolean
-_mesa_is_legal_format_and_type( struct gl_context *ctx, GLenum format, GLenum type )
+_mesa_is_legal_format_and_type(const struct gl_context *ctx,
+ GLenum format, GLenum type)
{
switch (format) {
case GL_COLOR_INDEX:
@@ -549,14 +523,77 @@ _mesa_is_legal_format_and_type( struct gl_context *ctx, GLenum format, GLenum ty
default:
return GL_FALSE;
}
+
+ /* integer-valued formats */
case GL_RED_INTEGER_EXT:
case GL_GREEN_INTEGER_EXT:
case GL_BLUE_INTEGER_EXT:
case GL_ALPHA_INTEGER_EXT:
+ switch (type) {
+ case GL_BYTE:
+ case GL_UNSIGNED_BYTE:
+ case GL_SHORT:
+ case GL_UNSIGNED_SHORT:
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ return ctx->Extensions.EXT_texture_integer;
+ default:
+ return GL_FALSE;
+ }
+
case GL_RGB_INTEGER_EXT:
- case GL_RGBA_INTEGER_EXT:
+ switch (type) {
+ case GL_BYTE:
+ case GL_UNSIGNED_BYTE:
+ case GL_SHORT:
+ case GL_UNSIGNED_SHORT:
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ case GL_UNSIGNED_BYTE_3_3_2:
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ return ctx->Extensions.EXT_texture_integer;
+ default:
+ return GL_FALSE;
+ }
+
case GL_BGR_INTEGER_EXT:
+ switch (type) {
+ case GL_BYTE:
+ case GL_UNSIGNED_BYTE:
+ case GL_SHORT:
+ case GL_UNSIGNED_SHORT:
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ /* NOTE: no packed formats w/ BGR format */
+ return ctx->Extensions.EXT_texture_integer;
+ default:
+ return GL_FALSE;
+ }
+
+ case GL_RGBA_INTEGER_EXT:
case GL_BGRA_INTEGER_EXT:
+ switch (type) {
+ case GL_BYTE:
+ case GL_UNSIGNED_BYTE:
+ case GL_SHORT:
+ case GL_UNSIGNED_SHORT:
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ case GL_UNSIGNED_INT_8_8_8_8:
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ case GL_UNSIGNED_INT_10_10_10_2:
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ return ctx->Extensions.EXT_texture_integer;
+ default:
+ return GL_FALSE;
+ }
+
case GL_LUMINANCE_INTEGER_EXT:
case GL_LUMINANCE_ALPHA_INTEGER_EXT:
switch (type) {
@@ -699,10 +736,57 @@ _mesa_is_color_format(GLenum format)
case GL_COMPRESSED_SIGNED_RED_RGTC1:
case GL_COMPRESSED_RG_RGTC2:
case GL_COMPRESSED_SIGNED_RG_RGTC2:
- return GL_TRUE;
- /* signed texture formats */
+ /* signed, normalized texture formats */
case GL_RGBA_SNORM:
case GL_RGBA8_SNORM:
+ /* generic integer formats */
+ case GL_RED_INTEGER_EXT:
+ case GL_GREEN_INTEGER_EXT:
+ case GL_BLUE_INTEGER_EXT:
+ case GL_ALPHA_INTEGER_EXT:
+ case GL_RGB_INTEGER_EXT:
+ case GL_RGBA_INTEGER_EXT:
+ case GL_BGR_INTEGER_EXT:
+ case GL_BGRA_INTEGER_EXT:
+ case GL_LUMINANCE_INTEGER_EXT:
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ /* sized integer formats */
+ case GL_RGBA32UI_EXT:
+ case GL_RGB32UI_EXT:
+ case GL_ALPHA32UI_EXT:
+ case GL_INTENSITY32UI_EXT:
+ case GL_LUMINANCE32UI_EXT:
+ case GL_LUMINANCE_ALPHA32UI_EXT:
+ case GL_RGBA16UI_EXT:
+ case GL_RGB16UI_EXT:
+ case GL_ALPHA16UI_EXT:
+ case GL_INTENSITY16UI_EXT:
+ case GL_LUMINANCE16UI_EXT:
+ case GL_LUMINANCE_ALPHA16UI_EXT:
+ case GL_RGBA8UI_EXT:
+ case GL_RGB8UI_EXT:
+ case GL_ALPHA8UI_EXT:
+ case GL_INTENSITY8UI_EXT:
+ case GL_LUMINANCE8UI_EXT:
+ case GL_LUMINANCE_ALPHA8UI_EXT:
+ case GL_RGBA32I_EXT:
+ case GL_RGB32I_EXT:
+ case GL_ALPHA32I_EXT:
+ case GL_INTENSITY32I_EXT:
+ case GL_LUMINANCE32I_EXT:
+ case GL_LUMINANCE_ALPHA32I_EXT:
+ case GL_RGBA16I_EXT:
+ case GL_RGB16I_EXT:
+ case GL_ALPHA16I_EXT:
+ case GL_INTENSITY16I_EXT:
+ case GL_LUMINANCE16I_EXT:
+ case GL_LUMINANCE_ALPHA16I_EXT:
+ case GL_RGBA8I_EXT:
+ case GL_RGB8I_EXT:
+ case GL_ALPHA8I_EXT:
+ case GL_INTENSITY8I_EXT:
+ case GL_LUMINANCE8I_EXT:
+ case GL_LUMINANCE_ALPHA8I_EXT:
return GL_TRUE;
case GL_YCBCR_MESA: /* not considered to be RGB */
/* fall-through */
@@ -846,6 +930,7 @@ GLboolean
_mesa_is_integer_format(GLenum format)
{
switch (format) {
+ /* generic integer formats */
case GL_RED_INTEGER_EXT:
case GL_GREEN_INTEGER_EXT:
case GL_BLUE_INTEGER_EXT:
@@ -856,6 +941,43 @@ _mesa_is_integer_format(GLenum format)
case GL_BGRA_INTEGER_EXT:
case GL_LUMINANCE_INTEGER_EXT:
case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ /* specific integer formats */
+ case GL_RGBA32UI_EXT:
+ case GL_RGB32UI_EXT:
+ case GL_ALPHA32UI_EXT:
+ case GL_INTENSITY32UI_EXT:
+ case GL_LUMINANCE32UI_EXT:
+ case GL_LUMINANCE_ALPHA32UI_EXT:
+ case GL_RGBA16UI_EXT:
+ case GL_RGB16UI_EXT:
+ case GL_ALPHA16UI_EXT:
+ case GL_INTENSITY16UI_EXT:
+ case GL_LUMINANCE16UI_EXT:
+ case GL_LUMINANCE_ALPHA16UI_EXT:
+ case GL_RGBA8UI_EXT:
+ case GL_RGB8UI_EXT:
+ case GL_ALPHA8UI_EXT:
+ case GL_INTENSITY8UI_EXT:
+ case GL_LUMINANCE8UI_EXT:
+ case GL_LUMINANCE_ALPHA8UI_EXT:
+ case GL_RGBA32I_EXT:
+ case GL_RGB32I_EXT:
+ case GL_ALPHA32I_EXT:
+ case GL_INTENSITY32I_EXT:
+ case GL_LUMINANCE32I_EXT:
+ case GL_LUMINANCE_ALPHA32I_EXT:
+ case GL_RGBA16I_EXT:
+ case GL_RGB16I_EXT:
+ case GL_ALPHA16I_EXT:
+ case GL_INTENSITY16I_EXT:
+ case GL_LUMINANCE16I_EXT:
+ case GL_LUMINANCE_ALPHA16I_EXT:
+ case GL_RGBA8I_EXT:
+ case GL_RGB8I_EXT:
+ case GL_ALPHA8I_EXT:
+ case GL_INTENSITY8I_EXT:
+ case GL_LUMINANCE8I_EXT:
+ case GL_LUMINANCE_ALPHA8I_EXT:
return GL_TRUE;
default:
return GL_FALSE;
@@ -1119,8 +1241,6 @@ _mesa_image_row_stride( const struct gl_pixelstore_attrib *packing,
}
-#if _HAVE_FULL_GL
-
/*
* Compute the stride between images in a 3D texture (in bytes) for the given
* pixel packing parameters and image width, format and type.
@@ -1168,248 +1288,6 @@ _mesa_image_image_stride( const struct gl_pixelstore_attrib *packing,
}
-/*
- * Unpack a 32x32 pixel polygon stipple from user memory using the
- * current pixel unpack settings.
- */
-void
-_mesa_unpack_polygon_stipple( const GLubyte *pattern, GLuint dest[32],
- const struct gl_pixelstore_attrib *unpacking )
-{
- GLubyte *ptrn = (GLubyte *) _mesa_unpack_bitmap(32, 32, pattern, unpacking);
- if (ptrn) {
- /* Convert pattern from GLubytes to GLuints and handle big/little
- * endian differences
- */
- GLubyte *p = ptrn;
- GLint i;
- for (i = 0; i < 32; i++) {
- dest[i] = (p[0] << 24)
- | (p[1] << 16)
- | (p[2] << 8)
- | (p[3] );
- p += 4;
- }
- free(ptrn);
- }
-}
-
-
-/*
- * Pack polygon stipple into user memory given current pixel packing
- * settings.
- */
-void
-_mesa_pack_polygon_stipple( const GLuint pattern[32], GLubyte *dest,
- const struct gl_pixelstore_attrib *packing )
-{
- /* Convert pattern from GLuints to GLubytes to handle big/little
- * endian differences.
- */
- GLubyte ptrn[32*4];
- GLint i;
- for (i = 0; i < 32; i++) {
- ptrn[i * 4 + 0] = (GLubyte) ((pattern[i] >> 24) & 0xff);
- ptrn[i * 4 + 1] = (GLubyte) ((pattern[i] >> 16) & 0xff);
- ptrn[i * 4 + 2] = (GLubyte) ((pattern[i] >> 8 ) & 0xff);
- ptrn[i * 4 + 3] = (GLubyte) ((pattern[i] ) & 0xff);
- }
-
- _mesa_pack_bitmap(32, 32, ptrn, dest, packing);
-}
-
-
-/*
- * Unpack bitmap data. Resulting data will be in most-significant-bit-first
- * order with row alignment = 1 byte.
- */
-GLvoid *
-_mesa_unpack_bitmap( GLint width, GLint height, const GLubyte *pixels,
- const struct gl_pixelstore_attrib *packing )
-{
- GLint bytes, row, width_in_bytes;
- GLubyte *buffer, *dst;
-
- if (!pixels)
- return NULL;
-
- /* Alloc dest storage */
- bytes = ((width + 7) / 8 * height);
- buffer = (GLubyte *) malloc( bytes );
- if (!buffer)
- return NULL;
-
- width_in_bytes = CEILING( width, 8 );
- dst = buffer;
- for (row = 0; row < height; row++) {
- const GLubyte *src = (const GLubyte *)
- _mesa_image_address2d(packing, pixels, width, height,
- GL_COLOR_INDEX, GL_BITMAP, row, 0);
- if (!src) {
- free(buffer);
- return NULL;
- }
-
- if ((packing->SkipPixels & 7) == 0) {
- memcpy( dst, src, width_in_bytes );
- if (packing->LsbFirst) {
- flip_bytes( dst, width_in_bytes );
- }
- }
- else {
- /* handling SkipPixels is a bit tricky (no pun intended!) */
- GLint i;
- if (packing->LsbFirst) {
- GLubyte srcMask = 1 << (packing->SkipPixels & 0x7);
- GLubyte dstMask = 128;
- const GLubyte *s = src;
- GLubyte *d = dst;
- *d = 0;
- for (i = 0; i < width; i++) {
- if (*s & srcMask) {
- *d |= dstMask;
- }
- if (srcMask == 128) {
- srcMask = 1;
- s++;
- }
- else {
- srcMask = srcMask << 1;
- }
- if (dstMask == 1) {
- dstMask = 128;
- d++;
- *d = 0;
- }
- else {
- dstMask = dstMask >> 1;
- }
- }
- }
- else {
- GLubyte srcMask = 128 >> (packing->SkipPixels & 0x7);
- GLubyte dstMask = 128;
- const GLubyte *s = src;
- GLubyte *d = dst;
- *d = 0;
- for (i = 0; i < width; i++) {
- if (*s & srcMask) {
- *d |= dstMask;
- }
- if (srcMask == 1) {
- srcMask = 128;
- s++;
- }
- else {
- srcMask = srcMask >> 1;
- }
- if (dstMask == 1) {
- dstMask = 128;
- d++;
- *d = 0;
- }
- else {
- dstMask = dstMask >> 1;
- }
- }
- }
- }
- dst += width_in_bytes;
- }
-
- return buffer;
-}
-
-
-/*
- * Pack bitmap data.
- */
-void
-_mesa_pack_bitmap( GLint width, GLint height, const GLubyte *source,
- GLubyte *dest, const struct gl_pixelstore_attrib *packing )
-{
- GLint row, width_in_bytes;
- const GLubyte *src;
-
- if (!source)
- return;
-
- width_in_bytes = CEILING( width, 8 );
- src = source;
- for (row = 0; row < height; row++) {
- GLubyte *dst = (GLubyte *) _mesa_image_address2d(packing, dest,
- width, height, GL_COLOR_INDEX, GL_BITMAP, row, 0);
- if (!dst)
- return;
-
- if ((packing->SkipPixels & 7) == 0) {
- memcpy( dst, src, width_in_bytes );
- if (packing->LsbFirst) {
- flip_bytes( dst, width_in_bytes );
- }
- }
- else {
- /* handling SkipPixels is a bit tricky (no pun intended!) */
- GLint i;
- if (packing->LsbFirst) {
- GLubyte srcMask = 128;
- GLubyte dstMask = 1 << (packing->SkipPixels & 0x7);
- const GLubyte *s = src;
- GLubyte *d = dst;
- *d = 0;
- for (i = 0; i < width; i++) {
- if (*s & srcMask) {
- *d |= dstMask;
- }
- if (srcMask == 1) {
- srcMask = 128;
- s++;
- }
- else {
- srcMask = srcMask >> 1;
- }
- if (dstMask == 128) {
- dstMask = 1;
- d++;
- *d = 0;
- }
- else {
- dstMask = dstMask << 1;
- }
- }
- }
- else {
- GLubyte srcMask = 128;
- GLubyte dstMask = 128 >> (packing->SkipPixels & 0x7);
- const GLubyte *s = src;
- GLubyte *d = dst;
- *d = 0;
- for (i = 0; i < width; i++) {
- if (*s & srcMask) {
- *d |= dstMask;
- }
- if (srcMask == 1) {
- srcMask = 128;
- s++;
- }
- else {
- srcMask = srcMask >> 1;
- }
- if (dstMask == 1) {
- dstMask = 128;
- d++;
- *d = 0;
- }
- else {
- dstMask = dstMask >> 1;
- }
- }
- }
- }
- src += width_in_bytes;
- }
-}
-
/**
* "Expand" a bitmap from 1-bit per pixel to 8-bits per pixel.
@@ -1496,4095 +1374,6 @@ _mesa_expand_bitmap(GLsizei width, GLsizei height,
}
-/**********************************************************************/
-/***** Pixel processing functions ******/
-/**********************************************************************/
-
-/*
- * Apply scale and bias factors to an array of RGBA pixels.
- */
-void
-_mesa_scale_and_bias_rgba(GLuint n, GLfloat rgba[][4],
- GLfloat rScale, GLfloat gScale,
- GLfloat bScale, GLfloat aScale,
- GLfloat rBias, GLfloat gBias,
- GLfloat bBias, GLfloat aBias)
-{
- if (rScale != 1.0 || rBias != 0.0) {
- GLuint i;
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = rgba[i][RCOMP] * rScale + rBias;
- }
- }
- if (gScale != 1.0 || gBias != 0.0) {
- GLuint i;
- for (i = 0; i < n; i++) {
- rgba[i][GCOMP] = rgba[i][GCOMP] * gScale + gBias;
- }
- }
- if (bScale != 1.0 || bBias != 0.0) {
- GLuint i;
- for (i = 0; i < n; i++) {
- rgba[i][BCOMP] = rgba[i][BCOMP] * bScale + bBias;
- }
- }
- if (aScale != 1.0 || aBias != 0.0) {
- GLuint i;
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = rgba[i][ACOMP] * aScale + aBias;
- }
- }
-}
-
-
-/*
- * Apply pixel mapping to an array of floating point RGBA pixels.
- */
-void
-_mesa_map_rgba( const struct gl_context *ctx, GLuint n, GLfloat rgba[][4] )
-{
- const GLfloat rscale = (GLfloat) (ctx->PixelMaps.RtoR.Size - 1);
- const GLfloat gscale = (GLfloat) (ctx->PixelMaps.GtoG.Size - 1);
- const GLfloat bscale = (GLfloat) (ctx->PixelMaps.BtoB.Size - 1);
- const GLfloat ascale = (GLfloat) (ctx->PixelMaps.AtoA.Size - 1);
- const GLfloat *rMap = ctx->PixelMaps.RtoR.Map;
- const GLfloat *gMap = ctx->PixelMaps.GtoG.Map;
- const GLfloat *bMap = ctx->PixelMaps.BtoB.Map;
- const GLfloat *aMap = ctx->PixelMaps.AtoA.Map;
- GLuint i;
- for (i=0;i<n;i++) {
- GLfloat r = CLAMP(rgba[i][RCOMP], 0.0F, 1.0F);
- GLfloat g = CLAMP(rgba[i][GCOMP], 0.0F, 1.0F);
- GLfloat b = CLAMP(rgba[i][BCOMP], 0.0F, 1.0F);
- GLfloat a = CLAMP(rgba[i][ACOMP], 0.0F, 1.0F);
- rgba[i][RCOMP] = rMap[IROUND(r * rscale)];
- rgba[i][GCOMP] = gMap[IROUND(g * gscale)];
- rgba[i][BCOMP] = bMap[IROUND(b * bscale)];
- rgba[i][ACOMP] = aMap[IROUND(a * ascale)];
- }
-}
-
-/**
- * Apply a color table lookup to an array of floating point RGBA colors.
- */
-void
-_mesa_lookup_rgba_float(const struct gl_color_table *table,
- GLuint n, GLfloat rgba[][4])
-{
- const GLint max = table->Size - 1;
- const GLfloat scale = (GLfloat) max;
- const GLfloat *lut = table->TableF;
- GLuint i;
-
- if (!table->TableF || table->Size == 0)
- return;
-
- switch (table->_BaseFormat) {
- case GL_INTENSITY:
- /* replace RGBA with I */
- for (i = 0; i < n; i++) {
- GLint j = IROUND(rgba[i][RCOMP] * scale);
- GLfloat c = lut[CLAMP(j, 0, max)];
- rgba[i][RCOMP] =
- rgba[i][GCOMP] =
- rgba[i][BCOMP] =
- rgba[i][ACOMP] = c;
- }
- break;
- case GL_LUMINANCE:
- /* replace RGB with L */
- for (i = 0; i < n; i++) {
- GLint j = IROUND(rgba[i][RCOMP] * scale);
- GLfloat c = lut[CLAMP(j, 0, max)];
- rgba[i][RCOMP] =
- rgba[i][GCOMP] =
- rgba[i][BCOMP] = c;
- }
- break;
- case GL_ALPHA:
- /* replace A with A */
- for (i = 0; i < n; i++) {
- GLint j = IROUND(rgba[i][ACOMP] * scale);
- rgba[i][ACOMP] = lut[CLAMP(j, 0, max)];
- }
- break;
- case GL_LUMINANCE_ALPHA:
- /* replace RGBA with LLLA */
- for (i = 0; i < n; i++) {
- GLint jL = IROUND(rgba[i][RCOMP] * scale);
- GLint jA = IROUND(rgba[i][ACOMP] * scale);
- GLfloat luminance, alpha;
- jL = CLAMP(jL, 0, max);
- jA = CLAMP(jA, 0, max);
- luminance = lut[jL * 2 + 0];
- alpha = lut[jA * 2 + 1];
- rgba[i][RCOMP] =
- rgba[i][GCOMP] =
- rgba[i][BCOMP] = luminance;
- rgba[i][ACOMP] = alpha;;
- }
- break;
- case GL_RED:
- /* replace RGB with RGB */
- for (i = 0; i < n; i++) {
- GLint jR = IROUND(rgba[i][RCOMP] * scale);
- jR = CLAMP(jR, 0, max);
- rgba[i][RCOMP] = lut[jR * 3 + 0];
- }
- break;
- case GL_RG:
- /* replace RG with RG */
- for (i = 0; i < n; i++) {
- GLint jR = IROUND(rgba[i][RCOMP] * scale);
- GLint jG = IROUND(rgba[i][GCOMP] * scale);
- jR = CLAMP(jR, 0, max);
- jG = CLAMP(jG, 0, max);
- rgba[i][RCOMP] = lut[jR * 3 + 0];
- rgba[i][GCOMP] = lut[jG * 3 + 1];
- }
- break;
- case GL_RGB:
- /* replace RGB with RGB */
- for (i = 0; i < n; i++) {
- GLint jR = IROUND(rgba[i][RCOMP] * scale);
- GLint jG = IROUND(rgba[i][GCOMP] * scale);
- GLint jB = IROUND(rgba[i][BCOMP] * scale);
- jR = CLAMP(jR, 0, max);
- jG = CLAMP(jG, 0, max);
- jB = CLAMP(jB, 0, max);
- rgba[i][RCOMP] = lut[jR * 3 + 0];
- rgba[i][GCOMP] = lut[jG * 3 + 1];
- rgba[i][BCOMP] = lut[jB * 3 + 2];
- }
- break;
- case GL_RGBA:
- /* replace RGBA with RGBA */
- for (i = 0; i < n; i++) {
- GLint jR = IROUND(rgba[i][RCOMP] * scale);
- GLint jG = IROUND(rgba[i][GCOMP] * scale);
- GLint jB = IROUND(rgba[i][BCOMP] * scale);
- GLint jA = IROUND(rgba[i][ACOMP] * scale);
- jR = CLAMP(jR, 0, max);
- jG = CLAMP(jG, 0, max);
- jB = CLAMP(jB, 0, max);
- jA = CLAMP(jA, 0, max);
- rgba[i][RCOMP] = lut[jR * 4 + 0];
- rgba[i][GCOMP] = lut[jG * 4 + 1];
- rgba[i][BCOMP] = lut[jB * 4 + 2];
- rgba[i][ACOMP] = lut[jA * 4 + 3];
- }
- break;
- default:
- _mesa_problem(NULL, "Bad format in _mesa_lookup_rgba_float");
- return;
- }
-}
-
-
-
-/**
- * Apply a color table lookup to an array of ubyte/RGBA colors.
- */
-void
-_mesa_lookup_rgba_ubyte(const struct gl_color_table *table,
- GLuint n, GLubyte rgba[][4])
-{
- const GLubyte *lut = table->TableUB;
- const GLfloat scale = (GLfloat) (table->Size - 1) / (GLfloat)255.0;
- GLuint i;
-
- if (!table->TableUB || table->Size == 0)
- return;
-
- switch (table->_BaseFormat) {
- case GL_INTENSITY:
- /* replace RGBA with I */
- if (table->Size == 256) {
- for (i = 0; i < n; i++) {
- const GLubyte c = lut[rgba[i][RCOMP]];
- rgba[i][RCOMP] =
- rgba[i][GCOMP] =
- rgba[i][BCOMP] =
- rgba[i][ACOMP] = c;
- }
- }
- else {
- for (i = 0; i < n; i++) {
- GLint j = IROUND((GLfloat) rgba[i][RCOMP] * scale);
- rgba[i][RCOMP] =
- rgba[i][GCOMP] =
- rgba[i][BCOMP] =
- rgba[i][ACOMP] = lut[j];
- }
- }
- break;
- case GL_LUMINANCE:
- /* replace RGB with L */
- if (table->Size == 256) {
- for (i = 0; i < n; i++) {
- const GLubyte c = lut[rgba[i][RCOMP]];
- rgba[i][RCOMP] =
- rgba[i][GCOMP] =
- rgba[i][BCOMP] = c;
- }
- }
- else {
- for (i = 0; i < n; i++) {
- GLint j = IROUND((GLfloat) rgba[i][RCOMP] * scale);
- rgba[i][RCOMP] =
- rgba[i][GCOMP] =
- rgba[i][BCOMP] = lut[j];
- }
- }
- break;
- case GL_ALPHA:
- /* replace A with A */
- if (table->Size == 256) {
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = lut[rgba[i][ACOMP]];
- }
- }
- else {
- for (i = 0; i < n; i++) {
- GLint j = IROUND((GLfloat) rgba[i][ACOMP] * scale);
- rgba[i][ACOMP] = lut[j];
- }
- }
- break;
- case GL_LUMINANCE_ALPHA:
- /* replace RGBA with LLLA */
- if (table->Size == 256) {
- for (i = 0; i < n; i++) {
- GLubyte l = lut[rgba[i][RCOMP] * 2 + 0];
- GLubyte a = lut[rgba[i][ACOMP] * 2 + 1];;
- rgba[i][RCOMP] =
- rgba[i][GCOMP] =
- rgba[i][BCOMP] = l;
- rgba[i][ACOMP] = a;
- }
- }
- else {
- for (i = 0; i < n; i++) {
- GLint jL = IROUND((GLfloat) rgba[i][RCOMP] * scale);
- GLint jA = IROUND((GLfloat) rgba[i][ACOMP] * scale);
- GLubyte luminance = lut[jL * 2 + 0];
- GLubyte alpha = lut[jA * 2 + 1];
- rgba[i][RCOMP] =
- rgba[i][GCOMP] =
- rgba[i][BCOMP] = luminance;
- rgba[i][ACOMP] = alpha;
- }
- }
- break;
- case GL_RGB:
- if (table->Size == 256) {
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = lut[rgba[i][RCOMP] * 3 + 0];
- rgba[i][GCOMP] = lut[rgba[i][GCOMP] * 3 + 1];
- rgba[i][BCOMP] = lut[rgba[i][BCOMP] * 3 + 2];
- }
- }
- else {
- for (i = 0; i < n; i++) {
- GLint jR = IROUND((GLfloat) rgba[i][RCOMP] * scale);
- GLint jG = IROUND((GLfloat) rgba[i][GCOMP] * scale);
- GLint jB = IROUND((GLfloat) rgba[i][BCOMP] * scale);
- rgba[i][RCOMP] = lut[jR * 3 + 0];
- rgba[i][GCOMP] = lut[jG * 3 + 1];
- rgba[i][BCOMP] = lut[jB * 3 + 2];
- }
- }
- break;
- case GL_RGBA:
- if (table->Size == 256) {
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = lut[rgba[i][RCOMP] * 4 + 0];
- rgba[i][GCOMP] = lut[rgba[i][GCOMP] * 4 + 1];
- rgba[i][BCOMP] = lut[rgba[i][BCOMP] * 4 + 2];
- rgba[i][ACOMP] = lut[rgba[i][ACOMP] * 4 + 3];
- }
- }
- else {
- for (i = 0; i < n; i++) {
- GLint jR = IROUND((GLfloat) rgba[i][RCOMP] * scale);
- GLint jG = IROUND((GLfloat) rgba[i][GCOMP] * scale);
- GLint jB = IROUND((GLfloat) rgba[i][BCOMP] * scale);
- GLint jA = IROUND((GLfloat) rgba[i][ACOMP] * scale);
- CLAMPED_FLOAT_TO_CHAN(rgba[i][RCOMP], lut[jR * 4 + 0]);
- CLAMPED_FLOAT_TO_CHAN(rgba[i][GCOMP], lut[jG * 4 + 1]);
- CLAMPED_FLOAT_TO_CHAN(rgba[i][BCOMP], lut[jB * 4 + 2]);
- CLAMPED_FLOAT_TO_CHAN(rgba[i][ACOMP], lut[jA * 4 + 3]);
- }
- }
- break;
- default:
- _mesa_problem(NULL, "Bad format in _mesa_lookup_rgba_chan");
- return;
- }
-}
-
-
-
-/*
- * Map color indexes to float rgba values.
- */
-void
-_mesa_map_ci_to_rgba( const struct gl_context *ctx, GLuint n,
- const GLuint index[], GLfloat rgba[][4] )
-{
- GLuint rmask = ctx->PixelMaps.ItoR.Size - 1;
- GLuint gmask = ctx->PixelMaps.ItoG.Size - 1;
- GLuint bmask = ctx->PixelMaps.ItoB.Size - 1;
- GLuint amask = ctx->PixelMaps.ItoA.Size - 1;
- const GLfloat *rMap = ctx->PixelMaps.ItoR.Map;
- const GLfloat *gMap = ctx->PixelMaps.ItoG.Map;
- const GLfloat *bMap = ctx->PixelMaps.ItoB.Map;
- const GLfloat *aMap = ctx->PixelMaps.ItoA.Map;
- GLuint i;
- for (i=0;i<n;i++) {
- rgba[i][RCOMP] = rMap[index[i] & rmask];
- rgba[i][GCOMP] = gMap[index[i] & gmask];
- rgba[i][BCOMP] = bMap[index[i] & bmask];
- rgba[i][ACOMP] = aMap[index[i] & amask];
- }
-}
-
-
-/**
- * Map ubyte color indexes to ubyte/RGBA values.
- */
-void
-_mesa_map_ci8_to_rgba8(const struct gl_context *ctx, GLuint n, const GLubyte index[],
- GLubyte rgba[][4])
-{
- GLuint rmask = ctx->PixelMaps.ItoR.Size - 1;
- GLuint gmask = ctx->PixelMaps.ItoG.Size - 1;
- GLuint bmask = ctx->PixelMaps.ItoB.Size - 1;
- GLuint amask = ctx->PixelMaps.ItoA.Size - 1;
- const GLubyte *rMap = ctx->PixelMaps.ItoR.Map8;
- const GLubyte *gMap = ctx->PixelMaps.ItoG.Map8;
- const GLubyte *bMap = ctx->PixelMaps.ItoB.Map8;
- const GLubyte *aMap = ctx->PixelMaps.ItoA.Map8;
- GLuint i;
- for (i=0;i<n;i++) {
- rgba[i][RCOMP] = rMap[index[i] & rmask];
- rgba[i][GCOMP] = gMap[index[i] & gmask];
- rgba[i][BCOMP] = bMap[index[i] & bmask];
- rgba[i][ACOMP] = aMap[index[i] & amask];
- }
-}
-
-
-void
-_mesa_scale_and_bias_depth(const struct gl_context *ctx, GLuint n,
- GLfloat depthValues[])
-{
- const GLfloat scale = ctx->Pixel.DepthScale;
- const GLfloat bias = ctx->Pixel.DepthBias;
- GLuint i;
- for (i = 0; i < n; i++) {
- GLfloat d = depthValues[i] * scale + bias;
- depthValues[i] = CLAMP(d, 0.0F, 1.0F);
- }
-}
-
-
-void
-_mesa_scale_and_bias_depth_uint(const struct gl_context *ctx, GLuint n,
- GLuint depthValues[])
-{
- const GLdouble max = (double) 0xffffffff;
- const GLdouble scale = ctx->Pixel.DepthScale;
- const GLdouble bias = ctx->Pixel.DepthBias * max;
- GLuint i;
- for (i = 0; i < n; i++) {
- GLdouble d = (GLdouble) depthValues[i] * scale + bias;
- d = CLAMP(d, 0.0, max);
- depthValues[i] = (GLuint) d;
- }
-}
-
-/**
- * Apply various pixel transfer operations to an array of RGBA pixels
- * as indicated by the transferOps bitmask
- */
-void
-_mesa_apply_rgba_transfer_ops(struct gl_context *ctx, GLbitfield transferOps,
- GLuint n, GLfloat rgba[][4])
-{
- /* scale & bias */
- if (transferOps & IMAGE_SCALE_BIAS_BIT) {
- _mesa_scale_and_bias_rgba(n, rgba,
- ctx->Pixel.RedScale, ctx->Pixel.GreenScale,
- ctx->Pixel.BlueScale, ctx->Pixel.AlphaScale,
- ctx->Pixel.RedBias, ctx->Pixel.GreenBias,
- ctx->Pixel.BlueBias, ctx->Pixel.AlphaBias);
- }
- /* color map lookup */
- if (transferOps & IMAGE_MAP_COLOR_BIT) {
- _mesa_map_rgba( ctx, n, rgba );
- }
-
- /* clamping to [0,1] */
- if (transferOps & IMAGE_CLAMP_BIT) {
- GLuint i;
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = CLAMP(rgba[i][RCOMP], 0.0F, 1.0F);
- rgba[i][GCOMP] = CLAMP(rgba[i][GCOMP], 0.0F, 1.0F);
- rgba[i][BCOMP] = CLAMP(rgba[i][BCOMP], 0.0F, 1.0F);
- rgba[i][ACOMP] = CLAMP(rgba[i][ACOMP], 0.0F, 1.0F);
- }
- }
-}
-
-
-/*
- * Apply color index shift and offset to an array of pixels.
- */
-static void
-shift_and_offset_ci( const struct gl_context *ctx, GLuint n, GLuint indexes[] )
-{
- GLint shift = ctx->Pixel.IndexShift;
- GLint offset = ctx->Pixel.IndexOffset;
- GLuint i;
- if (shift > 0) {
- for (i=0;i<n;i++) {
- indexes[i] = (indexes[i] << shift) + offset;
- }
- }
- else if (shift < 0) {
- shift = -shift;
- for (i=0;i<n;i++) {
- indexes[i] = (indexes[i] >> shift) + offset;
- }
- }
- else {
- for (i=0;i<n;i++) {
- indexes[i] = indexes[i] + offset;
- }
- }
-}
-
-
-
-/**
- * Apply color index shift, offset and table lookup to an array
- * of color indexes;
- */
-void
-_mesa_apply_ci_transfer_ops(const struct gl_context *ctx, GLbitfield transferOps,
- GLuint n, GLuint indexes[])
-{
- if (transferOps & IMAGE_SHIFT_OFFSET_BIT) {
- shift_and_offset_ci(ctx, n, indexes);
- }
- if (transferOps & IMAGE_MAP_COLOR_BIT) {
- const GLuint mask = ctx->PixelMaps.ItoI.Size - 1;
- GLuint i;
- for (i = 0; i < n; i++) {
- const GLuint j = indexes[i] & mask;
- indexes[i] = IROUND(ctx->PixelMaps.ItoI.Map[j]);
- }
- }
-}
-
-
-/**
- * Apply stencil index shift, offset and table lookup to an array
- * of stencil values.
- */
-void
-_mesa_apply_stencil_transfer_ops(const struct gl_context *ctx, GLuint n,
- GLstencil stencil[])
-{
- if (ctx->Pixel.IndexShift != 0 || ctx->Pixel.IndexOffset != 0) {
- const GLint offset = ctx->Pixel.IndexOffset;
- GLint shift = ctx->Pixel.IndexShift;
- GLuint i;
- if (shift > 0) {
- for (i = 0; i < n; i++) {
- stencil[i] = (stencil[i] << shift) + offset;
- }
- }
- else if (shift < 0) {
- shift = -shift;
- for (i = 0; i < n; i++) {
- stencil[i] = (stencil[i] >> shift) + offset;
- }
- }
- else {
- for (i = 0; i < n; i++) {
- stencil[i] = stencil[i] + offset;
- }
- }
- }
- if (ctx->Pixel.MapStencilFlag) {
- GLuint mask = ctx->PixelMaps.StoS.Size - 1;
- GLuint i;
- for (i = 0; i < n; i++) {
- stencil[i] = (GLstencil)ctx->PixelMaps.StoS.Map[ stencil[i] & mask ];
- }
- }
-}
-
-
-/**
- * Used to pack an array [][4] of RGBA float colors as specified
- * by the dstFormat, dstType and dstPacking. Used by glReadPixels.
- * Note: the rgba values will be modified by this function when any pixel
- * transfer ops are enabled.
- */
-void
-_mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4],
- GLenum dstFormat, GLenum dstType,
- GLvoid *dstAddr,
- const struct gl_pixelstore_attrib *dstPacking,
- GLbitfield transferOps)
-{
- GLfloat luminance[MAX_WIDTH];
- const GLint comps = _mesa_components_in_format(dstFormat);
- GLuint i;
-
- /* XXX
- * This test should probably go away. Have the caller set/clear the
- * IMAGE_CLAMP_BIT as needed.
- */
- if (dstType != GL_FLOAT || ctx->Color.ClampReadColor == GL_TRUE) {
- /* need to clamp to [0, 1] */
- transferOps |= IMAGE_CLAMP_BIT;
- }
-
- if (transferOps) {
- _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba);
- }
-
- if (dstFormat == GL_LUMINANCE || dstFormat == GL_LUMINANCE_ALPHA) {
- /* compute luminance values */
- if (transferOps & IMAGE_CLAMP_BIT) {
- for (i = 0; i < n; i++) {
- GLfloat sum = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP];
- luminance[i] = CLAMP(sum, 0.0F, 1.0F);
- }
- }
- else {
- for (i = 0; i < n; i++) {
- luminance[i] = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP];
- }
- }
- }
-
- /*
- * Pack/store the pixels. Ugh! Lots of cases!!!
- */
- switch (dstType) {
- case GL_UNSIGNED_BYTE:
- {
- GLubyte *dst = (GLubyte *) dstAddr;
- switch (dstFormat) {
- case GL_RED:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
- break;
- case GL_GREEN:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
- break;
- case GL_BLUE:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
- break;
- case GL_ALPHA:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_UBYTE(rgba[i][ACOMP]);
- break;
- case GL_LUMINANCE:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_UBYTE(luminance[i]);
- break;
- case GL_LUMINANCE_ALPHA:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_UBYTE(luminance[i]);
- dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][ACOMP]);
- }
- break;
- case GL_RG:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
- dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
- }
- break;
- case GL_RGB:
- for (i=0;i<n;i++) {
- dst[i*3+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
- dst[i*3+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
- dst[i*3+2] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
- }
- break;
- case GL_RGBA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
- dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
- dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
- dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][ACOMP]);
- }
- break;
- case GL_BGR:
- for (i=0;i<n;i++) {
- dst[i*3+0] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
- dst[i*3+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
- dst[i*3+2] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
- }
- break;
- case GL_BGRA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
- dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
- dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
- dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][ACOMP]);
- }
- break;
- case GL_ABGR_EXT:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][ACOMP]);
- dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
- dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
- dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
- }
- break;
- case GL_DUDV_ATI:
- case GL_DU8DV8_ATI:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
- dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
- }
- break;
- default:
- _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
- }
- }
- break;
- case GL_BYTE:
- {
- GLbyte *dst = (GLbyte *) dstAddr;
- switch (dstFormat) {
- case GL_RED:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
- break;
- case GL_GREEN:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
- break;
- case GL_BLUE:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
- break;
- case GL_ALPHA:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_BYTE(rgba[i][ACOMP]);
- break;
- case GL_LUMINANCE:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_BYTE(luminance[i]);
- break;
- case GL_LUMINANCE_ALPHA:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_BYTE(luminance[i]);
- dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][ACOMP]);
- }
- break;
- case GL_RG:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
- dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
- }
- break;
- case GL_RGB:
- for (i=0;i<n;i++) {
- dst[i*3+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
- dst[i*3+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
- dst[i*3+2] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
- }
- break;
- case GL_RGBA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
- dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
- dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
- dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][ACOMP]);
- }
- break;
- case GL_BGR:
- for (i=0;i<n;i++) {
- dst[i*3+0] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
- dst[i*3+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
- dst[i*3+2] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
- }
- break;
- case GL_BGRA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
- dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
- dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
- dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][ACOMP]);
- }
- break;
- case GL_ABGR_EXT:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][ACOMP]);
- dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
- dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
- dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
- }
- break;
- case GL_DUDV_ATI:
- case GL_DU8DV8_ATI:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
- dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
- }
- break;
- default:
- _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
- }
- }
- break;
- case GL_UNSIGNED_SHORT:
- {
- GLushort *dst = (GLushort *) dstAddr;
- switch (dstFormat) {
- case GL_RED:
- for (i=0;i<n;i++)
- CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][RCOMP]);
- break;
- case GL_GREEN:
- for (i=0;i<n;i++)
- CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][GCOMP]);
- break;
- case GL_BLUE:
- for (i=0;i<n;i++)
- CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][BCOMP]);
- break;
- case GL_ALPHA:
- for (i=0;i<n;i++)
- CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][ACOMP]);
- break;
- case GL_LUMINANCE:
- for (i=0;i<n;i++)
- UNCLAMPED_FLOAT_TO_USHORT(dst[i], luminance[i]);
- break;
- case GL_LUMINANCE_ALPHA:
- for (i=0;i<n;i++) {
- UNCLAMPED_FLOAT_TO_USHORT(dst[i*2+0], luminance[i]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*2+1], rgba[i][ACOMP]);
- }
- break;
- case GL_RG:
- for (i=0;i<n;i++) {
- CLAMPED_FLOAT_TO_USHORT(dst[i*2+0], rgba[i][RCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*2+1], rgba[i][GCOMP]);
- }
- break;
- case GL_RGB:
- for (i=0;i<n;i++) {
- CLAMPED_FLOAT_TO_USHORT(dst[i*3+0], rgba[i][RCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*3+1], rgba[i][GCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*3+2], rgba[i][BCOMP]);
- }
- break;
- case GL_RGBA:
- for (i=0;i<n;i++) {
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][RCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][GCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][BCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][ACOMP]);
- }
- break;
- case GL_BGR:
- for (i=0;i<n;i++) {
- CLAMPED_FLOAT_TO_USHORT(dst[i*3+0], rgba[i][BCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*3+1], rgba[i][GCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*3+2], rgba[i][RCOMP]);
- }
- break;
- case GL_BGRA:
- for (i=0;i<n;i++) {
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][BCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][GCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][RCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][ACOMP]);
- }
- break;
- case GL_ABGR_EXT:
- for (i=0;i<n;i++) {
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][ACOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][BCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][GCOMP]);
- CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][RCOMP]);
- }
- break;
- case GL_DUDV_ATI:
- case GL_DU8DV8_ATI:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_USHORT(rgba[i][RCOMP]);
- dst[i*2+1] = FLOAT_TO_USHORT(rgba[i][GCOMP]);
- }
- break;
- default:
- _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
- }
- }
- break;
- case GL_SHORT:
- {
- GLshort *dst = (GLshort *) dstAddr;
- switch (dstFormat) {
- case GL_RED:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
- break;
- case GL_GREEN:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
- break;
- case GL_BLUE:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
- break;
- case GL_ALPHA:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_SHORT(rgba[i][ACOMP]);
- break;
- case GL_LUMINANCE:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_SHORT(luminance[i]);
- break;
- case GL_LUMINANCE_ALPHA:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_SHORT(luminance[i]);
- dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][ACOMP]);
- }
- break;
- case GL_RG:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
- dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
- }
- break;
- case GL_RGB:
- for (i=0;i<n;i++) {
- dst[i*3+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
- dst[i*3+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
- dst[i*3+2] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
- }
- break;
- case GL_RGBA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
- dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
- dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
- dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][ACOMP]);
- }
- break;
- case GL_BGR:
- for (i=0;i<n;i++) {
- dst[i*3+0] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
- dst[i*3+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
- dst[i*3+2] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
- }
- break;
- case GL_BGRA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
- dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
- dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
- dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][ACOMP]);
- }
- break;
- case GL_ABGR_EXT:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][ACOMP]);
- dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
- dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
- dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
- }
- break;
- case GL_DUDV_ATI:
- case GL_DU8DV8_ATI:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
- dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
- }
- break;
- default:
- _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
- }
- }
- break;
- case GL_UNSIGNED_INT:
- {
- GLuint *dst = (GLuint *) dstAddr;
- switch (dstFormat) {
- case GL_RED:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_UINT(rgba[i][RCOMP]);
- break;
- case GL_GREEN:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_UINT(rgba[i][GCOMP]);
- break;
- case GL_BLUE:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_UINT(rgba[i][BCOMP]);
- break;
- case GL_ALPHA:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_UINT(rgba[i][ACOMP]);
- break;
- case GL_LUMINANCE:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_UINT(luminance[i]);
- break;
- case GL_LUMINANCE_ALPHA:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_UINT(luminance[i]);
- dst[i*2+1] = FLOAT_TO_UINT(rgba[i][ACOMP]);
- }
- break;
- case GL_RG:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_UINT(rgba[i][RCOMP]);
- dst[i*2+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
- }
- break;
- case GL_RGB:
- for (i=0;i<n;i++) {
- dst[i*3+0] = FLOAT_TO_UINT(rgba[i][RCOMP]);
- dst[i*3+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
- dst[i*3+2] = FLOAT_TO_UINT(rgba[i][BCOMP]);
- }
- break;
- case GL_RGBA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_UINT(rgba[i][RCOMP]);
- dst[i*4+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
- dst[i*4+2] = FLOAT_TO_UINT(rgba[i][BCOMP]);
- dst[i*4+3] = FLOAT_TO_UINT(rgba[i][ACOMP]);
- }
- break;
- case GL_BGR:
- for (i=0;i<n;i++) {
- dst[i*3+0] = FLOAT_TO_UINT(rgba[i][BCOMP]);
- dst[i*3+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
- dst[i*3+2] = FLOAT_TO_UINT(rgba[i][RCOMP]);
- }
- break;
- case GL_BGRA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_UINT(rgba[i][BCOMP]);
- dst[i*4+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
- dst[i*4+2] = FLOAT_TO_UINT(rgba[i][RCOMP]);
- dst[i*4+3] = FLOAT_TO_UINT(rgba[i][ACOMP]);
- }
- break;
- case GL_ABGR_EXT:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_UINT(rgba[i][ACOMP]);
- dst[i*4+1] = FLOAT_TO_UINT(rgba[i][BCOMP]);
- dst[i*4+2] = FLOAT_TO_UINT(rgba[i][GCOMP]);
- dst[i*4+3] = FLOAT_TO_UINT(rgba[i][RCOMP]);
- }
- break;
- case GL_DUDV_ATI:
- case GL_DU8DV8_ATI:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_UINT(rgba[i][RCOMP]);
- dst[i*2+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
- }
- break;
- default:
- _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
- }
- }
- break;
- case GL_INT:
- {
- GLint *dst = (GLint *) dstAddr;
- switch (dstFormat) {
- case GL_RED:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_INT(rgba[i][RCOMP]);
- break;
- case GL_GREEN:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_INT(rgba[i][GCOMP]);
- break;
- case GL_BLUE:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_INT(rgba[i][BCOMP]);
- break;
- case GL_ALPHA:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_INT(rgba[i][ACOMP]);
- break;
- case GL_LUMINANCE:
- for (i=0;i<n;i++)
- dst[i] = FLOAT_TO_INT(luminance[i]);
- break;
- case GL_LUMINANCE_ALPHA:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_INT(luminance[i]);
- dst[i*2+1] = FLOAT_TO_INT(rgba[i][ACOMP]);
- }
- break;
- case GL_RG:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_INT(rgba[i][RCOMP]);
- dst[i*2+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
- }
- break;
- case GL_RGB:
- for (i=0;i<n;i++) {
- dst[i*3+0] = FLOAT_TO_INT(rgba[i][RCOMP]);
- dst[i*3+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
- dst[i*3+2] = FLOAT_TO_INT(rgba[i][BCOMP]);
- }
- break;
- case GL_RGBA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_INT(rgba[i][RCOMP]);
- dst[i*4+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
- dst[i*4+2] = FLOAT_TO_INT(rgba[i][BCOMP]);
- dst[i*4+3] = FLOAT_TO_INT(rgba[i][ACOMP]);
- }
- break;
- case GL_BGR:
- for (i=0;i<n;i++) {
- dst[i*3+0] = FLOAT_TO_INT(rgba[i][BCOMP]);
- dst[i*3+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
- dst[i*3+2] = FLOAT_TO_INT(rgba[i][RCOMP]);
- }
- break;
- case GL_BGRA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_INT(rgba[i][BCOMP]);
- dst[i*4+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
- dst[i*4+2] = FLOAT_TO_INT(rgba[i][RCOMP]);
- dst[i*4+3] = FLOAT_TO_INT(rgba[i][ACOMP]);
- }
- break;
- case GL_ABGR_EXT:
- for (i=0;i<n;i++) {
- dst[i*4+0] = FLOAT_TO_INT(rgba[i][ACOMP]);
- dst[i*4+1] = FLOAT_TO_INT(rgba[i][BCOMP]);
- dst[i*4+2] = FLOAT_TO_INT(rgba[i][GCOMP]);
- dst[i*4+3] = FLOAT_TO_INT(rgba[i][RCOMP]);
- }
- break;
- case GL_DUDV_ATI:
- case GL_DU8DV8_ATI:
- for (i=0;i<n;i++) {
- dst[i*2+0] = FLOAT_TO_INT(rgba[i][RCOMP]);
- dst[i*2+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
- }
- break;
- default:
- _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
- }
- }
- break;
- case GL_FLOAT:
- {
- GLfloat *dst = (GLfloat *) dstAddr;
- switch (dstFormat) {
- case GL_RED:
- for (i=0;i<n;i++)
- dst[i] = rgba[i][RCOMP];
- break;
- case GL_GREEN:
- for (i=0;i<n;i++)
- dst[i] = rgba[i][GCOMP];
- break;
- case GL_BLUE:
- for (i=0;i<n;i++)
- dst[i] = rgba[i][BCOMP];
- break;
- case GL_ALPHA:
- for (i=0;i<n;i++)
- dst[i] = rgba[i][ACOMP];
- break;
- case GL_LUMINANCE:
- for (i=0;i<n;i++)
- dst[i] = luminance[i];
- break;
- case GL_LUMINANCE_ALPHA:
- for (i=0;i<n;i++) {
- dst[i*2+0] = luminance[i];
- dst[i*2+1] = rgba[i][ACOMP];
- }
- break;
- case GL_RG:
- for (i=0;i<n;i++) {
- dst[i*2+0] = rgba[i][RCOMP];
- dst[i*2+1] = rgba[i][GCOMP];
- }
- break;
- case GL_RGB:
- for (i=0;i<n;i++) {
- dst[i*3+0] = rgba[i][RCOMP];
- dst[i*3+1] = rgba[i][GCOMP];
- dst[i*3+2] = rgba[i][BCOMP];
- }
- break;
- case GL_RGBA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = rgba[i][RCOMP];
- dst[i*4+1] = rgba[i][GCOMP];
- dst[i*4+2] = rgba[i][BCOMP];
- dst[i*4+3] = rgba[i][ACOMP];
- }
- break;
- case GL_BGR:
- for (i=0;i<n;i++) {
- dst[i*3+0] = rgba[i][BCOMP];
- dst[i*3+1] = rgba[i][GCOMP];
- dst[i*3+2] = rgba[i][RCOMP];
- }
- break;
- case GL_BGRA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = rgba[i][BCOMP];
- dst[i*4+1] = rgba[i][GCOMP];
- dst[i*4+2] = rgba[i][RCOMP];
- dst[i*4+3] = rgba[i][ACOMP];
- }
- break;
- case GL_ABGR_EXT:
- for (i=0;i<n;i++) {
- dst[i*4+0] = rgba[i][ACOMP];
- dst[i*4+1] = rgba[i][BCOMP];
- dst[i*4+2] = rgba[i][GCOMP];
- dst[i*4+3] = rgba[i][RCOMP];
- }
- break;
- case GL_DUDV_ATI:
- case GL_DU8DV8_ATI:
- for (i=0;i<n;i++) {
- dst[i*2+0] = rgba[i][RCOMP];
- dst[i*2+1] = rgba[i][GCOMP];
- }
- break;
- default:
- _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
- }
- }
- break;
- case GL_HALF_FLOAT_ARB:
- {
- GLhalfARB *dst = (GLhalfARB *) dstAddr;
- switch (dstFormat) {
- case GL_RED:
- for (i=0;i<n;i++)
- dst[i] = _mesa_float_to_half(rgba[i][RCOMP]);
- break;
- case GL_GREEN:
- for (i=0;i<n;i++)
- dst[i] = _mesa_float_to_half(rgba[i][GCOMP]);
- break;
- case GL_BLUE:
- for (i=0;i<n;i++)
- dst[i] = _mesa_float_to_half(rgba[i][BCOMP]);
- break;
- case GL_ALPHA:
- for (i=0;i<n;i++)
- dst[i] = _mesa_float_to_half(rgba[i][ACOMP]);
- break;
- case GL_LUMINANCE:
- for (i=0;i<n;i++)
- dst[i] = _mesa_float_to_half(luminance[i]);
- break;
- case GL_LUMINANCE_ALPHA:
- for (i=0;i<n;i++) {
- dst[i*2+0] = _mesa_float_to_half(luminance[i]);
- dst[i*2+1] = _mesa_float_to_half(rgba[i][ACOMP]);
- }
- break;
- case GL_RG:
- for (i=0;i<n;i++) {
- dst[i*2+0] = _mesa_float_to_half(rgba[i][RCOMP]);
- dst[i*2+1] = _mesa_float_to_half(rgba[i][GCOMP]);
- }
- break;
- case GL_RGB:
- for (i=0;i<n;i++) {
- dst[i*3+0] = _mesa_float_to_half(rgba[i][RCOMP]);
- dst[i*3+1] = _mesa_float_to_half(rgba[i][GCOMP]);
- dst[i*3+2] = _mesa_float_to_half(rgba[i][BCOMP]);
- }
- break;
- case GL_RGBA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = _mesa_float_to_half(rgba[i][RCOMP]);
- dst[i*4+1] = _mesa_float_to_half(rgba[i][GCOMP]);
- dst[i*4+2] = _mesa_float_to_half(rgba[i][BCOMP]);
- dst[i*4+3] = _mesa_float_to_half(rgba[i][ACOMP]);
- }
- break;
- case GL_BGR:
- for (i=0;i<n;i++) {
- dst[i*3+0] = _mesa_float_to_half(rgba[i][BCOMP]);
- dst[i*3+1] = _mesa_float_to_half(rgba[i][GCOMP]);
- dst[i*3+2] = _mesa_float_to_half(rgba[i][RCOMP]);
- }
- break;
- case GL_BGRA:
- for (i=0;i<n;i++) {
- dst[i*4+0] = _mesa_float_to_half(rgba[i][BCOMP]);
- dst[i*4+1] = _mesa_float_to_half(rgba[i][GCOMP]);
- dst[i*4+2] = _mesa_float_to_half(rgba[i][RCOMP]);
- dst[i*4+3] = _mesa_float_to_half(rgba[i][ACOMP]);
- }
- break;
- case GL_ABGR_EXT:
- for (i=0;i<n;i++) {
- dst[i*4+0] = _mesa_float_to_half(rgba[i][ACOMP]);
- dst[i*4+1] = _mesa_float_to_half(rgba[i][BCOMP]);
- dst[i*4+2] = _mesa_float_to_half(rgba[i][GCOMP]);
- dst[i*4+3] = _mesa_float_to_half(rgba[i][RCOMP]);
- }
- break;
- case GL_DUDV_ATI:
- case GL_DU8DV8_ATI:
- for (i=0;i<n;i++) {
- dst[i*2+0] = _mesa_float_to_half(rgba[i][RCOMP]);
- dst[i*2+1] = _mesa_float_to_half(rgba[i][GCOMP]);
- }
- break;
- default:
- _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
- }
- }
- break;
- case GL_UNSIGNED_BYTE_3_3_2:
- if (dstFormat == GL_RGB) {
- GLubyte *dst = (GLubyte *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 7.0F) << 5)
- | (IROUND(rgba[i][GCOMP] * 7.0F) << 2)
- | (IROUND(rgba[i][BCOMP] * 3.0F) );
- }
- }
- break;
- case GL_UNSIGNED_BYTE_2_3_3_REV:
- if (dstFormat == GL_RGB) {
- GLubyte *dst = (GLubyte *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 7.0F) )
- | (IROUND(rgba[i][GCOMP] * 7.0F) << 3)
- | (IROUND(rgba[i][BCOMP] * 3.0F) << 6);
- }
- }
- break;
- case GL_UNSIGNED_SHORT_5_6_5:
- if (dstFormat == GL_RGB) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) << 11)
- | (IROUND(rgba[i][GCOMP] * 63.0F) << 5)
- | (IROUND(rgba[i][BCOMP] * 31.0F) );
- }
- }
- break;
- case GL_UNSIGNED_SHORT_5_6_5_REV:
- if (dstFormat == GL_RGB) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) )
- | (IROUND(rgba[i][GCOMP] * 63.0F) << 5)
- | (IROUND(rgba[i][BCOMP] * 31.0F) << 11);
- }
- }
- break;
- case GL_UNSIGNED_SHORT_4_4_4_4:
- if (dstFormat == GL_RGBA) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 15.0F) << 12)
- | (IROUND(rgba[i][GCOMP] * 15.0F) << 8)
- | (IROUND(rgba[i][BCOMP] * 15.0F) << 4)
- | (IROUND(rgba[i][ACOMP] * 15.0F) );
- }
- }
- else if (dstFormat == GL_BGRA) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][BCOMP] * 15.0F) << 12)
- | (IROUND(rgba[i][GCOMP] * 15.0F) << 8)
- | (IROUND(rgba[i][RCOMP] * 15.0F) << 4)
- | (IROUND(rgba[i][ACOMP] * 15.0F) );
- }
- }
- else if (dstFormat == GL_ABGR_EXT) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][ACOMP] * 15.0F) << 12)
- | (IROUND(rgba[i][BCOMP] * 15.0F) << 8)
- | (IROUND(rgba[i][GCOMP] * 15.0F) << 4)
- | (IROUND(rgba[i][RCOMP] * 15.0F) );
- }
- }
- break;
- case GL_UNSIGNED_SHORT_4_4_4_4_REV:
- if (dstFormat == GL_RGBA) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 15.0F) )
- | (IROUND(rgba[i][GCOMP] * 15.0F) << 4)
- | (IROUND(rgba[i][BCOMP] * 15.0F) << 8)
- | (IROUND(rgba[i][ACOMP] * 15.0F) << 12);
- }
- }
- else if (dstFormat == GL_BGRA) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][BCOMP] * 15.0F) )
- | (IROUND(rgba[i][GCOMP] * 15.0F) << 4)
- | (IROUND(rgba[i][RCOMP] * 15.0F) << 8)
- | (IROUND(rgba[i][ACOMP] * 15.0F) << 12);
- }
- }
- else if (dstFormat == GL_ABGR_EXT) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][ACOMP] * 15.0F) )
- | (IROUND(rgba[i][BCOMP] * 15.0F) << 4)
- | (IROUND(rgba[i][GCOMP] * 15.0F) << 8)
- | (IROUND(rgba[i][RCOMP] * 15.0F) << 12);
- }
- }
- break;
- case GL_UNSIGNED_SHORT_5_5_5_1:
- if (dstFormat == GL_RGBA) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) << 11)
- | (IROUND(rgba[i][GCOMP] * 31.0F) << 6)
- | (IROUND(rgba[i][BCOMP] * 31.0F) << 1)
- | (IROUND(rgba[i][ACOMP] * 1.0F) );
- }
- }
- else if (dstFormat == GL_BGRA) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][BCOMP] * 31.0F) << 11)
- | (IROUND(rgba[i][GCOMP] * 31.0F) << 6)
- | (IROUND(rgba[i][RCOMP] * 31.0F) << 1)
- | (IROUND(rgba[i][ACOMP] * 1.0F) );
- }
- }
- else if (dstFormat == GL_ABGR_EXT) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][ACOMP] * 31.0F) << 11)
- | (IROUND(rgba[i][BCOMP] * 31.0F) << 6)
- | (IROUND(rgba[i][GCOMP] * 31.0F) << 1)
- | (IROUND(rgba[i][RCOMP] * 1.0F) );
- }
- }
- break;
- case GL_UNSIGNED_SHORT_1_5_5_5_REV:
- if (dstFormat == GL_RGBA) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) )
- | (IROUND(rgba[i][GCOMP] * 31.0F) << 5)
- | (IROUND(rgba[i][BCOMP] * 31.0F) << 10)
- | (IROUND(rgba[i][ACOMP] * 1.0F) << 15);
- }
- }
- else if (dstFormat == GL_BGRA) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][BCOMP] * 31.0F) )
- | (IROUND(rgba[i][GCOMP] * 31.0F) << 5)
- | (IROUND(rgba[i][RCOMP] * 31.0F) << 10)
- | (IROUND(rgba[i][ACOMP] * 1.0F) << 15);
- }
- }
- else if (dstFormat == GL_ABGR_EXT) {
- GLushort *dst = (GLushort *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][ACOMP] * 31.0F) )
- | (IROUND(rgba[i][BCOMP] * 31.0F) << 5)
- | (IROUND(rgba[i][GCOMP] * 31.0F) << 10)
- | (IROUND(rgba[i][RCOMP] * 1.0F) << 15);
- }
- }
- break;
- case GL_UNSIGNED_INT_8_8_8_8:
- if (dstFormat == GL_RGBA) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 255.F) << 24)
- | (IROUND(rgba[i][GCOMP] * 255.F) << 16)
- | (IROUND(rgba[i][BCOMP] * 255.F) << 8)
- | (IROUND(rgba[i][ACOMP] * 255.F) );
- }
- }
- else if (dstFormat == GL_BGRA) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][BCOMP] * 255.F) << 24)
- | (IROUND(rgba[i][GCOMP] * 255.F) << 16)
- | (IROUND(rgba[i][RCOMP] * 255.F) << 8)
- | (IROUND(rgba[i][ACOMP] * 255.F) );
- }
- }
- else if (dstFormat == GL_ABGR_EXT) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][ACOMP] * 255.F) << 24)
- | (IROUND(rgba[i][BCOMP] * 255.F) << 16)
- | (IROUND(rgba[i][GCOMP] * 255.F) << 8)
- | (IROUND(rgba[i][RCOMP] * 255.F) );
- }
- }
- break;
- case GL_UNSIGNED_INT_8_8_8_8_REV:
- if (dstFormat == GL_RGBA) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 255.0F) )
- | (IROUND(rgba[i][GCOMP] * 255.0F) << 8)
- | (IROUND(rgba[i][BCOMP] * 255.0F) << 16)
- | (IROUND(rgba[i][ACOMP] * 255.0F) << 24);
- }
- }
- else if (dstFormat == GL_BGRA) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][BCOMP] * 255.0F) )
- | (IROUND(rgba[i][GCOMP] * 255.0F) << 8)
- | (IROUND(rgba[i][RCOMP] * 255.0F) << 16)
- | (IROUND(rgba[i][ACOMP] * 255.0F) << 24);
- }
- }
- else if (dstFormat == GL_ABGR_EXT) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][ACOMP] * 255.0F) )
- | (IROUND(rgba[i][BCOMP] * 255.0F) << 8)
- | (IROUND(rgba[i][GCOMP] * 255.0F) << 16)
- | (IROUND(rgba[i][RCOMP] * 255.0F) << 24);
- }
- }
- break;
- case GL_UNSIGNED_INT_10_10_10_2:
- if (dstFormat == GL_RGBA) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 1023.0F) << 22)
- | (IROUND(rgba[i][GCOMP] * 1023.0F) << 12)
- | (IROUND(rgba[i][BCOMP] * 1023.0F) << 2)
- | (IROUND(rgba[i][ACOMP] * 3.0F) );
- }
- }
- else if (dstFormat == GL_BGRA) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][BCOMP] * 1023.0F) << 22)
- | (IROUND(rgba[i][GCOMP] * 1023.0F) << 12)
- | (IROUND(rgba[i][RCOMP] * 1023.0F) << 2)
- | (IROUND(rgba[i][ACOMP] * 3.0F) );
- }
- }
- else if (dstFormat == GL_ABGR_EXT) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][ACOMP] * 1023.0F) << 22)
- | (IROUND(rgba[i][BCOMP] * 1023.0F) << 12)
- | (IROUND(rgba[i][GCOMP] * 1023.0F) << 2)
- | (IROUND(rgba[i][RCOMP] * 3.0F) );
- }
- }
- break;
- case GL_UNSIGNED_INT_2_10_10_10_REV:
- if (dstFormat == GL_RGBA) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][RCOMP] * 1023.0F) )
- | (IROUND(rgba[i][GCOMP] * 1023.0F) << 10)
- | (IROUND(rgba[i][BCOMP] * 1023.0F) << 20)
- | (IROUND(rgba[i][ACOMP] * 3.0F) << 30);
- }
- }
- else if (dstFormat == GL_BGRA) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][BCOMP] * 1023.0F) )
- | (IROUND(rgba[i][GCOMP] * 1023.0F) << 10)
- | (IROUND(rgba[i][RCOMP] * 1023.0F) << 20)
- | (IROUND(rgba[i][ACOMP] * 3.0F) << 30);
- }
- }
- else if (dstFormat == GL_ABGR_EXT) {
- GLuint *dst = (GLuint *) dstAddr;
- for (i=0;i<n;i++) {
- dst[i] = (IROUND(rgba[i][ACOMP] * 1023.0F) )
- | (IROUND(rgba[i][BCOMP] * 1023.0F) << 10)
- | (IROUND(rgba[i][GCOMP] * 1023.0F) << 20)
- | (IROUND(rgba[i][RCOMP] * 3.0F) << 30);
- }
- }
- break;
- default:
- _mesa_problem(ctx, "bad type in _mesa_pack_rgba_span_float");
- return;
- }
-
- if (dstPacking->SwapBytes) {
- GLint swapSize = _mesa_sizeof_packed_type(dstType);
- if (swapSize == 2) {
- if (dstPacking->SwapBytes) {
- _mesa_swap2((GLushort *) dstAddr, n * comps);
- }
- }
- else if (swapSize == 4) {
- if (dstPacking->SwapBytes) {
- _mesa_swap4((GLuint *) dstAddr, n * comps);
- }
- }
- }
-}
-
-
-#define SWAP2BYTE(VALUE) \
- { \
- GLubyte *bytes = (GLubyte *) &(VALUE); \
- GLubyte tmp = bytes[0]; \
- bytes[0] = bytes[1]; \
- bytes[1] = tmp; \
- }
-
-#define SWAP4BYTE(VALUE) \
- { \
- GLubyte *bytes = (GLubyte *) &(VALUE); \
- GLubyte tmp = bytes[0]; \
- bytes[0] = bytes[3]; \
- bytes[3] = tmp; \
- tmp = bytes[1]; \
- bytes[1] = bytes[2]; \
- bytes[2] = tmp; \
- }
-
-
-static void
-extract_uint_indexes(GLuint n, GLuint indexes[],
- GLenum srcFormat, GLenum srcType, const GLvoid *src,
- const struct gl_pixelstore_attrib *unpack )
-{
- ASSERT(srcFormat == GL_COLOR_INDEX || srcFormat == GL_STENCIL_INDEX);
-
- ASSERT(srcType == GL_BITMAP ||
- srcType == GL_UNSIGNED_BYTE ||
- srcType == GL_BYTE ||
- srcType == GL_UNSIGNED_SHORT ||
- srcType == GL_SHORT ||
- srcType == GL_UNSIGNED_INT ||
- srcType == GL_INT ||
- srcType == GL_UNSIGNED_INT_24_8_EXT ||
- srcType == GL_HALF_FLOAT_ARB ||
- srcType == GL_FLOAT);
-
- switch (srcType) {
- case GL_BITMAP:
- {
- GLubyte *ubsrc = (GLubyte *) src;
- if (unpack->LsbFirst) {
- GLubyte mask = 1 << (unpack->SkipPixels & 0x7);
- GLuint i;
- for (i = 0; i < n; i++) {
- indexes[i] = (*ubsrc & mask) ? 1 : 0;
- if (mask == 128) {
- mask = 1;
- ubsrc++;
- }
- else {
- mask = mask << 1;
- }
- }
- }
- else {
- GLubyte mask = 128 >> (unpack->SkipPixels & 0x7);
- GLuint i;
- for (i = 0; i < n; i++) {
- indexes[i] = (*ubsrc & mask) ? 1 : 0;
- if (mask == 1) {
- mask = 128;
- ubsrc++;
- }
- else {
- mask = mask >> 1;
- }
- }
- }
- }
- break;
- case GL_UNSIGNED_BYTE:
- {
- GLuint i;
- const GLubyte *s = (const GLubyte *) src;
- for (i = 0; i < n; i++)
- indexes[i] = s[i];
- }
- break;
- case GL_BYTE:
- {
- GLuint i;
- const GLbyte *s = (const GLbyte *) src;
- for (i = 0; i < n; i++)
- indexes[i] = s[i];
- }
- break;
- case GL_UNSIGNED_SHORT:
- {
- GLuint i;
- const GLushort *s = (const GLushort *) src;
- if (unpack->SwapBytes) {
- for (i = 0; i < n; i++) {
- GLushort value = s[i];
- SWAP2BYTE(value);
- indexes[i] = value;
- }
- }
- else {
- for (i = 0; i < n; i++)
- indexes[i] = s[i];
- }
- }
- break;
- case GL_SHORT:
- {
- GLuint i;
- const GLshort *s = (const GLshort *) src;
- if (unpack->SwapBytes) {
- for (i = 0; i < n; i++) {
- GLshort value = s[i];
- SWAP2BYTE(value);
- indexes[i] = value;
- }
- }
- else {
- for (i = 0; i < n; i++)
- indexes[i] = s[i];
- }
- }
- break;
- case GL_UNSIGNED_INT:
- {
- GLuint i;
- const GLuint *s = (const GLuint *) src;
- if (unpack->SwapBytes) {
- for (i = 0; i < n; i++) {
- GLuint value = s[i];
- SWAP4BYTE(value);
- indexes[i] = value;
- }
- }
- else {
- for (i = 0; i < n; i++)
- indexes[i] = s[i];
- }
- }
- break;
- case GL_INT:
- {
- GLuint i;
- const GLint *s = (const GLint *) src;
- if (unpack->SwapBytes) {
- for (i = 0; i < n; i++) {
- GLint value = s[i];
- SWAP4BYTE(value);
- indexes[i] = value;
- }
- }
- else {
- for (i = 0; i < n; i++)
- indexes[i] = s[i];
- }
- }
- break;
- case GL_FLOAT:
- {
- GLuint i;
- const GLfloat *s = (const GLfloat *) src;
- if (unpack->SwapBytes) {
- for (i = 0; i < n; i++) {
- GLfloat value = s[i];
- SWAP4BYTE(value);
- indexes[i] = (GLuint) value;
- }
- }
- else {
- for (i = 0; i < n; i++)
- indexes[i] = (GLuint) s[i];
- }
- }
- break;
- case GL_HALF_FLOAT_ARB:
- {
- GLuint i;
- const GLhalfARB *s = (const GLhalfARB *) src;
- if (unpack->SwapBytes) {
- for (i = 0; i < n; i++) {
- GLhalfARB value = s[i];
- SWAP2BYTE(value);
- indexes[i] = (GLuint) _mesa_half_to_float(value);
- }
- }
- else {
- for (i = 0; i < n; i++)
- indexes[i] = (GLuint) _mesa_half_to_float(s[i]);
- }
- }
- break;
- case GL_UNSIGNED_INT_24_8_EXT:
- {
- GLuint i;
- const GLuint *s = (const GLuint *) src;
- if (unpack->SwapBytes) {
- for (i = 0; i < n; i++) {
- GLuint value = s[i];
- SWAP4BYTE(value);
- indexes[i] = value & 0xff; /* lower 8 bits */
- }
- }
- else {
- for (i = 0; i < n; i++)
- indexes[i] = s[i] & 0xff; /* lower 8 bits */
- }
- }
- break;
-
- default:
- _mesa_problem(NULL, "bad srcType in extract_uint_indexes");
- return;
- }
-}
-
-
-/*
- * This function extracts floating point RGBA values from arbitrary
- * image data. srcFormat and srcType are the format and type parameters
- * passed to glDrawPixels, glTexImage[123]D, glTexSubImage[123]D, etc.
- *
- * Refering to section 3.6.4 of the OpenGL 1.2 spec, this function
- * implements the "Conversion to floating point", "Conversion to RGB",
- * and "Final Expansion to RGBA" operations.
- *
- * Args: n - number of pixels
- * rgba - output colors
- * srcFormat - format of incoming data
- * srcType - data type of incoming data
- * src - source data pointer
- * swapBytes - perform byteswapping of incoming data?
- */
-static void
-extract_float_rgba(GLuint n, GLfloat rgba[][4],
- GLenum srcFormat, GLenum srcType, const GLvoid *src,
- GLboolean swapBytes)
-{
- GLint redIndex, greenIndex, blueIndex, alphaIndex;
- GLint stride;
- GLint rComp, bComp, gComp, aComp;
- GLboolean intFormat;
- GLfloat rs = 1.0f, gs = 1.0f, bs = 1.0f, as = 1.0f; /* scale factors */
-
- ASSERT(srcFormat == GL_RED ||
- srcFormat == GL_GREEN ||
- srcFormat == GL_BLUE ||
- srcFormat == GL_ALPHA ||
- srcFormat == GL_LUMINANCE ||
- srcFormat == GL_LUMINANCE_ALPHA ||
- srcFormat == GL_INTENSITY ||
- srcFormat == GL_RG ||
- srcFormat == GL_RGB ||
- srcFormat == GL_BGR ||
- srcFormat == GL_RGBA ||
- srcFormat == GL_BGRA ||
- srcFormat == GL_ABGR_EXT ||
- srcFormat == GL_DU8DV8_ATI ||
- srcFormat == GL_DUDV_ATI ||
- srcFormat == GL_RED_INTEGER_EXT ||
- srcFormat == GL_GREEN_INTEGER_EXT ||
- srcFormat == GL_BLUE_INTEGER_EXT ||
- srcFormat == GL_ALPHA_INTEGER_EXT ||
- srcFormat == GL_RGB_INTEGER_EXT ||
- srcFormat == GL_RGBA_INTEGER_EXT ||
- srcFormat == GL_BGR_INTEGER_EXT ||
- srcFormat == GL_BGRA_INTEGER_EXT ||
- srcFormat == GL_LUMINANCE_INTEGER_EXT ||
- srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT);
-
- ASSERT(srcType == GL_UNSIGNED_BYTE ||
- srcType == GL_BYTE ||
- srcType == GL_UNSIGNED_SHORT ||
- srcType == GL_SHORT ||
- srcType == GL_UNSIGNED_INT ||
- srcType == GL_INT ||
- srcType == GL_HALF_FLOAT_ARB ||
- srcType == GL_FLOAT ||
- srcType == GL_UNSIGNED_BYTE_3_3_2 ||
- srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
- srcType == GL_UNSIGNED_SHORT_5_6_5 ||
- srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
- srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
- srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
- srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
- srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
- srcType == GL_UNSIGNED_INT_8_8_8_8 ||
- srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
- srcType == GL_UNSIGNED_INT_10_10_10_2 ||
- srcType == GL_UNSIGNED_INT_2_10_10_10_REV);
-
- rComp = gComp = bComp = aComp = -1;
-
- switch (srcFormat) {
- case GL_RED:
- case GL_RED_INTEGER_EXT:
- redIndex = 0;
- greenIndex = blueIndex = alphaIndex = -1;
- stride = 1;
- break;
- case GL_GREEN:
- case GL_GREEN_INTEGER_EXT:
- greenIndex = 0;
- redIndex = blueIndex = alphaIndex = -1;
- stride = 1;
- break;
- case GL_BLUE:
- case GL_BLUE_INTEGER_EXT:
- blueIndex = 0;
- redIndex = greenIndex = alphaIndex = -1;
- stride = 1;
- break;
- case GL_ALPHA:
- case GL_ALPHA_INTEGER_EXT:
- redIndex = greenIndex = blueIndex = -1;
- alphaIndex = 0;
- stride = 1;
- break;
- case GL_LUMINANCE:
- case GL_LUMINANCE_INTEGER_EXT:
- redIndex = greenIndex = blueIndex = 0;
- alphaIndex = -1;
- stride = 1;
- break;
- case GL_LUMINANCE_ALPHA:
- case GL_LUMINANCE_ALPHA_INTEGER_EXT:
- redIndex = greenIndex = blueIndex = 0;
- alphaIndex = 1;
- stride = 2;
- break;
- case GL_INTENSITY:
- redIndex = greenIndex = blueIndex = alphaIndex = 0;
- stride = 1;
- break;
- case GL_RG:
- case GL_RG_INTEGER:
- redIndex = 0;
- greenIndex = 1;
- blueIndex = -1;
- alphaIndex = -1;
- rComp = 0;
- gComp = 1;
- bComp = 2;
- aComp = 3;
- stride = 2;
- break;
- case GL_RGB:
- case GL_RGB_INTEGER:
- redIndex = 0;
- greenIndex = 1;
- blueIndex = 2;
- alphaIndex = -1;
- rComp = 0;
- gComp = 1;
- bComp = 2;
- aComp = 3;
- stride = 3;
- break;
- case GL_BGR:
- redIndex = 2;
- greenIndex = 1;
- blueIndex = 0;
- alphaIndex = -1;
- rComp = 2;
- gComp = 1;
- bComp = 0;
- aComp = 3;
- stride = 3;
- break;
- case GL_RGBA:
- case GL_RGBA_INTEGER:
- redIndex = 0;
- greenIndex = 1;
- blueIndex = 2;
- alphaIndex = 3;
- rComp = 0;
- gComp = 1;
- bComp = 2;
- aComp = 3;
- stride = 4;
- break;
- case GL_BGRA:
- redIndex = 2;
- greenIndex = 1;
- blueIndex = 0;
- alphaIndex = 3;
- rComp = 2;
- gComp = 1;
- bComp = 0;
- aComp = 3;
- stride = 4;
- break;
- case GL_ABGR_EXT:
- redIndex = 3;
- greenIndex = 2;
- blueIndex = 1;
- alphaIndex = 0;
- rComp = 3;
- gComp = 2;
- bComp = 1;
- aComp = 0;
- stride = 4;
- break;
- case GL_DU8DV8_ATI:
- case GL_DUDV_ATI:
- redIndex = 0;
- greenIndex = 1;
- blueIndex = -1;
- alphaIndex = -1;
- stride = 2;
- break;
- default:
- _mesa_problem(NULL, "bad srcFormat %s in extract float data",
- _mesa_lookup_enum_by_nr(srcFormat));
- return;
- }
-
- intFormat = _mesa_is_integer_format(srcFormat);
-
-#define PROCESS(INDEX, CHANNEL, DEFAULT, DEFAULT_INT, TYPE, CONVERSION) \
- if ((INDEX) < 0) { \
- GLuint i; \
- if (intFormat) { \
- for (i = 0; i < n; i++) { \
- rgba[i][CHANNEL] = DEFAULT_INT; \
- } \
- } \
- else { \
- for (i = 0; i < n; i++) { \
- rgba[i][CHANNEL] = DEFAULT; \
- } \
- } \
- } \
- else if (swapBytes) { \
- const TYPE *s = (const TYPE *) src; \
- GLuint i; \
- for (i = 0; i < n; i++) { \
- TYPE value = s[INDEX]; \
- if (sizeof(TYPE) == 2) { \
- SWAP2BYTE(value); \
- } \
- else if (sizeof(TYPE) == 4) { \
- SWAP4BYTE(value); \
- } \
- if (intFormat) \
- rgba[i][CHANNEL] = (GLfloat) value; \
- else \
- rgba[i][CHANNEL] = (GLfloat) CONVERSION(value); \
- s += stride; \
- } \
- } \
- else { \
- const TYPE *s = (const TYPE *) src; \
- GLuint i; \
- if (intFormat) { \
- for (i = 0; i < n; i++) { \
- rgba[i][CHANNEL] = (GLfloat) s[INDEX]; \
- s += stride; \
- } \
- } \
- else { \
- for (i = 0; i < n; i++) { \
- rgba[i][CHANNEL] = (GLfloat) CONVERSION(s[INDEX]); \
- s += stride; \
- } \
- } \
- }
-
- switch (srcType) {
- case GL_UNSIGNED_BYTE:
- PROCESS(redIndex, RCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT);
- PROCESS(greenIndex, GCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT);
- PROCESS(blueIndex, BCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT);
- PROCESS(alphaIndex, ACOMP, 1.0F, 255, GLubyte, UBYTE_TO_FLOAT);
- break;
- case GL_BYTE:
- PROCESS(redIndex, RCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT);
- PROCESS(greenIndex, GCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT);
- PROCESS(blueIndex, BCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT);
- PROCESS(alphaIndex, ACOMP, 1.0F, 127, GLbyte, BYTE_TO_FLOAT);
- break;
- case GL_UNSIGNED_SHORT:
- PROCESS(redIndex, RCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT);
- PROCESS(greenIndex, GCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT);
- PROCESS(blueIndex, BCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT);
- PROCESS(alphaIndex, ACOMP, 1.0F, 0xffff, GLushort, USHORT_TO_FLOAT);
- break;
- case GL_SHORT:
- PROCESS(redIndex, RCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT);
- PROCESS(greenIndex, GCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT);
- PROCESS(blueIndex, BCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT);
- PROCESS(alphaIndex, ACOMP, 1.0F, 32767, GLshort, SHORT_TO_FLOAT);
- break;
- case GL_UNSIGNED_INT:
- PROCESS(redIndex, RCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT);
- PROCESS(greenIndex, GCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT);
- PROCESS(blueIndex, BCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT);
- PROCESS(alphaIndex, ACOMP, 1.0F, 0xffffffff, GLuint, UINT_TO_FLOAT);
- break;
- case GL_INT:
- PROCESS(redIndex, RCOMP, 0.0F, 0, GLint, INT_TO_FLOAT);
- PROCESS(greenIndex, GCOMP, 0.0F, 0, GLint, INT_TO_FLOAT);
- PROCESS(blueIndex, BCOMP, 0.0F, 0, GLint, INT_TO_FLOAT);
- PROCESS(alphaIndex, ACOMP, 1.0F, 2147483647, GLint, INT_TO_FLOAT);
- break;
- case GL_FLOAT:
- PROCESS(redIndex, RCOMP, 0.0F, 0.0F, GLfloat, (GLfloat));
- PROCESS(greenIndex, GCOMP, 0.0F, 0.0F, GLfloat, (GLfloat));
- PROCESS(blueIndex, BCOMP, 0.0F, 0.0F, GLfloat, (GLfloat));
- PROCESS(alphaIndex, ACOMP, 1.0F, 1.0F, GLfloat, (GLfloat));
- break;
- case GL_HALF_FLOAT_ARB:
- PROCESS(redIndex, RCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float);
- PROCESS(greenIndex, GCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float);
- PROCESS(blueIndex, BCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float);
- PROCESS(alphaIndex, ACOMP, 1.0F, 1.0F, GLhalfARB, _mesa_half_to_float);
- break;
- case GL_UNSIGNED_BYTE_3_3_2:
- {
- const GLubyte *ubsrc = (const GLubyte *) src;
- GLuint i;
- if (!intFormat) {
- rs = 1.0F / 7.0F;
- gs = 1.0F / 7.0F;
- bs = 1.0F / 3.0F;
- }
- for (i = 0; i < n; i ++) {
- GLubyte p = ubsrc[i];
- rgba[i][rComp] = ((p >> 5) ) * rs;
- rgba[i][gComp] = ((p >> 2) & 0x7) * gs;
- rgba[i][bComp] = ((p ) & 0x3) * bs;
- rgba[i][aComp] = 1.0F;
- }
- }
- break;
- case GL_UNSIGNED_BYTE_2_3_3_REV:
- {
- const GLubyte *ubsrc = (const GLubyte *) src;
- GLuint i;
- if (!intFormat) {
- rs = 1.0F / 7.0F;
- gs = 1.0F / 7.0F;
- bs = 1.0F / 3.0F;
- }
- for (i = 0; i < n; i ++) {
- GLubyte p = ubsrc[i];
- rgba[i][rComp] = ((p ) & 0x7) * rs;
- rgba[i][gComp] = ((p >> 3) & 0x7) * gs;
- rgba[i][bComp] = ((p >> 6) ) * bs;
- rgba[i][aComp] = 1.0F;
- }
- }
- break;
- case GL_UNSIGNED_SHORT_5_6_5:
- if (!intFormat) {
- rs = 1.0F / 31.0F;
- gs = 1.0F / 63.0F;
- bs = 1.0F / 31.0F;
- }
- if (swapBytes) {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- SWAP2BYTE(p);
- rgba[i][rComp] = ((p >> 11) ) * rs;
- rgba[i][gComp] = ((p >> 5) & 0x3f) * gs;
- rgba[i][bComp] = ((p ) & 0x1f) * bs;
- rgba[i][aComp] = 1.0F;
- }
- }
- else {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- rgba[i][rComp] = ((p >> 11) ) * rs;
- rgba[i][gComp] = ((p >> 5) & 0x3f) * gs;
- rgba[i][bComp] = ((p ) & 0x1f) * bs;
- rgba[i][aComp] = 1.0F;
- }
- }
- break;
- case GL_UNSIGNED_SHORT_5_6_5_REV:
- if (!intFormat) {
- rs = 1.0F / 31.0F;
- gs = 1.0F / 63.0F;
- bs = 1.0F / 31.0F;
- }
- if (swapBytes) {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- SWAP2BYTE(p);
- rgba[i][rComp] = ((p ) & 0x1f) * rs;
- rgba[i][gComp] = ((p >> 5) & 0x3f) * gs;
- rgba[i][bComp] = ((p >> 11) ) * bs;
- rgba[i][aComp] = 1.0F;
- }
- }
- else {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- rgba[i][rComp] = ((p ) & 0x1f) * rs;
- rgba[i][gComp] = ((p >> 5) & 0x3f) * gs;
- rgba[i][bComp] = ((p >> 11) ) * bs;
- rgba[i][aComp] = 1.0F;
- }
- }
- break;
- case GL_UNSIGNED_SHORT_4_4_4_4:
- if (!intFormat) {
- rs = gs = bs = as = 1.0F / 15.0F;
- }
- if (swapBytes) {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- SWAP2BYTE(p);
- rgba[i][rComp] = ((p >> 12) ) * rs;
- rgba[i][gComp] = ((p >> 8) & 0xf) * gs;
- rgba[i][bComp] = ((p >> 4) & 0xf) * bs;
- rgba[i][aComp] = ((p ) & 0xf) * as;
- }
- }
- else {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- rgba[i][rComp] = ((p >> 12) ) * rs;
- rgba[i][gComp] = ((p >> 8) & 0xf) * gs;
- rgba[i][bComp] = ((p >> 4) & 0xf) * bs;
- rgba[i][aComp] = ((p ) & 0xf) * as;
- }
- }
- break;
- case GL_UNSIGNED_SHORT_4_4_4_4_REV:
- if (!intFormat) {
- rs = gs = bs = as = 1.0F / 15.0F;
- }
- if (swapBytes) {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- SWAP2BYTE(p);
- rgba[i][rComp] = ((p ) & 0xf) * rs;
- rgba[i][gComp] = ((p >> 4) & 0xf) * gs;
- rgba[i][bComp] = ((p >> 8) & 0xf) * bs;
- rgba[i][aComp] = ((p >> 12) ) * as;
- }
- }
- else {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- rgba[i][rComp] = ((p ) & 0xf) * rs;
- rgba[i][gComp] = ((p >> 4) & 0xf) * gs;
- rgba[i][bComp] = ((p >> 8) & 0xf) * bs;
- rgba[i][aComp] = ((p >> 12) ) * as;
- }
- }
- break;
- case GL_UNSIGNED_SHORT_5_5_5_1:
- if (!intFormat) {
- rs = gs = bs = 1.0F / 31.0F;
- }
- if (swapBytes) {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- SWAP2BYTE(p);
- rgba[i][rComp] = ((p >> 11) ) * rs;
- rgba[i][gComp] = ((p >> 6) & 0x1f) * gs;
- rgba[i][bComp] = ((p >> 1) & 0x1f) * bs;
- rgba[i][aComp] = ((p ) & 0x1) * as;
- }
- }
- else {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- rgba[i][rComp] = ((p >> 11) ) * rs;
- rgba[i][gComp] = ((p >> 6) & 0x1f) * gs;
- rgba[i][bComp] = ((p >> 1) & 0x1f) * bs;
- rgba[i][aComp] = ((p ) & 0x1) * as;
- }
- }
- break;
- case GL_UNSIGNED_SHORT_1_5_5_5_REV:
- if (!intFormat) {
- rs = gs = bs = 1.0F / 31.0F;
- }
- if (swapBytes) {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- SWAP2BYTE(p);
- rgba[i][rComp] = ((p ) & 0x1f) * rs;
- rgba[i][gComp] = ((p >> 5) & 0x1f) * gs;
- rgba[i][bComp] = ((p >> 10) & 0x1f) * bs;
- rgba[i][aComp] = ((p >> 15) ) * as;
- }
- }
- else {
- const GLushort *ussrc = (const GLushort *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLushort p = ussrc[i];
- rgba[i][rComp] = ((p ) & 0x1f) * rs;
- rgba[i][gComp] = ((p >> 5) & 0x1f) * gs;
- rgba[i][bComp] = ((p >> 10) & 0x1f) * bs;
- rgba[i][aComp] = ((p >> 15) ) * as;
- }
- }
- break;
- case GL_UNSIGNED_INT_8_8_8_8:
- if (swapBytes) {
- const GLuint *uisrc = (const GLuint *) src;
- GLuint i;
- if (intFormat) {
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- rgba[i][rComp] = (GLfloat) ((p ) & 0xff);
- rgba[i][gComp] = (GLfloat) ((p >> 8) & 0xff);
- rgba[i][bComp] = (GLfloat) ((p >> 16) & 0xff);
- rgba[i][aComp] = (GLfloat) ((p >> 24) );
- }
- }
- else {
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- rgba[i][rComp] = UBYTE_TO_FLOAT((p ) & 0xff);
- rgba[i][gComp] = UBYTE_TO_FLOAT((p >> 8) & 0xff);
- rgba[i][bComp] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
- rgba[i][aComp] = UBYTE_TO_FLOAT((p >> 24) );
- }
- }
- }
- else {
- const GLuint *uisrc = (const GLuint *) src;
- GLuint i;
- if (intFormat) {
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- rgba[i][rComp] = (GLfloat) ((p >> 24) );
- rgba[i][gComp] = (GLfloat) ((p >> 16) & 0xff);
- rgba[i][bComp] = (GLfloat) ((p >> 8) & 0xff);
- rgba[i][aComp] = (GLfloat) ((p ) & 0xff);
- }
- }
- else {
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- rgba[i][rComp] = UBYTE_TO_FLOAT((p >> 24) );
- rgba[i][gComp] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
- rgba[i][bComp] = UBYTE_TO_FLOAT((p >> 8) & 0xff);
- rgba[i][aComp] = UBYTE_TO_FLOAT((p ) & 0xff);
- }
- }
- }
- break;
- case GL_UNSIGNED_INT_8_8_8_8_REV:
- if (swapBytes) {
- const GLuint *uisrc = (const GLuint *) src;
- GLuint i;
- if (intFormat) {
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- rgba[i][rComp] = (GLfloat) ((p >> 24) );
- rgba[i][gComp] = (GLfloat) ((p >> 16) & 0xff);
- rgba[i][bComp] = (GLfloat) ((p >> 8) & 0xff);
- rgba[i][aComp] = (GLfloat) ((p ) & 0xff);
- }
- }
- else {
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- rgba[i][rComp] = UBYTE_TO_FLOAT((p >> 24) );
- rgba[i][gComp] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
- rgba[i][bComp] = UBYTE_TO_FLOAT((p >> 8) & 0xff);
- rgba[i][aComp] = UBYTE_TO_FLOAT((p ) & 0xff);
- }
- }
- }
- else {
- const GLuint *uisrc = (const GLuint *) src;
- GLuint i;
- if (intFormat) {
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- rgba[i][rComp] = (GLfloat) ((p ) & 0xff);
- rgba[i][gComp] = (GLfloat) ((p >> 8) & 0xff);
- rgba[i][bComp] = (GLfloat) ((p >> 16) & 0xff);
- rgba[i][aComp] = (GLfloat) ((p >> 24) );
- }
- }
- else {
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- rgba[i][rComp] = UBYTE_TO_FLOAT((p ) & 0xff);
- rgba[i][gComp] = UBYTE_TO_FLOAT((p >> 8) & 0xff);
- rgba[i][bComp] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
- rgba[i][aComp] = UBYTE_TO_FLOAT((p >> 24) );
- }
- }
- }
- break;
- case GL_UNSIGNED_INT_10_10_10_2:
- if (!intFormat) {
- rs = 1.0F / 1023.0F;
- gs = 1.0F / 1023.0F;
- bs = 1.0F / 1023.0F;
- as = 1.0F / 3.0F;
- }
- if (swapBytes) {
- const GLuint *uisrc = (const GLuint *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- SWAP4BYTE(p);
- rgba[i][rComp] = ((p >> 22) ) * rs;
- rgba[i][gComp] = ((p >> 12) & 0x3ff) * gs;
- rgba[i][bComp] = ((p >> 2) & 0x3ff) * bs;
- rgba[i][aComp] = ((p ) & 0x3 ) * as;
- }
- }
- else {
- const GLuint *uisrc = (const GLuint *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- rgba[i][rComp] = ((p >> 22) ) * rs;
- rgba[i][gComp] = ((p >> 12) & 0x3ff) * gs;
- rgba[i][bComp] = ((p >> 2) & 0x3ff) * bs;
- rgba[i][aComp] = ((p ) & 0x3 ) * as;
- }
- }
- break;
- case GL_UNSIGNED_INT_2_10_10_10_REV:
- if (!intFormat) {
- rs = 1.0F / 1023.0F;
- gs = 1.0F / 1023.0F;
- bs = 1.0F / 1023.0F;
- as = 1.0F / 3.0F;
- }
- if (swapBytes) {
- const GLuint *uisrc = (const GLuint *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- SWAP4BYTE(p);
- rgba[i][rComp] = ((p ) & 0x3ff) * rs;
- rgba[i][gComp] = ((p >> 10) & 0x3ff) * gs;
- rgba[i][bComp] = ((p >> 20) & 0x3ff) * bs;
- rgba[i][aComp] = ((p >> 30) ) * as;
- }
- }
- else {
- const GLuint *uisrc = (const GLuint *) src;
- GLuint i;
- for (i = 0; i < n; i ++) {
- GLuint p = uisrc[i];
- rgba[i][rComp] = ((p ) & 0x3ff) * rs;
- rgba[i][gComp] = ((p >> 10) & 0x3ff) * gs;
- rgba[i][bComp] = ((p >> 20) & 0x3ff) * bs;
- rgba[i][aComp] = ((p >> 30) ) * as;
- }
- }
- break;
- default:
- _mesa_problem(NULL, "bad srcType in extract float data");
- break;
- }
-}
-
-
-/*
- * Unpack a row of color image data from a client buffer according to
- * the pixel unpacking parameters.
- * Return GLchan values in the specified dest image format.
- * This is used by glDrawPixels and glTexImage?D().
- * \param ctx - the context
- * n - number of pixels in the span
- * dstFormat - format of destination color array
- * dest - the destination color array
- * srcFormat - source image format
- * srcType - source image data type
- * source - source image pointer
- * srcPacking - pixel unpacking parameters
- * transferOps - bitmask of IMAGE_*_BIT values of operations to apply
- *
- * XXX perhaps expand this to process whole images someday.
- */
-void
-_mesa_unpack_color_span_chan( struct gl_context *ctx,
- GLuint n, GLenum dstFormat, GLchan dest[],
- GLenum srcFormat, GLenum srcType,
- const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking,
- GLbitfield transferOps )
-{
- ASSERT(dstFormat == GL_ALPHA ||
- dstFormat == GL_LUMINANCE ||
- dstFormat == GL_LUMINANCE_ALPHA ||
- dstFormat == GL_INTENSITY ||
- dstFormat == GL_RED ||
- dstFormat == GL_RG ||
- dstFormat == GL_RGB ||
- dstFormat == GL_RGBA ||
- dstFormat == GL_COLOR_INDEX);
-
- ASSERT(srcFormat == GL_RED ||
- srcFormat == GL_GREEN ||
- srcFormat == GL_BLUE ||
- srcFormat == GL_ALPHA ||
- srcFormat == GL_LUMINANCE ||
- srcFormat == GL_LUMINANCE_ALPHA ||
- srcFormat == GL_INTENSITY ||
- srcFormat == GL_RG ||
- srcFormat == GL_RGB ||
- srcFormat == GL_BGR ||
- srcFormat == GL_RGBA ||
- srcFormat == GL_BGRA ||
- srcFormat == GL_ABGR_EXT ||
- srcFormat == GL_COLOR_INDEX);
-
- ASSERT(srcType == GL_BITMAP ||
- srcType == GL_UNSIGNED_BYTE ||
- srcType == GL_BYTE ||
- srcType == GL_UNSIGNED_SHORT ||
- srcType == GL_SHORT ||
- srcType == GL_UNSIGNED_INT ||
- srcType == GL_INT ||
- srcType == GL_HALF_FLOAT_ARB ||
- srcType == GL_FLOAT ||
- srcType == GL_UNSIGNED_BYTE_3_3_2 ||
- srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
- srcType == GL_UNSIGNED_SHORT_5_6_5 ||
- srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
- srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
- srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
- srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
- srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
- srcType == GL_UNSIGNED_INT_8_8_8_8 ||
- srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
- srcType == GL_UNSIGNED_INT_10_10_10_2 ||
- srcType == GL_UNSIGNED_INT_2_10_10_10_REV);
-
- /* Try simple cases first */
- if (transferOps == 0) {
- if (srcType == CHAN_TYPE) {
- if (dstFormat == GL_RGBA) {
- if (srcFormat == GL_RGBA) {
- memcpy( dest, source, n * 4 * sizeof(GLchan) );
- return;
- }
- else if (srcFormat == GL_RGB) {
- GLuint i;
- const GLchan *src = (const GLchan *) source;
- GLchan *dst = dest;
- for (i = 0; i < n; i++) {
- dst[0] = src[0];
- dst[1] = src[1];
- dst[2] = src[2];
- dst[3] = CHAN_MAX;
- src += 3;
- dst += 4;
- }
- return;
- }
- }
- else if (dstFormat == GL_RGB) {
- if (srcFormat == GL_RGB) {
- memcpy( dest, source, n * 3 * sizeof(GLchan) );
- return;
- }
- else if (srcFormat == GL_RGBA) {
- GLuint i;
- const GLchan *src = (const GLchan *) source;
- GLchan *dst = dest;
- for (i = 0; i < n; i++) {
- dst[0] = src[0];
- dst[1] = src[1];
- dst[2] = src[2];
- src += 4;
- dst += 3;
- }
- return;
- }
- }
- else if (dstFormat == srcFormat) {
- GLint comps = _mesa_components_in_format(srcFormat);
- assert(comps > 0);
- memcpy( dest, source, n * comps * sizeof(GLchan) );
- return;
- }
- }
- /*
- * Common situation, loading 8bit RGBA/RGB source images
- * into 16/32 bit destination. (OSMesa16/32)
- */
- else if (srcType == GL_UNSIGNED_BYTE) {
- if (dstFormat == GL_RGBA) {
- if (srcFormat == GL_RGB) {
- GLuint i;
- const GLubyte *src = (const GLubyte *) source;
- GLchan *dst = dest;
- for (i = 0; i < n; i++) {
- dst[0] = UBYTE_TO_CHAN(src[0]);
- dst[1] = UBYTE_TO_CHAN(src[1]);
- dst[2] = UBYTE_TO_CHAN(src[2]);
- dst[3] = CHAN_MAX;
- src += 3;
- dst += 4;
- }
- return;
- }
- else if (srcFormat == GL_RGBA) {
- GLuint i;
- const GLubyte *src = (const GLubyte *) source;
- GLchan *dst = dest;
- for (i = 0; i < n; i++) {
- dst[0] = UBYTE_TO_CHAN(src[0]);
- dst[1] = UBYTE_TO_CHAN(src[1]);
- dst[2] = UBYTE_TO_CHAN(src[2]);
- dst[3] = UBYTE_TO_CHAN(src[3]);
- src += 4;
- dst += 4;
- }
- return;
- }
- }
- else if (dstFormat == GL_RGB) {
- if (srcFormat == GL_RGB) {
- GLuint i;
- const GLubyte *src = (const GLubyte *) source;
- GLchan *dst = dest;
- for (i = 0; i < n; i++) {
- dst[0] = UBYTE_TO_CHAN(src[0]);
- dst[1] = UBYTE_TO_CHAN(src[1]);
- dst[2] = UBYTE_TO_CHAN(src[2]);
- src += 3;
- dst += 3;
- }
- return;
- }
- else if (srcFormat == GL_RGBA) {
- GLuint i;
- const GLubyte *src = (const GLubyte *) source;
- GLchan *dst = dest;
- for (i = 0; i < n; i++) {
- dst[0] = UBYTE_TO_CHAN(src[0]);
- dst[1] = UBYTE_TO_CHAN(src[1]);
- dst[2] = UBYTE_TO_CHAN(src[2]);
- src += 4;
- dst += 3;
- }
- return;
- }
- }
- }
- }
-
-
- /* general solution begins here */
- {
- GLint dstComponents;
- GLint dstRedIndex, dstGreenIndex, dstBlueIndex, dstAlphaIndex;
- GLint dstLuminanceIndex, dstIntensityIndex;
- GLfloat rgba[MAX_WIDTH][4];
-
- dstComponents = _mesa_components_in_format( dstFormat );
- /* source & dest image formats should have been error checked by now */
- assert(dstComponents > 0);
-
- /*
- * Extract image data and convert to RGBA floats
- */
- assert(n <= MAX_WIDTH);
- if (srcFormat == GL_COLOR_INDEX) {
- GLuint indexes[MAX_WIDTH];
- extract_uint_indexes(n, indexes, srcFormat, srcType, source,
- srcPacking);
-
- if (dstFormat == GL_COLOR_INDEX) {
- GLuint i;
- _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes);
- /* convert to GLchan and return */
- for (i = 0; i < n; i++) {
- dest[i] = (GLchan) (indexes[i] & 0xff);
- }
- return;
- }
- else {
- /* Convert indexes to RGBA */
- if (transferOps & IMAGE_SHIFT_OFFSET_BIT) {
- shift_and_offset_ci(ctx, n, indexes);
- }
- _mesa_map_ci_to_rgba(ctx, n, indexes, rgba);
- }
-
- /* Don't do RGBA scale/bias or RGBA->RGBA mapping if starting
- * with color indexes.
- */
- transferOps &= ~(IMAGE_SCALE_BIAS_BIT | IMAGE_MAP_COLOR_BIT);
- }
- else {
- /* non-color index data */
- extract_float_rgba(n, rgba, srcFormat, srcType, source,
- srcPacking->SwapBytes);
- }
-
- /* Need to clamp if returning GLubytes or GLushorts */
-#if CHAN_TYPE != GL_FLOAT
- transferOps |= IMAGE_CLAMP_BIT;
-#endif
-
- if (transferOps) {
- _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba);
- }
-
- /* Now determine which color channels we need to produce.
- * And determine the dest index (offset) within each color tuple.
- */
- switch (dstFormat) {
- case GL_ALPHA:
- dstAlphaIndex = 0;
- dstRedIndex = dstGreenIndex = dstBlueIndex = -1;
- dstLuminanceIndex = dstIntensityIndex = -1;
- break;
- case GL_LUMINANCE:
- dstLuminanceIndex = 0;
- dstRedIndex = dstGreenIndex = dstBlueIndex = dstAlphaIndex = -1;
- dstIntensityIndex = -1;
- break;
- case GL_LUMINANCE_ALPHA:
- dstLuminanceIndex = 0;
- dstAlphaIndex = 1;
- dstRedIndex = dstGreenIndex = dstBlueIndex = -1;
- dstIntensityIndex = -1;
- break;
- case GL_INTENSITY:
- dstIntensityIndex = 0;
- dstRedIndex = dstGreenIndex = dstBlueIndex = dstAlphaIndex = -1;
- dstLuminanceIndex = -1;
- break;
- case GL_RED:
- dstRedIndex = 0;
- dstGreenIndex = dstBlueIndex = -1;
- dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1;
- break;
- case GL_RG:
- dstRedIndex = 0;
- dstGreenIndex = 1;
- dstBlueIndex = -1;
- dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1;
- break;
- case GL_RGB:
- dstRedIndex = 0;
- dstGreenIndex = 1;
- dstBlueIndex = 2;
- dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1;
- break;
- case GL_RGBA:
- dstRedIndex = 0;
- dstGreenIndex = 1;
- dstBlueIndex = 2;
- dstAlphaIndex = 3;
- dstLuminanceIndex = dstIntensityIndex = -1;
- break;
- default:
- _mesa_problem(ctx, "bad dstFormat in _mesa_unpack_chan_span()");
- return;
- }
-
-
- /* Now return the GLchan data in the requested dstFormat */
-
- if (dstRedIndex >= 0) {
- GLchan *dst = dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- CLAMPED_FLOAT_TO_CHAN(dst[dstRedIndex], rgba[i][RCOMP]);
- dst += dstComponents;
- }
- }
-
- if (dstGreenIndex >= 0) {
- GLchan *dst = dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- CLAMPED_FLOAT_TO_CHAN(dst[dstGreenIndex], rgba[i][GCOMP]);
- dst += dstComponents;
- }
- }
-
- if (dstBlueIndex >= 0) {
- GLchan *dst = dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- CLAMPED_FLOAT_TO_CHAN(dst[dstBlueIndex], rgba[i][BCOMP]);
- dst += dstComponents;
- }
- }
-
- if (dstAlphaIndex >= 0) {
- GLchan *dst = dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- CLAMPED_FLOAT_TO_CHAN(dst[dstAlphaIndex], rgba[i][ACOMP]);
- dst += dstComponents;
- }
- }
-
- if (dstIntensityIndex >= 0) {
- GLchan *dst = dest;
- GLuint i;
- assert(dstIntensityIndex == 0);
- assert(dstComponents == 1);
- for (i = 0; i < n; i++) {
- /* Intensity comes from red channel */
- CLAMPED_FLOAT_TO_CHAN(dst[i], rgba[i][RCOMP]);
- }
- }
-
- if (dstLuminanceIndex >= 0) {
- GLchan *dst = dest;
- GLuint i;
- assert(dstLuminanceIndex == 0);
- for (i = 0; i < n; i++) {
- /* Luminance comes from red channel */
- CLAMPED_FLOAT_TO_CHAN(dst[0], rgba[i][RCOMP]);
- dst += dstComponents;
- }
- }
- }
-}
-
-
-/**
- * Same as _mesa_unpack_color_span_chan(), but return GLfloat data
- * instead of GLchan.
- */
-void
-_mesa_unpack_color_span_float( struct gl_context *ctx,
- GLuint n, GLenum dstFormat, GLfloat dest[],
- GLenum srcFormat, GLenum srcType,
- const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking,
- GLbitfield transferOps )
-{
- ASSERT(dstFormat == GL_ALPHA ||
- dstFormat == GL_LUMINANCE ||
- dstFormat == GL_LUMINANCE_ALPHA ||
- dstFormat == GL_INTENSITY ||
- dstFormat == GL_RED ||
- dstFormat == GL_RG ||
- dstFormat == GL_RGB ||
- dstFormat == GL_RGBA ||
- dstFormat == GL_COLOR_INDEX);
-
- ASSERT(srcFormat == GL_RED ||
- srcFormat == GL_GREEN ||
- srcFormat == GL_BLUE ||
- srcFormat == GL_ALPHA ||
- srcFormat == GL_LUMINANCE ||
- srcFormat == GL_LUMINANCE_ALPHA ||
- srcFormat == GL_INTENSITY ||
- srcFormat == GL_RG ||
- srcFormat == GL_RGB ||
- srcFormat == GL_BGR ||
- srcFormat == GL_RGBA ||
- srcFormat == GL_BGRA ||
- srcFormat == GL_ABGR_EXT ||
- srcFormat == GL_RED_INTEGER_EXT ||
- srcFormat == GL_GREEN_INTEGER_EXT ||
- srcFormat == GL_BLUE_INTEGER_EXT ||
- srcFormat == GL_ALPHA_INTEGER_EXT ||
- srcFormat == GL_RGB_INTEGER_EXT ||
- srcFormat == GL_RGBA_INTEGER_EXT ||
- srcFormat == GL_BGR_INTEGER_EXT ||
- srcFormat == GL_BGRA_INTEGER_EXT ||
- srcFormat == GL_LUMINANCE_INTEGER_EXT ||
- srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT ||
- srcFormat == GL_COLOR_INDEX);
-
- ASSERT(srcType == GL_BITMAP ||
- srcType == GL_UNSIGNED_BYTE ||
- srcType == GL_BYTE ||
- srcType == GL_UNSIGNED_SHORT ||
- srcType == GL_SHORT ||
- srcType == GL_UNSIGNED_INT ||
- srcType == GL_INT ||
- srcType == GL_HALF_FLOAT_ARB ||
- srcType == GL_FLOAT ||
- srcType == GL_UNSIGNED_BYTE_3_3_2 ||
- srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
- srcType == GL_UNSIGNED_SHORT_5_6_5 ||
- srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
- srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
- srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
- srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
- srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
- srcType == GL_UNSIGNED_INT_8_8_8_8 ||
- srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
- srcType == GL_UNSIGNED_INT_10_10_10_2 ||
- srcType == GL_UNSIGNED_INT_2_10_10_10_REV);
-
- /* general solution, no special cases, yet */
- {
- GLint dstComponents;
- GLint dstRedIndex, dstGreenIndex, dstBlueIndex, dstAlphaIndex;
- GLint dstLuminanceIndex, dstIntensityIndex;
- GLfloat rgba[MAX_WIDTH][4];
-
- dstComponents = _mesa_components_in_format( dstFormat );
- /* source & dest image formats should have been error checked by now */
- assert(dstComponents > 0);
-
- /*
- * Extract image data and convert to RGBA floats
- */
- assert(n <= MAX_WIDTH);
- if (srcFormat == GL_COLOR_INDEX) {
- GLuint indexes[MAX_WIDTH];
- extract_uint_indexes(n, indexes, srcFormat, srcType, source,
- srcPacking);
-
- if (dstFormat == GL_COLOR_INDEX) {
- GLuint i;
- _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes);
- /* convert to GLchan and return */
- for (i = 0; i < n; i++) {
- dest[i] = (GLchan) (indexes[i] & 0xff);
- }
- return;
- }
- else {
- /* Convert indexes to RGBA */
- if (transferOps & IMAGE_SHIFT_OFFSET_BIT) {
- shift_and_offset_ci(ctx, n, indexes);
- }
- _mesa_map_ci_to_rgba(ctx, n, indexes, rgba);
- }
-
- /* Don't do RGBA scale/bias or RGBA->RGBA mapping if starting
- * with color indexes.
- */
- transferOps &= ~(IMAGE_SCALE_BIAS_BIT | IMAGE_MAP_COLOR_BIT);
- }
- else {
- /* non-color index data */
- extract_float_rgba(n, rgba, srcFormat, srcType, source,
- srcPacking->SwapBytes);
- }
-
- if (transferOps) {
- _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba);
- }
-
- /* Now determine which color channels we need to produce.
- * And determine the dest index (offset) within each color tuple.
- */
- switch (dstFormat) {
- case GL_ALPHA:
- dstAlphaIndex = 0;
- dstRedIndex = dstGreenIndex = dstBlueIndex = -1;
- dstLuminanceIndex = dstIntensityIndex = -1;
- break;
- case GL_LUMINANCE:
- dstLuminanceIndex = 0;
- dstRedIndex = dstGreenIndex = dstBlueIndex = dstAlphaIndex = -1;
- dstIntensityIndex = -1;
- break;
- case GL_LUMINANCE_ALPHA:
- dstLuminanceIndex = 0;
- dstAlphaIndex = 1;
- dstRedIndex = dstGreenIndex = dstBlueIndex = -1;
- dstIntensityIndex = -1;
- break;
- case GL_INTENSITY:
- dstIntensityIndex = 0;
- dstRedIndex = dstGreenIndex = dstBlueIndex = dstAlphaIndex = -1;
- dstLuminanceIndex = -1;
- break;
- case GL_RED:
- dstRedIndex = 0;
- dstGreenIndex = dstBlueIndex = -1;
- dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1;
- break;
- case GL_RG:
- dstRedIndex = 0;
- dstGreenIndex = 1;
- dstBlueIndex = -1;
- dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1;
- break;
- case GL_RGB:
- dstRedIndex = 0;
- dstGreenIndex = 1;
- dstBlueIndex = 2;
- dstAlphaIndex = dstLuminanceIndex = dstIntensityIndex = -1;
- break;
- case GL_RGBA:
- dstRedIndex = 0;
- dstGreenIndex = 1;
- dstBlueIndex = 2;
- dstAlphaIndex = 3;
- dstLuminanceIndex = dstIntensityIndex = -1;
- break;
- default:
- _mesa_problem(ctx, "bad dstFormat in _mesa_unpack_color_span_float()");
- return;
- }
-
- /* Now pack results in the requested dstFormat */
- if (dstRedIndex >= 0) {
- GLfloat *dst = dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[dstRedIndex] = rgba[i][RCOMP];
- dst += dstComponents;
- }
- }
-
- if (dstGreenIndex >= 0) {
- GLfloat *dst = dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[dstGreenIndex] = rgba[i][GCOMP];
- dst += dstComponents;
- }
- }
-
- if (dstBlueIndex >= 0) {
- GLfloat *dst = dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[dstBlueIndex] = rgba[i][BCOMP];
- dst += dstComponents;
- }
- }
-
- if (dstAlphaIndex >= 0) {
- GLfloat *dst = dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[dstAlphaIndex] = rgba[i][ACOMP];
- dst += dstComponents;
- }
- }
-
- if (dstIntensityIndex >= 0) {
- GLfloat *dst = dest;
- GLuint i;
- assert(dstIntensityIndex == 0);
- assert(dstComponents == 1);
- for (i = 0; i < n; i++) {
- /* Intensity comes from red channel */
- dst[i] = rgba[i][RCOMP];
- }
- }
-
- if (dstLuminanceIndex >= 0) {
- GLfloat *dst = dest;
- GLuint i;
- assert(dstLuminanceIndex == 0);
- for (i = 0; i < n; i++) {
- /* Luminance comes from red channel */
- dst[0] = rgba[i][RCOMP];
- dst += dstComponents;
- }
- }
- }
-}
-
-/**
- * Similar to _mesa_unpack_color_span_float(), but for dudv data instead of rgba,
- * directly return GLbyte data, no transfer ops apply.
- */
-void
-_mesa_unpack_dudv_span_byte( struct gl_context *ctx,
- GLuint n, GLenum dstFormat, GLbyte dest[],
- GLenum srcFormat, GLenum srcType,
- const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking,
- GLbitfield transferOps )
-{
- ASSERT(dstFormat == GL_DUDV_ATI);
- ASSERT(srcFormat == GL_DUDV_ATI);
-
- ASSERT(srcType == GL_UNSIGNED_BYTE ||
- srcType == GL_BYTE ||
- srcType == GL_UNSIGNED_SHORT ||
- srcType == GL_SHORT ||
- srcType == GL_UNSIGNED_INT ||
- srcType == GL_INT ||
- srcType == GL_HALF_FLOAT_ARB ||
- srcType == GL_FLOAT);
-
- /* general solution */
- {
- GLint dstComponents;
- GLfloat rgba[MAX_WIDTH][4];
- GLbyte *dst = dest;
- GLuint i;
-
- dstComponents = _mesa_components_in_format( dstFormat );
- /* source & dest image formats should have been error checked by now */
- assert(dstComponents > 0);
-
- /*
- * Extract image data and convert to RGBA floats
- */
- assert(n <= MAX_WIDTH);
- extract_float_rgba(n, rgba, srcFormat, srcType, source,
- srcPacking->SwapBytes);
-
-
- /* Now determine which color channels we need to produce.
- * And determine the dest index (offset) within each color tuple.
- */
-
- /* Now pack results in the requested dstFormat */
- for (i = 0; i < n; i++) {
- /* not sure - need clamp[-1,1] here? */
- dst[0] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
- dst[1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
- dst += dstComponents;
- }
- }
-}
-
-/*
- * Unpack a row of color index data from a client buffer according to
- * the pixel unpacking parameters.
- * This is (or will be) used by glDrawPixels, glTexImage[123]D, etc.
- *
- * Args: ctx - the context
- * n - number of pixels
- * dstType - destination data type
- * dest - destination array
- * srcType - source pixel type
- * source - source data pointer
- * srcPacking - pixel unpacking parameters
- * transferOps - the pixel transfer operations to apply
- */
-void
-_mesa_unpack_index_span( const struct gl_context *ctx, GLuint n,
- GLenum dstType, GLvoid *dest,
- GLenum srcType, const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking,
- GLbitfield transferOps )
-{
- ASSERT(srcType == GL_BITMAP ||
- srcType == GL_UNSIGNED_BYTE ||
- srcType == GL_BYTE ||
- srcType == GL_UNSIGNED_SHORT ||
- srcType == GL_SHORT ||
- srcType == GL_UNSIGNED_INT ||
- srcType == GL_INT ||
- srcType == GL_HALF_FLOAT_ARB ||
- srcType == GL_FLOAT);
-
- ASSERT(dstType == GL_UNSIGNED_BYTE ||
- dstType == GL_UNSIGNED_SHORT ||
- dstType == GL_UNSIGNED_INT);
-
-
- transferOps &= (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT);
-
- /*
- * Try simple cases first
- */
- if (transferOps == 0 && srcType == GL_UNSIGNED_BYTE
- && dstType == GL_UNSIGNED_BYTE) {
- memcpy(dest, source, n * sizeof(GLubyte));
- }
- else if (transferOps == 0 && srcType == GL_UNSIGNED_INT
- && dstType == GL_UNSIGNED_INT && !srcPacking->SwapBytes) {
- memcpy(dest, source, n * sizeof(GLuint));
- }
- else {
- /*
- * general solution
- */
- GLuint indexes[MAX_WIDTH];
- assert(n <= MAX_WIDTH);
-
- extract_uint_indexes(n, indexes, GL_COLOR_INDEX, srcType, source,
- srcPacking);
-
- if (transferOps)
- _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes);
-
- /* convert to dest type */
- switch (dstType) {
- case GL_UNSIGNED_BYTE:
- {
- GLubyte *dst = (GLubyte *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = (GLubyte) (indexes[i] & 0xff);
- }
- }
- break;
- case GL_UNSIGNED_SHORT:
- {
- GLuint *dst = (GLuint *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = (GLushort) (indexes[i] & 0xffff);
- }
- }
- break;
- case GL_UNSIGNED_INT:
- memcpy(dest, indexes, n * sizeof(GLuint));
- break;
- default:
- _mesa_problem(ctx, "bad dstType in _mesa_unpack_index_span");
- }
- }
-}
-
-
-void
-_mesa_pack_index_span( const struct gl_context *ctx, GLuint n,
- GLenum dstType, GLvoid *dest, const GLuint *source,
- const struct gl_pixelstore_attrib *dstPacking,
- GLbitfield transferOps )
-{
- GLuint indexes[MAX_WIDTH];
-
- ASSERT(n <= MAX_WIDTH);
-
- transferOps &= (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT);
-
- if (transferOps & (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT)) {
- /* make a copy of input */
- memcpy(indexes, source, n * sizeof(GLuint));
- _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes);
- source = indexes;
- }
-
- switch (dstType) {
- case GL_UNSIGNED_BYTE:
- {
- GLubyte *dst = (GLubyte *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- *dst++ = (GLubyte) source[i];
- }
- }
- break;
- case GL_BYTE:
- {
- GLbyte *dst = (GLbyte *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = (GLbyte) source[i];
- }
- }
- break;
- case GL_UNSIGNED_SHORT:
- {
- GLushort *dst = (GLushort *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = (GLushort) source[i];
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap2( (GLushort *) dst, n );
- }
- }
- break;
- case GL_SHORT:
- {
- GLshort *dst = (GLshort *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = (GLshort) source[i];
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap2( (GLushort *) dst, n );
- }
- }
- break;
- case GL_UNSIGNED_INT:
- {
- GLuint *dst = (GLuint *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = (GLuint) source[i];
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap4( (GLuint *) dst, n );
- }
- }
- break;
- case GL_INT:
- {
- GLint *dst = (GLint *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = (GLint) source[i];
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap4( (GLuint *) dst, n );
- }
- }
- break;
- case GL_FLOAT:
- {
- GLfloat *dst = (GLfloat *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = (GLfloat) source[i];
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap4( (GLuint *) dst, n );
- }
- }
- break;
- case GL_HALF_FLOAT_ARB:
- {
- GLhalfARB *dst = (GLhalfARB *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = _mesa_float_to_half((GLfloat) source[i]);
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap2( (GLushort *) dst, n );
- }
- }
- break;
- default:
- _mesa_problem(ctx, "bad type in _mesa_pack_index_span");
- }
-}
-
-
-/*
- * Unpack a row of stencil data from a client buffer according to
- * the pixel unpacking parameters.
- * This is (or will be) used by glDrawPixels
- *
- * Args: ctx - the context
- * n - number of pixels
- * dstType - destination data type
- * dest - destination array
- * srcType - source pixel type
- * source - source data pointer
- * srcPacking - pixel unpacking parameters
- * transferOps - apply offset/bias/lookup ops?
- */
-void
-_mesa_unpack_stencil_span( const struct gl_context *ctx, GLuint n,
- GLenum dstType, GLvoid *dest,
- GLenum srcType, const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking,
- GLbitfield transferOps )
-{
- ASSERT(srcType == GL_BITMAP ||
- srcType == GL_UNSIGNED_BYTE ||
- srcType == GL_BYTE ||
- srcType == GL_UNSIGNED_SHORT ||
- srcType == GL_SHORT ||
- srcType == GL_UNSIGNED_INT ||
- srcType == GL_INT ||
- srcType == GL_UNSIGNED_INT_24_8_EXT ||
- srcType == GL_HALF_FLOAT_ARB ||
- srcType == GL_FLOAT);
-
- ASSERT(dstType == GL_UNSIGNED_BYTE ||
- dstType == GL_UNSIGNED_SHORT ||
- dstType == GL_UNSIGNED_INT);
-
- /* only shift and offset apply to stencil */
- transferOps &= IMAGE_SHIFT_OFFSET_BIT;
-
- /*
- * Try simple cases first
- */
- if (transferOps == 0 &&
- !ctx->Pixel.MapStencilFlag &&
- srcType == GL_UNSIGNED_BYTE &&
- dstType == GL_UNSIGNED_BYTE) {
- memcpy(dest, source, n * sizeof(GLubyte));
- }
- else if (transferOps == 0 &&
- !ctx->Pixel.MapStencilFlag &&
- srcType == GL_UNSIGNED_INT &&
- dstType == GL_UNSIGNED_INT &&
- !srcPacking->SwapBytes) {
- memcpy(dest, source, n * sizeof(GLuint));
- }
- else {
- /*
- * general solution
- */
- GLuint indexes[MAX_WIDTH];
- assert(n <= MAX_WIDTH);
-
- extract_uint_indexes(n, indexes, GL_STENCIL_INDEX, srcType, source,
- srcPacking);
-
- if (transferOps & IMAGE_SHIFT_OFFSET_BIT) {
- /* shift and offset indexes */
- shift_and_offset_ci(ctx, n, indexes);
- }
-
- if (ctx->Pixel.MapStencilFlag) {
- /* Apply stencil lookup table */
- const GLuint mask = ctx->PixelMaps.StoS.Size - 1;
- GLuint i;
- for (i = 0; i < n; i++) {
- indexes[i] = (GLuint)ctx->PixelMaps.StoS.Map[ indexes[i] & mask ];
- }
- }
-
- /* convert to dest type */
- switch (dstType) {
- case GL_UNSIGNED_BYTE:
- {
- GLubyte *dst = (GLubyte *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = (GLubyte) (indexes[i] & 0xff);
- }
- }
- break;
- case GL_UNSIGNED_SHORT:
- {
- GLuint *dst = (GLuint *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = (GLushort) (indexes[i] & 0xffff);
- }
- }
- break;
- case GL_UNSIGNED_INT:
- memcpy(dest, indexes, n * sizeof(GLuint));
- break;
- default:
- _mesa_problem(ctx, "bad dstType in _mesa_unpack_stencil_span");
- }
- }
-}
-
-
-void
-_mesa_pack_stencil_span( const struct gl_context *ctx, GLuint n,
- GLenum dstType, GLvoid *dest, const GLstencil *source,
- const struct gl_pixelstore_attrib *dstPacking )
-{
- GLstencil stencil[MAX_WIDTH];
-
- ASSERT(n <= MAX_WIDTH);
-
- if (ctx->Pixel.IndexShift || ctx->Pixel.IndexOffset ||
- ctx->Pixel.MapStencilFlag) {
- /* make a copy of input */
- memcpy(stencil, source, n * sizeof(GLstencil));
- _mesa_apply_stencil_transfer_ops(ctx, n, stencil);
- source = stencil;
- }
-
- switch (dstType) {
- case GL_UNSIGNED_BYTE:
- if (sizeof(GLstencil) == 1) {
- memcpy( dest, source, n );
- }
- else {
- GLubyte *dst = (GLubyte *) dest;
- GLuint i;
- for (i=0;i<n;i++) {
- dst[i] = (GLubyte) source[i];
- }
- }
- break;
- case GL_BYTE:
- {
- GLbyte *dst = (GLbyte *) dest;
- GLuint i;
- for (i=0;i<n;i++) {
- dst[i] = (GLbyte) (source[i] & 0x7f);
- }
- }
- break;
- case GL_UNSIGNED_SHORT:
- {
- GLushort *dst = (GLushort *) dest;
- GLuint i;
- for (i=0;i<n;i++) {
- dst[i] = (GLushort) source[i];
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap2( (GLushort *) dst, n );
- }
- }
- break;
- case GL_SHORT:
- {
- GLshort *dst = (GLshort *) dest;
- GLuint i;
- for (i=0;i<n;i++) {
- dst[i] = (GLshort) source[i];
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap2( (GLushort *) dst, n );
- }
- }
- break;
- case GL_UNSIGNED_INT:
- {
- GLuint *dst = (GLuint *) dest;
- GLuint i;
- for (i=0;i<n;i++) {
- dst[i] = (GLuint) source[i];
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap4( (GLuint *) dst, n );
- }
- }
- break;
- case GL_INT:
- {
- GLint *dst = (GLint *) dest;
- GLuint i;
- for (i=0;i<n;i++) {
- dst[i] = (GLint) source[i];
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap4( (GLuint *) dst, n );
- }
- }
- break;
- case GL_FLOAT:
- {
- GLfloat *dst = (GLfloat *) dest;
- GLuint i;
- for (i=0;i<n;i++) {
- dst[i] = (GLfloat) source[i];
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap4( (GLuint *) dst, n );
- }
- }
- break;
- case GL_HALF_FLOAT_ARB:
- {
- GLhalfARB *dst = (GLhalfARB *) dest;
- GLuint i;
- for (i=0;i<n;i++) {
- dst[i] = _mesa_float_to_half( (float) source[i] );
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap2( (GLushort *) dst, n );
- }
- }
- break;
- case GL_BITMAP:
- if (dstPacking->LsbFirst) {
- GLubyte *dst = (GLubyte *) dest;
- GLint shift = 0;
- GLuint i;
- for (i = 0; i < n; i++) {
- if (shift == 0)
- *dst = 0;
- *dst |= ((source[i] != 0) << shift);
- shift++;
- if (shift == 8) {
- shift = 0;
- dst++;
- }
- }
- }
- else {
- GLubyte *dst = (GLubyte *) dest;
- GLint shift = 7;
- GLuint i;
- for (i = 0; i < n; i++) {
- if (shift == 7)
- *dst = 0;
- *dst |= ((source[i] != 0) << shift);
- shift--;
- if (shift < 0) {
- shift = 7;
- dst++;
- }
- }
- }
- break;
- default:
- _mesa_problem(ctx, "bad type in _mesa_pack_index_span");
- }
-}
-
-#define DEPTH_VALUES(GLTYPE, GLTYPE2FLOAT) \
- do { \
- GLuint i; \
- const GLTYPE *src = (const GLTYPE *)source; \
- for (i = 0; i < n; i++) { \
- GLTYPE value = src[i]; \
- if (srcPacking->SwapBytes) { \
- if (sizeof(GLTYPE) == 2) { \
- SWAP2BYTE(value); \
- } else if (sizeof(GLTYPE) == 4) { \
- SWAP4BYTE(value); \
- } \
- } \
- depthValues[i] = GLTYPE2FLOAT(value); \
- } \
- } while (0)
-
-
-/**
- * Unpack a row of depth/z values from memory, returning GLushort, GLuint
- * or GLfloat values.
- * The glPixelTransfer (scale/bias) params will be applied.
- *
- * \param dstType one of GL_UNSIGNED_SHORT, GL_UNSIGNED_INT, GL_FLOAT
- * \param depthMax max value for returned GLushort or GLuint values
- * (ignored for GLfloat).
- */
-void
-_mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n,
- GLenum dstType, GLvoid *dest, GLuint depthMax,
- GLenum srcType, const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking )
-{
- GLfloat depthTemp[MAX_WIDTH], *depthValues;
- GLboolean needClamp = GL_FALSE;
-
- /* Look for special cases first.
- * Not only are these faster, they're less prone to numeric conversion
- * problems. Otherwise, converting from an int type to a float then
- * back to an int type can introduce errors that will show up as
- * artifacts in things like depth peeling which uses glCopyTexImage.
- */
- if (ctx->Pixel.DepthScale == 1.0 && ctx->Pixel.DepthBias == 0.0) {
- if (srcType == GL_UNSIGNED_INT && dstType == GL_UNSIGNED_SHORT) {
- const GLuint *src = (const GLuint *) source;
- GLushort *dst = (GLushort *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = src[i] >> 16;
- }
- return;
- }
- if (srcType == GL_UNSIGNED_SHORT
- && dstType == GL_UNSIGNED_INT
- && depthMax == 0xffffffff) {
- const GLushort *src = (const GLushort *) source;
- GLuint *dst = (GLuint *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = src[i] | (src[i] << 16);
- }
- return;
- }
- if (srcType == GL_UNSIGNED_INT_24_8
- && dstType == GL_UNSIGNED_INT
- && depthMax == 0xffffff) {
- const GLuint *src = (const GLuint *) source;
- GLuint *dst = (GLuint *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = src[i] >> 8;
- }
- return;
- }
- /* XXX may want to add additional cases here someday */
- }
-
- /* general case path follows */
-
- if (dstType == GL_FLOAT) {
- depthValues = (GLfloat *) dest;
- }
- else {
- depthValues = depthTemp;
- }
-
- /* Convert incoming values to GLfloat. Some conversions will require
- * clamping, below.
- */
- switch (srcType) {
- case GL_BYTE:
- DEPTH_VALUES(GLbyte, BYTE_TO_FLOAT);
- needClamp = GL_TRUE;
- break;
- case GL_UNSIGNED_BYTE:
- DEPTH_VALUES(GLubyte, UBYTE_TO_FLOAT);
- break;
- case GL_SHORT:
- DEPTH_VALUES(GLshort, SHORT_TO_FLOAT);
- needClamp = GL_TRUE;
- break;
- case GL_UNSIGNED_SHORT:
- DEPTH_VALUES(GLushort, USHORT_TO_FLOAT);
- break;
- case GL_INT:
- DEPTH_VALUES(GLint, INT_TO_FLOAT);
- needClamp = GL_TRUE;
- break;
- case GL_UNSIGNED_INT:
- DEPTH_VALUES(GLuint, UINT_TO_FLOAT);
- break;
- case GL_UNSIGNED_INT_24_8_EXT: /* GL_EXT_packed_depth_stencil */
- if (dstType == GL_UNSIGNED_INT_24_8_EXT &&
- depthMax == 0xffffff &&
- ctx->Pixel.DepthScale == 1.0 &&
- ctx->Pixel.DepthBias == 0.0) {
- const GLuint *src = (const GLuint *) source;
- GLuint *zValues = (GLuint *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- GLuint value = src[i];
- if (srcPacking->SwapBytes) {
- SWAP4BYTE(value);
- }
- zValues[i] = value & 0xffffff00;
- }
- return;
- }
- else {
- const GLuint *src = (const GLuint *) source;
- const GLfloat scale = 1.0f / 0xffffff;
- GLuint i;
- for (i = 0; i < n; i++) {
- GLuint value = src[i];
- if (srcPacking->SwapBytes) {
- SWAP4BYTE(value);
- }
- depthValues[i] = (value >> 8) * scale;
- }
- }
- break;
- case GL_FLOAT:
- DEPTH_VALUES(GLfloat, 1*);
- needClamp = GL_TRUE;
- break;
- case GL_HALF_FLOAT_ARB:
- {
- GLuint i;
- const GLhalfARB *src = (const GLhalfARB *) source;
- for (i = 0; i < n; i++) {
- GLhalfARB value = src[i];
- if (srcPacking->SwapBytes) {
- SWAP2BYTE(value);
- }
- depthValues[i] = _mesa_half_to_float(value);
- }
- needClamp = GL_TRUE;
- }
- break;
- default:
- _mesa_problem(NULL, "bad type in _mesa_unpack_depth_span()");
- return;
- }
-
- /* apply depth scale and bias */
- {
- const GLfloat scale = ctx->Pixel.DepthScale;
- const GLfloat bias = ctx->Pixel.DepthBias;
- if (scale != 1.0 || bias != 0.0) {
- GLuint i;
- for (i = 0; i < n; i++) {
- depthValues[i] = depthValues[i] * scale + bias;
- }
- needClamp = GL_TRUE;
- }
- }
-
- /* clamp to [0, 1] */
- if (needClamp) {
- GLuint i;
- for (i = 0; i < n; i++) {
- depthValues[i] = (GLfloat)CLAMP(depthValues[i], 0.0, 1.0);
- }
- }
-
- /*
- * Convert values to dstType
- */
- if (dstType == GL_UNSIGNED_INT) {
- GLuint *zValues = (GLuint *) dest;
- GLuint i;
- if (depthMax <= 0xffffff) {
- /* no overflow worries */
- for (i = 0; i < n; i++) {
- zValues[i] = (GLuint) (depthValues[i] * (GLfloat) depthMax);
- }
- }
- else {
- /* need to use double precision to prevent overflow problems */
- for (i = 0; i < n; i++) {
- GLdouble z = depthValues[i] * (GLfloat) depthMax;
- if (z >= (GLdouble) 0xffffffff)
- zValues[i] = 0xffffffff;
- else
- zValues[i] = (GLuint) z;
- }
- }
- }
- else if (dstType == GL_UNSIGNED_SHORT) {
- GLushort *zValues = (GLushort *) dest;
- GLuint i;
- ASSERT(depthMax <= 0xffff);
- for (i = 0; i < n; i++) {
- zValues[i] = (GLushort) (depthValues[i] * (GLfloat) depthMax);
- }
- }
- else {
- ASSERT(dstType == GL_FLOAT);
- /*ASSERT(depthMax == 1.0F);*/
- }
-}
-
-
-/*
- * Pack an array of depth values. The values are floats in [0,1].
- */
-void
-_mesa_pack_depth_span( const struct gl_context *ctx, GLuint n, GLvoid *dest,
- GLenum dstType, const GLfloat *depthSpan,
- const struct gl_pixelstore_attrib *dstPacking )
-{
- GLfloat depthCopy[MAX_WIDTH];
-
- ASSERT(n <= MAX_WIDTH);
-
- if (ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0) {
- memcpy(depthCopy, depthSpan, n * sizeof(GLfloat));
- _mesa_scale_and_bias_depth(ctx, n, depthCopy);
- depthSpan = depthCopy;
- }
-
- switch (dstType) {
- case GL_UNSIGNED_BYTE:
- {
- GLubyte *dst = (GLubyte *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = FLOAT_TO_UBYTE( depthSpan[i] );
- }
- }
- break;
- case GL_BYTE:
- {
- GLbyte *dst = (GLbyte *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = FLOAT_TO_BYTE( depthSpan[i] );
- }
- }
- break;
- case GL_UNSIGNED_SHORT:
- {
- GLushort *dst = (GLushort *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- CLAMPED_FLOAT_TO_USHORT(dst[i], depthSpan[i]);
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap2( (GLushort *) dst, n );
- }
- }
- break;
- case GL_SHORT:
- {
- GLshort *dst = (GLshort *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = FLOAT_TO_SHORT( depthSpan[i] );
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap2( (GLushort *) dst, n );
- }
- }
- break;
- case GL_UNSIGNED_INT:
- {
- GLuint *dst = (GLuint *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = FLOAT_TO_UINT( depthSpan[i] );
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap4( (GLuint *) dst, n );
- }
- }
- break;
- case GL_INT:
- {
- GLint *dst = (GLint *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = FLOAT_TO_INT( depthSpan[i] );
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap4( (GLuint *) dst, n );
- }
- }
- break;
- case GL_FLOAT:
- {
- GLfloat *dst = (GLfloat *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = depthSpan[i];
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap4( (GLuint *) dst, n );
- }
- }
- break;
- case GL_HALF_FLOAT_ARB:
- {
- GLhalfARB *dst = (GLhalfARB *) dest;
- GLuint i;
- for (i = 0; i < n; i++) {
- dst[i] = _mesa_float_to_half(depthSpan[i]);
- }
- if (dstPacking->SwapBytes) {
- _mesa_swap2( (GLushort *) dst, n );
- }
- }
- break;
- default:
- _mesa_problem(ctx, "bad type in _mesa_pack_depth_span");
- }
-}
-
-
-
-/**
- * Pack depth and stencil values as GL_DEPTH_STENCIL/GL_UNSIGNED_INT_24_8.
- */
-void
-_mesa_pack_depth_stencil_span(const struct gl_context *ctx, GLuint n, GLuint *dest,
- const GLfloat *depthVals,
- const GLstencil *stencilVals,
- const struct gl_pixelstore_attrib *dstPacking)
-{
- GLfloat depthCopy[MAX_WIDTH];
- GLstencil stencilCopy[MAX_WIDTH];
- GLuint i;
-
- ASSERT(n <= MAX_WIDTH);
-
- if (ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0) {
- memcpy(depthCopy, depthVals, n * sizeof(GLfloat));
- _mesa_scale_and_bias_depth(ctx, n, depthCopy);
- depthVals = depthCopy;
- }
-
- if (ctx->Pixel.IndexShift ||
- ctx->Pixel.IndexOffset ||
- ctx->Pixel.MapStencilFlag) {
- memcpy(stencilCopy, stencilVals, n * sizeof(GLstencil));
- _mesa_apply_stencil_transfer_ops(ctx, n, stencilCopy);
- stencilVals = stencilCopy;
- }
-
- for (i = 0; i < n; i++) {
- GLuint z = (GLuint) (depthVals[i] * 0xffffff);
- dest[i] = (z << 8) | (stencilVals[i] & 0xff);
- }
-
- if (dstPacking->SwapBytes) {
- _mesa_swap4(dest, n);
- }
-}
-
-
-
-
-/**
- * Unpack image data. Apply byte swapping, byte flipping (bitmap).
- * Return all image data in a contiguous block. This is used when we
- * compile glDrawPixels, glTexImage, etc into a display list. We
- * need a copy of the data in a standard format.
- */
-void *
-_mesa_unpack_image( GLuint dimensions,
- GLsizei width, GLsizei height, GLsizei depth,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *unpack )
-{
- GLint bytesPerRow, compsPerRow;
- GLboolean flipBytes, swap2, swap4;
-
- if (!pixels)
- return NULL; /* not necessarily an error */
-
- if (width <= 0 || height <= 0 || depth <= 0)
- return NULL; /* generate error later */
-
- if (type == GL_BITMAP) {
- bytesPerRow = (width + 7) >> 3;
- flipBytes = unpack->LsbFirst;
- swap2 = swap4 = GL_FALSE;
- compsPerRow = 0;
- }
- else {
- const GLint bytesPerPixel = _mesa_bytes_per_pixel(format, type);
- GLint components = _mesa_components_in_format(format);
- GLint bytesPerComp;
-
- if (_mesa_type_is_packed(type))
- components = 1;
-
- if (bytesPerPixel <= 0 || components <= 0)
- return NULL; /* bad format or type. generate error later */
- bytesPerRow = bytesPerPixel * width;
- bytesPerComp = bytesPerPixel / components;
- flipBytes = GL_FALSE;
- swap2 = (bytesPerComp == 2) && unpack->SwapBytes;
- swap4 = (bytesPerComp == 4) && unpack->SwapBytes;
- compsPerRow = components * width;
- assert(compsPerRow >= width);
- }
-
- {
- GLubyte *destBuffer
- = (GLubyte *) malloc(bytesPerRow * height * depth);
- GLubyte *dst;
- GLint img, row;
- if (!destBuffer)
- return NULL; /* generate GL_OUT_OF_MEMORY later */
-
- dst = destBuffer;
- for (img = 0; img < depth; img++) {
- for (row = 0; row < height; row++) {
- const GLvoid *src = _mesa_image_address(dimensions, unpack, pixels,
- width, height, format, type, img, row, 0);
-
- if ((type == GL_BITMAP) && (unpack->SkipPixels & 0x7)) {
- GLint i;
- flipBytes = GL_FALSE;
- if (unpack->LsbFirst) {
- GLubyte srcMask = 1 << (unpack->SkipPixels & 0x7);
- GLubyte dstMask = 128;
- const GLubyte *s = src;
- GLubyte *d = dst;
- *d = 0;
- for (i = 0; i < width; i++) {
- if (*s & srcMask) {
- *d |= dstMask;
- }
- if (srcMask == 128) {
- srcMask = 1;
- s++;
- }
- else {
- srcMask = srcMask << 1;
- }
- if (dstMask == 1) {
- dstMask = 128;
- d++;
- *d = 0;
- }
- else {
- dstMask = dstMask >> 1;
- }
- }
- }
- else {
- GLubyte srcMask = 128 >> (unpack->SkipPixels & 0x7);
- GLubyte dstMask = 128;
- const GLubyte *s = src;
- GLubyte *d = dst;
- *d = 0;
- for (i = 0; i < width; i++) {
- if (*s & srcMask) {
- *d |= dstMask;
- }
- if (srcMask == 1) {
- srcMask = 128;
- s++;
- }
- else {
- srcMask = srcMask >> 1;
- }
- if (dstMask == 1) {
- dstMask = 128;
- d++;
- *d = 0;
- }
- else {
- dstMask = dstMask >> 1;
- }
- }
- }
- }
- else {
- memcpy(dst, src, bytesPerRow);
- }
-
- /* byte flipping/swapping */
- if (flipBytes) {
- flip_bytes((GLubyte *) dst, bytesPerRow);
- }
- else if (swap2) {
- _mesa_swap2((GLushort*) dst, compsPerRow);
- }
- else if (swap4) {
- _mesa_swap4((GLuint*) dst, compsPerRow);
- }
- dst += bytesPerRow;
- }
- }
- return destBuffer;
- }
-}
-
-#endif /* _HAVE_FULL_GL */
-
/**
diff --git a/src/mesa/main/image.h b/src/mesa/main/image.h
index ed5ffa368c..005fbccbeb 100644
--- a/src/mesa/main/image.h
+++ b/src/mesa/main/image.h
@@ -27,8 +27,10 @@
#define IMAGE_H
-#include "mtypes.h"
+#include "glheader.h"
+struct gl_context;
+struct gl_pixelstore_attrib;
extern void
_mesa_swap2( GLushort *p, GLuint n );
@@ -52,7 +54,8 @@ extern GLint
_mesa_bytes_per_pixel( GLenum format, GLenum type );
extern GLboolean
-_mesa_is_legal_format_and_type( struct gl_context *ctx, GLenum format, GLenum type );
+_mesa_is_legal_format_and_type(const struct gl_context *ctx,
+ GLenum format, GLenum type);
extern GLboolean
_mesa_is_color_format(GLenum format);
@@ -124,23 +127,6 @@ _mesa_image_image_stride( const struct gl_pixelstore_attrib *packing,
GLint width, GLint height,
GLenum format, GLenum type );
-extern void
-_mesa_unpack_polygon_stipple( const GLubyte *pattern, GLuint dest[32],
- const struct gl_pixelstore_attrib *unpacking );
-
-
-extern void
-_mesa_pack_polygon_stipple( const GLuint pattern[32], GLubyte *dest,
- const struct gl_pixelstore_attrib *packing );
-
-
-extern GLvoid *
-_mesa_unpack_bitmap( GLint width, GLint height, const GLubyte *pixels,
- const struct gl_pixelstore_attrib *packing );
-
-extern void
-_mesa_pack_bitmap( GLint width, GLint height, const GLubyte *source,
- GLubyte *dest, const struct gl_pixelstore_attrib *packing );
extern void
_mesa_expand_bitmap(GLsizei width, GLsizei height,
@@ -150,147 +136,6 @@ _mesa_expand_bitmap(GLsizei width, GLsizei height,
GLubyte onValue);
-/** \name Pixel processing functions */
-/*@{*/
-
-extern void
-_mesa_scale_and_bias_rgba(GLuint n, GLfloat rgba[][4],
- GLfloat rScale, GLfloat gScale,
- GLfloat bScale, GLfloat aScale,
- GLfloat rBias, GLfloat gBias,
- GLfloat bBias, GLfloat aBias);
-
-extern void
-_mesa_map_rgba(const struct gl_context *ctx, GLuint n, GLfloat rgba[][4]);
-
-extern void
-_mesa_lookup_rgba_float(const struct gl_color_table *table,
- GLuint n, GLfloat rgba[][4]);
-
-extern void
-_mesa_lookup_rgba_ubyte(const struct gl_color_table *table,
- GLuint n, GLubyte rgba[][4]);
-
-
-extern void
-_mesa_map_ci_to_rgba(const struct gl_context *ctx,
- GLuint n, const GLuint index[], GLfloat rgba[][4]);
-
-
-extern void
-_mesa_map_ci8_to_rgba8(const struct gl_context *ctx, GLuint n, const GLubyte index[],
- GLubyte rgba[][4]);
-
-
-extern void
-_mesa_scale_and_bias_depth(const struct gl_context *ctx, GLuint n,
- GLfloat depthValues[]);
-
-extern void
-_mesa_scale_and_bias_depth_uint(const struct gl_context *ctx, GLuint n,
- GLuint depthValues[]);
-
-extern void
-_mesa_apply_rgba_transfer_ops(struct gl_context *ctx, GLbitfield transferOps,
- GLuint n, GLfloat rgba[][4]);
-
-
-extern void
-_mesa_apply_ci_transfer_ops(const struct gl_context *ctx, GLbitfield transferOps,
- GLuint n, GLuint indexes[]);
-
-
-extern void
-_mesa_apply_stencil_transfer_ops(const struct gl_context *ctx, GLuint n,
- GLstencil stencil[]);
-
-
-extern void
-_mesa_pack_rgba_span_float( struct gl_context *ctx, GLuint n, GLfloat rgba[][4],
- GLenum dstFormat, GLenum dstType, GLvoid *dstAddr,
- const struct gl_pixelstore_attrib *dstPacking,
- GLbitfield transferOps );
-
-
-extern void
-_mesa_unpack_color_span_chan( struct gl_context *ctx,
- GLuint n, GLenum dstFormat, GLchan dest[],
- GLenum srcFormat, GLenum srcType,
- const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking,
- GLbitfield transferOps );
-
-
-extern void
-_mesa_unpack_color_span_float( struct gl_context *ctx,
- GLuint n, GLenum dstFormat, GLfloat dest[],
- GLenum srcFormat, GLenum srcType,
- const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking,
- GLbitfield transferOps );
-
-extern void
-_mesa_unpack_dudv_span_byte( struct gl_context *ctx,
- GLuint n, GLenum dstFormat, GLbyte dest[],
- GLenum srcFormat, GLenum srcType,
- const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking,
- GLbitfield transferOps );
-
-extern void
-_mesa_unpack_index_span( const struct gl_context *ctx, GLuint n,
- GLenum dstType, GLvoid *dest,
- GLenum srcType, const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking,
- GLbitfield transferOps );
-
-
-extern void
-_mesa_pack_index_span( const struct gl_context *ctx, GLuint n,
- GLenum dstType, GLvoid *dest, const GLuint *source,
- const struct gl_pixelstore_attrib *dstPacking,
- GLbitfield transferOps );
-
-
-extern void
-_mesa_unpack_stencil_span( const struct gl_context *ctx, GLuint n,
- GLenum dstType, GLvoid *dest,
- GLenum srcType, const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking,
- GLbitfield transferOps );
-
-extern void
-_mesa_pack_stencil_span( const struct gl_context *ctx, GLuint n,
- GLenum dstType, GLvoid *dest, const GLstencil *source,
- const struct gl_pixelstore_attrib *dstPacking );
-
-
-extern void
-_mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n,
- GLenum dstType, GLvoid *dest, GLuint depthMax,
- GLenum srcType, const GLvoid *source,
- const struct gl_pixelstore_attrib *srcPacking );
-
-extern void
-_mesa_pack_depth_span( const struct gl_context *ctx, GLuint n, GLvoid *dest,
- GLenum dstType, const GLfloat *depthSpan,
- const struct gl_pixelstore_attrib *dstPacking );
-
-
-extern void
-_mesa_pack_depth_stencil_span(const struct gl_context *ctx, GLuint n, GLuint *dest,
- const GLfloat *depthVals,
- const GLstencil *stencilVals,
- const struct gl_pixelstore_attrib *dstPacking);
-
-
-extern void *
-_mesa_unpack_image( GLuint dimensions,
- GLsizei width, GLsizei height, GLsizei depth,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *unpack );
-
-
extern void
_mesa_convert_colors(GLenum srcType, const GLvoid *src,
GLenum dstType, GLvoid *dst,
diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h
index 30fc152389..5ea647ad8d 100644
--- a/src/mesa/main/imports.h
+++ b/src/mesa/main/imports.h
@@ -141,12 +141,18 @@ typedef union { GLfloat f; GLint i; } fi_type;
#define sqrtf(f) ((float) sqrt(f))
#define tanf(f) ((float) tan(f))
#define tanhf(f) ((float) tanh(f))
+#define acoshf(f) ((float) acosh(f))
+#define asinhf(f) ((float) asinh(f))
+#define atanhf(f) ((float) atanh(f))
#endif
#if defined(_MSC_VER)
static INLINE float truncf(float x) { return x < 0.0f ? ceilf(x) : floorf(x); }
static INLINE float exp2f(float x) { return powf(2.0f, x); }
static INLINE float log2f(float x) { return logf(x) * 1.442695041f; }
+static INLINE float asinhf(float x) { return logf(x + sqrtf(x * x + 1.0f)); }
+static INLINE float acoshf(float x) { return logf(x + sqrtf(x * x - 1.0f)); }
+static INLINE float atanhf(float x) { return (logf(1.0f + x) - logf(1.0f - x)) / 2.0f; }
static INLINE int isblank(int ch) { return ch == ' ' || ch == '\t'; }
#define strtoll(p, e, b) _strtoi64(p, e, b)
#endif
diff --git a/src/mesa/main/light.h b/src/mesa/main/light.h
index 021f5ea193..f42fbe6f50 100644
--- a/src/mesa/main/light.h
+++ b/src/mesa/main/light.h
@@ -28,7 +28,12 @@
#define LIGHT_H
-#include "mtypes.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct gl_context;
+struct gl_light;
+struct gl_material;
extern void GLAPIENTRY
_mesa_ShadeModel( GLenum mode );
diff --git a/src/mesa/main/lines.c b/src/mesa/main/lines.c
index 505f840ba5..81e179a925 100644
--- a/src/mesa/main/lines.c
+++ b/src/mesa/main/lines.c
@@ -54,11 +54,6 @@ _mesa_LineWidth( GLfloat width )
FLUSH_VERTICES(ctx, _NEW_LINE);
ctx->Line.Width = width;
- if (width != 1.0F)
- ctx->_TriangleCaps |= DD_LINE_WIDTH;
- else
- ctx->_TriangleCaps &= ~DD_LINE_WIDTH;
-
if (ctx->Driver.LineWidth)
ctx->Driver.LineWidth(ctx, width);
}
diff --git a/src/mesa/main/lines.h b/src/mesa/main/lines.h
index 3accdd7800..8e8b3f8d6e 100644
--- a/src/mesa/main/lines.h
+++ b/src/mesa/main/lines.h
@@ -33,8 +33,9 @@
#define LINES_H
-#include "mtypes.h"
+#include "glheader.h"
+struct gl_context;
extern void GLAPIENTRY
_mesa_LineWidth( GLfloat width );
diff --git a/src/mesa/main/matrix.h b/src/mesa/main/matrix.h
index 38fd235b11..2878cc134b 100644
--- a/src/mesa/main/matrix.h
+++ b/src/mesa/main/matrix.h
@@ -28,8 +28,9 @@
#define MATRIX_H
-#include "mtypes.h"
+#include "glheader.h"
+struct gl_context;
extern void GLAPIENTRY
_mesa_Frustum( GLdouble left, GLdouble right,
diff --git a/src/mesa/main/mfeatures.h b/src/mesa/main/mfeatures.h
index 5afd65d976..1b39f5fdd3 100644
--- a/src/mesa/main/mfeatures.h
+++ b/src/mesa/main/mfeatures.h
@@ -78,7 +78,7 @@
#define FEATURE_GL !FEATURE_ES
#endif
-#ifdef IN_DRI_DRIVER
+#if defined(IN_DRI_DRIVER) || (FEATURE_GL + FEATURE_ES1 + FEATURE_ES2 > 1)
#define FEATURE_remap_table 1
#else
#define FEATURE_remap_table 0
@@ -107,9 +107,7 @@
#define FEATURE_texture_s3tc FEATURE_GL
#define FEATURE_extra_context_init FEATURE_ES
-#define FEATURE_fixedpt FEATURE_ES
#define FEATURE_point_size_array FEATURE_ES
-#define FEATURE_vertex_array_byte FEATURE_ES
#define FEATURE_es2_glsl FEATURE_ES2
diff --git a/src/mesa/main/mipmap.c b/src/mesa/main/mipmap.c
index 11d5a0519e..ad63b178df 100644
--- a/src/mesa/main/mipmap.c
+++ b/src/mesa/main/mipmap.c
@@ -288,6 +288,54 @@ do_row(GLenum datatype, GLuint comps, GLint srcWidth,
dst[i] = (rowA[j] + rowA[k] + rowB[j] + rowB[k]) / 4;
}
}
+
+ else if (datatype == GL_SHORT && comps == 4) {
+ GLuint i, j, k;
+ const GLshort(*rowA)[4] = (const GLshort(*)[4]) srcRowA;
+ const GLshort(*rowB)[4] = (const GLshort(*)[4]) srcRowB;
+ GLshort(*dst)[4] = (GLshort(*)[4]) dstRow;
+ for (i = j = 0, k = k0; i < (GLuint) dstWidth;
+ i++, j += colStride, k += colStride) {
+ dst[i][0] = (rowA[j][0] + rowA[k][0] + rowB[j][0] + rowB[k][0]) / 4;
+ dst[i][1] = (rowA[j][1] + rowA[k][1] + rowB[j][1] + rowB[k][1]) / 4;
+ dst[i][2] = (rowA[j][2] + rowA[k][2] + rowB[j][2] + rowB[k][2]) / 4;
+ dst[i][3] = (rowA[j][3] + rowA[k][3] + rowB[j][3] + rowB[k][3]) / 4;
+ }
+ }
+ else if (datatype == GL_SHORT && comps == 3) {
+ GLuint i, j, k;
+ const GLshort(*rowA)[3] = (const GLshort(*)[3]) srcRowA;
+ const GLshort(*rowB)[3] = (const GLshort(*)[3]) srcRowB;
+ GLshort(*dst)[3] = (GLshort(*)[3]) dstRow;
+ for (i = j = 0, k = k0; i < (GLuint) dstWidth;
+ i++, j += colStride, k += colStride) {
+ dst[i][0] = (rowA[j][0] + rowA[k][0] + rowB[j][0] + rowB[k][0]) / 4;
+ dst[i][1] = (rowA[j][1] + rowA[k][1] + rowB[j][1] + rowB[k][1]) / 4;
+ dst[i][2] = (rowA[j][2] + rowA[k][2] + rowB[j][2] + rowB[k][2]) / 4;
+ }
+ }
+ else if (datatype == GL_SHORT && comps == 2) {
+ GLuint i, j, k;
+ const GLshort(*rowA)[2] = (const GLshort(*)[2]) srcRowA;
+ const GLshort(*rowB)[2] = (const GLshort(*)[2]) srcRowB;
+ GLshort(*dst)[2] = (GLshort(*)[2]) dstRow;
+ for (i = j = 0, k = k0; i < (GLuint) dstWidth;
+ i++, j += colStride, k += colStride) {
+ dst[i][0] = (rowA[j][0] + rowA[k][0] + rowB[j][0] + rowB[k][0]) / 4;
+ dst[i][1] = (rowA[j][1] + rowA[k][1] + rowB[j][1] + rowB[k][1]) / 4;
+ }
+ }
+ else if (datatype == GL_SHORT && comps == 1) {
+ GLuint i, j, k;
+ const GLshort *rowA = (const GLshort *) srcRowA;
+ const GLshort *rowB = (const GLshort *) srcRowB;
+ GLshort *dst = (GLshort *) dstRow;
+ for (i = j = 0, k = k0; i < (GLuint) dstWidth;
+ i++, j += colStride, k += colStride) {
+ dst[i] = (rowA[j] + rowA[k] + rowB[j] + rowB[k]) / 4;
+ }
+ }
+
else if (datatype == GL_FLOAT && comps == 4) {
GLuint i, j, k;
const GLfloat(*rowA)[4] = (const GLfloat(*)[4]) srcRowA;
@@ -507,6 +555,37 @@ do_row(GLenum datatype, GLuint comps, GLint srcWidth,
dst[i] = (alpha << 15) | (blue << 10) | (green << 5) | red;
}
}
+ else if (datatype == GL_UNSIGNED_SHORT_5_5_5_1 && comps == 4) {
+ GLuint i, j, k;
+ const GLushort *rowA = (const GLushort *) srcRowA;
+ const GLushort *rowB = (const GLushort *) srcRowB;
+ GLushort *dst = (GLushort *) dstRow;
+ for (i = j = 0, k = k0; i < (GLuint) dstWidth;
+ i++, j += colStride, k += colStride) {
+ const GLint rowAr0 = (rowA[j] >> 11) & 0x1f;
+ const GLint rowAr1 = (rowA[k] >> 11) & 0x1f;
+ const GLint rowBr0 = (rowB[j] >> 11) & 0x1f;
+ const GLint rowBr1 = (rowB[k] >> 11) & 0x1f;
+ const GLint rowAg0 = (rowA[j] >> 6) & 0x1f;
+ const GLint rowAg1 = (rowA[k] >> 6) & 0x1f;
+ const GLint rowBg0 = (rowB[j] >> 6) & 0x1f;
+ const GLint rowBg1 = (rowB[k] >> 6) & 0x1f;
+ const GLint rowAb0 = (rowA[j] >> 1) & 0x1f;
+ const GLint rowAb1 = (rowA[k] >> 1) & 0x1f;
+ const GLint rowBb0 = (rowB[j] >> 1) & 0x1f;
+ const GLint rowBb1 = (rowB[k] >> 1) & 0x1f;
+ const GLint rowAa0 = (rowA[j] & 0x1);
+ const GLint rowAa1 = (rowA[k] & 0x1);
+ const GLint rowBa0 = (rowB[j] & 0x1);
+ const GLint rowBa1 = (rowB[k] & 0x1);
+ const GLint red = (rowAr0 + rowAr1 + rowBr0 + rowBr1) >> 2;
+ const GLint green = (rowAg0 + rowAg1 + rowBg0 + rowBg1) >> 2;
+ const GLint blue = (rowAb0 + rowAb1 + rowBb0 + rowBb1) >> 2;
+ const GLint alpha = (rowAa0 + rowAa1 + rowBa0 + rowBa1) >> 2;
+ dst[i] = (red << 11) | (green << 6) | (blue << 1) | alpha;
+ }
+ }
+
else if (datatype == GL_UNSIGNED_BYTE_3_3_2 && comps == 3) {
GLuint i, j, k;
const GLubyte *rowA = (const GLubyte *) srcRowA;
@@ -682,6 +761,44 @@ do_row_3D(GLenum datatype, GLuint comps, GLint srcWidth,
FILTER_3D(0);
}
}
+ else if ((datatype == GL_SHORT) && (comps == 4)) {
+ DECLARE_ROW_POINTERS(GLshort, 4);
+
+ for (i = j = 0, k = k0; i < (GLuint) dstWidth;
+ i++, j += colStride, k += colStride) {
+ FILTER_3D(0);
+ FILTER_3D(1);
+ FILTER_3D(2);
+ FILTER_3D(3);
+ }
+ }
+ else if ((datatype == GL_SHORT) && (comps == 3)) {
+ DECLARE_ROW_POINTERS(GLshort, 3);
+
+ for (i = j = 0, k = k0; i < (GLuint) dstWidth;
+ i++, j += colStride, k += colStride) {
+ FILTER_3D(0);
+ FILTER_3D(1);
+ FILTER_3D(2);
+ }
+ }
+ else if ((datatype == GL_SHORT) && (comps == 2)) {
+ DECLARE_ROW_POINTERS(GLshort, 2);
+
+ for (i = j = 0, k = k0; i < (GLuint) dstWidth;
+ i++, j += colStride, k += colStride) {
+ FILTER_3D(0);
+ FILTER_3D(1);
+ }
+ }
+ else if ((datatype == GL_SHORT) && (comps == 1)) {
+ DECLARE_ROW_POINTERS(GLshort, 1);
+
+ for (i = j = 0, k = k0; i < (GLuint) dstWidth;
+ i++, j += colStride, k += colStride) {
+ FILTER_3D(0);
+ }
+ }
else if ((datatype == GL_FLOAT) && (comps == 4)) {
DECLARE_ROW_POINTERS(GLfloat, 4);
@@ -910,6 +1027,55 @@ do_row_3D(GLenum datatype, GLuint comps, GLint srcWidth,
dst[i] = (a << 15) | (b << 10) | (g << 5) | r;
}
}
+ else if ((datatype == GL_UNSIGNED_SHORT_5_5_5_1) && (comps == 4)) {
+ DECLARE_ROW_POINTERS0(GLushort);
+
+ for (i = j = 0, k = k0; i < (GLuint) dstWidth;
+ i++, j += colStride, k += colStride) {
+ const GLint rowAr0 = (rowA[j] >> 11) & 0x1f;
+ const GLint rowAr1 = (rowA[k] >> 11) & 0x1f;
+ const GLint rowBr0 = (rowB[j] >> 11) & 0x1f;
+ const GLint rowBr1 = (rowB[k] >> 11) & 0x1f;
+ const GLint rowCr0 = (rowC[j] >> 11) & 0x1f;
+ const GLint rowCr1 = (rowC[k] >> 11) & 0x1f;
+ const GLint rowDr0 = (rowD[j] >> 11) & 0x1f;
+ const GLint rowDr1 = (rowD[k] >> 11) & 0x1f;
+ const GLint rowAg0 = (rowA[j] >> 6) & 0x1f;
+ const GLint rowAg1 = (rowA[k] >> 6) & 0x1f;
+ const GLint rowBg0 = (rowB[j] >> 6) & 0x1f;
+ const GLint rowBg1 = (rowB[k] >> 6) & 0x1f;
+ const GLint rowCg0 = (rowC[j] >> 6) & 0x1f;
+ const GLint rowCg1 = (rowC[k] >> 6) & 0x1f;
+ const GLint rowDg0 = (rowD[j] >> 6) & 0x1f;
+ const GLint rowDg1 = (rowD[k] >> 6) & 0x1f;
+ const GLint rowAb0 = (rowA[j] >> 1) & 0x1f;
+ const GLint rowAb1 = (rowA[k] >> 1) & 0x1f;
+ const GLint rowBb0 = (rowB[j] >> 1) & 0x1f;
+ const GLint rowBb1 = (rowB[k] >> 1) & 0x1f;
+ const GLint rowCb0 = (rowC[j] >> 1) & 0x1f;
+ const GLint rowCb1 = (rowC[k] >> 1) & 0x1f;
+ const GLint rowDb0 = (rowD[j] >> 1) & 0x1f;
+ const GLint rowDb1 = (rowD[k] >> 1) & 0x1f;
+ const GLint rowAa0 = (rowA[j] & 0x1);
+ const GLint rowAa1 = (rowA[k] & 0x1);
+ const GLint rowBa0 = (rowB[j] & 0x1);
+ const GLint rowBa1 = (rowB[k] & 0x1);
+ const GLint rowCa0 = (rowC[j] & 0x1);
+ const GLint rowCa1 = (rowC[k] & 0x1);
+ const GLint rowDa0 = (rowD[j] & 0x1);
+ const GLint rowDa1 = (rowD[k] & 0x1);
+ const GLint r = FILTER_SUM_3D(rowAr0, rowAr1, rowBr0, rowBr1,
+ rowCr0, rowCr1, rowDr0, rowDr1);
+ const GLint g = FILTER_SUM_3D(rowAg0, rowAg1, rowBg0, rowBg1,
+ rowCg0, rowCg1, rowDg0, rowDg1);
+ const GLint b = FILTER_SUM_3D(rowAb0, rowAb1, rowBb0, rowBb1,
+ rowCb0, rowCb1, rowDb0, rowDb1);
+ const GLint a = FILTER_SUM_3D(rowAa0, rowAa1, rowBa0, rowBa1,
+ rowCa0, rowCa1, rowDa0, rowDa1);
+
+ dst[i] = (r << 11) | (g << 6) | (b << 1) | a;
+ }
+ }
else if ((datatype == GL_UNSIGNED_BYTE_3_3_2) && (comps == 3)) {
DECLARE_ROW_POINTERS0(GLushort);
@@ -1624,9 +1790,9 @@ _mesa_generate_mipmap(struct gl_context *ctx, GLenum target,
/* initialize new image */
_mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight,
- dstDepth, border, srcImage->InternalFormat);
+ dstDepth, border, srcImage->InternalFormat,
+ srcImage->TexFormat);
dstImage->DriverData = NULL;
- dstImage->TexFormat = srcImage->TexFormat;
dstImage->FetchTexelc = srcImage->FetchTexelc;
dstImage->FetchTexelf = srcImage->FetchTexelf;
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 13aa66fc1e..87b96489db 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -454,6 +454,68 @@ typedef enum
/**
+ * Framebuffer configuration (aka visual / pixelformat)
+ * Note: some of these fields should be boolean, but it appears that
+ * code in drivers/dri/common/util.c requires int-sized fields.
+ */
+struct gl_config
+{
+ GLboolean rgbMode;
+ GLboolean floatMode;
+ GLboolean colorIndexMode; /* XXX is this used anywhere? */
+ GLuint doubleBufferMode;
+ GLuint stereoMode;
+
+ GLboolean haveAccumBuffer;
+ GLboolean haveDepthBuffer;
+ GLboolean haveStencilBuffer;
+
+ GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */
+ GLuint redMask, greenMask, blueMask, alphaMask;
+ GLint rgbBits; /* total bits for rgb */
+ GLint indexBits; /* total bits for colorindex */
+
+ GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
+ GLint depthBits;
+ GLint stencilBits;
+
+ GLint numAuxBuffers;
+
+ GLint level;
+
+ /* EXT_visual_rating / GLX 1.2 */
+ GLint visualRating;
+
+ /* EXT_visual_info / GLX 1.2 */
+ GLint transparentPixel;
+ /* colors are floats scaled to ints */
+ GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha;
+ GLint transparentIndex;
+
+ /* ARB_multisample / SGIS_multisample */
+ GLint sampleBuffers;
+ GLint samples;
+
+ /* SGIX_pbuffer / GLX 1.3 */
+ GLint maxPbufferWidth;
+ GLint maxPbufferHeight;
+ GLint maxPbufferPixels;
+ GLint optimalPbufferWidth; /* Only for SGIX_pbuffer. */
+ GLint optimalPbufferHeight; /* Only for SGIX_pbuffer. */
+
+ /* OML_swap_method */
+ GLint swapMethod;
+
+ /* EXT_texture_from_pixmap */
+ GLint bindToTextureRgb;
+ GLint bindToTextureRgba;
+ GLint bindToMipmapTexture;
+ GLint bindToTextureTargets;
+ GLint yInverted;
+};
+
+
+/**
* Data structure for color tables
*/
struct gl_color_table
@@ -547,60 +609,6 @@ struct gl_shine_tab
GLuint refcount;
};
-struct gl_config {
- GLboolean rgbMode;
- GLboolean floatMode;
- GLboolean colorIndexMode;
- GLuint doubleBufferMode;
- GLuint stereoMode;
-
- GLboolean haveAccumBuffer;
- GLboolean haveDepthBuffer;
- GLboolean haveStencilBuffer;
-
- GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */
- GLuint redMask, greenMask, blueMask, alphaMask;
- GLint rgbBits; /* total bits for rgb */
- GLint indexBits; /* total bits for colorindex */
-
- GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
- GLint depthBits;
- GLint stencilBits;
-
- GLint numAuxBuffers;
-
- GLint level;
-
- /* EXT_visual_rating / GLX 1.2 */
- GLint visualRating;
-
- /* EXT_visual_info / GLX 1.2 */
- GLint transparentPixel;
- /* colors are floats scaled to ints */
- GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha;
- GLint transparentIndex;
-
- /* ARB_multisample / SGIS_multisample */
- GLint sampleBuffers;
- GLint samples;
-
- /* SGIX_pbuffer / GLX 1.3 */
- GLint maxPbufferWidth;
- GLint maxPbufferHeight;
- GLint maxPbufferPixels;
- GLint optimalPbufferWidth; /* Only for SGIX_pbuffer. */
- GLint optimalPbufferHeight; /* Only for SGIX_pbuffer. */
-
- /* OML_swap_method */
- GLint swapMethod;
-
- /* EXT_texture_from_pixmap */
- GLint bindToTextureRgb;
- GLint bindToTextureRgba;
- GLint bindToMipmapTexture;
- GLint bindToTextureTargets;
- GLint yInverted;
-};
/**
* Light source state.
@@ -1530,6 +1538,7 @@ struct gl_client_array
const GLubyte *Ptr; /**< Points to array data */
GLboolean Enabled; /**< Enabled flag is a boolean */
GLboolean Normalized; /**< GL_ARB_vertex_program */
+ GLboolean Integer; /**< Integer-valued? */
GLuint _ElementSize; /**< size of each element in bytes */
struct gl_buffer_object *BufferObj;/**< GL_ARB_vertex_buffer_object */
@@ -2141,7 +2150,24 @@ struct gl_shader_program
*/
struct gl_shader_state
{
- struct gl_shader_program *CurrentProgram; /**< The user-bound program */
+ /**
+ * Programs used for rendering
+ *
+ * There is a separate program set for each shader stage. If
+ * GL_EXT_separate_shader_objects is not supported, each of these must point
+ * to \c NULL or to the same program.
+ */
+ struct gl_shader_program *CurrentVertexProgram;
+ struct gl_shader_program *CurrentGeometryProgram;
+ struct gl_shader_program *CurrentFragmentProgram;
+
+ /**
+ * Program used by glUniform calls.
+ *
+ * Explicitly set by \c glUseProgram and \c glActiveProgramEXT.
+ */
+ struct gl_shader_program *ActiveProgram;
+
void *MemPool;
GLbitfield Flags; /**< Mask of GLSL_x flags */
@@ -2462,6 +2488,9 @@ struct gl_framebuffer
/** One of the GL_FRAMEBUFFER_(IN)COMPLETE_* tokens */
GLenum _Status;
+ /** Integer color values */
+ GLboolean _IntegerColor;
+
/** Array of all renderbuffer attachments, indexed by BUFFER_* tokens. */
struct gl_renderbuffer_attachment Attachment[BUFFER_COUNT];
@@ -2604,6 +2633,9 @@ struct gl_constants
GLuint MaxTransformFeedbackSeparateAttribs;
GLuint MaxTransformFeedbackSeparateComponents;
GLuint MaxTransformFeedbackInterleavedComponents;
+
+ /** GL_EXT_gpu_shader4 */
+ GLint MinProgramTexelOffset, MaxProgramTexelOffset;
};
@@ -2690,6 +2722,7 @@ struct gl_extensions
GLboolean EXT_framebuffer_object;
GLboolean EXT_framebuffer_sRGB;
GLboolean EXT_gpu_program_parameters;
+ GLboolean EXT_gpu_shader4;
GLboolean EXT_multi_draw_arrays;
GLboolean EXT_paletted_texture;
GLboolean EXT_packed_depth_stencil;
@@ -2702,6 +2735,7 @@ struct gl_extensions
GLboolean EXT_rescale_normal;
GLboolean EXT_shadow_funcs;
GLboolean EXT_secondary_color;
+ GLboolean EXT_separate_shader_objects;
GLboolean EXT_separate_specular_color;
GLboolean EXT_shared_texture_palette;
GLboolean EXT_stencil_wrap;
@@ -2891,11 +2925,9 @@ struct gl_matrix_stack
#define DD_TRI_OFFSET 0x80
#define DD_LINE_SMOOTH 0x100
#define DD_LINE_STIPPLE 0x200
-#define DD_LINE_WIDTH 0x400
-#define DD_POINT_SMOOTH 0x800
-#define DD_POINT_SIZE 0x1000
-#define DD_POINT_ATTEN 0x2000
-#define DD_TRI_TWOSTENCIL 0x4000
+#define DD_POINT_SMOOTH 0x400
+#define DD_POINT_ATTEN 0x800
+#define DD_TRI_TWOSTENCIL 0x1000
/*@}*/
diff --git a/src/mesa/main/multisample.h b/src/mesa/main/multisample.h
index c7cc432daa..e86d4092bc 100644
--- a/src/mesa/main/multisample.h
+++ b/src/mesa/main/multisample.h
@@ -26,7 +26,9 @@
#ifndef MULTISAMPLE_H
#define MULTISAMPLE_H
-#include "mtypes.h"
+#include "glheader.h"
+
+struct gl_context;
extern void GLAPIENTRY
_mesa_SampleCoverageARB(GLclampf value, GLboolean invert);
diff --git a/src/mesa/main/nvprogram.c b/src/mesa/main/nvprogram.c
index 833bf916ec..36cea3bb9a 100644
--- a/src/mesa/main/nvprogram.c
+++ b/src/mesa/main/nvprogram.c
@@ -685,13 +685,13 @@ _mesa_LoadProgramNV(GLenum target, GLuint id, GLsizei len,
*/
void GLAPIENTRY
_mesa_ProgramParameters4dvNV(GLenum target, GLuint index,
- GLuint num, const GLdouble *params)
+ GLsizei num, const GLdouble *params)
{
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
if (target == GL_VERTEX_PROGRAM_NV && ctx->Extensions.NV_vertex_program) {
- GLuint i;
+ GLint i;
if (index + num > MAX_NV_VERTEX_PROGRAM_PARAMS) {
_mesa_error(ctx, GL_INVALID_VALUE, "glProgramParameters4dvNV");
return;
@@ -717,13 +717,13 @@ _mesa_ProgramParameters4dvNV(GLenum target, GLuint index,
*/
void GLAPIENTRY
_mesa_ProgramParameters4fvNV(GLenum target, GLuint index,
- GLuint num, const GLfloat *params)
+ GLsizei num, const GLfloat *params)
{
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
if (target == GL_VERTEX_PROGRAM_NV && ctx->Extensions.NV_vertex_program) {
- GLuint i;
+ GLint i;
if (index + num > MAX_NV_VERTEX_PROGRAM_PARAMS) {
_mesa_error(ctx, GL_INVALID_VALUE, "glProgramParameters4fvNV");
return;
diff --git a/src/mesa/main/nvprogram.h b/src/mesa/main/nvprogram.h
index 035f2fe242..3a55783773 100644
--- a/src/mesa/main/nvprogram.h
+++ b/src/mesa/main/nvprogram.h
@@ -30,7 +30,9 @@
#define NVPROGRAM_H
#include "glheader.h"
-#include "mtypes.h"
+
+struct gl_context;
+struct gl_program;
extern void GLAPIENTRY
_mesa_ExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params);
@@ -72,10 +74,12 @@ extern void GLAPIENTRY
_mesa_LoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte *program);
extern void GLAPIENTRY
-_mesa_ProgramParameters4dvNV(GLenum target, GLuint index, GLuint num, const GLdouble *params);
+_mesa_ProgramParameters4dvNV(GLenum target, GLuint index, GLsizei num,
+ const GLdouble *params);
extern void GLAPIENTRY
-_mesa_ProgramParameters4fvNV(GLenum target, GLuint index, GLuint num, const GLfloat *params);
+_mesa_ProgramParameters4fvNV(GLenum target, GLuint index, GLsizei num,
+ const GLfloat *params);
extern void GLAPIENTRY
_mesa_TrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform);
diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c
new file mode 100644
index 0000000000..fdb647c7ea
--- /dev/null
+++ b/src/mesa/main/pack.c
@@ -0,0 +1,4960 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009-2010 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, 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
+ * THEA 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.
+ */
+
+
+/**
+ * \file pack.c
+ * Image and pixel span packing and unpacking.
+ */
+
+
+#include "glheader.h"
+#include "colormac.h"
+#include "enums.h"
+#include "image.h"
+#include "imports.h"
+#include "pack.h"
+#include "pixeltransfer.h"
+#include "imports.h"
+
+
+/**
+ * NOTE:
+ * Normally, BYTE_TO_FLOAT(0) returns 0.00392 That causes problems when
+ * we later convert the float to a packed integer value (such as for
+ * GL_RGB5_A1) because we'll wind up with a non-zero value.
+ *
+ * We redefine the macros here so zero is handled correctly.
+ */
+#undef BYTE_TO_FLOAT
+#define BYTE_TO_FLOAT(B) ((B) == 0 ? 0.0F : ((2.0F * (B) + 1.0F) * (1.0F/255.0F)))
+
+#undef SHORT_TO_FLOAT
+#define SHORT_TO_FLOAT(S) ((S) == 0 ? 0.0F : ((2.0F * (S) + 1.0F) * (1.0F/65535.0F)))
+
+
+
+/** Compute ceiling of integer quotient of A divided by B. */
+#define CEILING( A, B ) ( (A) % (B) == 0 ? (A)/(B) : (A)/(B)+1 )
+
+
+/**
+ * Flip the 8 bits in each byte of the given array.
+ *
+ * \param p array.
+ * \param n number of bytes.
+ *
+ * \todo try this trick to flip bytes someday:
+ * \code
+ * v = ((v & 0x55555555) << 1) | ((v >> 1) & 0x55555555);
+ * v = ((v & 0x33333333) << 2) | ((v >> 2) & 0x33333333);
+ * v = ((v & 0x0f0f0f0f) << 4) | ((v >> 4) & 0x0f0f0f0f);
+ * \endcode
+ */
+static void
+flip_bytes( GLubyte *p, GLuint n )
+{
+ GLuint i, a, b;
+ for (i = 0; i < n; i++) {
+ b = (GLuint) p[i]; /* words are often faster than bytes */
+ a = ((b & 0x01) << 7) |
+ ((b & 0x02) << 5) |
+ ((b & 0x04) << 3) |
+ ((b & 0x08) << 1) |
+ ((b & 0x10) >> 1) |
+ ((b & 0x20) >> 3) |
+ ((b & 0x40) >> 5) |
+ ((b & 0x80) >> 7);
+ p[i] = (GLubyte) a;
+ }
+}
+
+
+
+/*
+ * Unpack a 32x32 pixel polygon stipple from user memory using the
+ * current pixel unpack settings.
+ */
+void
+_mesa_unpack_polygon_stipple( const GLubyte *pattern, GLuint dest[32],
+ const struct gl_pixelstore_attrib *unpacking )
+{
+ GLubyte *ptrn = (GLubyte *) _mesa_unpack_bitmap(32, 32, pattern, unpacking);
+ if (ptrn) {
+ /* Convert pattern from GLubytes to GLuints and handle big/little
+ * endian differences
+ */
+ GLubyte *p = ptrn;
+ GLint i;
+ for (i = 0; i < 32; i++) {
+ dest[i] = (p[0] << 24)
+ | (p[1] << 16)
+ | (p[2] << 8)
+ | (p[3] );
+ p += 4;
+ }
+ free(ptrn);
+ }
+}
+
+
+/*
+ * Pack polygon stipple into user memory given current pixel packing
+ * settings.
+ */
+void
+_mesa_pack_polygon_stipple( const GLuint pattern[32], GLubyte *dest,
+ const struct gl_pixelstore_attrib *packing )
+{
+ /* Convert pattern from GLuints to GLubytes to handle big/little
+ * endian differences.
+ */
+ GLubyte ptrn[32*4];
+ GLint i;
+ for (i = 0; i < 32; i++) {
+ ptrn[i * 4 + 0] = (GLubyte) ((pattern[i] >> 24) & 0xff);
+ ptrn[i * 4 + 1] = (GLubyte) ((pattern[i] >> 16) & 0xff);
+ ptrn[i * 4 + 2] = (GLubyte) ((pattern[i] >> 8 ) & 0xff);
+ ptrn[i * 4 + 3] = (GLubyte) ((pattern[i] ) & 0xff);
+ }
+
+ _mesa_pack_bitmap(32, 32, ptrn, dest, packing);
+}
+
+
+/*
+ * Unpack bitmap data. Resulting data will be in most-significant-bit-first
+ * order with row alignment = 1 byte.
+ */
+GLvoid *
+_mesa_unpack_bitmap( GLint width, GLint height, const GLubyte *pixels,
+ const struct gl_pixelstore_attrib *packing )
+{
+ GLint bytes, row, width_in_bytes;
+ GLubyte *buffer, *dst;
+
+ if (!pixels)
+ return NULL;
+
+ /* Alloc dest storage */
+ bytes = ((width + 7) / 8 * height);
+ buffer = (GLubyte *) malloc( bytes );
+ if (!buffer)
+ return NULL;
+
+ width_in_bytes = CEILING( width, 8 );
+ dst = buffer;
+ for (row = 0; row < height; row++) {
+ const GLubyte *src = (const GLubyte *)
+ _mesa_image_address2d(packing, pixels, width, height,
+ GL_COLOR_INDEX, GL_BITMAP, row, 0);
+ if (!src) {
+ free(buffer);
+ return NULL;
+ }
+
+ if ((packing->SkipPixels & 7) == 0) {
+ memcpy( dst, src, width_in_bytes );
+ if (packing->LsbFirst) {
+ flip_bytes( dst, width_in_bytes );
+ }
+ }
+ else {
+ /* handling SkipPixels is a bit tricky (no pun intended!) */
+ GLint i;
+ if (packing->LsbFirst) {
+ GLubyte srcMask = 1 << (packing->SkipPixels & 0x7);
+ GLubyte dstMask = 128;
+ const GLubyte *s = src;
+ GLubyte *d = dst;
+ *d = 0;
+ for (i = 0; i < width; i++) {
+ if (*s & srcMask) {
+ *d |= dstMask;
+ }
+ if (srcMask == 128) {
+ srcMask = 1;
+ s++;
+ }
+ else {
+ srcMask = srcMask << 1;
+ }
+ if (dstMask == 1) {
+ dstMask = 128;
+ d++;
+ *d = 0;
+ }
+ else {
+ dstMask = dstMask >> 1;
+ }
+ }
+ }
+ else {
+ GLubyte srcMask = 128 >> (packing->SkipPixels & 0x7);
+ GLubyte dstMask = 128;
+ const GLubyte *s = src;
+ GLubyte *d = dst;
+ *d = 0;
+ for (i = 0; i < width; i++) {
+ if (*s & srcMask) {
+ *d |= dstMask;
+ }
+ if (srcMask == 1) {
+ srcMask = 128;
+ s++;
+ }
+ else {
+ srcMask = srcMask >> 1;
+ }
+ if (dstMask == 1) {
+ dstMask = 128;
+ d++;
+ *d = 0;
+ }
+ else {
+ dstMask = dstMask >> 1;
+ }
+ }
+ }
+ }
+ dst += width_in_bytes;
+ }
+
+ return buffer;
+}
+
+
+/*
+ * Pack bitmap data.
+ */
+void
+_mesa_pack_bitmap( GLint width, GLint height, const GLubyte *source,
+ GLubyte *dest, const struct gl_pixelstore_attrib *packing )
+{
+ GLint row, width_in_bytes;
+ const GLubyte *src;
+
+ if (!source)
+ return;
+
+ width_in_bytes = CEILING( width, 8 );
+ src = source;
+ for (row = 0; row < height; row++) {
+ GLubyte *dst = (GLubyte *) _mesa_image_address2d(packing, dest,
+ width, height, GL_COLOR_INDEX, GL_BITMAP, row, 0);
+ if (!dst)
+ return;
+
+ if ((packing->SkipPixels & 7) == 0) {
+ memcpy( dst, src, width_in_bytes );
+ if (packing->LsbFirst) {
+ flip_bytes( dst, width_in_bytes );
+ }
+ }
+ else {
+ /* handling SkipPixels is a bit tricky (no pun intended!) */
+ GLint i;
+ if (packing->LsbFirst) {
+ GLubyte srcMask = 128;
+ GLubyte dstMask = 1 << (packing->SkipPixels & 0x7);
+ const GLubyte *s = src;
+ GLubyte *d = dst;
+ *d = 0;
+ for (i = 0; i < width; i++) {
+ if (*s & srcMask) {
+ *d |= dstMask;
+ }
+ if (srcMask == 1) {
+ srcMask = 128;
+ s++;
+ }
+ else {
+ srcMask = srcMask >> 1;
+ }
+ if (dstMask == 128) {
+ dstMask = 1;
+ d++;
+ *d = 0;
+ }
+ else {
+ dstMask = dstMask << 1;
+ }
+ }
+ }
+ else {
+ GLubyte srcMask = 128;
+ GLubyte dstMask = 128 >> (packing->SkipPixels & 0x7);
+ const GLubyte *s = src;
+ GLubyte *d = dst;
+ *d = 0;
+ for (i = 0; i < width; i++) {
+ if (*s & srcMask) {
+ *d |= dstMask;
+ }
+ if (srcMask == 1) {
+ srcMask = 128;
+ s++;
+ }
+ else {
+ srcMask = srcMask >> 1;
+ }
+ if (dstMask == 1) {
+ dstMask = 128;
+ d++;
+ *d = 0;
+ }
+ else {
+ dstMask = dstMask >> 1;
+ }
+ }
+ }
+ }
+ src += width_in_bytes;
+ }
+}
+
+
+/**
+ * Get indexes of color components for a basic color format, such as
+ * GL_RGBA, GL_RED, GL_LUMINANCE_ALPHA, etc. Return -1 for indexes
+ * that do not apply.
+ */
+static void
+get_component_indexes(GLenum format,
+ GLint *redIndex,
+ GLint *greenIndex,
+ GLint *blueIndex,
+ GLint *alphaIndex,
+ GLint *luminanceIndex,
+ GLint *intensityIndex)
+{
+ *redIndex = -1;
+ *greenIndex = -1;
+ *blueIndex = -1;
+ *alphaIndex = -1;
+ *luminanceIndex = -1;
+ *intensityIndex = -1;
+
+ switch (format) {
+ case GL_LUMINANCE:
+ case GL_LUMINANCE_INTEGER_EXT:
+ *luminanceIndex = 0;
+ break;
+ case GL_LUMINANCE_ALPHA:
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ *luminanceIndex = 0;
+ *alphaIndex = 1;
+ break;
+ case GL_INTENSITY:
+ *intensityIndex = 0;
+ break;
+ case GL_RED:
+ case GL_RED_INTEGER_EXT:
+ *redIndex = 0;
+ break;
+ case GL_GREEN:
+ case GL_GREEN_INTEGER_EXT:
+ *greenIndex = 0;
+ break;
+ case GL_BLUE:
+ case GL_BLUE_INTEGER_EXT:
+ *blueIndex = 0;
+ break;
+ case GL_ALPHA:
+ case GL_ALPHA_INTEGER_EXT:
+ *alphaIndex = 0;
+ break;
+ case GL_RG:
+ case GL_RG_INTEGER:
+ *redIndex = 0;
+ *greenIndex = 1;
+ break;
+ case GL_RGB:
+ case GL_RGB_INTEGER_EXT:
+ *redIndex = 0;
+ *greenIndex = 1;
+ *blueIndex = 2;
+ break;
+ case GL_BGR:
+ case GL_BGR_INTEGER_EXT:
+ *blueIndex = 0;
+ *greenIndex = 1;
+ *redIndex = 2;
+ break;
+ case GL_RGBA:
+ case GL_RGBA_INTEGER_EXT:
+ *redIndex = 0;
+ *greenIndex = 1;
+ *blueIndex = 2;
+ *alphaIndex = 3;
+ break;
+ case GL_BGRA:
+ case GL_BGRA_INTEGER:
+ *redIndex = 2;
+ *greenIndex = 1;
+ *blueIndex = 0;
+ *alphaIndex = 3;
+ break;
+ case GL_ABGR_EXT:
+ *redIndex = 3;
+ *greenIndex = 2;
+ *blueIndex = 1;
+ *alphaIndex = 0;
+ break;
+ case GL_DU8DV8_ATI:
+ case GL_DUDV_ATI:
+ *redIndex = 0;
+ *greenIndex = 1;
+ break;
+ default:
+ assert(0 && "bad format in get_component_indexes()");
+ }
+}
+
+
+
+/**
+ * For small integer types, return the min and max possible values.
+ * Used for clamping floats to unscaled integer types.
+ * \return GL_TRUE if type is handled, GL_FALSE otherwise.
+ */
+static GLboolean
+get_type_min_max(GLenum type, GLfloat *min, GLfloat *max)
+{
+ switch (type) {
+ case GL_BYTE:
+ *min = -128.0;
+ *max = 127.0;
+ return GL_TRUE;
+ case GL_UNSIGNED_BYTE:
+ *min = 0.0;
+ *max = 255.0;
+ return GL_TRUE;
+ case GL_SHORT:
+ *min = -32768.0;
+ *max = 32767.0;
+ return GL_TRUE;
+ case GL_UNSIGNED_SHORT:
+ *min = 0.0;
+ *max = 65535.0;
+ return GL_TRUE;
+ default:
+ return GL_FALSE;
+ }
+}
+
+
+
+/**
+ * Used to pack an array [][4] of RGBA float colors as specified
+ * by the dstFormat, dstType and dstPacking. Used by glReadPixels.
+ * Historically, the RGBA values were in [0,1] and rescaled to fit
+ * into GLubytes, etc. But with new integer formats, the RGBA values
+ * may have any value and we don't always rescale when converting to
+ * integers.
+ *
+ * Note: the rgba values will be modified by this function when any pixel
+ * transfer ops are enabled.
+ */
+void
+_mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4],
+ GLenum dstFormat, GLenum dstType,
+ GLvoid *dstAddr,
+ const struct gl_pixelstore_attrib *dstPacking,
+ GLbitfield transferOps)
+{
+ GLfloat luminance[MAX_WIDTH];
+ const GLint comps = _mesa_components_in_format(dstFormat);
+ const GLboolean intDstFormat = _mesa_is_integer_format(dstFormat);
+ GLuint i;
+
+ /* XXX
+ * This test should probably go away. Have the caller set/clear the
+ * IMAGE_CLAMP_BIT as needed.
+ */
+ if (dstType != GL_FLOAT || ctx->Color.ClampReadColor == GL_TRUE) {
+ if (!intDstFormat) {
+ /* need to clamp to [0, 1] */
+ transferOps |= IMAGE_CLAMP_BIT;
+ }
+ }
+
+ if (transferOps) {
+ _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba);
+ }
+
+ /*
+ * Component clamping (besides clamping to [0,1] in
+ * _mesa_apply_rgba_transfer_ops()).
+ */
+ if (intDstFormat) {
+ /* clamping to dest type's min/max values */
+ GLfloat min, max;
+ if (get_type_min_max(dstType, &min, &max)) {
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = CLAMP(rgba[i][RCOMP], min, max);
+ rgba[i][GCOMP] = CLAMP(rgba[i][GCOMP], min, max);
+ rgba[i][BCOMP] = CLAMP(rgba[i][BCOMP], min, max);
+ rgba[i][ACOMP] = CLAMP(rgba[i][ACOMP], min, max);
+ }
+ }
+ }
+ else if (dstFormat == GL_LUMINANCE || dstFormat == GL_LUMINANCE_ALPHA) {
+ /* compute luminance values */
+ if (transferOps & IMAGE_CLAMP_BIT) {
+ for (i = 0; i < n; i++) {
+ GLfloat sum = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP];
+ luminance[i] = CLAMP(sum, 0.0F, 1.0F);
+ }
+ }
+ else {
+ for (i = 0; i < n; i++) {
+ luminance[i] = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP];
+ }
+ }
+ }
+
+ /*
+ * Pack/store the pixels. Ugh! Lots of cases!!!
+ */
+ switch (dstType) {
+ case GL_UNSIGNED_BYTE:
+ {
+ GLubyte *dst = (GLubyte *) dstAddr;
+ switch (dstFormat) {
+ case GL_RED:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
+ break;
+ case GL_GREEN:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
+ break;
+ case GL_BLUE:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
+ break;
+ case GL_ALPHA:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_UBYTE(rgba[i][ACOMP]);
+ break;
+ case GL_LUMINANCE:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_UBYTE(luminance[i]);
+ break;
+ case GL_LUMINANCE_ALPHA:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_UBYTE(luminance[i]);
+ dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_RG:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
+ dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
+ }
+ break;
+ case GL_RGB:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
+ dst[i*3+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
+ dst[i*3+2] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
+ }
+ break;
+ case GL_RGBA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
+ dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
+ dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
+ dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_BGR:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
+ dst[i*3+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
+ dst[i*3+2] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_BGRA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
+ dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
+ dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
+ dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_ABGR_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_UBYTE(rgba[i][ACOMP]);
+ dst[i*4+1] = FLOAT_TO_UBYTE(rgba[i][BCOMP]);
+ dst[i*4+2] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
+ dst[i*4+3] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_RED_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLubyte) rgba[i][RCOMP];
+ }
+ break;
+ case GL_GREEN_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLubyte) rgba[i][GCOMP];
+ }
+ break;
+ case GL_BLUE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLubyte) rgba[i][BCOMP];
+ }
+ break;
+ case GL_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLubyte) rgba[i][ACOMP];
+ }
+ break;
+ case GL_RGB_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLubyte) rgba[i][RCOMP];
+ dst[i*3+1] = (GLubyte) rgba[i][GCOMP];
+ dst[i*3+2] = (GLubyte) rgba[i][BCOMP];
+ }
+ break;
+ case GL_RGBA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLubyte) rgba[i][RCOMP];
+ dst[i*4+1] = (GLubyte) rgba[i][GCOMP];
+ dst[i*4+2] = (GLubyte) rgba[i][BCOMP];
+ dst[i*4+3] = (GLubyte) rgba[i][ACOMP];
+ }
+ break;
+ case GL_BGR_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLubyte) rgba[i][BCOMP];
+ dst[i*3+1] = (GLubyte) rgba[i][GCOMP];
+ dst[i*3+2] = (GLubyte) rgba[i][RCOMP];
+ }
+ break;
+ case GL_BGRA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLubyte) rgba[i][BCOMP];
+ dst[i*4+1] = (GLubyte) rgba[i][GCOMP];
+ dst[i*4+2] = (GLubyte) rgba[i][RCOMP];
+ dst[i*4+3] = (GLubyte) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = (GLubyte) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ dst[i*2+1] = (GLubyte) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLubyte) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ }
+ break;
+ case GL_DUDV_ATI:
+ case GL_DU8DV8_ATI:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_UBYTE(rgba[i][RCOMP]);
+ dst[i*2+1] = FLOAT_TO_UBYTE(rgba[i][GCOMP]);
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
+ }
+ }
+ break;
+ case GL_BYTE:
+ {
+ GLbyte *dst = (GLbyte *) dstAddr;
+ switch (dstFormat) {
+ case GL_RED:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
+ break;
+ case GL_GREEN:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
+ break;
+ case GL_BLUE:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
+ break;
+ case GL_ALPHA:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_BYTE(rgba[i][ACOMP]);
+ break;
+ case GL_LUMINANCE:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_BYTE(luminance[i]);
+ break;
+ case GL_LUMINANCE_ALPHA:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_BYTE(luminance[i]);
+ dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_RG:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
+ dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
+ }
+ break;
+ case GL_RGB:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
+ dst[i*3+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
+ dst[i*3+2] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
+ }
+ break;
+ case GL_RGBA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
+ dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
+ dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
+ dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_BGR:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
+ dst[i*3+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
+ dst[i*3+2] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_BGRA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
+ dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
+ dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
+ dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_ABGR_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_BYTE(rgba[i][ACOMP]);
+ dst[i*4+1] = FLOAT_TO_BYTE(rgba[i][BCOMP]);
+ dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
+ dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_RED_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLbyte) rgba[i][RCOMP];
+ }
+ break;
+ case GL_GREEN_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLbyte) rgba[i][GCOMP];
+ }
+ break;
+ case GL_BLUE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLbyte) rgba[i][BCOMP];
+ }
+ break;
+ case GL_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLbyte) rgba[i][ACOMP];
+ }
+ break;
+ case GL_RGB_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLbyte) rgba[i][RCOMP];
+ dst[i*3+1] = (GLbyte) rgba[i][GCOMP];
+ dst[i*3+2] = (GLbyte) rgba[i][BCOMP];
+ }
+ break;
+ case GL_RGBA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLbyte) rgba[i][RCOMP];
+ dst[i*4+1] = (GLbyte) rgba[i][GCOMP];
+ dst[i*4+2] = (GLbyte) rgba[i][BCOMP];
+ dst[i*4+3] = (GLbyte) rgba[i][ACOMP];
+ }
+ break;
+ case GL_BGR_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLbyte) rgba[i][BCOMP];
+ dst[i*3+1] = (GLbyte) rgba[i][GCOMP];
+ dst[i*3+2] = (GLbyte) rgba[i][RCOMP];
+ }
+ break;
+ case GL_BGRA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLbyte) rgba[i][BCOMP];
+ dst[i*4+1] = (GLbyte) rgba[i][GCOMP];
+ dst[i*4+2] = (GLbyte) rgba[i][RCOMP];
+ dst[i*4+3] = (GLbyte) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = (GLbyte) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ dst[i*2+1] = (GLbyte) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLbyte) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ }
+ break;
+ case GL_DUDV_ATI:
+ case GL_DU8DV8_ATI:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
+ dst[i*2+1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT:
+ {
+ GLushort *dst = (GLushort *) dstAddr;
+ switch (dstFormat) {
+ case GL_RED:
+ for (i=0;i<n;i++)
+ CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][RCOMP]);
+ break;
+ case GL_GREEN:
+ for (i=0;i<n;i++)
+ CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][GCOMP]);
+ break;
+ case GL_BLUE:
+ for (i=0;i<n;i++)
+ CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][BCOMP]);
+ break;
+ case GL_ALPHA:
+ for (i=0;i<n;i++)
+ CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][ACOMP]);
+ break;
+ case GL_LUMINANCE:
+ for (i=0;i<n;i++)
+ UNCLAMPED_FLOAT_TO_USHORT(dst[i], luminance[i]);
+ break;
+ case GL_LUMINANCE_ALPHA:
+ for (i=0;i<n;i++) {
+ UNCLAMPED_FLOAT_TO_USHORT(dst[i*2+0], luminance[i]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*2+1], rgba[i][ACOMP]);
+ }
+ break;
+ case GL_RG:
+ for (i=0;i<n;i++) {
+ CLAMPED_FLOAT_TO_USHORT(dst[i*2+0], rgba[i][RCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*2+1], rgba[i][GCOMP]);
+ }
+ break;
+ case GL_RGB:
+ for (i=0;i<n;i++) {
+ CLAMPED_FLOAT_TO_USHORT(dst[i*3+0], rgba[i][RCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*3+1], rgba[i][GCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*3+2], rgba[i][BCOMP]);
+ }
+ break;
+ case GL_RGBA:
+ for (i=0;i<n;i++) {
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][RCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][GCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][BCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][ACOMP]);
+ }
+ break;
+ case GL_BGR:
+ for (i=0;i<n;i++) {
+ CLAMPED_FLOAT_TO_USHORT(dst[i*3+0], rgba[i][BCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*3+1], rgba[i][GCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*3+2], rgba[i][RCOMP]);
+ }
+ break;
+ case GL_BGRA:
+ for (i=0;i<n;i++) {
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][BCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][GCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][RCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][ACOMP]);
+ }
+ break;
+ case GL_ABGR_EXT:
+ for (i=0;i<n;i++) {
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][ACOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][BCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][GCOMP]);
+ CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][RCOMP]);
+ }
+ break;
+ case GL_RED_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLushort) rgba[i][RCOMP];
+ }
+ break;
+ case GL_GREEN_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLushort) rgba[i][GCOMP];
+ }
+ break;
+ case GL_BLUE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLushort) rgba[i][BCOMP];
+ }
+ break;
+ case GL_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLushort) rgba[i][ACOMP];
+ }
+ break;
+ case GL_RGB_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLushort) rgba[i][RCOMP];
+ dst[i*3+1] = (GLushort) rgba[i][GCOMP];
+ dst[i*3+2] = (GLushort) rgba[i][BCOMP];
+ }
+ break;
+ case GL_RGBA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLushort) rgba[i][RCOMP];
+ dst[i*4+1] = (GLushort) rgba[i][GCOMP];
+ dst[i*4+2] = (GLushort) rgba[i][BCOMP];
+ dst[i*4+3] = (GLushort) rgba[i][ACOMP];
+ }
+ break;
+ case GL_BGR_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLushort) rgba[i][BCOMP];
+ dst[i*3+1] = (GLushort) rgba[i][GCOMP];
+ dst[i*3+2] = (GLushort) rgba[i][RCOMP];
+ }
+ break;
+ case GL_BGRA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLushort) rgba[i][BCOMP];
+ dst[i*4+1] = (GLushort) rgba[i][GCOMP];
+ dst[i*4+2] = (GLushort) rgba[i][RCOMP];
+ dst[i*4+3] = (GLushort) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = (GLushort) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ dst[i*2+1] = (GLushort) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLushort) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ }
+ break;
+ case GL_DUDV_ATI:
+ case GL_DU8DV8_ATI:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_USHORT(rgba[i][RCOMP]);
+ dst[i*2+1] = FLOAT_TO_USHORT(rgba[i][GCOMP]);
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
+ }
+ }
+ break;
+ case GL_SHORT:
+ {
+ GLshort *dst = (GLshort *) dstAddr;
+ switch (dstFormat) {
+ case GL_RED:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
+ break;
+ case GL_GREEN:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
+ break;
+ case GL_BLUE:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
+ break;
+ case GL_ALPHA:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_SHORT(rgba[i][ACOMP]);
+ break;
+ case GL_LUMINANCE:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_SHORT(luminance[i]);
+ break;
+ case GL_LUMINANCE_ALPHA:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_SHORT(luminance[i]);
+ dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_RG:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
+ dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
+ }
+ break;
+ case GL_RGB:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
+ dst[i*3+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
+ dst[i*3+2] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
+ }
+ break;
+ case GL_RGBA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
+ dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
+ dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
+ dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_BGR:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
+ dst[i*3+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
+ dst[i*3+2] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_BGRA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
+ dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
+ dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
+ dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_ABGR_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_SHORT(rgba[i][ACOMP]);
+ dst[i*4+1] = FLOAT_TO_SHORT(rgba[i][BCOMP]);
+ dst[i*4+2] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
+ dst[i*4+3] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_RED_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLshort) rgba[i][RCOMP];
+ }
+ break;
+ case GL_GREEN_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLshort) rgba[i][GCOMP];
+ }
+ break;
+ case GL_BLUE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLshort) rgba[i][BCOMP];
+ }
+ break;
+ case GL_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLshort) rgba[i][ACOMP];
+ }
+ break;
+ case GL_RGB_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLshort) rgba[i][RCOMP];
+ dst[i*3+1] = (GLshort) rgba[i][GCOMP];
+ dst[i*3+2] = (GLshort) rgba[i][BCOMP];
+ }
+ break;
+ case GL_RGBA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLshort) rgba[i][RCOMP];
+ dst[i*4+1] = (GLshort) rgba[i][GCOMP];
+ dst[i*4+2] = (GLshort) rgba[i][BCOMP];
+ dst[i*4+3] = (GLshort) rgba[i][ACOMP];
+ }
+ break;
+ case GL_BGR_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLshort) rgba[i][BCOMP];
+ dst[i*3+1] = (GLshort) rgba[i][GCOMP];
+ dst[i*3+2] = (GLshort) rgba[i][RCOMP];
+ }
+ break;
+ case GL_BGRA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLshort) rgba[i][BCOMP];
+ dst[i*4+1] = (GLshort) rgba[i][GCOMP];
+ dst[i*4+2] = (GLshort) rgba[i][RCOMP];
+ dst[i*4+3] = (GLshort) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = (GLshort) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ dst[i*2+1] = (GLshort) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLshort) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ }
+ break;
+ case GL_DUDV_ATI:
+ case GL_DU8DV8_ATI:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_SHORT(rgba[i][RCOMP]);
+ dst[i*2+1] = FLOAT_TO_SHORT(rgba[i][GCOMP]);
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT:
+ {
+ GLuint *dst = (GLuint *) dstAddr;
+ switch (dstFormat) {
+ case GL_RED:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_UINT(rgba[i][RCOMP]);
+ break;
+ case GL_GREEN:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_UINT(rgba[i][GCOMP]);
+ break;
+ case GL_BLUE:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_UINT(rgba[i][BCOMP]);
+ break;
+ case GL_ALPHA:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_UINT(rgba[i][ACOMP]);
+ break;
+ case GL_LUMINANCE:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_UINT(luminance[i]);
+ break;
+ case GL_LUMINANCE_ALPHA:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_UINT(luminance[i]);
+ dst[i*2+1] = FLOAT_TO_UINT(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_RG:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_UINT(rgba[i][RCOMP]);
+ dst[i*2+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
+ }
+ break;
+ case GL_RGB:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = FLOAT_TO_UINT(rgba[i][RCOMP]);
+ dst[i*3+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
+ dst[i*3+2] = FLOAT_TO_UINT(rgba[i][BCOMP]);
+ }
+ break;
+ case GL_RGBA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_UINT(rgba[i][RCOMP]);
+ dst[i*4+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
+ dst[i*4+2] = FLOAT_TO_UINT(rgba[i][BCOMP]);
+ dst[i*4+3] = FLOAT_TO_UINT(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_BGR:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = FLOAT_TO_UINT(rgba[i][BCOMP]);
+ dst[i*3+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
+ dst[i*3+2] = FLOAT_TO_UINT(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_BGRA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_UINT(rgba[i][BCOMP]);
+ dst[i*4+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
+ dst[i*4+2] = FLOAT_TO_UINT(rgba[i][RCOMP]);
+ dst[i*4+3] = FLOAT_TO_UINT(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_ABGR_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_UINT(rgba[i][ACOMP]);
+ dst[i*4+1] = FLOAT_TO_UINT(rgba[i][BCOMP]);
+ dst[i*4+2] = FLOAT_TO_UINT(rgba[i][GCOMP]);
+ dst[i*4+3] = FLOAT_TO_UINT(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_RED_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLuint) rgba[i][RCOMP];
+ }
+ break;
+ case GL_GREEN_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLuint) rgba[i][GCOMP];
+ }
+ break;
+ case GL_BLUE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLuint) rgba[i][BCOMP];
+ }
+ break;
+ case GL_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLuint) rgba[i][ACOMP];
+ }
+ break;
+ case GL_RGB_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLuint) rgba[i][RCOMP];
+ dst[i*3+1] = (GLuint) rgba[i][GCOMP];
+ dst[i*3+2] = (GLuint) rgba[i][BCOMP];
+ }
+ break;
+ case GL_RGBA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLuint) rgba[i][RCOMP];
+ dst[i*4+1] = (GLuint) rgba[i][GCOMP];
+ dst[i*4+2] = (GLuint) rgba[i][BCOMP];
+ dst[i*4+3] = (GLuint) rgba[i][ACOMP];
+ }
+ break;
+ case GL_BGR_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLuint) rgba[i][BCOMP];
+ dst[i*3+1] = (GLuint) rgba[i][GCOMP];
+ dst[i*3+2] = (GLuint) rgba[i][RCOMP];
+ }
+ break;
+ case GL_BGRA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLuint) rgba[i][BCOMP];
+ dst[i*4+1] = (GLuint) rgba[i][GCOMP];
+ dst[i*4+2] = (GLuint) rgba[i][RCOMP];
+ dst[i*4+3] = (GLuint) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = (GLuint) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ dst[i*2+1] = (GLuint) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLuint) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ }
+ break;
+ case GL_DUDV_ATI:
+ case GL_DU8DV8_ATI:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_UINT(rgba[i][RCOMP]);
+ dst[i*2+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
+ }
+ }
+ break;
+ case GL_INT:
+ {
+ GLint *dst = (GLint *) dstAddr;
+ switch (dstFormat) {
+ case GL_RED:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_INT(rgba[i][RCOMP]);
+ break;
+ case GL_GREEN:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_INT(rgba[i][GCOMP]);
+ break;
+ case GL_BLUE:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_INT(rgba[i][BCOMP]);
+ break;
+ case GL_ALPHA:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_INT(rgba[i][ACOMP]);
+ break;
+ case GL_LUMINANCE:
+ for (i=0;i<n;i++)
+ dst[i] = FLOAT_TO_INT(luminance[i]);
+ break;
+ case GL_LUMINANCE_ALPHA:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_INT(luminance[i]);
+ dst[i*2+1] = FLOAT_TO_INT(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_RG:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_INT(rgba[i][RCOMP]);
+ dst[i*2+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
+ }
+ break;
+ case GL_RGB:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = FLOAT_TO_INT(rgba[i][RCOMP]);
+ dst[i*3+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
+ dst[i*3+2] = FLOAT_TO_INT(rgba[i][BCOMP]);
+ }
+ break;
+ case GL_RGBA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_INT(rgba[i][RCOMP]);
+ dst[i*4+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
+ dst[i*4+2] = FLOAT_TO_INT(rgba[i][BCOMP]);
+ dst[i*4+3] = FLOAT_TO_INT(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_BGR:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = FLOAT_TO_INT(rgba[i][BCOMP]);
+ dst[i*3+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
+ dst[i*3+2] = FLOAT_TO_INT(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_BGRA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_INT(rgba[i][BCOMP]);
+ dst[i*4+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
+ dst[i*4+2] = FLOAT_TO_INT(rgba[i][RCOMP]);
+ dst[i*4+3] = FLOAT_TO_INT(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_ABGR_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = FLOAT_TO_INT(rgba[i][ACOMP]);
+ dst[i*4+1] = FLOAT_TO_INT(rgba[i][BCOMP]);
+ dst[i*4+2] = FLOAT_TO_INT(rgba[i][GCOMP]);
+ dst[i*4+3] = FLOAT_TO_INT(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_DUDV_ATI:
+ case GL_DU8DV8_ATI:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = FLOAT_TO_INT(rgba[i][RCOMP]);
+ dst[i*2+1] = FLOAT_TO_INT(rgba[i][GCOMP]);
+ }
+ break;
+ case GL_RED_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLint) rgba[i][RCOMP];
+ }
+ break;
+ case GL_GREEN_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLint) rgba[i][GCOMP];
+ }
+ break;
+ case GL_BLUE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLint) rgba[i][BCOMP];
+ }
+ break;
+ case GL_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLint) rgba[i][ACOMP];
+ }
+ break;
+ case GL_RGB_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLint) rgba[i][RCOMP];
+ dst[i*3+1] = (GLint) rgba[i][GCOMP];
+ dst[i*3+2] = (GLint) rgba[i][BCOMP];
+ }
+ break;
+ case GL_RGBA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLint) rgba[i][RCOMP];
+ dst[i*4+1] = (GLint) rgba[i][GCOMP];
+ dst[i*4+2] = (GLint) rgba[i][BCOMP];
+ dst[i*4+3] = (GLint) rgba[i][ACOMP];
+ }
+ break;
+ case GL_BGR_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = (GLint) rgba[i][BCOMP];
+ dst[i*3+1] = (GLint) rgba[i][GCOMP];
+ dst[i*3+2] = (GLint) rgba[i][RCOMP];
+ }
+ break;
+ case GL_BGRA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = (GLint) rgba[i][BCOMP];
+ dst[i*4+1] = (GLint) rgba[i][GCOMP];
+ dst[i*4+2] = (GLint) rgba[i][RCOMP];
+ dst[i*4+3] = (GLint) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = (GLint) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ dst[i*2+1] = (GLint) rgba[i][ACOMP];
+ }
+ break;
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ for (i=0;i<n;i++) {
+ dst[i] = (GLint) (rgba[i][RCOMP] +
+ rgba[i][GCOMP] +
+ rgba[i][BCOMP]);
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
+ }
+ }
+ break;
+ case GL_FLOAT:
+ {
+ GLfloat *dst = (GLfloat *) dstAddr;
+ switch (dstFormat) {
+ case GL_RED:
+ for (i=0;i<n;i++)
+ dst[i] = rgba[i][RCOMP];
+ break;
+ case GL_GREEN:
+ for (i=0;i<n;i++)
+ dst[i] = rgba[i][GCOMP];
+ break;
+ case GL_BLUE:
+ for (i=0;i<n;i++)
+ dst[i] = rgba[i][BCOMP];
+ break;
+ case GL_ALPHA:
+ for (i=0;i<n;i++)
+ dst[i] = rgba[i][ACOMP];
+ break;
+ case GL_LUMINANCE:
+ for (i=0;i<n;i++)
+ dst[i] = luminance[i];
+ break;
+ case GL_LUMINANCE_ALPHA:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = luminance[i];
+ dst[i*2+1] = rgba[i][ACOMP];
+ }
+ break;
+ case GL_RG:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = rgba[i][RCOMP];
+ dst[i*2+1] = rgba[i][GCOMP];
+ }
+ break;
+ case GL_RGB:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = rgba[i][RCOMP];
+ dst[i*3+1] = rgba[i][GCOMP];
+ dst[i*3+2] = rgba[i][BCOMP];
+ }
+ break;
+ case GL_RGBA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = rgba[i][RCOMP];
+ dst[i*4+1] = rgba[i][GCOMP];
+ dst[i*4+2] = rgba[i][BCOMP];
+ dst[i*4+3] = rgba[i][ACOMP];
+ }
+ break;
+ case GL_BGR:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = rgba[i][BCOMP];
+ dst[i*3+1] = rgba[i][GCOMP];
+ dst[i*3+2] = rgba[i][RCOMP];
+ }
+ break;
+ case GL_BGRA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = rgba[i][BCOMP];
+ dst[i*4+1] = rgba[i][GCOMP];
+ dst[i*4+2] = rgba[i][RCOMP];
+ dst[i*4+3] = rgba[i][ACOMP];
+ }
+ break;
+ case GL_ABGR_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = rgba[i][ACOMP];
+ dst[i*4+1] = rgba[i][BCOMP];
+ dst[i*4+2] = rgba[i][GCOMP];
+ dst[i*4+3] = rgba[i][RCOMP];
+ }
+ break;
+ case GL_DUDV_ATI:
+ case GL_DU8DV8_ATI:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = rgba[i][RCOMP];
+ dst[i*2+1] = rgba[i][GCOMP];
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
+ }
+ }
+ break;
+ case GL_HALF_FLOAT_ARB:
+ {
+ GLhalfARB *dst = (GLhalfARB *) dstAddr;
+ switch (dstFormat) {
+ case GL_RED:
+ for (i=0;i<n;i++)
+ dst[i] = _mesa_float_to_half(rgba[i][RCOMP]);
+ break;
+ case GL_GREEN:
+ for (i=0;i<n;i++)
+ dst[i] = _mesa_float_to_half(rgba[i][GCOMP]);
+ break;
+ case GL_BLUE:
+ for (i=0;i<n;i++)
+ dst[i] = _mesa_float_to_half(rgba[i][BCOMP]);
+ break;
+ case GL_ALPHA:
+ for (i=0;i<n;i++)
+ dst[i] = _mesa_float_to_half(rgba[i][ACOMP]);
+ break;
+ case GL_LUMINANCE:
+ for (i=0;i<n;i++)
+ dst[i] = _mesa_float_to_half(luminance[i]);
+ break;
+ case GL_LUMINANCE_ALPHA:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = _mesa_float_to_half(luminance[i]);
+ dst[i*2+1] = _mesa_float_to_half(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_RG:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = _mesa_float_to_half(rgba[i][RCOMP]);
+ dst[i*2+1] = _mesa_float_to_half(rgba[i][GCOMP]);
+ }
+ break;
+ case GL_RGB:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = _mesa_float_to_half(rgba[i][RCOMP]);
+ dst[i*3+1] = _mesa_float_to_half(rgba[i][GCOMP]);
+ dst[i*3+2] = _mesa_float_to_half(rgba[i][BCOMP]);
+ }
+ break;
+ case GL_RGBA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = _mesa_float_to_half(rgba[i][RCOMP]);
+ dst[i*4+1] = _mesa_float_to_half(rgba[i][GCOMP]);
+ dst[i*4+2] = _mesa_float_to_half(rgba[i][BCOMP]);
+ dst[i*4+3] = _mesa_float_to_half(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_BGR:
+ for (i=0;i<n;i++) {
+ dst[i*3+0] = _mesa_float_to_half(rgba[i][BCOMP]);
+ dst[i*3+1] = _mesa_float_to_half(rgba[i][GCOMP]);
+ dst[i*3+2] = _mesa_float_to_half(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_BGRA:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = _mesa_float_to_half(rgba[i][BCOMP]);
+ dst[i*4+1] = _mesa_float_to_half(rgba[i][GCOMP]);
+ dst[i*4+2] = _mesa_float_to_half(rgba[i][RCOMP]);
+ dst[i*4+3] = _mesa_float_to_half(rgba[i][ACOMP]);
+ }
+ break;
+ case GL_ABGR_EXT:
+ for (i=0;i<n;i++) {
+ dst[i*4+0] = _mesa_float_to_half(rgba[i][ACOMP]);
+ dst[i*4+1] = _mesa_float_to_half(rgba[i][BCOMP]);
+ dst[i*4+2] = _mesa_float_to_half(rgba[i][GCOMP]);
+ dst[i*4+3] = _mesa_float_to_half(rgba[i][RCOMP]);
+ }
+ break;
+ case GL_DUDV_ATI:
+ case GL_DU8DV8_ATI:
+ for (i=0;i<n;i++) {
+ dst[i*2+0] = _mesa_float_to_half(rgba[i][RCOMP]);
+ dst[i*2+1] = _mesa_float_to_half(rgba[i][GCOMP]);
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
+ }
+ }
+ break;
+ case GL_UNSIGNED_BYTE_3_3_2:
+ if (dstFormat == GL_RGB) {
+ GLubyte *dst = (GLubyte *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 7.0F) << 5)
+ | (IROUND(rgba[i][GCOMP] * 7.0F) << 2)
+ | (IROUND(rgba[i][BCOMP] * 3.0F) );
+ }
+ }
+ break;
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ if (dstFormat == GL_RGB) {
+ GLubyte *dst = (GLubyte *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 7.0F) )
+ | (IROUND(rgba[i][GCOMP] * 7.0F) << 3)
+ | (IROUND(rgba[i][BCOMP] * 3.0F) << 6);
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_5_6_5:
+ if (dstFormat == GL_RGB) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) << 11)
+ | (IROUND(rgba[i][GCOMP] * 63.0F) << 5)
+ | (IROUND(rgba[i][BCOMP] * 31.0F) );
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ if (dstFormat == GL_RGB) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) )
+ | (IROUND(rgba[i][GCOMP] * 63.0F) << 5)
+ | (IROUND(rgba[i][BCOMP] * 31.0F) << 11);
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ if (dstFormat == GL_RGBA) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 15.0F) << 12)
+ | (IROUND(rgba[i][GCOMP] * 15.0F) << 8)
+ | (IROUND(rgba[i][BCOMP] * 15.0F) << 4)
+ | (IROUND(rgba[i][ACOMP] * 15.0F) );
+ }
+ }
+ else if (dstFormat == GL_BGRA) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][BCOMP] * 15.0F) << 12)
+ | (IROUND(rgba[i][GCOMP] * 15.0F) << 8)
+ | (IROUND(rgba[i][RCOMP] * 15.0F) << 4)
+ | (IROUND(rgba[i][ACOMP] * 15.0F) );
+ }
+ }
+ else if (dstFormat == GL_ABGR_EXT) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][ACOMP] * 15.0F) << 12)
+ | (IROUND(rgba[i][BCOMP] * 15.0F) << 8)
+ | (IROUND(rgba[i][GCOMP] * 15.0F) << 4)
+ | (IROUND(rgba[i][RCOMP] * 15.0F) );
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ if (dstFormat == GL_RGBA) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 15.0F) )
+ | (IROUND(rgba[i][GCOMP] * 15.0F) << 4)
+ | (IROUND(rgba[i][BCOMP] * 15.0F) << 8)
+ | (IROUND(rgba[i][ACOMP] * 15.0F) << 12);
+ }
+ }
+ else if (dstFormat == GL_BGRA) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][BCOMP] * 15.0F) )
+ | (IROUND(rgba[i][GCOMP] * 15.0F) << 4)
+ | (IROUND(rgba[i][RCOMP] * 15.0F) << 8)
+ | (IROUND(rgba[i][ACOMP] * 15.0F) << 12);
+ }
+ }
+ else if (dstFormat == GL_ABGR_EXT) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][ACOMP] * 15.0F) )
+ | (IROUND(rgba[i][BCOMP] * 15.0F) << 4)
+ | (IROUND(rgba[i][GCOMP] * 15.0F) << 8)
+ | (IROUND(rgba[i][RCOMP] * 15.0F) << 12);
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ if (dstFormat == GL_RGBA) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) << 11)
+ | (IROUND(rgba[i][GCOMP] * 31.0F) << 6)
+ | (IROUND(rgba[i][BCOMP] * 31.0F) << 1)
+ | (IROUND(rgba[i][ACOMP] * 1.0F) );
+ }
+ }
+ else if (dstFormat == GL_BGRA) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][BCOMP] * 31.0F) << 11)
+ | (IROUND(rgba[i][GCOMP] * 31.0F) << 6)
+ | (IROUND(rgba[i][RCOMP] * 31.0F) << 1)
+ | (IROUND(rgba[i][ACOMP] * 1.0F) );
+ }
+ }
+ else if (dstFormat == GL_ABGR_EXT) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][ACOMP] * 31.0F) << 11)
+ | (IROUND(rgba[i][BCOMP] * 31.0F) << 6)
+ | (IROUND(rgba[i][GCOMP] * 31.0F) << 1)
+ | (IROUND(rgba[i][RCOMP] * 1.0F) );
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ if (dstFormat == GL_RGBA) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 31.0F) )
+ | (IROUND(rgba[i][GCOMP] * 31.0F) << 5)
+ | (IROUND(rgba[i][BCOMP] * 31.0F) << 10)
+ | (IROUND(rgba[i][ACOMP] * 1.0F) << 15);
+ }
+ }
+ else if (dstFormat == GL_BGRA) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][BCOMP] * 31.0F) )
+ | (IROUND(rgba[i][GCOMP] * 31.0F) << 5)
+ | (IROUND(rgba[i][RCOMP] * 31.0F) << 10)
+ | (IROUND(rgba[i][ACOMP] * 1.0F) << 15);
+ }
+ }
+ else if (dstFormat == GL_ABGR_EXT) {
+ GLushort *dst = (GLushort *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][ACOMP] * 31.0F) )
+ | (IROUND(rgba[i][BCOMP] * 31.0F) << 5)
+ | (IROUND(rgba[i][GCOMP] * 31.0F) << 10)
+ | (IROUND(rgba[i][RCOMP] * 1.0F) << 15);
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_8_8_8_8:
+ if (dstFormat == GL_RGBA) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 255.F) << 24)
+ | (IROUND(rgba[i][GCOMP] * 255.F) << 16)
+ | (IROUND(rgba[i][BCOMP] * 255.F) << 8)
+ | (IROUND(rgba[i][ACOMP] * 255.F) );
+ }
+ }
+ else if (dstFormat == GL_BGRA) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][BCOMP] * 255.F) << 24)
+ | (IROUND(rgba[i][GCOMP] * 255.F) << 16)
+ | (IROUND(rgba[i][RCOMP] * 255.F) << 8)
+ | (IROUND(rgba[i][ACOMP] * 255.F) );
+ }
+ }
+ else if (dstFormat == GL_ABGR_EXT) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][ACOMP] * 255.F) << 24)
+ | (IROUND(rgba[i][BCOMP] * 255.F) << 16)
+ | (IROUND(rgba[i][GCOMP] * 255.F) << 8)
+ | (IROUND(rgba[i][RCOMP] * 255.F) );
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ if (dstFormat == GL_RGBA) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 255.0F) )
+ | (IROUND(rgba[i][GCOMP] * 255.0F) << 8)
+ | (IROUND(rgba[i][BCOMP] * 255.0F) << 16)
+ | (IROUND(rgba[i][ACOMP] * 255.0F) << 24);
+ }
+ }
+ else if (dstFormat == GL_BGRA) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][BCOMP] * 255.0F) )
+ | (IROUND(rgba[i][GCOMP] * 255.0F) << 8)
+ | (IROUND(rgba[i][RCOMP] * 255.0F) << 16)
+ | (IROUND(rgba[i][ACOMP] * 255.0F) << 24);
+ }
+ }
+ else if (dstFormat == GL_ABGR_EXT) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][ACOMP] * 255.0F) )
+ | (IROUND(rgba[i][BCOMP] * 255.0F) << 8)
+ | (IROUND(rgba[i][GCOMP] * 255.0F) << 16)
+ | (IROUND(rgba[i][RCOMP] * 255.0F) << 24);
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_10_10_10_2:
+ if (dstFormat == GL_RGBA) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 1023.0F) << 22)
+ | (IROUND(rgba[i][GCOMP] * 1023.0F) << 12)
+ | (IROUND(rgba[i][BCOMP] * 1023.0F) << 2)
+ | (IROUND(rgba[i][ACOMP] * 3.0F) );
+ }
+ }
+ else if (dstFormat == GL_BGRA) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][BCOMP] * 1023.0F) << 22)
+ | (IROUND(rgba[i][GCOMP] * 1023.0F) << 12)
+ | (IROUND(rgba[i][RCOMP] * 1023.0F) << 2)
+ | (IROUND(rgba[i][ACOMP] * 3.0F) );
+ }
+ }
+ else if (dstFormat == GL_ABGR_EXT) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][ACOMP] * 1023.0F) << 22)
+ | (IROUND(rgba[i][BCOMP] * 1023.0F) << 12)
+ | (IROUND(rgba[i][GCOMP] * 1023.0F) << 2)
+ | (IROUND(rgba[i][RCOMP] * 3.0F) );
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ if (dstFormat == GL_RGBA) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][RCOMP] * 1023.0F) )
+ | (IROUND(rgba[i][GCOMP] * 1023.0F) << 10)
+ | (IROUND(rgba[i][BCOMP] * 1023.0F) << 20)
+ | (IROUND(rgba[i][ACOMP] * 3.0F) << 30);
+ }
+ }
+ else if (dstFormat == GL_BGRA) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][BCOMP] * 1023.0F) )
+ | (IROUND(rgba[i][GCOMP] * 1023.0F) << 10)
+ | (IROUND(rgba[i][RCOMP] * 1023.0F) << 20)
+ | (IROUND(rgba[i][ACOMP] * 3.0F) << 30);
+ }
+ }
+ else if (dstFormat == GL_ABGR_EXT) {
+ GLuint *dst = (GLuint *) dstAddr;
+ for (i=0;i<n;i++) {
+ dst[i] = (IROUND(rgba[i][ACOMP] * 1023.0F) )
+ | (IROUND(rgba[i][BCOMP] * 1023.0F) << 10)
+ | (IROUND(rgba[i][GCOMP] * 1023.0F) << 20)
+ | (IROUND(rgba[i][RCOMP] * 3.0F) << 30);
+ }
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad type in _mesa_pack_rgba_span_float");
+ return;
+ }
+
+ if (dstPacking->SwapBytes) {
+ GLint swapSize = _mesa_sizeof_packed_type(dstType);
+ if (swapSize == 2) {
+ if (dstPacking->SwapBytes) {
+ _mesa_swap2((GLushort *) dstAddr, n * comps);
+ }
+ }
+ else if (swapSize == 4) {
+ if (dstPacking->SwapBytes) {
+ _mesa_swap4((GLuint *) dstAddr, n * comps);
+ }
+ }
+ }
+}
+
+
+
+#define SWAP2BYTE(VALUE) \
+ { \
+ GLubyte *bytes = (GLubyte *) &(VALUE); \
+ GLubyte tmp = bytes[0]; \
+ bytes[0] = bytes[1]; \
+ bytes[1] = tmp; \
+ }
+
+#define SWAP4BYTE(VALUE) \
+ { \
+ GLubyte *bytes = (GLubyte *) &(VALUE); \
+ GLubyte tmp = bytes[0]; \
+ bytes[0] = bytes[3]; \
+ bytes[3] = tmp; \
+ tmp = bytes[1]; \
+ bytes[1] = bytes[2]; \
+ bytes[2] = tmp; \
+ }
+
+
+static void
+extract_uint_indexes(GLuint n, GLuint indexes[],
+ GLenum srcFormat, GLenum srcType, const GLvoid *src,
+ const struct gl_pixelstore_attrib *unpack )
+{
+ ASSERT(srcFormat == GL_COLOR_INDEX || srcFormat == GL_STENCIL_INDEX);
+
+ ASSERT(srcType == GL_BITMAP ||
+ srcType == GL_UNSIGNED_BYTE ||
+ srcType == GL_BYTE ||
+ srcType == GL_UNSIGNED_SHORT ||
+ srcType == GL_SHORT ||
+ srcType == GL_UNSIGNED_INT ||
+ srcType == GL_INT ||
+ srcType == GL_UNSIGNED_INT_24_8_EXT ||
+ srcType == GL_HALF_FLOAT_ARB ||
+ srcType == GL_FLOAT);
+
+ switch (srcType) {
+ case GL_BITMAP:
+ {
+ GLubyte *ubsrc = (GLubyte *) src;
+ if (unpack->LsbFirst) {
+ GLubyte mask = 1 << (unpack->SkipPixels & 0x7);
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ indexes[i] = (*ubsrc & mask) ? 1 : 0;
+ if (mask == 128) {
+ mask = 1;
+ ubsrc++;
+ }
+ else {
+ mask = mask << 1;
+ }
+ }
+ }
+ else {
+ GLubyte mask = 128 >> (unpack->SkipPixels & 0x7);
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ indexes[i] = (*ubsrc & mask) ? 1 : 0;
+ if (mask == 1) {
+ mask = 128;
+ ubsrc++;
+ }
+ else {
+ mask = mask >> 1;
+ }
+ }
+ }
+ }
+ break;
+ case GL_UNSIGNED_BYTE:
+ {
+ GLuint i;
+ const GLubyte *s = (const GLubyte *) src;
+ for (i = 0; i < n; i++)
+ indexes[i] = s[i];
+ }
+ break;
+ case GL_BYTE:
+ {
+ GLuint i;
+ const GLbyte *s = (const GLbyte *) src;
+ for (i = 0; i < n; i++)
+ indexes[i] = s[i];
+ }
+ break;
+ case GL_UNSIGNED_SHORT:
+ {
+ GLuint i;
+ const GLushort *s = (const GLushort *) src;
+ if (unpack->SwapBytes) {
+ for (i = 0; i < n; i++) {
+ GLushort value = s[i];
+ SWAP2BYTE(value);
+ indexes[i] = value;
+ }
+ }
+ else {
+ for (i = 0; i < n; i++)
+ indexes[i] = s[i];
+ }
+ }
+ break;
+ case GL_SHORT:
+ {
+ GLuint i;
+ const GLshort *s = (const GLshort *) src;
+ if (unpack->SwapBytes) {
+ for (i = 0; i < n; i++) {
+ GLshort value = s[i];
+ SWAP2BYTE(value);
+ indexes[i] = value;
+ }
+ }
+ else {
+ for (i = 0; i < n; i++)
+ indexes[i] = s[i];
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT:
+ {
+ GLuint i;
+ const GLuint *s = (const GLuint *) src;
+ if (unpack->SwapBytes) {
+ for (i = 0; i < n; i++) {
+ GLuint value = s[i];
+ SWAP4BYTE(value);
+ indexes[i] = value;
+ }
+ }
+ else {
+ for (i = 0; i < n; i++)
+ indexes[i] = s[i];
+ }
+ }
+ break;
+ case GL_INT:
+ {
+ GLuint i;
+ const GLint *s = (const GLint *) src;
+ if (unpack->SwapBytes) {
+ for (i = 0; i < n; i++) {
+ GLint value = s[i];
+ SWAP4BYTE(value);
+ indexes[i] = value;
+ }
+ }
+ else {
+ for (i = 0; i < n; i++)
+ indexes[i] = s[i];
+ }
+ }
+ break;
+ case GL_FLOAT:
+ {
+ GLuint i;
+ const GLfloat *s = (const GLfloat *) src;
+ if (unpack->SwapBytes) {
+ for (i = 0; i < n; i++) {
+ GLfloat value = s[i];
+ SWAP4BYTE(value);
+ indexes[i] = (GLuint) value;
+ }
+ }
+ else {
+ for (i = 0; i < n; i++)
+ indexes[i] = (GLuint) s[i];
+ }
+ }
+ break;
+ case GL_HALF_FLOAT_ARB:
+ {
+ GLuint i;
+ const GLhalfARB *s = (const GLhalfARB *) src;
+ if (unpack->SwapBytes) {
+ for (i = 0; i < n; i++) {
+ GLhalfARB value = s[i];
+ SWAP2BYTE(value);
+ indexes[i] = (GLuint) _mesa_half_to_float(value);
+ }
+ }
+ else {
+ for (i = 0; i < n; i++)
+ indexes[i] = (GLuint) _mesa_half_to_float(s[i]);
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_24_8_EXT:
+ {
+ GLuint i;
+ const GLuint *s = (const GLuint *) src;
+ if (unpack->SwapBytes) {
+ for (i = 0; i < n; i++) {
+ GLuint value = s[i];
+ SWAP4BYTE(value);
+ indexes[i] = value & 0xff; /* lower 8 bits */
+ }
+ }
+ else {
+ for (i = 0; i < n; i++)
+ indexes[i] = s[i] & 0xff; /* lower 8 bits */
+ }
+ }
+ break;
+
+ default:
+ _mesa_problem(NULL, "bad srcType in extract_uint_indexes");
+ return;
+ }
+}
+
+
+/**
+ * Return source/dest RGBA indexes for unpacking pixels.
+ */
+static void
+get_component_mapping(GLenum format,
+ GLint *rSrc,
+ GLint *gSrc,
+ GLint *bSrc,
+ GLint *aSrc,
+ GLint *rDst,
+ GLint *gDst,
+ GLint *bDst,
+ GLint *aDst)
+{
+ switch (format) {
+ case GL_RED:
+ case GL_RED_INTEGER_EXT:
+ *rSrc = 0;
+ *gSrc = *bSrc = *aSrc = -1;
+ break;
+ case GL_GREEN:
+ case GL_GREEN_INTEGER_EXT:
+ *gSrc = 0;
+ *rSrc = *bSrc = *aSrc = -1;
+ break;
+ case GL_BLUE:
+ case GL_BLUE_INTEGER_EXT:
+ *bSrc = 0;
+ *rSrc = *gSrc = *aSrc = -1;
+ break;
+ case GL_ALPHA:
+ case GL_ALPHA_INTEGER_EXT:
+ *rSrc = *gSrc = *bSrc = -1;
+ *aSrc = 0;
+ break;
+ case GL_LUMINANCE:
+ case GL_LUMINANCE_INTEGER_EXT:
+ *rSrc = *gSrc = *bSrc = 0;
+ *aSrc = -1;
+ break;
+ case GL_LUMINANCE_ALPHA:
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ *rSrc = *gSrc = *bSrc = 0;
+ *aSrc = 1;
+ break;
+ case GL_INTENSITY:
+ *rSrc = *gSrc = *bSrc = *aSrc = 0;
+ break;
+ case GL_RG:
+ case GL_RG_INTEGER:
+ *rSrc = 0;
+ *gSrc = 1;
+ *bSrc = -1;
+ *aSrc = -1;
+ *rDst = 0;
+ *gDst = 1;
+ *bDst = 2;
+ *aDst = 3;
+ break;
+ case GL_RGB:
+ case GL_RGB_INTEGER:
+ *rSrc = 0;
+ *gSrc = 1;
+ *bSrc = 2;
+ *aSrc = -1;
+ *rDst = 0;
+ *gDst = 1;
+ *bDst = 2;
+ *aDst = 3;
+ break;
+ case GL_BGR:
+ *rSrc = 2;
+ *gSrc = 1;
+ *bSrc = 0;
+ *aSrc = -1;
+ *rDst = 2;
+ *gDst = 1;
+ *bDst = 0;
+ *aDst = 3;
+ break;
+ case GL_RGBA:
+ case GL_RGBA_INTEGER:
+ *rSrc = 0;
+ *gSrc = 1;
+ *bSrc = 2;
+ *aSrc = 3;
+ *rDst = 0;
+ *gDst = 1;
+ *bDst = 2;
+ *aDst = 3;
+ break;
+ case GL_BGRA:
+ *rSrc = 2;
+ *gSrc = 1;
+ *bSrc = 0;
+ *aSrc = 3;
+ *rDst = 2;
+ *gDst = 1;
+ *bDst = 0;
+ *aDst = 3;
+ break;
+ case GL_ABGR_EXT:
+ *rSrc = 3;
+ *gSrc = 2;
+ *bSrc = 1;
+ *aSrc = 0;
+ *rDst = 3;
+ *gDst = 2;
+ *bDst = 1;
+ *aDst = 0;
+ break;
+ case GL_DU8DV8_ATI:
+ case GL_DUDV_ATI:
+ *rSrc = 0;
+ *gSrc = 1;
+ *bSrc = -1;
+ *aSrc = -1;
+ break;
+ default:
+ _mesa_problem(NULL, "bad srcFormat %s in get_component_mapping",
+ _mesa_lookup_enum_by_nr(format));
+ return;
+ }
+}
+
+
+
+/*
+ * This function extracts floating point RGBA values from arbitrary
+ * image data. srcFormat and srcType are the format and type parameters
+ * passed to glDrawPixels, glTexImage[123]D, glTexSubImage[123]D, etc.
+ *
+ * Refering to section 3.6.4 of the OpenGL 1.2 spec, this function
+ * implements the "Conversion to floating point", "Conversion to RGB",
+ * and "Final Expansion to RGBA" operations.
+ *
+ * Args: n - number of pixels
+ * rgba - output colors
+ * srcFormat - format of incoming data
+ * srcType - data type of incoming data
+ * src - source data pointer
+ * swapBytes - perform byteswapping of incoming data?
+ */
+static void
+extract_float_rgba(GLuint n, GLfloat rgba[][4],
+ GLenum srcFormat, GLenum srcType, const GLvoid *src,
+ GLboolean swapBytes)
+{
+ GLint rSrc, gSrc, bSrc, aSrc;
+ GLint stride;
+ GLint rDst, bDst, gDst, aDst;
+ GLboolean intFormat;
+ GLfloat rs = 1.0f, gs = 1.0f, bs = 1.0f, as = 1.0f; /* scale factors */
+
+ ASSERT(srcFormat == GL_RED ||
+ srcFormat == GL_GREEN ||
+ srcFormat == GL_BLUE ||
+ srcFormat == GL_ALPHA ||
+ srcFormat == GL_LUMINANCE ||
+ srcFormat == GL_LUMINANCE_ALPHA ||
+ srcFormat == GL_INTENSITY ||
+ srcFormat == GL_RG ||
+ srcFormat == GL_RGB ||
+ srcFormat == GL_BGR ||
+ srcFormat == GL_RGBA ||
+ srcFormat == GL_BGRA ||
+ srcFormat == GL_ABGR_EXT ||
+ srcFormat == GL_DU8DV8_ATI ||
+ srcFormat == GL_DUDV_ATI ||
+ srcFormat == GL_RED_INTEGER_EXT ||
+ srcFormat == GL_GREEN_INTEGER_EXT ||
+ srcFormat == GL_BLUE_INTEGER_EXT ||
+ srcFormat == GL_ALPHA_INTEGER_EXT ||
+ srcFormat == GL_RGB_INTEGER_EXT ||
+ srcFormat == GL_RGBA_INTEGER_EXT ||
+ srcFormat == GL_BGR_INTEGER_EXT ||
+ srcFormat == GL_BGRA_INTEGER_EXT ||
+ srcFormat == GL_LUMINANCE_INTEGER_EXT ||
+ srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT);
+
+ ASSERT(srcType == GL_UNSIGNED_BYTE ||
+ srcType == GL_BYTE ||
+ srcType == GL_UNSIGNED_SHORT ||
+ srcType == GL_SHORT ||
+ srcType == GL_UNSIGNED_INT ||
+ srcType == GL_INT ||
+ srcType == GL_HALF_FLOAT_ARB ||
+ srcType == GL_FLOAT ||
+ srcType == GL_UNSIGNED_BYTE_3_3_2 ||
+ srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
+ srcType == GL_UNSIGNED_SHORT_5_6_5 ||
+ srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
+ srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
+ srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
+ srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
+ srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
+ srcType == GL_UNSIGNED_INT_8_8_8_8 ||
+ srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
+ srcType == GL_UNSIGNED_INT_10_10_10_2 ||
+ srcType == GL_UNSIGNED_INT_2_10_10_10_REV);
+
+ get_component_mapping(srcFormat,
+ &rSrc, &gSrc, &bSrc, &aSrc,
+ &rDst, &gDst, &bDst, &aDst);
+
+ stride = _mesa_components_in_format(srcFormat);
+
+ intFormat = _mesa_is_integer_format(srcFormat);
+
+#define PROCESS(SRC_INDEX, DST_INDEX, DEFAULT_FLT, DEFAULT_INT, TYPE, CONVERSION) \
+ if ((SRC_INDEX) < 0) { \
+ GLuint i; \
+ if (intFormat) { \
+ for (i = 0; i < n; i++) { \
+ rgba[i][DST_INDEX] = DEFAULT_INT; \
+ } \
+ } \
+ else { \
+ for (i = 0; i < n; i++) { \
+ rgba[i][DST_INDEX] = DEFAULT_FLT; \
+ } \
+ } \
+ } \
+ else if (swapBytes) { \
+ const TYPE *s = (const TYPE *) src; \
+ GLuint i; \
+ for (i = 0; i < n; i++) { \
+ TYPE value = s[SRC_INDEX]; \
+ if (sizeof(TYPE) == 2) { \
+ SWAP2BYTE(value); \
+ } \
+ else if (sizeof(TYPE) == 4) { \
+ SWAP4BYTE(value); \
+ } \
+ if (intFormat) \
+ rgba[i][DST_INDEX] = (GLfloat) value; \
+ else \
+ rgba[i][DST_INDEX] = (GLfloat) CONVERSION(value); \
+ s += stride; \
+ } \
+ } \
+ else { \
+ const TYPE *s = (const TYPE *) src; \
+ GLuint i; \
+ if (intFormat) { \
+ for (i = 0; i < n; i++) { \
+ rgba[i][DST_INDEX] = (GLfloat) s[SRC_INDEX]; \
+ s += stride; \
+ } \
+ } \
+ else { \
+ for (i = 0; i < n; i++) { \
+ rgba[i][DST_INDEX] = (GLfloat) CONVERSION(s[SRC_INDEX]); \
+ s += stride; \
+ } \
+ } \
+ }
+
+ switch (srcType) {
+ case GL_UNSIGNED_BYTE:
+ PROCESS(rSrc, RCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT);
+ PROCESS(gSrc, GCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT);
+ PROCESS(bSrc, BCOMP, 0.0F, 0, GLubyte, UBYTE_TO_FLOAT);
+ PROCESS(aSrc, ACOMP, 1.0F, 255, GLubyte, UBYTE_TO_FLOAT);
+ break;
+ case GL_BYTE:
+ PROCESS(rSrc, RCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT);
+ PROCESS(gSrc, GCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT);
+ PROCESS(bSrc, BCOMP, 0.0F, 0, GLbyte, BYTE_TO_FLOAT);
+ PROCESS(aSrc, ACOMP, 1.0F, 127, GLbyte, BYTE_TO_FLOAT);
+ break;
+ case GL_UNSIGNED_SHORT:
+ PROCESS(rSrc, RCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT);
+ PROCESS(gSrc, GCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT);
+ PROCESS(bSrc, BCOMP, 0.0F, 0, GLushort, USHORT_TO_FLOAT);
+ PROCESS(aSrc, ACOMP, 1.0F, 0xffff, GLushort, USHORT_TO_FLOAT);
+ break;
+ case GL_SHORT:
+ PROCESS(rSrc, RCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT);
+ PROCESS(gSrc, GCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT);
+ PROCESS(bSrc, BCOMP, 0.0F, 0, GLshort, SHORT_TO_FLOAT);
+ PROCESS(aSrc, ACOMP, 1.0F, 32767, GLshort, SHORT_TO_FLOAT);
+ break;
+ case GL_UNSIGNED_INT:
+ PROCESS(rSrc, RCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT);
+ PROCESS(gSrc, GCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT);
+ PROCESS(bSrc, BCOMP, 0.0F, 0, GLuint, UINT_TO_FLOAT);
+ PROCESS(aSrc, ACOMP, 1.0F, 0xffffffff, GLuint, UINT_TO_FLOAT);
+ break;
+ case GL_INT:
+ PROCESS(rSrc, RCOMP, 0.0F, 0, GLint, INT_TO_FLOAT);
+ PROCESS(gSrc, GCOMP, 0.0F, 0, GLint, INT_TO_FLOAT);
+ PROCESS(bSrc, BCOMP, 0.0F, 0, GLint, INT_TO_FLOAT);
+ PROCESS(aSrc, ACOMP, 1.0F, 2147483647, GLint, INT_TO_FLOAT);
+ break;
+ case GL_FLOAT:
+ PROCESS(rSrc, RCOMP, 0.0F, 0.0F, GLfloat, (GLfloat));
+ PROCESS(gSrc, GCOMP, 0.0F, 0.0F, GLfloat, (GLfloat));
+ PROCESS(bSrc, BCOMP, 0.0F, 0.0F, GLfloat, (GLfloat));
+ PROCESS(aSrc, ACOMP, 1.0F, 1.0F, GLfloat, (GLfloat));
+ break;
+ case GL_HALF_FLOAT_ARB:
+ PROCESS(rSrc, RCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float);
+ PROCESS(gSrc, GCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float);
+ PROCESS(bSrc, BCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float);
+ PROCESS(aSrc, ACOMP, 1.0F, 1.0F, GLhalfARB, _mesa_half_to_float);
+ break;
+ case GL_UNSIGNED_BYTE_3_3_2:
+ {
+ const GLubyte *ubsrc = (const GLubyte *) src;
+ GLuint i;
+ if (!intFormat) {
+ rs = 1.0F / 7.0F;
+ gs = 1.0F / 7.0F;
+ bs = 1.0F / 3.0F;
+ }
+ for (i = 0; i < n; i ++) {
+ GLubyte p = ubsrc[i];
+ rgba[i][rDst] = ((p >> 5) ) * rs;
+ rgba[i][gDst] = ((p >> 2) & 0x7) * gs;
+ rgba[i][bDst] = ((p ) & 0x3) * bs;
+ rgba[i][aDst] = 1.0F;
+ }
+ }
+ break;
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ {
+ const GLubyte *ubsrc = (const GLubyte *) src;
+ GLuint i;
+ if (!intFormat) {
+ rs = 1.0F / 7.0F;
+ gs = 1.0F / 7.0F;
+ bs = 1.0F / 3.0F;
+ }
+ for (i = 0; i < n; i ++) {
+ GLubyte p = ubsrc[i];
+ rgba[i][rDst] = ((p ) & 0x7) * rs;
+ rgba[i][gDst] = ((p >> 3) & 0x7) * gs;
+ rgba[i][bDst] = ((p >> 6) ) * bs;
+ rgba[i][aDst] = 1.0F;
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_5_6_5:
+ if (!intFormat) {
+ rs = 1.0F / 31.0F;
+ gs = 1.0F / 63.0F;
+ bs = 1.0F / 31.0F;
+ }
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p >> 11) ) * rs;
+ rgba[i][gDst] = ((p >> 5) & 0x3f) * gs;
+ rgba[i][bDst] = ((p ) & 0x1f) * bs;
+ rgba[i][aDst] = 1.0F;
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p >> 11) ) * rs;
+ rgba[i][gDst] = ((p >> 5) & 0x3f) * gs;
+ rgba[i][bDst] = ((p ) & 0x1f) * bs;
+ rgba[i][aDst] = 1.0F;
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ if (!intFormat) {
+ rs = 1.0F / 31.0F;
+ gs = 1.0F / 63.0F;
+ bs = 1.0F / 31.0F;
+ }
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p ) & 0x1f) * rs;
+ rgba[i][gDst] = ((p >> 5) & 0x3f) * gs;
+ rgba[i][bDst] = ((p >> 11) ) * bs;
+ rgba[i][aDst] = 1.0F;
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p ) & 0x1f) * rs;
+ rgba[i][gDst] = ((p >> 5) & 0x3f) * gs;
+ rgba[i][bDst] = ((p >> 11) ) * bs;
+ rgba[i][aDst] = 1.0F;
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ if (!intFormat) {
+ rs = gs = bs = as = 1.0F / 15.0F;
+ }
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p >> 12) ) * rs;
+ rgba[i][gDst] = ((p >> 8) & 0xf) * gs;
+ rgba[i][bDst] = ((p >> 4) & 0xf) * bs;
+ rgba[i][aDst] = ((p ) & 0xf) * as;
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p >> 12) ) * rs;
+ rgba[i][gDst] = ((p >> 8) & 0xf) * gs;
+ rgba[i][bDst] = ((p >> 4) & 0xf) * bs;
+ rgba[i][aDst] = ((p ) & 0xf) * as;
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ if (!intFormat) {
+ rs = gs = bs = as = 1.0F / 15.0F;
+ }
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p ) & 0xf) * rs;
+ rgba[i][gDst] = ((p >> 4) & 0xf) * gs;
+ rgba[i][bDst] = ((p >> 8) & 0xf) * bs;
+ rgba[i][aDst] = ((p >> 12) ) * as;
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p ) & 0xf) * rs;
+ rgba[i][gDst] = ((p >> 4) & 0xf) * gs;
+ rgba[i][bDst] = ((p >> 8) & 0xf) * bs;
+ rgba[i][aDst] = ((p >> 12) ) * as;
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ if (!intFormat) {
+ rs = gs = bs = 1.0F / 31.0F;
+ }
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p >> 11) ) * rs;
+ rgba[i][gDst] = ((p >> 6) & 0x1f) * gs;
+ rgba[i][bDst] = ((p >> 1) & 0x1f) * bs;
+ rgba[i][aDst] = ((p ) & 0x1) * as;
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p >> 11) ) * rs;
+ rgba[i][gDst] = ((p >> 6) & 0x1f) * gs;
+ rgba[i][bDst] = ((p >> 1) & 0x1f) * bs;
+ rgba[i][aDst] = ((p ) & 0x1) * as;
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ if (!intFormat) {
+ rs = gs = bs = 1.0F / 31.0F;
+ }
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p ) & 0x1f) * rs;
+ rgba[i][gDst] = ((p >> 5) & 0x1f) * gs;
+ rgba[i][bDst] = ((p >> 10) & 0x1f) * bs;
+ rgba[i][aDst] = ((p >> 15) ) * as;
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p ) & 0x1f) * rs;
+ rgba[i][gDst] = ((p >> 5) & 0x1f) * gs;
+ rgba[i][bDst] = ((p >> 10) & 0x1f) * bs;
+ rgba[i][aDst] = ((p >> 15) ) * as;
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_8_8_8_8:
+ if (swapBytes) {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ if (intFormat) {
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = (GLfloat) ((p ) & 0xff);
+ rgba[i][gDst] = (GLfloat) ((p >> 8) & 0xff);
+ rgba[i][bDst] = (GLfloat) ((p >> 16) & 0xff);
+ rgba[i][aDst] = (GLfloat) ((p >> 24) );
+ }
+ }
+ else {
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = UBYTE_TO_FLOAT((p ) & 0xff);
+ rgba[i][gDst] = UBYTE_TO_FLOAT((p >> 8) & 0xff);
+ rgba[i][bDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
+ rgba[i][aDst] = UBYTE_TO_FLOAT((p >> 24) );
+ }
+ }
+ }
+ else {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ if (intFormat) {
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = (GLfloat) ((p >> 24) );
+ rgba[i][gDst] = (GLfloat) ((p >> 16) & 0xff);
+ rgba[i][bDst] = (GLfloat) ((p >> 8) & 0xff);
+ rgba[i][aDst] = (GLfloat) ((p ) & 0xff);
+ }
+ }
+ else {
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = UBYTE_TO_FLOAT((p >> 24) );
+ rgba[i][gDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
+ rgba[i][bDst] = UBYTE_TO_FLOAT((p >> 8) & 0xff);
+ rgba[i][aDst] = UBYTE_TO_FLOAT((p ) & 0xff);
+ }
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ if (swapBytes) {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ if (intFormat) {
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = (GLfloat) ((p >> 24) );
+ rgba[i][gDst] = (GLfloat) ((p >> 16) & 0xff);
+ rgba[i][bDst] = (GLfloat) ((p >> 8) & 0xff);
+ rgba[i][aDst] = (GLfloat) ((p ) & 0xff);
+ }
+ }
+ else {
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = UBYTE_TO_FLOAT((p >> 24) );
+ rgba[i][gDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
+ rgba[i][bDst] = UBYTE_TO_FLOAT((p >> 8) & 0xff);
+ rgba[i][aDst] = UBYTE_TO_FLOAT((p ) & 0xff);
+ }
+ }
+ }
+ else {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ if (intFormat) {
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = (GLfloat) ((p ) & 0xff);
+ rgba[i][gDst] = (GLfloat) ((p >> 8) & 0xff);
+ rgba[i][bDst] = (GLfloat) ((p >> 16) & 0xff);
+ rgba[i][aDst] = (GLfloat) ((p >> 24) );
+ }
+ }
+ else {
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = UBYTE_TO_FLOAT((p ) & 0xff);
+ rgba[i][gDst] = UBYTE_TO_FLOAT((p >> 8) & 0xff);
+ rgba[i][bDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
+ rgba[i][aDst] = UBYTE_TO_FLOAT((p >> 24) );
+ }
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_10_10_10_2:
+ if (!intFormat) {
+ rs = 1.0F / 1023.0F;
+ gs = 1.0F / 1023.0F;
+ bs = 1.0F / 1023.0F;
+ as = 1.0F / 3.0F;
+ }
+ if (swapBytes) {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ SWAP4BYTE(p);
+ rgba[i][rDst] = ((p >> 22) ) * rs;
+ rgba[i][gDst] = ((p >> 12) & 0x3ff) * gs;
+ rgba[i][bDst] = ((p >> 2) & 0x3ff) * bs;
+ rgba[i][aDst] = ((p ) & 0x3 ) * as;
+ }
+ }
+ else {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = ((p >> 22) ) * rs;
+ rgba[i][gDst] = ((p >> 12) & 0x3ff) * gs;
+ rgba[i][bDst] = ((p >> 2) & 0x3ff) * bs;
+ rgba[i][aDst] = ((p ) & 0x3 ) * as;
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ if (!intFormat) {
+ rs = 1.0F / 1023.0F;
+ gs = 1.0F / 1023.0F;
+ bs = 1.0F / 1023.0F;
+ as = 1.0F / 3.0F;
+ }
+ if (swapBytes) {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ SWAP4BYTE(p);
+ rgba[i][rDst] = ((p ) & 0x3ff) * rs;
+ rgba[i][gDst] = ((p >> 10) & 0x3ff) * gs;
+ rgba[i][bDst] = ((p >> 20) & 0x3ff) * bs;
+ rgba[i][aDst] = ((p >> 30) ) * as;
+ }
+ }
+ else {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = ((p ) & 0x3ff) * rs;
+ rgba[i][gDst] = ((p >> 10) & 0x3ff) * gs;
+ rgba[i][bDst] = ((p >> 20) & 0x3ff) * bs;
+ rgba[i][aDst] = ((p >> 30) ) * as;
+ }
+ }
+ break;
+ default:
+ _mesa_problem(NULL, "bad srcType in extract float data");
+ break;
+ }
+#undef PROCESS
+}
+
+
+static INLINE GLuint
+clamp_byte_to_uint(GLbyte b)
+{
+ return b < 0 ? 0 : b;
+}
+
+
+static INLINE GLuint
+clamp_short_to_uint(GLshort s)
+{
+ return s < 0 ? 0 : s;
+}
+
+
+static INLINE GLuint
+clamp_int_to_uint(GLint i)
+{
+ return i < 0 ? 0 : i;
+}
+
+
+static INLINE GLuint
+clamp_float_to_uint(GLfloat f)
+{
+ return f < 0.0F ? 0 : IROUND(f);
+}
+
+
+static INLINE GLuint
+clamp_half_to_uint(GLhalfARB h)
+{
+ GLfloat f = _mesa_half_to_float(h);
+ return f < 0.0F ? 0 : IROUND(f);
+}
+
+
+/**
+ * \sa extract_float_rgba()
+ */
+static void
+extract_uint_rgba(GLuint n, GLuint rgba[][4],
+ GLenum srcFormat, GLenum srcType, const GLvoid *src,
+ GLboolean swapBytes)
+{
+ GLint rSrc, gSrc, bSrc, aSrc;
+ GLint stride;
+ GLint rDst, bDst, gDst, aDst;
+ GLboolean intFormat;
+
+ ASSERT(srcFormat == GL_RED ||
+ srcFormat == GL_GREEN ||
+ srcFormat == GL_BLUE ||
+ srcFormat == GL_ALPHA ||
+ srcFormat == GL_LUMINANCE ||
+ srcFormat == GL_LUMINANCE_ALPHA ||
+ srcFormat == GL_INTENSITY ||
+ srcFormat == GL_RG ||
+ srcFormat == GL_RGB ||
+ srcFormat == GL_BGR ||
+ srcFormat == GL_RGBA ||
+ srcFormat == GL_BGRA ||
+ srcFormat == GL_ABGR_EXT ||
+ srcFormat == GL_DU8DV8_ATI ||
+ srcFormat == GL_DUDV_ATI ||
+ srcFormat == GL_RED_INTEGER_EXT ||
+ srcFormat == GL_GREEN_INTEGER_EXT ||
+ srcFormat == GL_BLUE_INTEGER_EXT ||
+ srcFormat == GL_ALPHA_INTEGER_EXT ||
+ srcFormat == GL_RGB_INTEGER_EXT ||
+ srcFormat == GL_RGBA_INTEGER_EXT ||
+ srcFormat == GL_BGR_INTEGER_EXT ||
+ srcFormat == GL_BGRA_INTEGER_EXT ||
+ srcFormat == GL_LUMINANCE_INTEGER_EXT ||
+ srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT);
+
+ ASSERT(srcType == GL_UNSIGNED_BYTE ||
+ srcType == GL_BYTE ||
+ srcType == GL_UNSIGNED_SHORT ||
+ srcType == GL_SHORT ||
+ srcType == GL_UNSIGNED_INT ||
+ srcType == GL_INT ||
+ srcType == GL_HALF_FLOAT_ARB ||
+ srcType == GL_FLOAT ||
+ srcType == GL_UNSIGNED_BYTE_3_3_2 ||
+ srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
+ srcType == GL_UNSIGNED_SHORT_5_6_5 ||
+ srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
+ srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
+ srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
+ srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
+ srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
+ srcType == GL_UNSIGNED_INT_8_8_8_8 ||
+ srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
+ srcType == GL_UNSIGNED_INT_10_10_10_2 ||
+ srcType == GL_UNSIGNED_INT_2_10_10_10_REV);
+
+ get_component_mapping(srcFormat,
+ &rSrc, &gSrc, &bSrc, &aSrc,
+ &rDst, &gDst, &bDst, &aDst);
+
+ stride = _mesa_components_in_format(srcFormat);
+
+ intFormat = _mesa_is_integer_format(srcFormat);
+
+#define PROCESS(SRC_INDEX, DST_INDEX, DEFAULT, TYPE, CONVERSION) \
+ if ((SRC_INDEX) < 0) { \
+ GLuint i; \
+ for (i = 0; i < n; i++) { \
+ rgba[i][DST_INDEX] = DEFAULT; \
+ } \
+ } \
+ else if (swapBytes) { \
+ const TYPE *s = (const TYPE *) src; \
+ GLuint i; \
+ for (i = 0; i < n; i++) { \
+ TYPE value = s[SRC_INDEX]; \
+ if (sizeof(TYPE) == 2) { \
+ SWAP2BYTE(value); \
+ } \
+ else if (sizeof(TYPE) == 4) { \
+ SWAP4BYTE(value); \
+ } \
+ rgba[i][DST_INDEX] = CONVERSION(value); \
+ s += stride; \
+ } \
+ } \
+ else { \
+ const TYPE *s = (const TYPE *) src; \
+ GLuint i; \
+ for (i = 0; i < n; i++) { \
+ rgba[i][DST_INDEX] = CONVERSION(s[SRC_INDEX]); \
+ s += stride; \
+ } \
+ }
+
+ switch (srcType) {
+ case GL_UNSIGNED_BYTE:
+ PROCESS(rSrc, RCOMP, 0, GLubyte, (GLuint));
+ PROCESS(gSrc, GCOMP, 0, GLubyte, (GLuint));
+ PROCESS(bSrc, BCOMP, 0, GLubyte, (GLuint));
+ PROCESS(aSrc, ACOMP, 1, GLubyte, (GLuint));
+ break;
+ case GL_BYTE:
+ PROCESS(rSrc, RCOMP, 0, GLbyte, clamp_byte_to_uint);
+ PROCESS(gSrc, GCOMP, 0, GLbyte, clamp_byte_to_uint);
+ PROCESS(bSrc, BCOMP, 0, GLbyte, clamp_byte_to_uint);
+ PROCESS(aSrc, ACOMP, 1, GLbyte, clamp_byte_to_uint);
+ break;
+ case GL_UNSIGNED_SHORT:
+ PROCESS(rSrc, RCOMP, 0, GLushort, (GLuint));
+ PROCESS(gSrc, GCOMP, 0, GLushort, (GLuint));
+ PROCESS(bSrc, BCOMP, 0, GLushort, (GLuint));
+ PROCESS(aSrc, ACOMP, 1, GLushort, (GLuint));
+ break;
+ case GL_SHORT:
+ PROCESS(rSrc, RCOMP, 0, GLshort, clamp_short_to_uint);
+ PROCESS(gSrc, GCOMP, 0, GLshort, clamp_short_to_uint);
+ PROCESS(bSrc, BCOMP, 0, GLshort, clamp_short_to_uint);
+ PROCESS(aSrc, ACOMP, 1, GLshort, clamp_short_to_uint);
+ break;
+ case GL_UNSIGNED_INT:
+ PROCESS(rSrc, RCOMP, 0, GLuint, (GLuint));
+ PROCESS(gSrc, GCOMP, 0, GLuint, (GLuint));
+ PROCESS(bSrc, BCOMP, 0, GLuint, (GLuint));
+ PROCESS(aSrc, ACOMP, 1, GLuint, (GLuint));
+ break;
+ case GL_INT:
+ PROCESS(rSrc, RCOMP, 0, GLint, clamp_int_to_uint);
+ PROCESS(gSrc, GCOMP, 0, GLint, clamp_int_to_uint);
+ PROCESS(bSrc, BCOMP, 0, GLint, clamp_int_to_uint);
+ PROCESS(aSrc, ACOMP, 1, GLint, clamp_int_to_uint);
+ break;
+ case GL_FLOAT:
+ PROCESS(rSrc, RCOMP, 0, GLfloat, clamp_float_to_uint);
+ PROCESS(gSrc, GCOMP, 0, GLfloat, clamp_float_to_uint);
+ PROCESS(bSrc, BCOMP, 0, GLfloat, clamp_float_to_uint);
+ PROCESS(aSrc, ACOMP, 1, GLfloat, clamp_float_to_uint);
+ break;
+ case GL_HALF_FLOAT_ARB:
+ PROCESS(rSrc, RCOMP, 0, GLhalfARB, clamp_half_to_uint);
+ PROCESS(gSrc, GCOMP, 0, GLhalfARB, clamp_half_to_uint);
+ PROCESS(bSrc, BCOMP, 0, GLhalfARB, clamp_half_to_uint);
+ PROCESS(aSrc, ACOMP, 1, GLhalfARB, clamp_half_to_uint);
+ break;
+ case GL_UNSIGNED_BYTE_3_3_2:
+ {
+ const GLubyte *ubsrc = (const GLubyte *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLubyte p = ubsrc[i];
+ rgba[i][rDst] = ((p >> 5) );
+ rgba[i][gDst] = ((p >> 2) & 0x7);
+ rgba[i][bDst] = ((p ) & 0x3);
+ rgba[i][aDst] = 1;
+ }
+ }
+ break;
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ {
+ const GLubyte *ubsrc = (const GLubyte *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLubyte p = ubsrc[i];
+ rgba[i][rDst] = ((p ) & 0x7);
+ rgba[i][gDst] = ((p >> 3) & 0x7);
+ rgba[i][bDst] = ((p >> 6) );
+ rgba[i][aDst] = 1;
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_5_6_5:
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p >> 11) );
+ rgba[i][gDst] = ((p >> 5) & 0x3f);
+ rgba[i][bDst] = ((p ) & 0x1f);
+ rgba[i][aDst] = 1;
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p >> 11) );
+ rgba[i][gDst] = ((p >> 5) & 0x3f);
+ rgba[i][bDst] = ((p ) & 0x1f);
+ rgba[i][aDst] = 1;
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p ) & 0x1f);
+ rgba[i][gDst] = ((p >> 5) & 0x3f);
+ rgba[i][bDst] = ((p >> 11) );
+ rgba[i][aDst] = 1;
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p ) & 0x1f);
+ rgba[i][gDst] = ((p >> 5) & 0x3f);
+ rgba[i][bDst] = ((p >> 11) );
+ rgba[i][aDst] = 1;
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p >> 12) );
+ rgba[i][gDst] = ((p >> 8) & 0xf);
+ rgba[i][bDst] = ((p >> 4) & 0xf);
+ rgba[i][aDst] = ((p ) & 0xf);
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p >> 12) );
+ rgba[i][gDst] = ((p >> 8) & 0xf);
+ rgba[i][bDst] = ((p >> 4) & 0xf);
+ rgba[i][aDst] = ((p ) & 0xf);
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p ) & 0xf);
+ rgba[i][gDst] = ((p >> 4) & 0xf);
+ rgba[i][bDst] = ((p >> 8) & 0xf);
+ rgba[i][aDst] = ((p >> 12) );
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p ) & 0xf);
+ rgba[i][gDst] = ((p >> 4) & 0xf);
+ rgba[i][bDst] = ((p >> 8) & 0xf);
+ rgba[i][aDst] = ((p >> 12) );
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p >> 11) );
+ rgba[i][gDst] = ((p >> 6) & 0x1f);
+ rgba[i][bDst] = ((p >> 1) & 0x1f);
+ rgba[i][aDst] = ((p ) & 0x1 );
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p >> 11) );
+ rgba[i][gDst] = ((p >> 6) & 0x1f);
+ rgba[i][bDst] = ((p >> 1) & 0x1f);
+ rgba[i][aDst] = ((p ) & 0x1 );
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ if (swapBytes) {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ SWAP2BYTE(p);
+ rgba[i][rDst] = ((p ) & 0x1f);
+ rgba[i][gDst] = ((p >> 5) & 0x1f);
+ rgba[i][bDst] = ((p >> 10) & 0x1f);
+ rgba[i][aDst] = ((p >> 15) );
+ }
+ }
+ else {
+ const GLushort *ussrc = (const GLushort *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLushort p = ussrc[i];
+ rgba[i][rDst] = ((p ) & 0x1f);
+ rgba[i][gDst] = ((p >> 5) & 0x1f);
+ rgba[i][bDst] = ((p >> 10) & 0x1f);
+ rgba[i][aDst] = ((p >> 15) );
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_8_8_8_8:
+ if (swapBytes) {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = ((p ) & 0xff);
+ rgba[i][gDst] = ((p >> 8) & 0xff);
+ rgba[i][bDst] = ((p >> 16) & 0xff);
+ rgba[i][aDst] = ((p >> 24) );
+ }
+ }
+ else {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = ((p >> 24) );
+ rgba[i][gDst] = ((p >> 16) & 0xff);
+ rgba[i][bDst] = ((p >> 8) & 0xff);
+ rgba[i][aDst] = ((p ) & 0xff);
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ if (swapBytes) {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = ((p >> 24) );
+ rgba[i][gDst] = ((p >> 16) & 0xff);
+ rgba[i][bDst] = ((p >> 8) & 0xff);
+ rgba[i][aDst] = ((p ) & 0xff);
+ }
+ }
+ else {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = ((p ) & 0xff);
+ rgba[i][gDst] = ((p >> 8) & 0xff);
+ rgba[i][bDst] = ((p >> 16) & 0xff);
+ rgba[i][aDst] = ((p >> 24) );
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_10_10_10_2:
+ if (swapBytes) {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ SWAP4BYTE(p);
+ rgba[i][rDst] = ((p >> 22) );
+ rgba[i][gDst] = ((p >> 12) & 0x3ff);
+ rgba[i][bDst] = ((p >> 2) & 0x3ff);
+ rgba[i][aDst] = ((p ) & 0x3 );
+ }
+ }
+ else {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = ((p >> 22) );
+ rgba[i][gDst] = ((p >> 12) & 0x3ff);
+ rgba[i][bDst] = ((p >> 2) & 0x3ff);
+ rgba[i][aDst] = ((p ) & 0x3 );
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ if (swapBytes) {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ SWAP4BYTE(p);
+ rgba[i][rDst] = ((p ) & 0x3ff);
+ rgba[i][gDst] = ((p >> 10) & 0x3ff);
+ rgba[i][bDst] = ((p >> 20) & 0x3ff);
+ rgba[i][aDst] = ((p >> 30) );
+ }
+ }
+ else {
+ const GLuint *uisrc = (const GLuint *) src;
+ GLuint i;
+ for (i = 0; i < n; i ++) {
+ GLuint p = uisrc[i];
+ rgba[i][rDst] = ((p ) & 0x3ff);
+ rgba[i][gDst] = ((p >> 10) & 0x3ff);
+ rgba[i][bDst] = ((p >> 20) & 0x3ff);
+ rgba[i][aDst] = ((p >> 30) );
+ }
+ }
+ break;
+ default:
+ _mesa_problem(NULL, "bad srcType in extract uint data");
+ break;
+ }
+#undef PROCESS
+}
+
+
+
+/*
+ * Unpack a row of color image data from a client buffer according to
+ * the pixel unpacking parameters.
+ * Return GLchan values in the specified dest image format.
+ * This is used by glDrawPixels and glTexImage?D().
+ * \param ctx - the context
+ * n - number of pixels in the span
+ * dstFormat - format of destination color array
+ * dest - the destination color array
+ * srcFormat - source image format
+ * srcType - source image data type
+ * source - source image pointer
+ * srcPacking - pixel unpacking parameters
+ * transferOps - bitmask of IMAGE_*_BIT values of operations to apply
+ *
+ * XXX perhaps expand this to process whole images someday.
+ */
+void
+_mesa_unpack_color_span_chan( struct gl_context *ctx,
+ GLuint n, GLenum dstFormat, GLchan dest[],
+ GLenum srcFormat, GLenum srcType,
+ const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking,
+ GLbitfield transferOps )
+{
+ ASSERT(dstFormat == GL_ALPHA ||
+ dstFormat == GL_LUMINANCE ||
+ dstFormat == GL_LUMINANCE_ALPHA ||
+ dstFormat == GL_INTENSITY ||
+ dstFormat == GL_RED ||
+ dstFormat == GL_RG ||
+ dstFormat == GL_RGB ||
+ dstFormat == GL_RGBA ||
+ dstFormat == GL_COLOR_INDEX);
+
+ ASSERT(srcFormat == GL_RED ||
+ srcFormat == GL_GREEN ||
+ srcFormat == GL_BLUE ||
+ srcFormat == GL_ALPHA ||
+ srcFormat == GL_LUMINANCE ||
+ srcFormat == GL_LUMINANCE_ALPHA ||
+ srcFormat == GL_INTENSITY ||
+ srcFormat == GL_RG ||
+ srcFormat == GL_RGB ||
+ srcFormat == GL_BGR ||
+ srcFormat == GL_RGBA ||
+ srcFormat == GL_BGRA ||
+ srcFormat == GL_ABGR_EXT ||
+ srcFormat == GL_COLOR_INDEX);
+
+ ASSERT(srcType == GL_BITMAP ||
+ srcType == GL_UNSIGNED_BYTE ||
+ srcType == GL_BYTE ||
+ srcType == GL_UNSIGNED_SHORT ||
+ srcType == GL_SHORT ||
+ srcType == GL_UNSIGNED_INT ||
+ srcType == GL_INT ||
+ srcType == GL_HALF_FLOAT_ARB ||
+ srcType == GL_FLOAT ||
+ srcType == GL_UNSIGNED_BYTE_3_3_2 ||
+ srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
+ srcType == GL_UNSIGNED_SHORT_5_6_5 ||
+ srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
+ srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
+ srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
+ srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
+ srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
+ srcType == GL_UNSIGNED_INT_8_8_8_8 ||
+ srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
+ srcType == GL_UNSIGNED_INT_10_10_10_2 ||
+ srcType == GL_UNSIGNED_INT_2_10_10_10_REV);
+
+ /* Try simple cases first */
+ if (transferOps == 0) {
+ if (srcType == CHAN_TYPE) {
+ if (dstFormat == GL_RGBA) {
+ if (srcFormat == GL_RGBA) {
+ memcpy( dest, source, n * 4 * sizeof(GLchan) );
+ return;
+ }
+ else if (srcFormat == GL_RGB) {
+ GLuint i;
+ const GLchan *src = (const GLchan *) source;
+ GLchan *dst = dest;
+ for (i = 0; i < n; i++) {
+ dst[0] = src[0];
+ dst[1] = src[1];
+ dst[2] = src[2];
+ dst[3] = CHAN_MAX;
+ src += 3;
+ dst += 4;
+ }
+ return;
+ }
+ }
+ else if (dstFormat == GL_RGB) {
+ if (srcFormat == GL_RGB) {
+ memcpy( dest, source, n * 3 * sizeof(GLchan) );
+ return;
+ }
+ else if (srcFormat == GL_RGBA) {
+ GLuint i;
+ const GLchan *src = (const GLchan *) source;
+ GLchan *dst = dest;
+ for (i = 0; i < n; i++) {
+ dst[0] = src[0];
+ dst[1] = src[1];
+ dst[2] = src[2];
+ src += 4;
+ dst += 3;
+ }
+ return;
+ }
+ }
+ else if (dstFormat == srcFormat) {
+ GLint comps = _mesa_components_in_format(srcFormat);
+ assert(comps > 0);
+ memcpy( dest, source, n * comps * sizeof(GLchan) );
+ return;
+ }
+ }
+ /*
+ * Common situation, loading 8bit RGBA/RGB source images
+ * into 16/32 bit destination. (OSMesa16/32)
+ */
+ else if (srcType == GL_UNSIGNED_BYTE) {
+ if (dstFormat == GL_RGBA) {
+ if (srcFormat == GL_RGB) {
+ GLuint i;
+ const GLubyte *src = (const GLubyte *) source;
+ GLchan *dst = dest;
+ for (i = 0; i < n; i++) {
+ dst[0] = UBYTE_TO_CHAN(src[0]);
+ dst[1] = UBYTE_TO_CHAN(src[1]);
+ dst[2] = UBYTE_TO_CHAN(src[2]);
+ dst[3] = CHAN_MAX;
+ src += 3;
+ dst += 4;
+ }
+ return;
+ }
+ else if (srcFormat == GL_RGBA) {
+ GLuint i;
+ const GLubyte *src = (const GLubyte *) source;
+ GLchan *dst = dest;
+ for (i = 0; i < n; i++) {
+ dst[0] = UBYTE_TO_CHAN(src[0]);
+ dst[1] = UBYTE_TO_CHAN(src[1]);
+ dst[2] = UBYTE_TO_CHAN(src[2]);
+ dst[3] = UBYTE_TO_CHAN(src[3]);
+ src += 4;
+ dst += 4;
+ }
+ return;
+ }
+ }
+ else if (dstFormat == GL_RGB) {
+ if (srcFormat == GL_RGB) {
+ GLuint i;
+ const GLubyte *src = (const GLubyte *) source;
+ GLchan *dst = dest;
+ for (i = 0; i < n; i++) {
+ dst[0] = UBYTE_TO_CHAN(src[0]);
+ dst[1] = UBYTE_TO_CHAN(src[1]);
+ dst[2] = UBYTE_TO_CHAN(src[2]);
+ src += 3;
+ dst += 3;
+ }
+ return;
+ }
+ else if (srcFormat == GL_RGBA) {
+ GLuint i;
+ const GLubyte *src = (const GLubyte *) source;
+ GLchan *dst = dest;
+ for (i = 0; i < n; i++) {
+ dst[0] = UBYTE_TO_CHAN(src[0]);
+ dst[1] = UBYTE_TO_CHAN(src[1]);
+ dst[2] = UBYTE_TO_CHAN(src[2]);
+ src += 4;
+ dst += 3;
+ }
+ return;
+ }
+ }
+ }
+ }
+
+
+ /* general solution begins here */
+ {
+ GLint dstComponents;
+ GLint rDst, gDst, bDst, aDst, lDst, iDst;
+ GLfloat rgba[MAX_WIDTH][4];
+
+ dstComponents = _mesa_components_in_format( dstFormat );
+ /* source & dest image formats should have been error checked by now */
+ assert(dstComponents > 0);
+
+ /*
+ * Extract image data and convert to RGBA floats
+ */
+ assert(n <= MAX_WIDTH);
+ if (srcFormat == GL_COLOR_INDEX) {
+ GLuint indexes[MAX_WIDTH];
+ extract_uint_indexes(n, indexes, srcFormat, srcType, source,
+ srcPacking);
+
+ if (dstFormat == GL_COLOR_INDEX) {
+ GLuint i;
+ _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes);
+ /* convert to GLchan and return */
+ for (i = 0; i < n; i++) {
+ dest[i] = (GLchan) (indexes[i] & 0xff);
+ }
+ return;
+ }
+ else {
+ /* Convert indexes to RGBA */
+ if (transferOps & IMAGE_SHIFT_OFFSET_BIT) {
+ _mesa_shift_and_offset_ci(ctx, n, indexes);
+ }
+ _mesa_map_ci_to_rgba(ctx, n, indexes, rgba);
+ }
+
+ /* Don't do RGBA scale/bias or RGBA->RGBA mapping if starting
+ * with color indexes.
+ */
+ transferOps &= ~(IMAGE_SCALE_BIAS_BIT | IMAGE_MAP_COLOR_BIT);
+ }
+ else {
+ /* non-color index data */
+ extract_float_rgba(n, rgba, srcFormat, srcType, source,
+ srcPacking->SwapBytes);
+ }
+
+ /* Need to clamp if returning GLubytes or GLushorts */
+#if CHAN_TYPE != GL_FLOAT
+ transferOps |= IMAGE_CLAMP_BIT;
+#endif
+
+ if (transferOps) {
+ _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba);
+ }
+
+ get_component_indexes(dstFormat,
+ &rDst, &gDst, &bDst, &aDst, &lDst, &iDst);
+
+ /* Now return the GLchan data in the requested dstFormat */
+ if (rDst >= 0) {
+ GLchan *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ CLAMPED_FLOAT_TO_CHAN(dst[rDst], rgba[i][RCOMP]);
+ dst += dstComponents;
+ }
+ }
+
+ if (gDst >= 0) {
+ GLchan *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ CLAMPED_FLOAT_TO_CHAN(dst[gDst], rgba[i][GCOMP]);
+ dst += dstComponents;
+ }
+ }
+
+ if (bDst >= 0) {
+ GLchan *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ CLAMPED_FLOAT_TO_CHAN(dst[bDst], rgba[i][BCOMP]);
+ dst += dstComponents;
+ }
+ }
+
+ if (aDst >= 0) {
+ GLchan *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ CLAMPED_FLOAT_TO_CHAN(dst[aDst], rgba[i][ACOMP]);
+ dst += dstComponents;
+ }
+ }
+
+ if (iDst >= 0) {
+ GLchan *dst = dest;
+ GLuint i;
+ assert(iDst == 0);
+ assert(dstComponents == 1);
+ for (i = 0; i < n; i++) {
+ /* Intensity comes from red channel */
+ CLAMPED_FLOAT_TO_CHAN(dst[i], rgba[i][RCOMP]);
+ }
+ }
+
+ if (lDst >= 0) {
+ GLchan *dst = dest;
+ GLuint i;
+ assert(lDst == 0);
+ for (i = 0; i < n; i++) {
+ /* Luminance comes from red channel */
+ CLAMPED_FLOAT_TO_CHAN(dst[0], rgba[i][RCOMP]);
+ dst += dstComponents;
+ }
+ }
+ }
+}
+
+
+/**
+ * Same as _mesa_unpack_color_span_chan(), but return GLfloat data
+ * instead of GLchan.
+ */
+void
+_mesa_unpack_color_span_float( struct gl_context *ctx,
+ GLuint n, GLenum dstFormat, GLfloat dest[],
+ GLenum srcFormat, GLenum srcType,
+ const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking,
+ GLbitfield transferOps )
+{
+ ASSERT(dstFormat == GL_ALPHA ||
+ dstFormat == GL_LUMINANCE ||
+ dstFormat == GL_LUMINANCE_ALPHA ||
+ dstFormat == GL_INTENSITY ||
+ dstFormat == GL_RED ||
+ dstFormat == GL_RG ||
+ dstFormat == GL_RGB ||
+ dstFormat == GL_RGBA ||
+ dstFormat == GL_COLOR_INDEX);
+
+ ASSERT(srcFormat == GL_RED ||
+ srcFormat == GL_GREEN ||
+ srcFormat == GL_BLUE ||
+ srcFormat == GL_ALPHA ||
+ srcFormat == GL_LUMINANCE ||
+ srcFormat == GL_LUMINANCE_ALPHA ||
+ srcFormat == GL_INTENSITY ||
+ srcFormat == GL_RG ||
+ srcFormat == GL_RGB ||
+ srcFormat == GL_BGR ||
+ srcFormat == GL_RGBA ||
+ srcFormat == GL_BGRA ||
+ srcFormat == GL_ABGR_EXT ||
+ srcFormat == GL_RED_INTEGER_EXT ||
+ srcFormat == GL_GREEN_INTEGER_EXT ||
+ srcFormat == GL_BLUE_INTEGER_EXT ||
+ srcFormat == GL_ALPHA_INTEGER_EXT ||
+ srcFormat == GL_RGB_INTEGER_EXT ||
+ srcFormat == GL_RGBA_INTEGER_EXT ||
+ srcFormat == GL_BGR_INTEGER_EXT ||
+ srcFormat == GL_BGRA_INTEGER_EXT ||
+ srcFormat == GL_LUMINANCE_INTEGER_EXT ||
+ srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT ||
+ srcFormat == GL_COLOR_INDEX);
+
+ ASSERT(srcType == GL_BITMAP ||
+ srcType == GL_UNSIGNED_BYTE ||
+ srcType == GL_BYTE ||
+ srcType == GL_UNSIGNED_SHORT ||
+ srcType == GL_SHORT ||
+ srcType == GL_UNSIGNED_INT ||
+ srcType == GL_INT ||
+ srcType == GL_HALF_FLOAT_ARB ||
+ srcType == GL_FLOAT ||
+ srcType == GL_UNSIGNED_BYTE_3_3_2 ||
+ srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
+ srcType == GL_UNSIGNED_SHORT_5_6_5 ||
+ srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
+ srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
+ srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
+ srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
+ srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
+ srcType == GL_UNSIGNED_INT_8_8_8_8 ||
+ srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
+ srcType == GL_UNSIGNED_INT_10_10_10_2 ||
+ srcType == GL_UNSIGNED_INT_2_10_10_10_REV);
+
+ /* general solution, no special cases, yet */
+ {
+ GLint dstComponents;
+ GLint rDst, gDst, bDst, aDst, lDst, iDst;
+ GLfloat rgba[MAX_WIDTH][4];
+
+ dstComponents = _mesa_components_in_format( dstFormat );
+ /* source & dest image formats should have been error checked by now */
+ assert(dstComponents > 0);
+
+ /*
+ * Extract image data and convert to RGBA floats
+ */
+ assert(n <= MAX_WIDTH);
+ if (srcFormat == GL_COLOR_INDEX) {
+ GLuint indexes[MAX_WIDTH];
+ extract_uint_indexes(n, indexes, srcFormat, srcType, source,
+ srcPacking);
+
+ if (dstFormat == GL_COLOR_INDEX) {
+ GLuint i;
+ _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes);
+ /* convert to GLchan and return */
+ for (i = 0; i < n; i++) {
+ dest[i] = (GLchan) (indexes[i] & 0xff);
+ }
+ return;
+ }
+ else {
+ /* Convert indexes to RGBA */
+ if (transferOps & IMAGE_SHIFT_OFFSET_BIT) {
+ _mesa_shift_and_offset_ci(ctx, n, indexes);
+ }
+ _mesa_map_ci_to_rgba(ctx, n, indexes, rgba);
+ }
+
+ /* Don't do RGBA scale/bias or RGBA->RGBA mapping if starting
+ * with color indexes.
+ */
+ transferOps &= ~(IMAGE_SCALE_BIAS_BIT | IMAGE_MAP_COLOR_BIT);
+ }
+ else {
+ /* non-color index data */
+ extract_float_rgba(n, rgba, srcFormat, srcType, source,
+ srcPacking->SwapBytes);
+ }
+
+ if (transferOps) {
+ _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba);
+ }
+
+ get_component_indexes(dstFormat,
+ &rDst, &gDst, &bDst, &aDst, &lDst, &iDst);
+
+ /* Now pack results in the requested dstFormat */
+ if (rDst >= 0) {
+ GLfloat *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[rDst] = rgba[i][RCOMP];
+ dst += dstComponents;
+ }
+ }
+
+ if (gDst >= 0) {
+ GLfloat *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[gDst] = rgba[i][GCOMP];
+ dst += dstComponents;
+ }
+ }
+
+ if (bDst >= 0) {
+ GLfloat *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[bDst] = rgba[i][BCOMP];
+ dst += dstComponents;
+ }
+ }
+
+ if (aDst >= 0) {
+ GLfloat *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[aDst] = rgba[i][ACOMP];
+ dst += dstComponents;
+ }
+ }
+
+ if (iDst >= 0) {
+ GLfloat *dst = dest;
+ GLuint i;
+ assert(iDst == 0);
+ assert(dstComponents == 1);
+ for (i = 0; i < n; i++) {
+ /* Intensity comes from red channel */
+ dst[i] = rgba[i][RCOMP];
+ }
+ }
+
+ if (lDst >= 0) {
+ GLfloat *dst = dest;
+ GLuint i;
+ assert(lDst == 0);
+ for (i = 0; i < n; i++) {
+ /* Luminance comes from red channel */
+ dst[0] = rgba[i][RCOMP];
+ dst += dstComponents;
+ }
+ }
+ }
+}
+
+
+/**
+ * Same as _mesa_unpack_color_span_chan(), but return GLuint data
+ * instead of GLchan.
+ * No pixel transfer ops are applied.
+ */
+void
+_mesa_unpack_color_span_uint(struct gl_context *ctx,
+ GLuint n, GLenum dstFormat, GLuint *dest,
+ GLenum srcFormat, GLenum srcType,
+ const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking)
+{
+ GLuint rgba[MAX_WIDTH][4];
+
+ ASSERT(n <= MAX_WIDTH);
+
+ ASSERT(dstFormat == GL_ALPHA ||
+ dstFormat == GL_LUMINANCE ||
+ dstFormat == GL_LUMINANCE_ALPHA ||
+ dstFormat == GL_INTENSITY ||
+ dstFormat == GL_RED ||
+ dstFormat == GL_RG ||
+ dstFormat == GL_RGB ||
+ dstFormat == GL_RGBA);
+
+ ASSERT(srcFormat == GL_RED ||
+ srcFormat == GL_GREEN ||
+ srcFormat == GL_BLUE ||
+ srcFormat == GL_ALPHA ||
+ srcFormat == GL_LUMINANCE ||
+ srcFormat == GL_LUMINANCE_ALPHA ||
+ srcFormat == GL_INTENSITY ||
+ srcFormat == GL_RG ||
+ srcFormat == GL_RGB ||
+ srcFormat == GL_BGR ||
+ srcFormat == GL_RGBA ||
+ srcFormat == GL_BGRA ||
+ srcFormat == GL_ABGR_EXT ||
+ srcFormat == GL_RED_INTEGER_EXT ||
+ srcFormat == GL_GREEN_INTEGER_EXT ||
+ srcFormat == GL_BLUE_INTEGER_EXT ||
+ srcFormat == GL_ALPHA_INTEGER_EXT ||
+ srcFormat == GL_RGB_INTEGER_EXT ||
+ srcFormat == GL_RGBA_INTEGER_EXT ||
+ srcFormat == GL_BGR_INTEGER_EXT ||
+ srcFormat == GL_BGRA_INTEGER_EXT ||
+ srcFormat == GL_LUMINANCE_INTEGER_EXT ||
+ srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT);
+
+ ASSERT(srcType == GL_UNSIGNED_BYTE ||
+ srcType == GL_BYTE ||
+ srcType == GL_UNSIGNED_SHORT ||
+ srcType == GL_SHORT ||
+ srcType == GL_UNSIGNED_INT ||
+ srcType == GL_INT ||
+ srcType == GL_HALF_FLOAT_ARB ||
+ srcType == GL_FLOAT ||
+ srcType == GL_UNSIGNED_BYTE_3_3_2 ||
+ srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
+ srcType == GL_UNSIGNED_SHORT_5_6_5 ||
+ srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
+ srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
+ srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
+ srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
+ srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
+ srcType == GL_UNSIGNED_INT_8_8_8_8 ||
+ srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
+ srcType == GL_UNSIGNED_INT_10_10_10_2 ||
+ srcType == GL_UNSIGNED_INT_2_10_10_10_REV);
+
+
+ /* Extract image data as uint[4] pixels */
+ extract_uint_rgba(n, rgba, srcFormat, srcType, source,
+ srcPacking->SwapBytes);
+
+ if (dstFormat == GL_RGBA) {
+ /* simple case */
+ memcpy(dest, rgba, 4 * sizeof(GLuint) * n);
+ }
+ else {
+ /* general case */
+ GLint rDst, gDst, bDst, aDst, lDst, iDst;
+ GLint dstComponents = _mesa_components_in_format( dstFormat );
+
+ assert(dstComponents > 0);
+
+ get_component_indexes(dstFormat,
+ &rDst, &gDst, &bDst, &aDst, &lDst, &iDst);
+
+ /* Now pack values in the requested dest format */
+ if (rDst >= 0) {
+ GLuint *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[rDst] = rgba[i][RCOMP];
+ dst += dstComponents;
+ }
+ }
+
+ if (gDst >= 0) {
+ GLuint *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[gDst] = rgba[i][GCOMP];
+ dst += dstComponents;
+ }
+ }
+
+ if (bDst >= 0) {
+ GLuint *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[bDst] = rgba[i][BCOMP];
+ dst += dstComponents;
+ }
+ }
+
+ if (aDst >= 0) {
+ GLuint *dst = dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[aDst] = rgba[i][ACOMP];
+ dst += dstComponents;
+ }
+ }
+
+ if (iDst >= 0) {
+ GLuint *dst = dest;
+ GLuint i;
+ assert(iDst == 0);
+ assert(dstComponents == 1);
+ for (i = 0; i < n; i++) {
+ /* Intensity comes from red channel */
+ dst[i] = rgba[i][RCOMP];
+ }
+ }
+
+ if (lDst >= 0) {
+ GLuint *dst = dest;
+ GLuint i;
+ assert(lDst == 0);
+ for (i = 0; i < n; i++) {
+ /* Luminance comes from red channel */
+ dst[0] = rgba[i][RCOMP];
+ dst += dstComponents;
+ }
+ }
+ }
+}
+
+
+
+/**
+ * Similar to _mesa_unpack_color_span_float(), but for dudv data instead of rgba,
+ * directly return GLbyte data, no transfer ops apply.
+ */
+void
+_mesa_unpack_dudv_span_byte( struct gl_context *ctx,
+ GLuint n, GLenum dstFormat, GLbyte dest[],
+ GLenum srcFormat, GLenum srcType,
+ const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking,
+ GLbitfield transferOps )
+{
+ ASSERT(dstFormat == GL_DUDV_ATI);
+ ASSERT(srcFormat == GL_DUDV_ATI);
+
+ ASSERT(srcType == GL_UNSIGNED_BYTE ||
+ srcType == GL_BYTE ||
+ srcType == GL_UNSIGNED_SHORT ||
+ srcType == GL_SHORT ||
+ srcType == GL_UNSIGNED_INT ||
+ srcType == GL_INT ||
+ srcType == GL_HALF_FLOAT_ARB ||
+ srcType == GL_FLOAT);
+
+ /* general solution */
+ {
+ GLint dstComponents;
+ GLfloat rgba[MAX_WIDTH][4];
+ GLbyte *dst = dest;
+ GLuint i;
+
+ dstComponents = _mesa_components_in_format( dstFormat );
+ /* source & dest image formats should have been error checked by now */
+ assert(dstComponents > 0);
+
+ /*
+ * Extract image data and convert to RGBA floats
+ */
+ assert(n <= MAX_WIDTH);
+ extract_float_rgba(n, rgba, srcFormat, srcType, source,
+ srcPacking->SwapBytes);
+
+
+ /* Now determine which color channels we need to produce.
+ * And determine the dest index (offset) within each color tuple.
+ */
+
+ /* Now pack results in the requested dstFormat */
+ for (i = 0; i < n; i++) {
+ /* not sure - need clamp[-1,1] here? */
+ dst[0] = FLOAT_TO_BYTE(rgba[i][RCOMP]);
+ dst[1] = FLOAT_TO_BYTE(rgba[i][GCOMP]);
+ dst += dstComponents;
+ }
+ }
+}
+
+/*
+ * Unpack a row of color index data from a client buffer according to
+ * the pixel unpacking parameters.
+ * This is (or will be) used by glDrawPixels, glTexImage[123]D, etc.
+ *
+ * Args: ctx - the context
+ * n - number of pixels
+ * dstType - destination data type
+ * dest - destination array
+ * srcType - source pixel type
+ * source - source data pointer
+ * srcPacking - pixel unpacking parameters
+ * transferOps - the pixel transfer operations to apply
+ */
+void
+_mesa_unpack_index_span( const struct gl_context *ctx, GLuint n,
+ GLenum dstType, GLvoid *dest,
+ GLenum srcType, const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking,
+ GLbitfield transferOps )
+{
+ ASSERT(srcType == GL_BITMAP ||
+ srcType == GL_UNSIGNED_BYTE ||
+ srcType == GL_BYTE ||
+ srcType == GL_UNSIGNED_SHORT ||
+ srcType == GL_SHORT ||
+ srcType == GL_UNSIGNED_INT ||
+ srcType == GL_INT ||
+ srcType == GL_HALF_FLOAT_ARB ||
+ srcType == GL_FLOAT);
+
+ ASSERT(dstType == GL_UNSIGNED_BYTE ||
+ dstType == GL_UNSIGNED_SHORT ||
+ dstType == GL_UNSIGNED_INT);
+
+
+ transferOps &= (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT);
+
+ /*
+ * Try simple cases first
+ */
+ if (transferOps == 0 && srcType == GL_UNSIGNED_BYTE
+ && dstType == GL_UNSIGNED_BYTE) {
+ memcpy(dest, source, n * sizeof(GLubyte));
+ }
+ else if (transferOps == 0 && srcType == GL_UNSIGNED_INT
+ && dstType == GL_UNSIGNED_INT && !srcPacking->SwapBytes) {
+ memcpy(dest, source, n * sizeof(GLuint));
+ }
+ else {
+ /*
+ * general solution
+ */
+ GLuint indexes[MAX_WIDTH];
+ assert(n <= MAX_WIDTH);
+
+ extract_uint_indexes(n, indexes, GL_COLOR_INDEX, srcType, source,
+ srcPacking);
+
+ if (transferOps)
+ _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes);
+
+ /* convert to dest type */
+ switch (dstType) {
+ case GL_UNSIGNED_BYTE:
+ {
+ GLubyte *dst = (GLubyte *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = (GLubyte) (indexes[i] & 0xff);
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT:
+ {
+ GLuint *dst = (GLuint *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = (GLushort) (indexes[i] & 0xffff);
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT:
+ memcpy(dest, indexes, n * sizeof(GLuint));
+ break;
+ default:
+ _mesa_problem(ctx, "bad dstType in _mesa_unpack_index_span");
+ }
+ }
+}
+
+
+void
+_mesa_pack_index_span( const struct gl_context *ctx, GLuint n,
+ GLenum dstType, GLvoid *dest, const GLuint *source,
+ const struct gl_pixelstore_attrib *dstPacking,
+ GLbitfield transferOps )
+{
+ GLuint indexes[MAX_WIDTH];
+
+ ASSERT(n <= MAX_WIDTH);
+
+ transferOps &= (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT);
+
+ if (transferOps & (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT)) {
+ /* make a copy of input */
+ memcpy(indexes, source, n * sizeof(GLuint));
+ _mesa_apply_ci_transfer_ops(ctx, transferOps, n, indexes);
+ source = indexes;
+ }
+
+ switch (dstType) {
+ case GL_UNSIGNED_BYTE:
+ {
+ GLubyte *dst = (GLubyte *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ *dst++ = (GLubyte) source[i];
+ }
+ }
+ break;
+ case GL_BYTE:
+ {
+ GLbyte *dst = (GLbyte *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = (GLbyte) source[i];
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT:
+ {
+ GLushort *dst = (GLushort *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = (GLushort) source[i];
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap2( (GLushort *) dst, n );
+ }
+ }
+ break;
+ case GL_SHORT:
+ {
+ GLshort *dst = (GLshort *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = (GLshort) source[i];
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap2( (GLushort *) dst, n );
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT:
+ {
+ GLuint *dst = (GLuint *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = (GLuint) source[i];
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap4( (GLuint *) dst, n );
+ }
+ }
+ break;
+ case GL_INT:
+ {
+ GLint *dst = (GLint *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = (GLint) source[i];
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap4( (GLuint *) dst, n );
+ }
+ }
+ break;
+ case GL_FLOAT:
+ {
+ GLfloat *dst = (GLfloat *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = (GLfloat) source[i];
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap4( (GLuint *) dst, n );
+ }
+ }
+ break;
+ case GL_HALF_FLOAT_ARB:
+ {
+ GLhalfARB *dst = (GLhalfARB *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = _mesa_float_to_half((GLfloat) source[i]);
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap2( (GLushort *) dst, n );
+ }
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad type in _mesa_pack_index_span");
+ }
+}
+
+
+/*
+ * Unpack a row of stencil data from a client buffer according to
+ * the pixel unpacking parameters.
+ * This is (or will be) used by glDrawPixels
+ *
+ * Args: ctx - the context
+ * n - number of pixels
+ * dstType - destination data type
+ * dest - destination array
+ * srcType - source pixel type
+ * source - source data pointer
+ * srcPacking - pixel unpacking parameters
+ * transferOps - apply offset/bias/lookup ops?
+ */
+void
+_mesa_unpack_stencil_span( const struct gl_context *ctx, GLuint n,
+ GLenum dstType, GLvoid *dest,
+ GLenum srcType, const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking,
+ GLbitfield transferOps )
+{
+ ASSERT(srcType == GL_BITMAP ||
+ srcType == GL_UNSIGNED_BYTE ||
+ srcType == GL_BYTE ||
+ srcType == GL_UNSIGNED_SHORT ||
+ srcType == GL_SHORT ||
+ srcType == GL_UNSIGNED_INT ||
+ srcType == GL_INT ||
+ srcType == GL_UNSIGNED_INT_24_8_EXT ||
+ srcType == GL_HALF_FLOAT_ARB ||
+ srcType == GL_FLOAT);
+
+ ASSERT(dstType == GL_UNSIGNED_BYTE ||
+ dstType == GL_UNSIGNED_SHORT ||
+ dstType == GL_UNSIGNED_INT);
+
+ /* only shift and offset apply to stencil */
+ transferOps &= IMAGE_SHIFT_OFFSET_BIT;
+
+ /*
+ * Try simple cases first
+ */
+ if (transferOps == 0 &&
+ !ctx->Pixel.MapStencilFlag &&
+ srcType == GL_UNSIGNED_BYTE &&
+ dstType == GL_UNSIGNED_BYTE) {
+ memcpy(dest, source, n * sizeof(GLubyte));
+ }
+ else if (transferOps == 0 &&
+ !ctx->Pixel.MapStencilFlag &&
+ srcType == GL_UNSIGNED_INT &&
+ dstType == GL_UNSIGNED_INT &&
+ !srcPacking->SwapBytes) {
+ memcpy(dest, source, n * sizeof(GLuint));
+ }
+ else {
+ /*
+ * general solution
+ */
+ GLuint indexes[MAX_WIDTH];
+ assert(n <= MAX_WIDTH);
+
+ extract_uint_indexes(n, indexes, GL_STENCIL_INDEX, srcType, source,
+ srcPacking);
+
+ if (transferOps & IMAGE_SHIFT_OFFSET_BIT) {
+ /* shift and offset indexes */
+ _mesa_shift_and_offset_ci(ctx, n, indexes);
+ }
+
+ if (ctx->Pixel.MapStencilFlag) {
+ /* Apply stencil lookup table */
+ const GLuint mask = ctx->PixelMaps.StoS.Size - 1;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ indexes[i] = (GLuint)ctx->PixelMaps.StoS.Map[ indexes[i] & mask ];
+ }
+ }
+
+ /* convert to dest type */
+ switch (dstType) {
+ case GL_UNSIGNED_BYTE:
+ {
+ GLubyte *dst = (GLubyte *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = (GLubyte) (indexes[i] & 0xff);
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT:
+ {
+ GLuint *dst = (GLuint *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = (GLushort) (indexes[i] & 0xffff);
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT:
+ memcpy(dest, indexes, n * sizeof(GLuint));
+ break;
+ default:
+ _mesa_problem(ctx, "bad dstType in _mesa_unpack_stencil_span");
+ }
+ }
+}
+
+
+void
+_mesa_pack_stencil_span( const struct gl_context *ctx, GLuint n,
+ GLenum dstType, GLvoid *dest, const GLstencil *source,
+ const struct gl_pixelstore_attrib *dstPacking )
+{
+ GLstencil stencil[MAX_WIDTH];
+
+ ASSERT(n <= MAX_WIDTH);
+
+ if (ctx->Pixel.IndexShift || ctx->Pixel.IndexOffset ||
+ ctx->Pixel.MapStencilFlag) {
+ /* make a copy of input */
+ memcpy(stencil, source, n * sizeof(GLstencil));
+ _mesa_apply_stencil_transfer_ops(ctx, n, stencil);
+ source = stencil;
+ }
+
+ switch (dstType) {
+ case GL_UNSIGNED_BYTE:
+ if (sizeof(GLstencil) == 1) {
+ memcpy( dest, source, n );
+ }
+ else {
+ GLubyte *dst = (GLubyte *) dest;
+ GLuint i;
+ for (i=0;i<n;i++) {
+ dst[i] = (GLubyte) source[i];
+ }
+ }
+ break;
+ case GL_BYTE:
+ {
+ GLbyte *dst = (GLbyte *) dest;
+ GLuint i;
+ for (i=0;i<n;i++) {
+ dst[i] = (GLbyte) (source[i] & 0x7f);
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT:
+ {
+ GLushort *dst = (GLushort *) dest;
+ GLuint i;
+ for (i=0;i<n;i++) {
+ dst[i] = (GLushort) source[i];
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap2( (GLushort *) dst, n );
+ }
+ }
+ break;
+ case GL_SHORT:
+ {
+ GLshort *dst = (GLshort *) dest;
+ GLuint i;
+ for (i=0;i<n;i++) {
+ dst[i] = (GLshort) source[i];
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap2( (GLushort *) dst, n );
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT:
+ {
+ GLuint *dst = (GLuint *) dest;
+ GLuint i;
+ for (i=0;i<n;i++) {
+ dst[i] = (GLuint) source[i];
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap4( (GLuint *) dst, n );
+ }
+ }
+ break;
+ case GL_INT:
+ {
+ GLint *dst = (GLint *) dest;
+ GLuint i;
+ for (i=0;i<n;i++) {
+ dst[i] = (GLint) source[i];
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap4( (GLuint *) dst, n );
+ }
+ }
+ break;
+ case GL_FLOAT:
+ {
+ GLfloat *dst = (GLfloat *) dest;
+ GLuint i;
+ for (i=0;i<n;i++) {
+ dst[i] = (GLfloat) source[i];
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap4( (GLuint *) dst, n );
+ }
+ }
+ break;
+ case GL_HALF_FLOAT_ARB:
+ {
+ GLhalfARB *dst = (GLhalfARB *) dest;
+ GLuint i;
+ for (i=0;i<n;i++) {
+ dst[i] = _mesa_float_to_half( (float) source[i] );
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap2( (GLushort *) dst, n );
+ }
+ }
+ break;
+ case GL_BITMAP:
+ if (dstPacking->LsbFirst) {
+ GLubyte *dst = (GLubyte *) dest;
+ GLint shift = 0;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ if (shift == 0)
+ *dst = 0;
+ *dst |= ((source[i] != 0) << shift);
+ shift++;
+ if (shift == 8) {
+ shift = 0;
+ dst++;
+ }
+ }
+ }
+ else {
+ GLubyte *dst = (GLubyte *) dest;
+ GLint shift = 7;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ if (shift == 7)
+ *dst = 0;
+ *dst |= ((source[i] != 0) << shift);
+ shift--;
+ if (shift < 0) {
+ shift = 7;
+ dst++;
+ }
+ }
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad type in _mesa_pack_index_span");
+ }
+}
+
+#define DEPTH_VALUES(GLTYPE, GLTYPE2FLOAT) \
+ do { \
+ GLuint i; \
+ const GLTYPE *src = (const GLTYPE *)source; \
+ for (i = 0; i < n; i++) { \
+ GLTYPE value = src[i]; \
+ if (srcPacking->SwapBytes) { \
+ if (sizeof(GLTYPE) == 2) { \
+ SWAP2BYTE(value); \
+ } else if (sizeof(GLTYPE) == 4) { \
+ SWAP4BYTE(value); \
+ } \
+ } \
+ depthValues[i] = GLTYPE2FLOAT(value); \
+ } \
+ } while (0)
+
+
+/**
+ * Unpack a row of depth/z values from memory, returning GLushort, GLuint
+ * or GLfloat values.
+ * The glPixelTransfer (scale/bias) params will be applied.
+ *
+ * \param dstType one of GL_UNSIGNED_SHORT, GL_UNSIGNED_INT, GL_FLOAT
+ * \param depthMax max value for returned GLushort or GLuint values
+ * (ignored for GLfloat).
+ */
+void
+_mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n,
+ GLenum dstType, GLvoid *dest, GLuint depthMax,
+ GLenum srcType, const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking )
+{
+ GLfloat depthTemp[MAX_WIDTH], *depthValues;
+ GLboolean needClamp = GL_FALSE;
+
+ /* Look for special cases first.
+ * Not only are these faster, they're less prone to numeric conversion
+ * problems. Otherwise, converting from an int type to a float then
+ * back to an int type can introduce errors that will show up as
+ * artifacts in things like depth peeling which uses glCopyTexImage.
+ */
+ if (ctx->Pixel.DepthScale == 1.0 && ctx->Pixel.DepthBias == 0.0) {
+ if (srcType == GL_UNSIGNED_INT && dstType == GL_UNSIGNED_SHORT) {
+ const GLuint *src = (const GLuint *) source;
+ GLushort *dst = (GLushort *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = src[i] >> 16;
+ }
+ return;
+ }
+ if (srcType == GL_UNSIGNED_SHORT
+ && dstType == GL_UNSIGNED_INT
+ && depthMax == 0xffffffff) {
+ const GLushort *src = (const GLushort *) source;
+ GLuint *dst = (GLuint *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = src[i] | (src[i] << 16);
+ }
+ return;
+ }
+ if (srcType == GL_UNSIGNED_INT_24_8
+ && dstType == GL_UNSIGNED_INT
+ && depthMax == 0xffffff) {
+ const GLuint *src = (const GLuint *) source;
+ GLuint *dst = (GLuint *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = src[i] >> 8;
+ }
+ return;
+ }
+ /* XXX may want to add additional cases here someday */
+ }
+
+ /* general case path follows */
+
+ if (dstType == GL_FLOAT) {
+ depthValues = (GLfloat *) dest;
+ }
+ else {
+ depthValues = depthTemp;
+ }
+
+ /* Convert incoming values to GLfloat. Some conversions will require
+ * clamping, below.
+ */
+ switch (srcType) {
+ case GL_BYTE:
+ DEPTH_VALUES(GLbyte, BYTE_TO_FLOAT);
+ needClamp = GL_TRUE;
+ break;
+ case GL_UNSIGNED_BYTE:
+ DEPTH_VALUES(GLubyte, UBYTE_TO_FLOAT);
+ break;
+ case GL_SHORT:
+ DEPTH_VALUES(GLshort, SHORT_TO_FLOAT);
+ needClamp = GL_TRUE;
+ break;
+ case GL_UNSIGNED_SHORT:
+ DEPTH_VALUES(GLushort, USHORT_TO_FLOAT);
+ break;
+ case GL_INT:
+ DEPTH_VALUES(GLint, INT_TO_FLOAT);
+ needClamp = GL_TRUE;
+ break;
+ case GL_UNSIGNED_INT:
+ DEPTH_VALUES(GLuint, UINT_TO_FLOAT);
+ break;
+ case GL_UNSIGNED_INT_24_8_EXT: /* GL_EXT_packed_depth_stencil */
+ if (dstType == GL_UNSIGNED_INT_24_8_EXT &&
+ depthMax == 0xffffff &&
+ ctx->Pixel.DepthScale == 1.0 &&
+ ctx->Pixel.DepthBias == 0.0) {
+ const GLuint *src = (const GLuint *) source;
+ GLuint *zValues = (GLuint *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ GLuint value = src[i];
+ if (srcPacking->SwapBytes) {
+ SWAP4BYTE(value);
+ }
+ zValues[i] = value & 0xffffff00;
+ }
+ return;
+ }
+ else {
+ const GLuint *src = (const GLuint *) source;
+ const GLfloat scale = 1.0f / 0xffffff;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ GLuint value = src[i];
+ if (srcPacking->SwapBytes) {
+ SWAP4BYTE(value);
+ }
+ depthValues[i] = (value >> 8) * scale;
+ }
+ }
+ break;
+ case GL_FLOAT:
+ DEPTH_VALUES(GLfloat, 1*);
+ needClamp = GL_TRUE;
+ break;
+ case GL_HALF_FLOAT_ARB:
+ {
+ GLuint i;
+ const GLhalfARB *src = (const GLhalfARB *) source;
+ for (i = 0; i < n; i++) {
+ GLhalfARB value = src[i];
+ if (srcPacking->SwapBytes) {
+ SWAP2BYTE(value);
+ }
+ depthValues[i] = _mesa_half_to_float(value);
+ }
+ needClamp = GL_TRUE;
+ }
+ break;
+ default:
+ _mesa_problem(NULL, "bad type in _mesa_unpack_depth_span()");
+ return;
+ }
+
+ /* apply depth scale and bias */
+ {
+ const GLfloat scale = ctx->Pixel.DepthScale;
+ const GLfloat bias = ctx->Pixel.DepthBias;
+ if (scale != 1.0 || bias != 0.0) {
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ depthValues[i] = depthValues[i] * scale + bias;
+ }
+ needClamp = GL_TRUE;
+ }
+ }
+
+ /* clamp to [0, 1] */
+ if (needClamp) {
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ depthValues[i] = (GLfloat)CLAMP(depthValues[i], 0.0, 1.0);
+ }
+ }
+
+ /*
+ * Convert values to dstType
+ */
+ if (dstType == GL_UNSIGNED_INT) {
+ GLuint *zValues = (GLuint *) dest;
+ GLuint i;
+ if (depthMax <= 0xffffff) {
+ /* no overflow worries */
+ for (i = 0; i < n; i++) {
+ zValues[i] = (GLuint) (depthValues[i] * (GLfloat) depthMax);
+ }
+ }
+ else {
+ /* need to use double precision to prevent overflow problems */
+ for (i = 0; i < n; i++) {
+ GLdouble z = depthValues[i] * (GLfloat) depthMax;
+ if (z >= (GLdouble) 0xffffffff)
+ zValues[i] = 0xffffffff;
+ else
+ zValues[i] = (GLuint) z;
+ }
+ }
+ }
+ else if (dstType == GL_UNSIGNED_SHORT) {
+ GLushort *zValues = (GLushort *) dest;
+ GLuint i;
+ ASSERT(depthMax <= 0xffff);
+ for (i = 0; i < n; i++) {
+ zValues[i] = (GLushort) (depthValues[i] * (GLfloat) depthMax);
+ }
+ }
+ else {
+ ASSERT(dstType == GL_FLOAT);
+ /*ASSERT(depthMax == 1.0F);*/
+ }
+}
+
+
+/*
+ * Pack an array of depth values. The values are floats in [0,1].
+ */
+void
+_mesa_pack_depth_span( const struct gl_context *ctx, GLuint n, GLvoid *dest,
+ GLenum dstType, const GLfloat *depthSpan,
+ const struct gl_pixelstore_attrib *dstPacking )
+{
+ GLfloat depthCopy[MAX_WIDTH];
+
+ ASSERT(n <= MAX_WIDTH);
+
+ if (ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0) {
+ memcpy(depthCopy, depthSpan, n * sizeof(GLfloat));
+ _mesa_scale_and_bias_depth(ctx, n, depthCopy);
+ depthSpan = depthCopy;
+ }
+
+ switch (dstType) {
+ case GL_UNSIGNED_BYTE:
+ {
+ GLubyte *dst = (GLubyte *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = FLOAT_TO_UBYTE( depthSpan[i] );
+ }
+ }
+ break;
+ case GL_BYTE:
+ {
+ GLbyte *dst = (GLbyte *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = FLOAT_TO_BYTE( depthSpan[i] );
+ }
+ }
+ break;
+ case GL_UNSIGNED_SHORT:
+ {
+ GLushort *dst = (GLushort *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ CLAMPED_FLOAT_TO_USHORT(dst[i], depthSpan[i]);
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap2( (GLushort *) dst, n );
+ }
+ }
+ break;
+ case GL_SHORT:
+ {
+ GLshort *dst = (GLshort *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = FLOAT_TO_SHORT( depthSpan[i] );
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap2( (GLushort *) dst, n );
+ }
+ }
+ break;
+ case GL_UNSIGNED_INT:
+ {
+ GLuint *dst = (GLuint *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = FLOAT_TO_UINT( depthSpan[i] );
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap4( (GLuint *) dst, n );
+ }
+ }
+ break;
+ case GL_INT:
+ {
+ GLint *dst = (GLint *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = FLOAT_TO_INT( depthSpan[i] );
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap4( (GLuint *) dst, n );
+ }
+ }
+ break;
+ case GL_FLOAT:
+ {
+ GLfloat *dst = (GLfloat *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = depthSpan[i];
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap4( (GLuint *) dst, n );
+ }
+ }
+ break;
+ case GL_HALF_FLOAT_ARB:
+ {
+ GLhalfARB *dst = (GLhalfARB *) dest;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ dst[i] = _mesa_float_to_half(depthSpan[i]);
+ }
+ if (dstPacking->SwapBytes) {
+ _mesa_swap2( (GLushort *) dst, n );
+ }
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "bad type in _mesa_pack_depth_span");
+ }
+}
+
+
+
+/**
+ * Pack depth and stencil values as GL_DEPTH_STENCIL/GL_UNSIGNED_INT_24_8.
+ */
+void
+_mesa_pack_depth_stencil_span(const struct gl_context *ctx, GLuint n, GLuint *dest,
+ const GLfloat *depthVals,
+ const GLstencil *stencilVals,
+ const struct gl_pixelstore_attrib *dstPacking)
+{
+ GLfloat depthCopy[MAX_WIDTH];
+ GLstencil stencilCopy[MAX_WIDTH];
+ GLuint i;
+
+ ASSERT(n <= MAX_WIDTH);
+
+ if (ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0) {
+ memcpy(depthCopy, depthVals, n * sizeof(GLfloat));
+ _mesa_scale_and_bias_depth(ctx, n, depthCopy);
+ depthVals = depthCopy;
+ }
+
+ if (ctx->Pixel.IndexShift ||
+ ctx->Pixel.IndexOffset ||
+ ctx->Pixel.MapStencilFlag) {
+ memcpy(stencilCopy, stencilVals, n * sizeof(GLstencil));
+ _mesa_apply_stencil_transfer_ops(ctx, n, stencilCopy);
+ stencilVals = stencilCopy;
+ }
+
+ for (i = 0; i < n; i++) {
+ GLuint z = (GLuint) (depthVals[i] * 0xffffff);
+ dest[i] = (z << 8) | (stencilVals[i] & 0xff);
+ }
+
+ if (dstPacking->SwapBytes) {
+ _mesa_swap4(dest, n);
+ }
+}
+
+
+
+
+/**
+ * Unpack image data. Apply byte swapping, byte flipping (bitmap).
+ * Return all image data in a contiguous block. This is used when we
+ * compile glDrawPixels, glTexImage, etc into a display list. We
+ * need a copy of the data in a standard format.
+ */
+void *
+_mesa_unpack_image( GLuint dimensions,
+ GLsizei width, GLsizei height, GLsizei depth,
+ GLenum format, GLenum type, const GLvoid *pixels,
+ const struct gl_pixelstore_attrib *unpack )
+{
+ GLint bytesPerRow, compsPerRow;
+ GLboolean flipBytes, swap2, swap4;
+
+ if (!pixels)
+ return NULL; /* not necessarily an error */
+
+ if (width <= 0 || height <= 0 || depth <= 0)
+ return NULL; /* generate error later */
+
+ if (type == GL_BITMAP) {
+ bytesPerRow = (width + 7) >> 3;
+ flipBytes = unpack->LsbFirst;
+ swap2 = swap4 = GL_FALSE;
+ compsPerRow = 0;
+ }
+ else {
+ const GLint bytesPerPixel = _mesa_bytes_per_pixel(format, type);
+ GLint components = _mesa_components_in_format(format);
+ GLint bytesPerComp;
+
+ if (_mesa_type_is_packed(type))
+ components = 1;
+
+ if (bytesPerPixel <= 0 || components <= 0)
+ return NULL; /* bad format or type. generate error later */
+ bytesPerRow = bytesPerPixel * width;
+ bytesPerComp = bytesPerPixel / components;
+ flipBytes = GL_FALSE;
+ swap2 = (bytesPerComp == 2) && unpack->SwapBytes;
+ swap4 = (bytesPerComp == 4) && unpack->SwapBytes;
+ compsPerRow = components * width;
+ assert(compsPerRow >= width);
+ }
+
+ {
+ GLubyte *destBuffer
+ = (GLubyte *) malloc(bytesPerRow * height * depth);
+ GLubyte *dst;
+ GLint img, row;
+ if (!destBuffer)
+ return NULL; /* generate GL_OUT_OF_MEMORY later */
+
+ dst = destBuffer;
+ for (img = 0; img < depth; img++) {
+ for (row = 0; row < height; row++) {
+ const GLvoid *src = _mesa_image_address(dimensions, unpack, pixels,
+ width, height, format, type, img, row, 0);
+
+ if ((type == GL_BITMAP) && (unpack->SkipPixels & 0x7)) {
+ GLint i;
+ flipBytes = GL_FALSE;
+ if (unpack->LsbFirst) {
+ GLubyte srcMask = 1 << (unpack->SkipPixels & 0x7);
+ GLubyte dstMask = 128;
+ const GLubyte *s = src;
+ GLubyte *d = dst;
+ *d = 0;
+ for (i = 0; i < width; i++) {
+ if (*s & srcMask) {
+ *d |= dstMask;
+ }
+ if (srcMask == 128) {
+ srcMask = 1;
+ s++;
+ }
+ else {
+ srcMask = srcMask << 1;
+ }
+ if (dstMask == 1) {
+ dstMask = 128;
+ d++;
+ *d = 0;
+ }
+ else {
+ dstMask = dstMask >> 1;
+ }
+ }
+ }
+ else {
+ GLubyte srcMask = 128 >> (unpack->SkipPixels & 0x7);
+ GLubyte dstMask = 128;
+ const GLubyte *s = src;
+ GLubyte *d = dst;
+ *d = 0;
+ for (i = 0; i < width; i++) {
+ if (*s & srcMask) {
+ *d |= dstMask;
+ }
+ if (srcMask == 1) {
+ srcMask = 128;
+ s++;
+ }
+ else {
+ srcMask = srcMask >> 1;
+ }
+ if (dstMask == 1) {
+ dstMask = 128;
+ d++;
+ *d = 0;
+ }
+ else {
+ dstMask = dstMask >> 1;
+ }
+ }
+ }
+ }
+ else {
+ memcpy(dst, src, bytesPerRow);
+ }
+
+ /* byte flipping/swapping */
+ if (flipBytes) {
+ flip_bytes((GLubyte *) dst, bytesPerRow);
+ }
+ else if (swap2) {
+ _mesa_swap2((GLushort*) dst, compsPerRow);
+ }
+ else if (swap4) {
+ _mesa_swap4((GLuint*) dst, compsPerRow);
+ }
+ dst += bytesPerRow;
+ }
+ }
+ return destBuffer;
+ }
+}
+
diff --git a/src/mesa/main/pack.h b/src/mesa/main/pack.h
new file mode 100644
index 0000000000..65d3f7a0fb
--- /dev/null
+++ b/src/mesa/main/pack.h
@@ -0,0 +1,147 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2010 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef PACK_H
+#define PACK_H
+
+
+#include "mtypes.h"
+
+
+extern void
+_mesa_unpack_polygon_stipple(const GLubyte *pattern, GLuint dest[32],
+ const struct gl_pixelstore_attrib *unpacking);
+
+
+extern void
+_mesa_pack_polygon_stipple(const GLuint pattern[32], GLubyte *dest,
+ const struct gl_pixelstore_attrib *packing);
+
+
+extern GLvoid *
+_mesa_unpack_bitmap(GLint width, GLint height, const GLubyte *pixels,
+ const struct gl_pixelstore_attrib *packing);
+
+extern void
+_mesa_pack_bitmap(GLint width, GLint height, const GLubyte *source,
+ GLubyte *dest, const struct gl_pixelstore_attrib *packing);
+
+
+extern void
+_mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n,
+ GLfloat rgba[][4],
+ GLenum dstFormat, GLenum dstType, GLvoid *dstAddr,
+ const struct gl_pixelstore_attrib *dstPacking,
+ GLbitfield transferOps);
+
+
+extern void
+_mesa_unpack_color_span_chan(struct gl_context *ctx,
+ GLuint n, GLenum dstFormat, GLchan dest[],
+ GLenum srcFormat, GLenum srcType,
+ const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking,
+ GLbitfield transferOps);
+
+
+extern void
+_mesa_unpack_color_span_float(struct gl_context *ctx,
+ GLuint n, GLenum dstFormat, GLfloat dest[],
+ GLenum srcFormat, GLenum srcType,
+ const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking,
+ GLbitfield transferOps);
+
+extern void
+_mesa_unpack_color_span_uint(struct gl_context *ctx,
+ GLuint n, GLenum dstFormat, GLuint *dest,
+ GLenum srcFormat, GLenum srcType,
+ const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking);
+
+extern void
+_mesa_unpack_dudv_span_byte(struct gl_context *ctx,
+ GLuint n, GLenum dstFormat, GLbyte dest[],
+ GLenum srcFormat, GLenum srcType,
+ const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking,
+ GLbitfield transferOps);
+
+extern void
+_mesa_unpack_index_span(const struct gl_context *ctx, GLuint n,
+ GLenum dstType, GLvoid *dest,
+ GLenum srcType, const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking,
+ GLbitfield transferOps);
+
+
+extern void
+_mesa_pack_index_span(const struct gl_context *ctx, GLuint n,
+ GLenum dstType, GLvoid *dest, const GLuint *source,
+ const struct gl_pixelstore_attrib *dstPacking,
+ GLbitfield transferOps);
+
+
+extern void
+_mesa_unpack_stencil_span(const struct gl_context *ctx, GLuint n,
+ GLenum dstType, GLvoid *dest,
+ GLenum srcType, const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking,
+ GLbitfield transferOps);
+
+extern void
+_mesa_pack_stencil_span(const struct gl_context *ctx, GLuint n,
+ GLenum dstType, GLvoid *dest, const GLstencil *source,
+ const struct gl_pixelstore_attrib *dstPacking);
+
+
+extern void
+_mesa_unpack_depth_span(const struct gl_context *ctx, GLuint n,
+ GLenum dstType, GLvoid *dest, GLuint depthMax,
+ GLenum srcType, const GLvoid *source,
+ const struct gl_pixelstore_attrib *srcPacking);
+
+extern void
+_mesa_pack_depth_span(const struct gl_context *ctx, GLuint n, GLvoid *dest,
+ GLenum dstType, const GLfloat *depthSpan,
+ const struct gl_pixelstore_attrib *dstPacking);
+
+
+extern void
+_mesa_pack_depth_stencil_span(const struct gl_context *ctx,
+ GLuint n, GLuint *dest,
+ const GLfloat *depthVals,
+ const GLstencil *stencilVals,
+ const struct gl_pixelstore_attrib *dstPacking);
+
+
+extern void *
+_mesa_unpack_image(GLuint dimensions,
+ GLsizei width, GLsizei height, GLsizei depth,
+ GLenum format, GLenum type, const GLvoid *pixels,
+ const struct gl_pixelstore_attrib *unpack);
+
+
+#endif
diff --git a/src/mesa/main/pixel.h b/src/mesa/main/pixel.h
index 03560835a8..6f04eb6272 100644
--- a/src/mesa/main/pixel.h
+++ b/src/mesa/main/pixel.h
@@ -33,7 +33,12 @@
#define PIXEL_H
-#include "main/mtypes.h"
+#include "compiler.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+struct gl_context;
#if FEATURE_pixel_transfer
diff --git a/src/mesa/main/pixelstore.h b/src/mesa/main/pixelstore.h
index cdef7de261..eb50819749 100644
--- a/src/mesa/main/pixelstore.h
+++ b/src/mesa/main/pixelstore.h
@@ -33,7 +33,8 @@
#include "glheader.h"
-#include "mtypes.h"
+
+struct gl_context;
extern void GLAPIENTRY
diff --git a/src/mesa/main/pixeltransfer.c b/src/mesa/main/pixeltransfer.c
new file mode 100644
index 0000000000..711181fd89
--- /dev/null
+++ b/src/mesa/main/pixeltransfer.c
@@ -0,0 +1,566 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009-2010 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, 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.
+ */
+
+
+/**
+ * \file pixeltransfer.c
+ * Pixel transfer operations (scale, bias, table lookups, etc)
+ */
+
+
+#include "glheader.h"
+#include "colormac.h"
+#include "pixeltransfer.h"
+#include "imports.h"
+
+
+/*
+ * Apply scale and bias factors to an array of RGBA pixels.
+ */
+void
+_mesa_scale_and_bias_rgba(GLuint n, GLfloat rgba[][4],
+ GLfloat rScale, GLfloat gScale,
+ GLfloat bScale, GLfloat aScale,
+ GLfloat rBias, GLfloat gBias,
+ GLfloat bBias, GLfloat aBias)
+{
+ if (rScale != 1.0 || rBias != 0.0) {
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = rgba[i][RCOMP] * rScale + rBias;
+ }
+ }
+ if (gScale != 1.0 || gBias != 0.0) {
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ rgba[i][GCOMP] = rgba[i][GCOMP] * gScale + gBias;
+ }
+ }
+ if (bScale != 1.0 || bBias != 0.0) {
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ rgba[i][BCOMP] = rgba[i][BCOMP] * bScale + bBias;
+ }
+ }
+ if (aScale != 1.0 || aBias != 0.0) {
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = rgba[i][ACOMP] * aScale + aBias;
+ }
+ }
+}
+
+
+/*
+ * Apply pixel mapping to an array of floating point RGBA pixels.
+ */
+void
+_mesa_map_rgba( const struct gl_context *ctx, GLuint n, GLfloat rgba[][4] )
+{
+ const GLfloat rscale = (GLfloat) (ctx->PixelMaps.RtoR.Size - 1);
+ const GLfloat gscale = (GLfloat) (ctx->PixelMaps.GtoG.Size - 1);
+ const GLfloat bscale = (GLfloat) (ctx->PixelMaps.BtoB.Size - 1);
+ const GLfloat ascale = (GLfloat) (ctx->PixelMaps.AtoA.Size - 1);
+ const GLfloat *rMap = ctx->PixelMaps.RtoR.Map;
+ const GLfloat *gMap = ctx->PixelMaps.GtoG.Map;
+ const GLfloat *bMap = ctx->PixelMaps.BtoB.Map;
+ const GLfloat *aMap = ctx->PixelMaps.AtoA.Map;
+ GLuint i;
+ for (i=0;i<n;i++) {
+ GLfloat r = CLAMP(rgba[i][RCOMP], 0.0F, 1.0F);
+ GLfloat g = CLAMP(rgba[i][GCOMP], 0.0F, 1.0F);
+ GLfloat b = CLAMP(rgba[i][BCOMP], 0.0F, 1.0F);
+ GLfloat a = CLAMP(rgba[i][ACOMP], 0.0F, 1.0F);
+ rgba[i][RCOMP] = rMap[IROUND(r * rscale)];
+ rgba[i][GCOMP] = gMap[IROUND(g * gscale)];
+ rgba[i][BCOMP] = bMap[IROUND(b * bscale)];
+ rgba[i][ACOMP] = aMap[IROUND(a * ascale)];
+ }
+}
+
+/**
+ * Apply a color table lookup to an array of floating point RGBA colors.
+ */
+void
+_mesa_lookup_rgba_float(const struct gl_color_table *table,
+ GLuint n, GLfloat rgba[][4])
+{
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
+ const GLfloat *lut = table->TableF;
+ GLuint i;
+
+ if (!table->TableF || table->Size == 0)
+ return;
+
+ switch (table->_BaseFormat) {
+ case GL_INTENSITY:
+ /* replace RGBA with I */
+ for (i = 0; i < n; i++) {
+ GLint j = IROUND(rgba[i][RCOMP] * scale);
+ GLfloat c = lut[CLAMP(j, 0, max)];
+ rgba[i][RCOMP] =
+ rgba[i][GCOMP] =
+ rgba[i][BCOMP] =
+ rgba[i][ACOMP] = c;
+ }
+ break;
+ case GL_LUMINANCE:
+ /* replace RGB with L */
+ for (i = 0; i < n; i++) {
+ GLint j = IROUND(rgba[i][RCOMP] * scale);
+ GLfloat c = lut[CLAMP(j, 0, max)];
+ rgba[i][RCOMP] =
+ rgba[i][GCOMP] =
+ rgba[i][BCOMP] = c;
+ }
+ break;
+ case GL_ALPHA:
+ /* replace A with A */
+ for (i = 0; i < n; i++) {
+ GLint j = IROUND(rgba[i][ACOMP] * scale);
+ rgba[i][ACOMP] = lut[CLAMP(j, 0, max)];
+ }
+ break;
+ case GL_LUMINANCE_ALPHA:
+ /* replace RGBA with LLLA */
+ for (i = 0; i < n; i++) {
+ GLint jL = IROUND(rgba[i][RCOMP] * scale);
+ GLint jA = IROUND(rgba[i][ACOMP] * scale);
+ GLfloat luminance, alpha;
+ jL = CLAMP(jL, 0, max);
+ jA = CLAMP(jA, 0, max);
+ luminance = lut[jL * 2 + 0];
+ alpha = lut[jA * 2 + 1];
+ rgba[i][RCOMP] =
+ rgba[i][GCOMP] =
+ rgba[i][BCOMP] = luminance;
+ rgba[i][ACOMP] = alpha;;
+ }
+ break;
+ case GL_RED:
+ /* replace RGB with RGB */
+ for (i = 0; i < n; i++) {
+ GLint jR = IROUND(rgba[i][RCOMP] * scale);
+ jR = CLAMP(jR, 0, max);
+ rgba[i][RCOMP] = lut[jR * 3 + 0];
+ }
+ break;
+ case GL_RG:
+ /* replace RG with RG */
+ for (i = 0; i < n; i++) {
+ GLint jR = IROUND(rgba[i][RCOMP] * scale);
+ GLint jG = IROUND(rgba[i][GCOMP] * scale);
+ jR = CLAMP(jR, 0, max);
+ jG = CLAMP(jG, 0, max);
+ rgba[i][RCOMP] = lut[jR * 3 + 0];
+ rgba[i][GCOMP] = lut[jG * 3 + 1];
+ }
+ break;
+ case GL_RGB:
+ /* replace RGB with RGB */
+ for (i = 0; i < n; i++) {
+ GLint jR = IROUND(rgba[i][RCOMP] * scale);
+ GLint jG = IROUND(rgba[i][GCOMP] * scale);
+ GLint jB = IROUND(rgba[i][BCOMP] * scale);
+ jR = CLAMP(jR, 0, max);
+ jG = CLAMP(jG, 0, max);
+ jB = CLAMP(jB, 0, max);
+ rgba[i][RCOMP] = lut[jR * 3 + 0];
+ rgba[i][GCOMP] = lut[jG * 3 + 1];
+ rgba[i][BCOMP] = lut[jB * 3 + 2];
+ }
+ break;
+ case GL_RGBA:
+ /* replace RGBA with RGBA */
+ for (i = 0; i < n; i++) {
+ GLint jR = IROUND(rgba[i][RCOMP] * scale);
+ GLint jG = IROUND(rgba[i][GCOMP] * scale);
+ GLint jB = IROUND(rgba[i][BCOMP] * scale);
+ GLint jA = IROUND(rgba[i][ACOMP] * scale);
+ jR = CLAMP(jR, 0, max);
+ jG = CLAMP(jG, 0, max);
+ jB = CLAMP(jB, 0, max);
+ jA = CLAMP(jA, 0, max);
+ rgba[i][RCOMP] = lut[jR * 4 + 0];
+ rgba[i][GCOMP] = lut[jG * 4 + 1];
+ rgba[i][BCOMP] = lut[jB * 4 + 2];
+ rgba[i][ACOMP] = lut[jA * 4 + 3];
+ }
+ break;
+ default:
+ _mesa_problem(NULL, "Bad format in _mesa_lookup_rgba_float");
+ return;
+ }
+}
+
+
+
+/**
+ * Apply a color table lookup to an array of ubyte/RGBA colors.
+ */
+void
+_mesa_lookup_rgba_ubyte(const struct gl_color_table *table,
+ GLuint n, GLubyte rgba[][4])
+{
+ const GLubyte *lut = table->TableUB;
+ const GLfloat scale = (GLfloat) (table->Size - 1) / (GLfloat)255.0;
+ GLuint i;
+
+ if (!table->TableUB || table->Size == 0)
+ return;
+
+ switch (table->_BaseFormat) {
+ case GL_INTENSITY:
+ /* replace RGBA with I */
+ if (table->Size == 256) {
+ for (i = 0; i < n; i++) {
+ const GLubyte c = lut[rgba[i][RCOMP]];
+ rgba[i][RCOMP] =
+ rgba[i][GCOMP] =
+ rgba[i][BCOMP] =
+ rgba[i][ACOMP] = c;
+ }
+ }
+ else {
+ for (i = 0; i < n; i++) {
+ GLint j = IROUND((GLfloat) rgba[i][RCOMP] * scale);
+ rgba[i][RCOMP] =
+ rgba[i][GCOMP] =
+ rgba[i][BCOMP] =
+ rgba[i][ACOMP] = lut[j];
+ }
+ }
+ break;
+ case GL_LUMINANCE:
+ /* replace RGB with L */
+ if (table->Size == 256) {
+ for (i = 0; i < n; i++) {
+ const GLubyte c = lut[rgba[i][RCOMP]];
+ rgba[i][RCOMP] =
+ rgba[i][GCOMP] =
+ rgba[i][BCOMP] = c;
+ }
+ }
+ else {
+ for (i = 0; i < n; i++) {
+ GLint j = IROUND((GLfloat) rgba[i][RCOMP] * scale);
+ rgba[i][RCOMP] =
+ rgba[i][GCOMP] =
+ rgba[i][BCOMP] = lut[j];
+ }
+ }
+ break;
+ case GL_ALPHA:
+ /* replace A with A */
+ if (table->Size == 256) {
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = lut[rgba[i][ACOMP]];
+ }
+ }
+ else {
+ for (i = 0; i < n; i++) {
+ GLint j = IROUND((GLfloat) rgba[i][ACOMP] * scale);
+ rgba[i][ACOMP] = lut[j];
+ }
+ }
+ break;
+ case GL_LUMINANCE_ALPHA:
+ /* replace RGBA with LLLA */
+ if (table->Size == 256) {
+ for (i = 0; i < n; i++) {
+ GLubyte l = lut[rgba[i][RCOMP] * 2 + 0];
+ GLubyte a = lut[rgba[i][ACOMP] * 2 + 1];;
+ rgba[i][RCOMP] =
+ rgba[i][GCOMP] =
+ rgba[i][BCOMP] = l;
+ rgba[i][ACOMP] = a;
+ }
+ }
+ else {
+ for (i = 0; i < n; i++) {
+ GLint jL = IROUND((GLfloat) rgba[i][RCOMP] * scale);
+ GLint jA = IROUND((GLfloat) rgba[i][ACOMP] * scale);
+ GLubyte luminance = lut[jL * 2 + 0];
+ GLubyte alpha = lut[jA * 2 + 1];
+ rgba[i][RCOMP] =
+ rgba[i][GCOMP] =
+ rgba[i][BCOMP] = luminance;
+ rgba[i][ACOMP] = alpha;
+ }
+ }
+ break;
+ case GL_RGB:
+ if (table->Size == 256) {
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = lut[rgba[i][RCOMP] * 3 + 0];
+ rgba[i][GCOMP] = lut[rgba[i][GCOMP] * 3 + 1];
+ rgba[i][BCOMP] = lut[rgba[i][BCOMP] * 3 + 2];
+ }
+ }
+ else {
+ for (i = 0; i < n; i++) {
+ GLint jR = IROUND((GLfloat) rgba[i][RCOMP] * scale);
+ GLint jG = IROUND((GLfloat) rgba[i][GCOMP] * scale);
+ GLint jB = IROUND((GLfloat) rgba[i][BCOMP] * scale);
+ rgba[i][RCOMP] = lut[jR * 3 + 0];
+ rgba[i][GCOMP] = lut[jG * 3 + 1];
+ rgba[i][BCOMP] = lut[jB * 3 + 2];
+ }
+ }
+ break;
+ case GL_RGBA:
+ if (table->Size == 256) {
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = lut[rgba[i][RCOMP] * 4 + 0];
+ rgba[i][GCOMP] = lut[rgba[i][GCOMP] * 4 + 1];
+ rgba[i][BCOMP] = lut[rgba[i][BCOMP] * 4 + 2];
+ rgba[i][ACOMP] = lut[rgba[i][ACOMP] * 4 + 3];
+ }
+ }
+ else {
+ for (i = 0; i < n; i++) {
+ GLint jR = IROUND((GLfloat) rgba[i][RCOMP] * scale);
+ GLint jG = IROUND((GLfloat) rgba[i][GCOMP] * scale);
+ GLint jB = IROUND((GLfloat) rgba[i][BCOMP] * scale);
+ GLint jA = IROUND((GLfloat) rgba[i][ACOMP] * scale);
+ CLAMPED_FLOAT_TO_CHAN(rgba[i][RCOMP], lut[jR * 4 + 0]);
+ CLAMPED_FLOAT_TO_CHAN(rgba[i][GCOMP], lut[jG * 4 + 1]);
+ CLAMPED_FLOAT_TO_CHAN(rgba[i][BCOMP], lut[jB * 4 + 2]);
+ CLAMPED_FLOAT_TO_CHAN(rgba[i][ACOMP], lut[jA * 4 + 3]);
+ }
+ }
+ break;
+ default:
+ _mesa_problem(NULL, "Bad format in _mesa_lookup_rgba_chan");
+ return;
+ }
+}
+
+
+
+/*
+ * Map color indexes to float rgba values.
+ */
+void
+_mesa_map_ci_to_rgba( const struct gl_context *ctx, GLuint n,
+ const GLuint index[], GLfloat rgba[][4] )
+{
+ GLuint rmask = ctx->PixelMaps.ItoR.Size - 1;
+ GLuint gmask = ctx->PixelMaps.ItoG.Size - 1;
+ GLuint bmask = ctx->PixelMaps.ItoB.Size - 1;
+ GLuint amask = ctx->PixelMaps.ItoA.Size - 1;
+ const GLfloat *rMap = ctx->PixelMaps.ItoR.Map;
+ const GLfloat *gMap = ctx->PixelMaps.ItoG.Map;
+ const GLfloat *bMap = ctx->PixelMaps.ItoB.Map;
+ const GLfloat *aMap = ctx->PixelMaps.ItoA.Map;
+ GLuint i;
+ for (i=0;i<n;i++) {
+ rgba[i][RCOMP] = rMap[index[i] & rmask];
+ rgba[i][GCOMP] = gMap[index[i] & gmask];
+ rgba[i][BCOMP] = bMap[index[i] & bmask];
+ rgba[i][ACOMP] = aMap[index[i] & amask];
+ }
+}
+
+
+/**
+ * Map ubyte color indexes to ubyte/RGBA values.
+ */
+void
+_mesa_map_ci8_to_rgba8(const struct gl_context *ctx,
+ GLuint n, const GLubyte index[],
+ GLubyte rgba[][4])
+{
+ GLuint rmask = ctx->PixelMaps.ItoR.Size - 1;
+ GLuint gmask = ctx->PixelMaps.ItoG.Size - 1;
+ GLuint bmask = ctx->PixelMaps.ItoB.Size - 1;
+ GLuint amask = ctx->PixelMaps.ItoA.Size - 1;
+ const GLubyte *rMap = ctx->PixelMaps.ItoR.Map8;
+ const GLubyte *gMap = ctx->PixelMaps.ItoG.Map8;
+ const GLubyte *bMap = ctx->PixelMaps.ItoB.Map8;
+ const GLubyte *aMap = ctx->PixelMaps.ItoA.Map8;
+ GLuint i;
+ for (i=0;i<n;i++) {
+ rgba[i][RCOMP] = rMap[index[i] & rmask];
+ rgba[i][GCOMP] = gMap[index[i] & gmask];
+ rgba[i][BCOMP] = bMap[index[i] & bmask];
+ rgba[i][ACOMP] = aMap[index[i] & amask];
+ }
+}
+
+
+void
+_mesa_scale_and_bias_depth(const struct gl_context *ctx, GLuint n,
+ GLfloat depthValues[])
+{
+ const GLfloat scale = ctx->Pixel.DepthScale;
+ const GLfloat bias = ctx->Pixel.DepthBias;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ GLfloat d = depthValues[i] * scale + bias;
+ depthValues[i] = CLAMP(d, 0.0F, 1.0F);
+ }
+}
+
+
+void
+_mesa_scale_and_bias_depth_uint(const struct gl_context *ctx, GLuint n,
+ GLuint depthValues[])
+{
+ const GLdouble max = (double) 0xffffffff;
+ const GLdouble scale = ctx->Pixel.DepthScale;
+ const GLdouble bias = ctx->Pixel.DepthBias * max;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ GLdouble d = (GLdouble) depthValues[i] * scale + bias;
+ d = CLAMP(d, 0.0, max);
+ depthValues[i] = (GLuint) d;
+ }
+}
+
+/**
+ * Apply various pixel transfer operations to an array of RGBA pixels
+ * as indicated by the transferOps bitmask
+ */
+void
+_mesa_apply_rgba_transfer_ops(struct gl_context *ctx, GLbitfield transferOps,
+ GLuint n, GLfloat rgba[][4])
+{
+ /* scale & bias */
+ if (transferOps & IMAGE_SCALE_BIAS_BIT) {
+ _mesa_scale_and_bias_rgba(n, rgba,
+ ctx->Pixel.RedScale, ctx->Pixel.GreenScale,
+ ctx->Pixel.BlueScale, ctx->Pixel.AlphaScale,
+ ctx->Pixel.RedBias, ctx->Pixel.GreenBias,
+ ctx->Pixel.BlueBias, ctx->Pixel.AlphaBias);
+ }
+ /* color map lookup */
+ if (transferOps & IMAGE_MAP_COLOR_BIT) {
+ _mesa_map_rgba( ctx, n, rgba );
+ }
+
+ /* clamping to [0,1] */
+ if (transferOps & IMAGE_CLAMP_BIT) {
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = CLAMP(rgba[i][RCOMP], 0.0F, 1.0F);
+ rgba[i][GCOMP] = CLAMP(rgba[i][GCOMP], 0.0F, 1.0F);
+ rgba[i][BCOMP] = CLAMP(rgba[i][BCOMP], 0.0F, 1.0F);
+ rgba[i][ACOMP] = CLAMP(rgba[i][ACOMP], 0.0F, 1.0F);
+ }
+ }
+}
+
+
+/*
+ * Apply color index shift and offset to an array of pixels.
+ */
+void
+_mesa_shift_and_offset_ci(const struct gl_context *ctx,
+ GLuint n, GLuint indexes[])
+{
+ GLint shift = ctx->Pixel.IndexShift;
+ GLint offset = ctx->Pixel.IndexOffset;
+ GLuint i;
+ if (shift > 0) {
+ for (i=0;i<n;i++) {
+ indexes[i] = (indexes[i] << shift) + offset;
+ }
+ }
+ else if (shift < 0) {
+ shift = -shift;
+ for (i=0;i<n;i++) {
+ indexes[i] = (indexes[i] >> shift) + offset;
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ indexes[i] = indexes[i] + offset;
+ }
+ }
+}
+
+
+
+/**
+ * Apply color index shift, offset and table lookup to an array
+ * of color indexes;
+ */
+void
+_mesa_apply_ci_transfer_ops(const struct gl_context *ctx,
+ GLbitfield transferOps,
+ GLuint n, GLuint indexes[])
+{
+ if (transferOps & IMAGE_SHIFT_OFFSET_BIT) {
+ _mesa_shift_and_offset_ci(ctx, n, indexes);
+ }
+ if (transferOps & IMAGE_MAP_COLOR_BIT) {
+ const GLuint mask = ctx->PixelMaps.ItoI.Size - 1;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ const GLuint j = indexes[i] & mask;
+ indexes[i] = IROUND(ctx->PixelMaps.ItoI.Map[j]);
+ }
+ }
+}
+
+
+/**
+ * Apply stencil index shift, offset and table lookup to an array
+ * of stencil values.
+ */
+void
+_mesa_apply_stencil_transfer_ops(const struct gl_context *ctx, GLuint n,
+ GLstencil stencil[])
+{
+ if (ctx->Pixel.IndexShift != 0 || ctx->Pixel.IndexOffset != 0) {
+ const GLint offset = ctx->Pixel.IndexOffset;
+ GLint shift = ctx->Pixel.IndexShift;
+ GLuint i;
+ if (shift > 0) {
+ for (i = 0; i < n; i++) {
+ stencil[i] = (stencil[i] << shift) + offset;
+ }
+ }
+ else if (shift < 0) {
+ shift = -shift;
+ for (i = 0; i < n; i++) {
+ stencil[i] = (stencil[i] >> shift) + offset;
+ }
+ }
+ else {
+ for (i = 0; i < n; i++) {
+ stencil[i] = stencil[i] + offset;
+ }
+ }
+ }
+ if (ctx->Pixel.MapStencilFlag) {
+ GLuint mask = ctx->PixelMaps.StoS.Size - 1;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ stencil[i] = (GLstencil)ctx->PixelMaps.StoS.Map[ stencil[i] & mask ];
+ }
+ }
+}
diff --git a/src/mesa/main/pixeltransfer.h b/src/mesa/main/pixeltransfer.h
new file mode 100644
index 0000000000..34f3e49ba7
--- /dev/null
+++ b/src/mesa/main/pixeltransfer.h
@@ -0,0 +1,90 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009-2010 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef PIXELTRANSFER_H
+#define PIXELTRANSFER_H
+
+
+#include "mtypes.h"
+
+
+extern void
+_mesa_scale_and_bias_rgba(GLuint n, GLfloat rgba[][4],
+ GLfloat rScale, GLfloat gScale,
+ GLfloat bScale, GLfloat aScale,
+ GLfloat rBias, GLfloat gBias,
+ GLfloat bBias, GLfloat aBias);
+
+extern void
+_mesa_map_rgba(const struct gl_context *ctx, GLuint n, GLfloat rgba[][4]);
+
+extern void
+_mesa_lookup_rgba_float(const struct gl_color_table *table,
+ GLuint n, GLfloat rgba[][4]);
+
+extern void
+_mesa_lookup_rgba_ubyte(const struct gl_color_table *table,
+ GLuint n, GLubyte rgba[][4]);
+
+
+extern void
+_mesa_map_ci_to_rgba(const struct gl_context *ctx,
+ GLuint n, const GLuint index[], GLfloat rgba[][4]);
+
+
+extern void
+_mesa_map_ci8_to_rgba8(const struct gl_context *ctx,
+ GLuint n, const GLubyte index[],
+ GLubyte rgba[][4]);
+
+
+extern void
+_mesa_scale_and_bias_depth(const struct gl_context *ctx, GLuint n,
+ GLfloat depthValues[]);
+
+extern void
+_mesa_scale_and_bias_depth_uint(const struct gl_context *ctx, GLuint n,
+ GLuint depthValues[]);
+
+extern void
+_mesa_apply_rgba_transfer_ops(struct gl_context *ctx, GLbitfield transferOps,
+ GLuint n, GLfloat rgba[][4]);
+
+extern void
+_mesa_shift_and_offset_ci(const struct gl_context *ctx,
+ GLuint n, GLuint indexes[]);
+
+extern void
+_mesa_apply_ci_transfer_ops(const struct gl_context *ctx,
+ GLbitfield transferOps,
+ GLuint n, GLuint indexes[]);
+
+
+extern void
+_mesa_apply_stencil_transfer_ops(const struct gl_context *ctx, GLuint n,
+ GLstencil stencil[]);
+
+
+#endif
diff --git a/src/mesa/main/points.h b/src/mesa/main/points.h
index b222379b1b..306a8a572f 100644
--- a/src/mesa/main/points.h
+++ b/src/mesa/main/points.h
@@ -32,7 +32,9 @@
#define POINTS_H
-#include "mtypes.h"
+#include "glheader.h"
+
+struct gl_context;
extern void GLAPIENTRY
diff --git a/src/mesa/main/polygon.c b/src/mesa/main/polygon.c
index 970020048d..9c213b9b4c 100644
--- a/src/mesa/main/polygon.c
+++ b/src/mesa/main/polygon.c
@@ -34,6 +34,7 @@
#include "context.h"
#include "image.h"
#include "enums.h"
+#include "pack.h"
#include "polygon.h"
#include "mtypes.h"
diff --git a/src/mesa/main/polygon.h b/src/mesa/main/polygon.h
index ad0ac4cc3a..13f7c91ed0 100644
--- a/src/mesa/main/polygon.h
+++ b/src/mesa/main/polygon.h
@@ -32,8 +32,9 @@
#define POLYGON_H
-#include "mtypes.h"
+#include "glheader.h"
+struct gl_context;
extern void
_mesa_polygon_stipple(struct gl_context *ctx, const GLubyte *pattern);
diff --git a/src/mesa/main/rastpos.h b/src/mesa/main/rastpos.h
index 9b508eaedf..d113906f41 100644
--- a/src/mesa/main/rastpos.h
+++ b/src/mesa/main/rastpos.h
@@ -32,8 +32,11 @@
#define RASTPOS_H
-#include "main/mtypes.h"
+#include "compiler.h"
+#include "mfeatures.h"
+struct _glapi_table;
+struct gl_context;
#if FEATURE_rastpos
diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
index 0043c8adc4..a5612e34ec 100644
--- a/src/mesa/main/readpix.c
+++ b/src/mesa/main/readpix.c
@@ -28,6 +28,7 @@
#include "context.h"
#include "readpix.h"
#include "framebuffer.h"
+#include "formats.h"
#include "image.h"
#include "state.h"
@@ -78,6 +79,16 @@ _mesa_error_check_format_type(struct gl_context *ctx, GLenum format, GLenum type
case GL_RGBA:
case GL_BGRA:
case GL_ABGR_EXT:
+ case GL_RED_INTEGER_EXT:
+ case GL_GREEN_INTEGER_EXT:
+ case GL_BLUE_INTEGER_EXT:
+ case GL_ALPHA_INTEGER_EXT:
+ case GL_RGB_INTEGER_EXT:
+ case GL_RGBA_INTEGER_EXT:
+ case GL_BGR_INTEGER_EXT:
+ case GL_BGRA_INTEGER_EXT:
+ case GL_LUMINANCE_INTEGER_EXT:
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
if (!drawing) {
/* reading */
if (!_mesa_source_buffer_exists(ctx, GL_COLOR)) {
@@ -175,6 +186,20 @@ _mesa_ReadPixels( GLint x, GLint y, GLsizei width, GLsizei height,
return;
}
+ /* Check that the destination format and source buffer are both
+ * integer-valued or both non-integer-valued.
+ */
+ if (ctx->Extensions.EXT_texture_integer && _mesa_is_color_format(format)) {
+ const struct gl_renderbuffer *rb = ctx->ReadBuffer->_ColorReadBuffer;
+ const GLboolean srcInteger = _mesa_is_format_integer_color(rb->Format);
+ const GLboolean dstInteger = _mesa_is_integer_format(format);
+ if (dstInteger != srcInteger) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glReadPixels(integer / non-integer format mismatch");
+ return;
+ }
+ }
+
if (ctx->ReadBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) {
_mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION_EXT,
"glReadPixels(incomplete framebuffer)" );
diff --git a/src/mesa/main/readpix.h b/src/mesa/main/readpix.h
index 0753e619fe..fd25e703e0 100644
--- a/src/mesa/main/readpix.h
+++ b/src/mesa/main/readpix.h
@@ -27,8 +27,9 @@
#define READPIXELS_H
-#include "main/mtypes.h"
+#include "glheader.h"
+struct gl_context;
extern GLboolean
_mesa_error_check_format_type(struct gl_context *ctx, GLenum format, GLenum type,
diff --git a/src/mesa/main/remap.c b/src/mesa/main/remap.c
index 2341f8488d..c89fba4530 100644
--- a/src/mesa/main/remap.c
+++ b/src/mesa/main/remap.c
@@ -44,10 +44,15 @@
#include "imports.h"
#include "glapi/glapi.h"
-#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
#define MAX_ENTRY_POINTS 16
-static const char *_mesa_function_pool;
+#define need_MESA_remap_table
+#include "main/remap_helper.h"
+
+
+/* this is global for quick access */
+int driDispatchRemapTable[driDispatchRemapTable_size];
+
/**
* Return the spec string associated with the given function index.
@@ -60,7 +65,10 @@ static const char *_mesa_function_pool;
const char *
_mesa_get_function_spec(GLint func_index)
{
- return _mesa_function_pool + func_index;
+ if (func_index < Elements(_mesa_function_pool))
+ return _mesa_function_pool + func_index;
+ else
+ return NULL;
}
@@ -152,11 +160,31 @@ _mesa_map_function_array(const struct gl_function_remap *func_array)
/**
+ * Map the functions which are already static.
+ *
+ * When a extension function are incorporated into the ABI, the
+ * extension suffix is usually stripped. Mapping such functions
+ * makes sure the alternative names are available.
+ *
+ * Note that functions mapped by _mesa_init_remap_table() are
+ * excluded.
+ */
+void
+_mesa_map_static_functions(void)
+{
+ /* Remap static functions which have alternative names and are in the ABI.
+ * This is to be on the safe side. glapi should have defined those names.
+ */
+ _mesa_map_function_array(MESA_alt_functions);
+}
+
+
+/**
* Initialize the remap table. This is called in one_time_init().
* The remap table needs to be initialized before calling the
* CALL/GET/SET macros defined in main/dispatch.h.
*/
-void
+static void
_mesa_do_init_remap_table(const char *pool,
int size,
const struct gl_function_pool_remap *remap)
@@ -167,7 +195,6 @@ _mesa_do_init_remap_table(const char *pool,
if (initialized)
return;
initialized = GL_TRUE;
- _mesa_function_pool = pool;
/* initialize the remap table */
for (i = 0; i < size; i++) {
@@ -187,4 +214,13 @@ _mesa_do_init_remap_table(const char *pool,
}
+void
+_mesa_init_remap_table(void)
+{
+ _mesa_do_init_remap_table(_mesa_function_pool,
+ driDispatchRemapTable_size,
+ MESA_remap_table_functions);
+}
+
+
#endif /* FEATURE_remap_table */
diff --git a/src/mesa/main/remap.h b/src/mesa/main/remap.h
index a2a55f615d..5fee300529 100644
--- a/src/mesa/main/remap.h
+++ b/src/mesa/main/remap.h
@@ -60,25 +60,8 @@ extern void
_mesa_map_static_functions(void);
extern void
-_mesa_map_static_functions_es1(void);
-
-extern void
-_mesa_map_static_functions_es2(void);
-
-extern void
-_mesa_do_init_remap_table(const char *pool,
- int size,
- const struct gl_function_pool_remap *remap);
-
-extern void
_mesa_init_remap_table(void);
-extern void
-_mesa_init_remap_table_es1(void);
-
-extern void
-_mesa_init_remap_table_es2(void);
-
#else /* FEATURE_remap_table */
static INLINE const char *
@@ -105,37 +88,10 @@ _mesa_map_static_functions(void)
static INLINE void
-_mesa_map_static_functions_es1(void)
-{
-}
-
-static INLINE void
-_mesa_map_static_functions_es2(void)
-{
-}
-
-static INLINE void
-_mesa_do_init_remap_table(const char *pool,
- int size,
- const struct gl_function_pool_remap *remap)
-{
-}
-
-static INLINE void
_mesa_init_remap_table(void)
{
}
-static INLINE void
-_mesa_init_remap_table_es1(void)
-{
-}
-
-static INLINE void
-_mesa_init_remap_table_es2(void)
-{
-}
-
#endif /* FEATURE_remap_table */
diff --git a/src/mesa/main/remap_helper.h b/src/mesa/main/remap_helper.h
index 010c03459e..7368c76e7e 100644
--- a/src/mesa/main/remap_helper.h
+++ b/src/mesa/main/remap_helper.h
@@ -45,4428 +45,4691 @@ static const char _mesa_function_pool[] =
"iff\0"
"glMapGrid1f\0"
"\0"
- /* _mesa_function_pool[81]: RasterPos4i (offset 82) */
+ /* _mesa_function_pool[81]: VertexAttribI2iEXT (will be remapped) */
+ "iii\0"
+ "glVertexAttribI2iEXT\0"
+ "glVertexAttribI2i\0"
+ "\0"
+ /* _mesa_function_pool[125]: RasterPos4i (offset 82) */
"iiii\0"
"glRasterPos4i\0"
"\0"
- /* _mesa_function_pool[101]: RasterPos4d (offset 78) */
+ /* _mesa_function_pool[145]: RasterPos4d (offset 78) */
"dddd\0"
"glRasterPos4d\0"
"\0"
- /* _mesa_function_pool[121]: NewList (dynamic) */
+ /* _mesa_function_pool[165]: NewList (dynamic) */
"ii\0"
"glNewList\0"
"\0"
- /* _mesa_function_pool[135]: RasterPos4f (offset 80) */
+ /* _mesa_function_pool[179]: RasterPos4f (offset 80) */
"ffff\0"
"glRasterPos4f\0"
"\0"
- /* _mesa_function_pool[155]: LoadIdentity (offset 290) */
+ /* _mesa_function_pool[199]: LoadIdentity (offset 290) */
"\0"
"glLoadIdentity\0"
"\0"
- /* _mesa_function_pool[172]: SampleCoverageARB (will be remapped) */
+ /* _mesa_function_pool[216]: SampleCoverageARB (will be remapped) */
"fi\0"
"glSampleCoverage\0"
"glSampleCoverageARB\0"
"\0"
- /* _mesa_function_pool[213]: ConvolutionFilter1D (offset 348) */
+ /* _mesa_function_pool[257]: ConvolutionFilter1D (offset 348) */
"iiiiip\0"
"glConvolutionFilter1D\0"
"glConvolutionFilter1DEXT\0"
"\0"
- /* _mesa_function_pool[268]: BeginQueryARB (will be remapped) */
+ /* _mesa_function_pool[312]: BeginQueryARB (will be remapped) */
"ii\0"
"glBeginQuery\0"
"glBeginQueryARB\0"
"\0"
- /* _mesa_function_pool[301]: RasterPos3dv (offset 71) */
+ /* _mesa_function_pool[345]: RasterPos3dv (offset 71) */
"p\0"
"glRasterPos3dv\0"
"\0"
- /* _mesa_function_pool[319]: PointParameteriNV (will be remapped) */
+ /* _mesa_function_pool[363]: PointParameteriNV (will be remapped) */
"ii\0"
"glPointParameteri\0"
"glPointParameteriNV\0"
"\0"
- /* _mesa_function_pool[361]: GetProgramiv (will be remapped) */
+ /* _mesa_function_pool[405]: GetProgramiv (will be remapped) */
"iip\0"
"glGetProgramiv\0"
"\0"
- /* _mesa_function_pool[381]: MultiTexCoord3sARB (offset 398) */
+ /* _mesa_function_pool[425]: MultiTexCoord3sARB (offset 398) */
"iiii\0"
"glMultiTexCoord3s\0"
"glMultiTexCoord3sARB\0"
"\0"
- /* _mesa_function_pool[426]: SecondaryColor3iEXT (will be remapped) */
+ /* _mesa_function_pool[470]: SecondaryColor3iEXT (will be remapped) */
"iii\0"
"glSecondaryColor3i\0"
"glSecondaryColor3iEXT\0"
"\0"
- /* _mesa_function_pool[472]: WindowPos3fMESA (will be remapped) */
+ /* _mesa_function_pool[516]: WindowPos3fMESA (will be remapped) */
"fff\0"
"glWindowPos3f\0"
"glWindowPos3fARB\0"
"glWindowPos3fMESA\0"
"\0"
- /* _mesa_function_pool[526]: TexCoord1iv (offset 99) */
+ /* _mesa_function_pool[570]: TexCoord1iv (offset 99) */
"p\0"
"glTexCoord1iv\0"
"\0"
- /* _mesa_function_pool[543]: TexCoord4sv (offset 125) */
+ /* _mesa_function_pool[587]: TexCoord4sv (offset 125) */
"p\0"
"glTexCoord4sv\0"
"\0"
- /* _mesa_function_pool[560]: RasterPos4s (offset 84) */
+ /* _mesa_function_pool[604]: RasterPos4s (offset 84) */
"iiii\0"
"glRasterPos4s\0"
"\0"
- /* _mesa_function_pool[580]: PixelTexGenParameterfvSGIS (will be remapped) */
+ /* _mesa_function_pool[624]: PixelTexGenParameterfvSGIS (will be remapped) */
"ip\0"
"glPixelTexGenParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[613]: ActiveTextureARB (offset 374) */
+ /* _mesa_function_pool[657]: ActiveTextureARB (offset 374) */
"i\0"
"glActiveTexture\0"
"glActiveTextureARB\0"
"\0"
- /* _mesa_function_pool[651]: BlitFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[695]: BlitFramebufferEXT (will be remapped) */
"iiiiiiiiii\0"
"glBlitFramebuffer\0"
"glBlitFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[702]: TexCoord1f (offset 96) */
+ /* _mesa_function_pool[746]: TexCoord1f (offset 96) */
"f\0"
"glTexCoord1f\0"
"\0"
- /* _mesa_function_pool[718]: TexCoord1d (offset 94) */
+ /* _mesa_function_pool[762]: TexCoord1d (offset 94) */
"d\0"
"glTexCoord1d\0"
"\0"
- /* _mesa_function_pool[734]: VertexAttrib4ubvNV (will be remapped) */
+ /* _mesa_function_pool[778]: VertexAttrib4ubvNV (will be remapped) */
"ip\0"
"glVertexAttrib4ubvNV\0"
"\0"
- /* _mesa_function_pool[759]: TexCoord1i (offset 98) */
+ /* _mesa_function_pool[803]: TexCoord1i (offset 98) */
"i\0"
"glTexCoord1i\0"
"\0"
- /* _mesa_function_pool[775]: GetProgramNamedParameterdvNV (will be remapped) */
+ /* _mesa_function_pool[819]: GetProgramNamedParameterdvNV (will be remapped) */
"iipp\0"
"glGetProgramNamedParameterdvNV\0"
"\0"
- /* _mesa_function_pool[812]: Histogram (offset 367) */
+ /* _mesa_function_pool[856]: Histogram (offset 367) */
"iiii\0"
"glHistogram\0"
"glHistogramEXT\0"
"\0"
- /* _mesa_function_pool[845]: TexCoord1s (offset 100) */
+ /* _mesa_function_pool[889]: TexCoord1s (offset 100) */
"i\0"
"glTexCoord1s\0"
"\0"
- /* _mesa_function_pool[861]: GetMapfv (offset 267) */
+ /* _mesa_function_pool[905]: GetMapfv (offset 267) */
"iip\0"
"glGetMapfv\0"
"\0"
- /* _mesa_function_pool[877]: EvalCoord1f (offset 230) */
+ /* _mesa_function_pool[921]: EvalCoord1f (offset 230) */
"f\0"
"glEvalCoord1f\0"
"\0"
- /* _mesa_function_pool[894]: TexImage4DSGIS (dynamic) */
+ /* _mesa_function_pool[938]: FramebufferTexture (will be remapped) */
+ "iiii\0"
+ "glFramebufferTexture\0"
+ "\0"
+ /* _mesa_function_pool[965]: VertexAttribI1ivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI1ivEXT\0"
+ "glVertexAttribI1iv\0"
+ "\0"
+ /* _mesa_function_pool[1010]: TexImage4DSGIS (dynamic) */
"iiiiiiiiiip\0"
"glTexImage4DSGIS\0"
"\0"
- /* _mesa_function_pool[924]: PolygonStipple (offset 175) */
+ /* _mesa_function_pool[1040]: PolygonStipple (offset 175) */
"p\0"
"glPolygonStipple\0"
"\0"
- /* _mesa_function_pool[944]: WindowPos2dvMESA (will be remapped) */
+ /* _mesa_function_pool[1060]: WindowPos2dvMESA (will be remapped) */
"p\0"
"glWindowPos2dv\0"
"glWindowPos2dvARB\0"
"glWindowPos2dvMESA\0"
"\0"
- /* _mesa_function_pool[999]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[1115]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[1043]: BlendEquationSeparateEXT (will be remapped) */
+ /* _mesa_function_pool[1159]: BlendEquationSeparateEXT (will be remapped) */
"ii\0"
"glBlendEquationSeparate\0"
"glBlendEquationSeparateEXT\0"
"glBlendEquationSeparateATI\0"
"\0"
- /* _mesa_function_pool[1125]: ListParameterfSGIX (dynamic) */
+ /* _mesa_function_pool[1241]: ListParameterfSGIX (dynamic) */
"iif\0"
"glListParameterfSGIX\0"
"\0"
- /* _mesa_function_pool[1151]: SecondaryColor3bEXT (will be remapped) */
+ /* _mesa_function_pool[1267]: SecondaryColor3bEXT (will be remapped) */
"iii\0"
"glSecondaryColor3b\0"
"glSecondaryColor3bEXT\0"
"\0"
- /* _mesa_function_pool[1197]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */
+ /* _mesa_function_pool[1313]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */
"pppp\0"
"glTexCoord4fColor4fNormal3fVertex4fvSUN\0"
"\0"
- /* _mesa_function_pool[1243]: GetPixelMapfv (offset 271) */
+ /* _mesa_function_pool[1359]: GetPixelMapfv (offset 271) */
"ip\0"
"glGetPixelMapfv\0"
"\0"
- /* _mesa_function_pool[1263]: Color3uiv (offset 22) */
+ /* _mesa_function_pool[1379]: Color3uiv (offset 22) */
"p\0"
"glColor3uiv\0"
"\0"
- /* _mesa_function_pool[1278]: IsEnabled (offset 286) */
+ /* _mesa_function_pool[1394]: IsEnabled (offset 286) */
"i\0"
"glIsEnabled\0"
"\0"
- /* _mesa_function_pool[1293]: VertexAttrib4svNV (will be remapped) */
+ /* _mesa_function_pool[1409]: VertexAttrib4svNV (will be remapped) */
"ip\0"
"glVertexAttrib4svNV\0"
"\0"
- /* _mesa_function_pool[1317]: EvalCoord2fv (offset 235) */
+ /* _mesa_function_pool[1433]: EvalCoord2fv (offset 235) */
"p\0"
"glEvalCoord2fv\0"
"\0"
- /* _mesa_function_pool[1335]: GetBufferSubDataARB (will be remapped) */
+ /* _mesa_function_pool[1451]: GetBufferSubDataARB (will be remapped) */
"iiip\0"
"glGetBufferSubData\0"
"glGetBufferSubDataARB\0"
"\0"
- /* _mesa_function_pool[1382]: BufferSubDataARB (will be remapped) */
+ /* _mesa_function_pool[1498]: BufferSubDataARB (will be remapped) */
"iiip\0"
"glBufferSubData\0"
"glBufferSubDataARB\0"
"\0"
- /* _mesa_function_pool[1423]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[1539]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */
"ppp\0"
"glTexCoord2fColor4ubVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[1461]: AttachShader (will be remapped) */
+ /* _mesa_function_pool[1577]: AttachShader (will be remapped) */
"ii\0"
"glAttachShader\0"
"\0"
- /* _mesa_function_pool[1480]: VertexAttrib2fARB (will be remapped) */
+ /* _mesa_function_pool[1596]: VertexAttrib2fARB (will be remapped) */
"iff\0"
"glVertexAttrib2f\0"
"glVertexAttrib2fARB\0"
"\0"
- /* _mesa_function_pool[1522]: GetDebugLogLengthMESA (dynamic) */
+ /* _mesa_function_pool[1638]: GetDebugLogLengthMESA (dynamic) */
"iii\0"
"glGetDebugLogLengthMESA\0"
"\0"
- /* _mesa_function_pool[1551]: GetMapiv (offset 268) */
+ /* _mesa_function_pool[1667]: GetMapiv (offset 268) */
"iip\0"
"glGetMapiv\0"
"\0"
- /* _mesa_function_pool[1567]: VertexAttrib3fARB (will be remapped) */
+ /* _mesa_function_pool[1683]: VertexAttrib3fARB (will be remapped) */
"ifff\0"
"glVertexAttrib3f\0"
"glVertexAttrib3fARB\0"
"\0"
- /* _mesa_function_pool[1610]: Indexubv (offset 316) */
+ /* _mesa_function_pool[1726]: Indexubv (offset 316) */
"p\0"
"glIndexubv\0"
"\0"
- /* _mesa_function_pool[1624]: GetQueryivARB (will be remapped) */
+ /* _mesa_function_pool[1740]: GetQueryivARB (will be remapped) */
"iip\0"
"glGetQueryiv\0"
"glGetQueryivARB\0"
"\0"
- /* _mesa_function_pool[1658]: TexImage3D (offset 371) */
+ /* _mesa_function_pool[1774]: TexImage3D (offset 371) */
"iiiiiiiiip\0"
"glTexImage3D\0"
"glTexImage3DEXT\0"
"\0"
- /* _mesa_function_pool[1699]: ReplacementCodeuiVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[1815]: BindFragDataLocationEXT (will be remapped) */
+ "iip\0"
+ "glBindFragDataLocationEXT\0"
+ "glBindFragDataLocation\0"
+ "\0"
+ /* _mesa_function_pool[1869]: ReplacementCodeuiVertex3fvSUN (dynamic) */
"pp\0"
"glReplacementCodeuiVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[1735]: EdgeFlagPointer (offset 312) */
+ /* _mesa_function_pool[1905]: EdgeFlagPointer (offset 312) */
"ip\0"
"glEdgeFlagPointer\0"
"\0"
- /* _mesa_function_pool[1757]: Color3ubv (offset 20) */
+ /* _mesa_function_pool[1927]: Color3ubv (offset 20) */
"p\0"
"glColor3ubv\0"
"\0"
- /* _mesa_function_pool[1772]: GetQueryObjectivARB (will be remapped) */
+ /* _mesa_function_pool[1942]: GetQueryObjectivARB (will be remapped) */
"iip\0"
"glGetQueryObjectiv\0"
"glGetQueryObjectivARB\0"
"\0"
- /* _mesa_function_pool[1818]: Vertex3dv (offset 135) */
+ /* _mesa_function_pool[1988]: Vertex3dv (offset 135) */
"p\0"
"glVertex3dv\0"
"\0"
- /* _mesa_function_pool[1833]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[2003]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiTexCoord2fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[1880]: CompressedTexSubImage2DARB (will be remapped) */
+ /* _mesa_function_pool[2050]: CompressedTexSubImage2DARB (will be remapped) */
"iiiiiiiip\0"
"glCompressedTexSubImage2D\0"
"glCompressedTexSubImage2DARB\0"
"\0"
- /* _mesa_function_pool[1946]: CombinerOutputNV (will be remapped) */
+ /* _mesa_function_pool[2116]: CombinerOutputNV (will be remapped) */
"iiiiiiiiii\0"
"glCombinerOutputNV\0"
"\0"
- /* _mesa_function_pool[1977]: VertexAttribs3fvNV (will be remapped) */
+ /* _mesa_function_pool[2147]: VertexAttribs3fvNV (will be remapped) */
"iip\0"
"glVertexAttribs3fvNV\0"
"\0"
- /* _mesa_function_pool[2003]: Uniform2fARB (will be remapped) */
+ /* _mesa_function_pool[2173]: Uniform2fARB (will be remapped) */
"iff\0"
"glUniform2f\0"
"glUniform2fARB\0"
"\0"
- /* _mesa_function_pool[2035]: LightModeliv (offset 166) */
+ /* _mesa_function_pool[2205]: LightModeliv (offset 166) */
"ip\0"
"glLightModeliv\0"
"\0"
- /* _mesa_function_pool[2054]: VertexAttrib1svARB (will be remapped) */
+ /* _mesa_function_pool[2224]: VertexAttrib1svARB (will be remapped) */
"ip\0"
"glVertexAttrib1sv\0"
"glVertexAttrib1svARB\0"
"\0"
- /* _mesa_function_pool[2097]: VertexAttribs1dvNV (will be remapped) */
+ /* _mesa_function_pool[2267]: VertexAttribs1dvNV (will be remapped) */
"iip\0"
"glVertexAttribs1dvNV\0"
"\0"
- /* _mesa_function_pool[2123]: Uniform2ivARB (will be remapped) */
+ /* _mesa_function_pool[2293]: Uniform2ivARB (will be remapped) */
"iip\0"
"glUniform2iv\0"
"glUniform2ivARB\0"
"\0"
- /* _mesa_function_pool[2157]: GetImageTransformParameterfvHP (dynamic) */
+ /* _mesa_function_pool[2327]: GetImageTransformParameterfvHP (dynamic) */
"iip\0"
"glGetImageTransformParameterfvHP\0"
"\0"
- /* _mesa_function_pool[2195]: Normal3bv (offset 53) */
+ /* _mesa_function_pool[2365]: Normal3bv (offset 53) */
"p\0"
"glNormal3bv\0"
"\0"
- /* _mesa_function_pool[2210]: TexGeniv (offset 193) */
+ /* _mesa_function_pool[2380]: TexGeniv (offset 193) */
"iip\0"
"glTexGeniv\0"
"\0"
- /* _mesa_function_pool[2226]: WeightubvARB (dynamic) */
+ /* _mesa_function_pool[2396]: WeightubvARB (dynamic) */
"ip\0"
"glWeightubvARB\0"
"\0"
- /* _mesa_function_pool[2245]: VertexAttrib1fvNV (will be remapped) */
+ /* _mesa_function_pool[2415]: VertexAttrib1fvNV (will be remapped) */
"ip\0"
"glVertexAttrib1fvNV\0"
"\0"
- /* _mesa_function_pool[2269]: Vertex3iv (offset 139) */
+ /* _mesa_function_pool[2439]: Vertex3iv (offset 139) */
"p\0"
"glVertex3iv\0"
"\0"
- /* _mesa_function_pool[2284]: CopyConvolutionFilter1D (offset 354) */
+ /* _mesa_function_pool[2454]: CopyConvolutionFilter1D (offset 354) */
"iiiii\0"
"glCopyConvolutionFilter1D\0"
"glCopyConvolutionFilter1DEXT\0"
"\0"
- /* _mesa_function_pool[2346]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[2516]: VertexAttribI1uiEXT (will be remapped) */
+ "ii\0"
+ "glVertexAttribI1uiEXT\0"
+ "glVertexAttribI1ui\0"
+ "\0"
+ /* _mesa_function_pool[2561]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */
"iffffff\0"
"glReplacementCodeuiNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[2394]: DeleteSync (will be remapped) */
+ /* _mesa_function_pool[2609]: DeleteSync (will be remapped) */
"i\0"
"glDeleteSync\0"
"\0"
- /* _mesa_function_pool[2410]: FragmentMaterialfvSGIX (dynamic) */
+ /* _mesa_function_pool[2625]: FragmentMaterialfvSGIX (dynamic) */
"iip\0"
"glFragmentMaterialfvSGIX\0"
"\0"
- /* _mesa_function_pool[2440]: BlendColor (offset 336) */
+ /* _mesa_function_pool[2655]: BlendColor (offset 336) */
"ffff\0"
"glBlendColor\0"
"glBlendColorEXT\0"
"\0"
- /* _mesa_function_pool[2475]: UniformMatrix4fvARB (will be remapped) */
+ /* _mesa_function_pool[2690]: UniformMatrix4fvARB (will be remapped) */
"iiip\0"
"glUniformMatrix4fv\0"
"glUniformMatrix4fvARB\0"
"\0"
- /* _mesa_function_pool[2522]: DeleteVertexArraysAPPLE (will be remapped) */
+ /* _mesa_function_pool[2737]: DeleteVertexArraysAPPLE (will be remapped) */
"ip\0"
"glDeleteVertexArrays\0"
"glDeleteVertexArraysAPPLE\0"
"\0"
- /* _mesa_function_pool[2573]: ReadInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[2788]: TexBuffer (will be remapped) */
+ "iii\0"
+ "glTexBuffer\0"
+ "\0"
+ /* _mesa_function_pool[2805]: ReadInstrumentsSGIX (dynamic) */
"i\0"
"glReadInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[2598]: CallLists (offset 3) */
+ /* _mesa_function_pool[2830]: CallLists (offset 3) */
"iip\0"
"glCallLists\0"
"\0"
- /* _mesa_function_pool[2615]: UniformMatrix2x4fv (will be remapped) */
+ /* _mesa_function_pool[2847]: UniformMatrix2x4fv (will be remapped) */
"iiip\0"
"glUniformMatrix2x4fv\0"
"\0"
- /* _mesa_function_pool[2642]: Color4ubVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[2874]: Color4ubVertex3fvSUN (dynamic) */
"pp\0"
"glColor4ubVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[2669]: Normal3iv (offset 59) */
+ /* _mesa_function_pool[2901]: Normal3iv (offset 59) */
"p\0"
"glNormal3iv\0"
"\0"
- /* _mesa_function_pool[2684]: PassThrough (offset 199) */
+ /* _mesa_function_pool[2916]: PassThrough (offset 199) */
"f\0"
"glPassThrough\0"
"\0"
- /* _mesa_function_pool[2701]: FramebufferTextureLayerEXT (will be remapped) */
+ /* _mesa_function_pool[2933]: GetVertexAttribIivEXT (will be remapped) */
+ "iip\0"
+ "glGetVertexAttribIivEXT\0"
+ "glGetVertexAttribIiv\0"
+ "\0"
+ /* _mesa_function_pool[2983]: TexParameterIivEXT (will be remapped) */
+ "iip\0"
+ "glTexParameterIivEXT\0"
+ "glTexParameterIiv\0"
+ "\0"
+ /* _mesa_function_pool[3027]: FramebufferTextureLayerEXT (will be remapped) */
"iiiii\0"
"glFramebufferTextureLayer\0"
"glFramebufferTextureLayerEXT\0"
"\0"
- /* _mesa_function_pool[2763]: GetListParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[3089]: GetListParameterfvSGIX (dynamic) */
"iip\0"
"glGetListParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[2793]: Viewport (offset 305) */
+ /* _mesa_function_pool[3119]: Viewport (offset 305) */
"iiii\0"
"glViewport\0"
"\0"
- /* _mesa_function_pool[2810]: VertexAttrib4NusvARB (will be remapped) */
+ /* _mesa_function_pool[3136]: VertexAttrib4NusvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nusv\0"
"glVertexAttrib4NusvARB\0"
"\0"
- /* _mesa_function_pool[2857]: WindowPos4svMESA (will be remapped) */
+ /* _mesa_function_pool[3183]: WindowPos4svMESA (will be remapped) */
"p\0"
"glWindowPos4svMESA\0"
"\0"
- /* _mesa_function_pool[2879]: CreateProgramObjectARB (will be remapped) */
+ /* _mesa_function_pool[3205]: CreateProgramObjectARB (will be remapped) */
"\0"
"glCreateProgramObjectARB\0"
"\0"
- /* _mesa_function_pool[2906]: DeleteTransformFeedbacks (will be remapped) */
+ /* _mesa_function_pool[3232]: DeleteTransformFeedbacks (will be remapped) */
"ip\0"
"glDeleteTransformFeedbacks\0"
"\0"
- /* _mesa_function_pool[2937]: UniformMatrix4x3fv (will be remapped) */
+ /* _mesa_function_pool[3263]: UniformMatrix4x3fv (will be remapped) */
"iiip\0"
"glUniformMatrix4x3fv\0"
"\0"
- /* _mesa_function_pool[2964]: PrioritizeTextures (offset 331) */
+ /* _mesa_function_pool[3290]: PrioritizeTextures (offset 331) */
"ipp\0"
"glPrioritizeTextures\0"
"glPrioritizeTexturesEXT\0"
"\0"
- /* _mesa_function_pool[3014]: AsyncMarkerSGIX (dynamic) */
+ /* _mesa_function_pool[3340]: VertexAttribI3uiEXT (will be remapped) */
+ "iiii\0"
+ "glVertexAttribI3uiEXT\0"
+ "glVertexAttribI3ui\0"
+ "\0"
+ /* _mesa_function_pool[3387]: AsyncMarkerSGIX (dynamic) */
"i\0"
"glAsyncMarkerSGIX\0"
"\0"
- /* _mesa_function_pool[3035]: GlobalAlphaFactorubSUN (dynamic) */
+ /* _mesa_function_pool[3408]: GlobalAlphaFactorubSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorubSUN\0"
"\0"
- /* _mesa_function_pool[3063]: ClearDebugLogMESA (dynamic) */
+ /* _mesa_function_pool[3436]: ClearColorIuiEXT (will be remapped) */
+ "iiii\0"
+ "glClearColorIuiEXT\0"
+ "\0"
+ /* _mesa_function_pool[3461]: ClearDebugLogMESA (dynamic) */
"iii\0"
"glClearDebugLogMESA\0"
"\0"
- /* _mesa_function_pool[3088]: ResetHistogram (offset 369) */
+ /* _mesa_function_pool[3486]: Uniform4uiEXT (will be remapped) */
+ "iiiii\0"
+ "glUniform4uiEXT\0"
+ "glUniform4ui\0"
+ "\0"
+ /* _mesa_function_pool[3522]: ResetHistogram (offset 369) */
"i\0"
"glResetHistogram\0"
"glResetHistogramEXT\0"
"\0"
- /* _mesa_function_pool[3128]: GetProgramNamedParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[3562]: GetProgramNamedParameterfvNV (will be remapped) */
"iipp\0"
"glGetProgramNamedParameterfvNV\0"
"\0"
- /* _mesa_function_pool[3165]: PointParameterfEXT (will be remapped) */
+ /* _mesa_function_pool[3599]: PointParameterfEXT (will be remapped) */
"if\0"
"glPointParameterf\0"
"glPointParameterfARB\0"
"glPointParameterfEXT\0"
"glPointParameterfSGIS\0"
"\0"
- /* _mesa_function_pool[3251]: LoadIdentityDeformationMapSGIX (dynamic) */
+ /* _mesa_function_pool[3685]: LoadIdentityDeformationMapSGIX (dynamic) */
"i\0"
"glLoadIdentityDeformationMapSGIX\0"
"\0"
- /* _mesa_function_pool[3287]: GenFencesNV (will be remapped) */
+ /* _mesa_function_pool[3721]: GenFencesNV (will be remapped) */
"ip\0"
"glGenFencesNV\0"
"\0"
- /* _mesa_function_pool[3305]: ImageTransformParameterfHP (dynamic) */
+ /* _mesa_function_pool[3739]: ImageTransformParameterfHP (dynamic) */
"iif\0"
"glImageTransformParameterfHP\0"
"\0"
- /* _mesa_function_pool[3339]: MatrixIndexusvARB (dynamic) */
+ /* _mesa_function_pool[3773]: MatrixIndexusvARB (dynamic) */
"ip\0"
"glMatrixIndexusvARB\0"
"\0"
- /* _mesa_function_pool[3363]: DrawElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[3797]: DrawElementsBaseVertex (will be remapped) */
"iiipi\0"
"glDrawElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[3395]: DisableVertexAttribArrayARB (will be remapped) */
+ /* _mesa_function_pool[3829]: DisableVertexAttribArrayARB (will be remapped) */
"i\0"
"glDisableVertexAttribArray\0"
"glDisableVertexAttribArrayARB\0"
"\0"
- /* _mesa_function_pool[3455]: TexCoord2sv (offset 109) */
+ /* _mesa_function_pool[3889]: TexCoord2sv (offset 109) */
"p\0"
"glTexCoord2sv\0"
"\0"
- /* _mesa_function_pool[3472]: Vertex4dv (offset 143) */
+ /* _mesa_function_pool[3906]: Vertex4dv (offset 143) */
"p\0"
"glVertex4dv\0"
"\0"
- /* _mesa_function_pool[3487]: StencilMaskSeparate (will be remapped) */
+ /* _mesa_function_pool[3921]: StencilMaskSeparate (will be remapped) */
"ii\0"
"glStencilMaskSeparate\0"
"\0"
- /* _mesa_function_pool[3513]: ProgramLocalParameter4dARB (will be remapped) */
+ /* _mesa_function_pool[3947]: ProgramLocalParameter4dARB (will be remapped) */
"iidddd\0"
"glProgramLocalParameter4dARB\0"
"\0"
- /* _mesa_function_pool[3550]: CompressedTexImage3DARB (will be remapped) */
+ /* _mesa_function_pool[3984]: CompressedTexImage3DARB (will be remapped) */
"iiiiiiiip\0"
"glCompressedTexImage3D\0"
"glCompressedTexImage3DARB\0"
"\0"
- /* _mesa_function_pool[3610]: Color3sv (offset 18) */
+ /* _mesa_function_pool[4044]: Color3sv (offset 18) */
"p\0"
"glColor3sv\0"
"\0"
- /* _mesa_function_pool[3624]: GetConvolutionParameteriv (offset 358) */
+ /* _mesa_function_pool[4058]: GetConvolutionParameteriv (offset 358) */
"iip\0"
"glGetConvolutionParameteriv\0"
"glGetConvolutionParameterivEXT\0"
"\0"
- /* _mesa_function_pool[3688]: VertexAttrib1fARB (will be remapped) */
+ /* _mesa_function_pool[4122]: VertexAttrib1fARB (will be remapped) */
"if\0"
"glVertexAttrib1f\0"
"glVertexAttrib1fARB\0"
"\0"
- /* _mesa_function_pool[3729]: Vertex2dv (offset 127) */
+ /* _mesa_function_pool[4163]: Vertex2dv (offset 127) */
"p\0"
"glVertex2dv\0"
"\0"
- /* _mesa_function_pool[3744]: TestFenceNV (will be remapped) */
+ /* _mesa_function_pool[4178]: TestFenceNV (will be remapped) */
"i\0"
"glTestFenceNV\0"
"\0"
- /* _mesa_function_pool[3761]: MultiTexCoord1fvARB (offset 379) */
+ /* _mesa_function_pool[4195]: GetVertexAttribIuivEXT (will be remapped) */
+ "iip\0"
+ "glGetVertexAttribIuivEXT\0"
+ "glGetVertexAttribIuiv\0"
+ "\0"
+ /* _mesa_function_pool[4247]: MultiTexCoord1fvARB (offset 379) */
"ip\0"
"glMultiTexCoord1fv\0"
"glMultiTexCoord1fvARB\0"
"\0"
- /* _mesa_function_pool[3806]: TexCoord3iv (offset 115) */
+ /* _mesa_function_pool[4292]: TexCoord3iv (offset 115) */
"p\0"
"glTexCoord3iv\0"
"\0"
- /* _mesa_function_pool[3823]: ColorFragmentOp2ATI (will be remapped) */
+ /* _mesa_function_pool[4309]: Uniform2uivEXT (will be remapped) */
+ "iip\0"
+ "glUniform2uivEXT\0"
+ "glUniform2uiv\0"
+ "\0"
+ /* _mesa_function_pool[4345]: ColorFragmentOp2ATI (will be remapped) */
"iiiiiiiiii\0"
"glColorFragmentOp2ATI\0"
"\0"
- /* _mesa_function_pool[3857]: SecondaryColorPointerListIBM (dynamic) */
+ /* _mesa_function_pool[4379]: SecondaryColorPointerListIBM (dynamic) */
"iiipi\0"
"glSecondaryColorPointerListIBM\0"
"\0"
- /* _mesa_function_pool[3895]: GetPixelTexGenParameterivSGIS (will be remapped) */
+ /* _mesa_function_pool[4417]: GetPixelTexGenParameterivSGIS (will be remapped) */
"ip\0"
"glGetPixelTexGenParameterivSGIS\0"
"\0"
- /* _mesa_function_pool[3931]: Color3fv (offset 14) */
+ /* _mesa_function_pool[4453]: Color3fv (offset 14) */
"p\0"
"glColor3fv\0"
"\0"
- /* _mesa_function_pool[3945]: VertexAttrib4fNV (will be remapped) */
+ /* _mesa_function_pool[4467]: VertexAttrib4fNV (will be remapped) */
"iffff\0"
"glVertexAttrib4fNV\0"
"\0"
- /* _mesa_function_pool[3971]: ReplacementCodeubSUN (dynamic) */
+ /* _mesa_function_pool[4493]: ReplacementCodeubSUN (dynamic) */
"i\0"
"glReplacementCodeubSUN\0"
"\0"
- /* _mesa_function_pool[3997]: FinishAsyncSGIX (dynamic) */
+ /* _mesa_function_pool[4519]: FinishAsyncSGIX (dynamic) */
"p\0"
"glFinishAsyncSGIX\0"
"\0"
- /* _mesa_function_pool[4018]: GetDebugLogMESA (dynamic) */
+ /* _mesa_function_pool[4540]: GetDebugLogMESA (dynamic) */
"iiiipp\0"
"glGetDebugLogMESA\0"
"\0"
- /* _mesa_function_pool[4044]: FogCoorddEXT (will be remapped) */
+ /* _mesa_function_pool[4566]: FogCoorddEXT (will be remapped) */
"d\0"
"glFogCoordd\0"
"glFogCoorddEXT\0"
"\0"
- /* _mesa_function_pool[4074]: BeginConditionalRenderNV (will be remapped) */
+ /* _mesa_function_pool[4596]: BeginConditionalRenderNV (will be remapped) */
"ii\0"
"glBeginConditionalRenderNV\0"
+ "glBeginConditionalRender\0"
"\0"
- /* _mesa_function_pool[4105]: Color4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[4652]: Color4ubVertex3fSUN (dynamic) */
"iiiifff\0"
"glColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[4136]: FogCoordfEXT (will be remapped) */
+ /* _mesa_function_pool[4683]: FogCoordfEXT (will be remapped) */
"f\0"
"glFogCoordf\0"
"glFogCoordfEXT\0"
"\0"
- /* _mesa_function_pool[4166]: PointSize (offset 173) */
+ /* _mesa_function_pool[4713]: PointSize (offset 173) */
"f\0"
"glPointSize\0"
"\0"
- /* _mesa_function_pool[4181]: TexCoord2fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[4728]: VertexAttribI2uivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI2uivEXT\0"
+ "glVertexAttribI2uiv\0"
+ "\0"
+ /* _mesa_function_pool[4775]: TexCoord2fVertex3fSUN (dynamic) */
"fffff\0"
"glTexCoord2fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[4212]: PopName (offset 200) */
+ /* _mesa_function_pool[4806]: PopName (offset 200) */
"\0"
"glPopName\0"
"\0"
- /* _mesa_function_pool[4224]: GlobalAlphaFactoriSUN (dynamic) */
+ /* _mesa_function_pool[4818]: GlobalAlphaFactoriSUN (dynamic) */
"i\0"
"glGlobalAlphaFactoriSUN\0"
"\0"
- /* _mesa_function_pool[4251]: VertexAttrib2dNV (will be remapped) */
+ /* _mesa_function_pool[4845]: VertexAttrib2dNV (will be remapped) */
"idd\0"
"glVertexAttrib2dNV\0"
"\0"
- /* _mesa_function_pool[4275]: GetProgramInfoLog (will be remapped) */
+ /* _mesa_function_pool[4869]: GetProgramInfoLog (will be remapped) */
"iipp\0"
"glGetProgramInfoLog\0"
"\0"
- /* _mesa_function_pool[4301]: VertexAttrib4NbvARB (will be remapped) */
+ /* _mesa_function_pool[4895]: VertexAttrib4NbvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nbv\0"
"glVertexAttrib4NbvARB\0"
"\0"
- /* _mesa_function_pool[4346]: GetActiveAttribARB (will be remapped) */
+ /* _mesa_function_pool[4940]: GetActiveAttribARB (will be remapped) */
"iiipppp\0"
"glGetActiveAttrib\0"
"glGetActiveAttribARB\0"
"\0"
- /* _mesa_function_pool[4394]: Vertex4sv (offset 149) */
+ /* _mesa_function_pool[4988]: Vertex4sv (offset 149) */
"p\0"
"glVertex4sv\0"
"\0"
- /* _mesa_function_pool[4409]: VertexAttrib4ubNV (will be remapped) */
+ /* _mesa_function_pool[5003]: VertexAttrib4ubNV (will be remapped) */
"iiiii\0"
"glVertexAttrib4ubNV\0"
"\0"
- /* _mesa_function_pool[4436]: TextureRangeAPPLE (will be remapped) */
+ /* _mesa_function_pool[5030]: ClampColor (will be remapped) */
+ "ii\0"
+ "glClampColor\0"
+ "\0"
+ /* _mesa_function_pool[5047]: TextureRangeAPPLE (will be remapped) */
"iip\0"
"glTextureRangeAPPLE\0"
"\0"
- /* _mesa_function_pool[4461]: GetTexEnvfv (offset 276) */
+ /* _mesa_function_pool[5072]: GetTexEnvfv (offset 276) */
"iip\0"
"glGetTexEnvfv\0"
"\0"
- /* _mesa_function_pool[4480]: BindTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[5091]: BindTransformFeedback (will be remapped) */
"ii\0"
"glBindTransformFeedback\0"
"\0"
- /* _mesa_function_pool[4508]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[5119]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
"ffffffffffff\0"
"glTexCoord2fColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[4561]: Indexub (offset 315) */
+ /* _mesa_function_pool[5172]: Indexub (offset 315) */
"i\0"
"glIndexub\0"
"\0"
- /* _mesa_function_pool[4574]: TexEnvi (offset 186) */
+ /* _mesa_function_pool[5185]: TexEnvi (offset 186) */
"iii\0"
"glTexEnvi\0"
"\0"
- /* _mesa_function_pool[4589]: GetClipPlane (offset 259) */
+ /* _mesa_function_pool[5200]: GetClipPlane (offset 259) */
"ip\0"
"glGetClipPlane\0"
"\0"
- /* _mesa_function_pool[4608]: CombinerParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[5219]: CombinerParameterfvNV (will be remapped) */
"ip\0"
"glCombinerParameterfvNV\0"
"\0"
- /* _mesa_function_pool[4636]: VertexAttribs3dvNV (will be remapped) */
+ /* _mesa_function_pool[5247]: VertexAttribs3dvNV (will be remapped) */
"iip\0"
"glVertexAttribs3dvNV\0"
"\0"
- /* _mesa_function_pool[4662]: VertexAttribs4fvNV (will be remapped) */
+ /* _mesa_function_pool[5273]: VertexAttribI2uiEXT (will be remapped) */
+ "iii\0"
+ "glVertexAttribI2uiEXT\0"
+ "glVertexAttribI2ui\0"
+ "\0"
+ /* _mesa_function_pool[5319]: VertexAttribs4fvNV (will be remapped) */
"iip\0"
"glVertexAttribs4fvNV\0"
"\0"
- /* _mesa_function_pool[4688]: VertexArrayRangeNV (will be remapped) */
+ /* _mesa_function_pool[5345]: VertexArrayRangeNV (will be remapped) */
"ip\0"
"glVertexArrayRangeNV\0"
"\0"
- /* _mesa_function_pool[4713]: FragmentLightiSGIX (dynamic) */
+ /* _mesa_function_pool[5370]: FragmentLightiSGIX (dynamic) */
"iii\0"
"glFragmentLightiSGIX\0"
"\0"
- /* _mesa_function_pool[4739]: PolygonOffsetEXT (will be remapped) */
+ /* _mesa_function_pool[5396]: PolygonOffsetEXT (will be remapped) */
"ff\0"
"glPolygonOffsetEXT\0"
"\0"
- /* _mesa_function_pool[4762]: PollAsyncSGIX (dynamic) */
+ /* _mesa_function_pool[5419]: VertexAttribI4uivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI4uivEXT\0"
+ "glVertexAttribI4uiv\0"
+ "\0"
+ /* _mesa_function_pool[5466]: PollAsyncSGIX (dynamic) */
"p\0"
"glPollAsyncSGIX\0"
"\0"
- /* _mesa_function_pool[4781]: DeleteFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[5485]: DeleteFragmentShaderATI (will be remapped) */
"i\0"
"glDeleteFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[4810]: Scaled (offset 301) */
+ /* _mesa_function_pool[5514]: Scaled (offset 301) */
"ddd\0"
"glScaled\0"
"\0"
- /* _mesa_function_pool[4824]: ResumeTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[5528]: ResumeTransformFeedback (will be remapped) */
"\0"
"glResumeTransformFeedback\0"
"\0"
- /* _mesa_function_pool[4852]: Scalef (offset 302) */
+ /* _mesa_function_pool[5556]: Scalef (offset 302) */
"fff\0"
"glScalef\0"
"\0"
- /* _mesa_function_pool[4866]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[5570]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glTexCoord2fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[4904]: MultTransposeMatrixdARB (will be remapped) */
+ /* _mesa_function_pool[5608]: MultTransposeMatrixdARB (will be remapped) */
"p\0"
"glMultTransposeMatrixd\0"
"glMultTransposeMatrixdARB\0"
"\0"
- /* _mesa_function_pool[4956]: ColorMaskIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[5660]: ColorMaskIndexedEXT (will be remapped) */
"iiiii\0"
"glColorMaskIndexedEXT\0"
+ "glColorMaski\0"
"\0"
- /* _mesa_function_pool[4985]: ObjectUnpurgeableAPPLE (will be remapped) */
+ /* _mesa_function_pool[5702]: ObjectUnpurgeableAPPLE (will be remapped) */
"iii\0"
"glObjectUnpurgeableAPPLE\0"
"\0"
- /* _mesa_function_pool[5015]: AlphaFunc (offset 240) */
+ /* _mesa_function_pool[5732]: AlphaFunc (offset 240) */
"if\0"
"glAlphaFunc\0"
"\0"
- /* _mesa_function_pool[5031]: WindowPos2svMESA (will be remapped) */
+ /* _mesa_function_pool[5748]: WindowPos2svMESA (will be remapped) */
"p\0"
"glWindowPos2sv\0"
"glWindowPos2svARB\0"
"glWindowPos2svMESA\0"
"\0"
- /* _mesa_function_pool[5086]: EdgeFlag (offset 41) */
+ /* _mesa_function_pool[5803]: EdgeFlag (offset 41) */
"i\0"
"glEdgeFlag\0"
"\0"
- /* _mesa_function_pool[5100]: TexCoord2iv (offset 107) */
+ /* _mesa_function_pool[5817]: TexCoord2iv (offset 107) */
"p\0"
"glTexCoord2iv\0"
"\0"
- /* _mesa_function_pool[5117]: CompressedTexImage1DARB (will be remapped) */
+ /* _mesa_function_pool[5834]: CompressedTexImage1DARB (will be remapped) */
"iiiiiip\0"
"glCompressedTexImage1D\0"
"glCompressedTexImage1DARB\0"
"\0"
- /* _mesa_function_pool[5175]: Rotated (offset 299) */
+ /* _mesa_function_pool[5892]: Rotated (offset 299) */
"dddd\0"
"glRotated\0"
"\0"
- /* _mesa_function_pool[5191]: VertexAttrib2sNV (will be remapped) */
+ /* _mesa_function_pool[5908]: GetTexParameterIuivEXT (will be remapped) */
+ "iip\0"
+ "glGetTexParameterIuivEXT\0"
+ "glGetTexParameterIuiv\0"
+ "\0"
+ /* _mesa_function_pool[5960]: VertexAttrib2sNV (will be remapped) */
"iii\0"
"glVertexAttrib2sNV\0"
"\0"
- /* _mesa_function_pool[5215]: ReadPixels (offset 256) */
+ /* _mesa_function_pool[5984]: ReadPixels (offset 256) */
"iiiiiip\0"
"glReadPixels\0"
"\0"
- /* _mesa_function_pool[5237]: EdgeFlagv (offset 42) */
+ /* _mesa_function_pool[6006]: EdgeFlagv (offset 42) */
"p\0"
"glEdgeFlagv\0"
"\0"
- /* _mesa_function_pool[5252]: NormalPointerListIBM (dynamic) */
+ /* _mesa_function_pool[6021]: NormalPointerListIBM (dynamic) */
"iipi\0"
"glNormalPointerListIBM\0"
"\0"
- /* _mesa_function_pool[5281]: IndexPointerEXT (will be remapped) */
+ /* _mesa_function_pool[6050]: IndexPointerEXT (will be remapped) */
"iiip\0"
"glIndexPointerEXT\0"
"\0"
- /* _mesa_function_pool[5305]: Color4iv (offset 32) */
+ /* _mesa_function_pool[6074]: Color4iv (offset 32) */
"p\0"
"glColor4iv\0"
"\0"
- /* _mesa_function_pool[5319]: TexParameterf (offset 178) */
+ /* _mesa_function_pool[6088]: TexParameterf (offset 178) */
"iif\0"
"glTexParameterf\0"
"\0"
- /* _mesa_function_pool[5340]: TexParameteri (offset 180) */
+ /* _mesa_function_pool[6109]: TexParameteri (offset 180) */
"iii\0"
"glTexParameteri\0"
"\0"
- /* _mesa_function_pool[5361]: NormalPointerEXT (will be remapped) */
+ /* _mesa_function_pool[6130]: NormalPointerEXT (will be remapped) */
"iiip\0"
"glNormalPointerEXT\0"
"\0"
- /* _mesa_function_pool[5386]: MultiTexCoord3dARB (offset 392) */
+ /* _mesa_function_pool[6155]: MultiTexCoord3dARB (offset 392) */
"iddd\0"
"glMultiTexCoord3d\0"
"glMultiTexCoord3dARB\0"
"\0"
- /* _mesa_function_pool[5431]: MultiTexCoord2iARB (offset 388) */
+ /* _mesa_function_pool[6200]: MultiTexCoord2iARB (offset 388) */
"iii\0"
"glMultiTexCoord2i\0"
"glMultiTexCoord2iARB\0"
"\0"
- /* _mesa_function_pool[5475]: DrawPixels (offset 257) */
+ /* _mesa_function_pool[6244]: DrawPixels (offset 257) */
"iiiip\0"
"glDrawPixels\0"
"\0"
- /* _mesa_function_pool[5495]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[6264]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */
"iffffffff\0"
"glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[5555]: MultiTexCoord2svARB (offset 391) */
+ /* _mesa_function_pool[6324]: MultiTexCoord2svARB (offset 391) */
"ip\0"
"glMultiTexCoord2sv\0"
"glMultiTexCoord2svARB\0"
"\0"
- /* _mesa_function_pool[5600]: ReplacementCodeubvSUN (dynamic) */
+ /* _mesa_function_pool[6369]: ReplacementCodeubvSUN (dynamic) */
"p\0"
"glReplacementCodeubvSUN\0"
"\0"
- /* _mesa_function_pool[5627]: Uniform3iARB (will be remapped) */
+ /* _mesa_function_pool[6396]: Uniform3iARB (will be remapped) */
"iiii\0"
"glUniform3i\0"
"glUniform3iARB\0"
"\0"
- /* _mesa_function_pool[5660]: DrawTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[6429]: DrawTransformFeedback (will be remapped) */
"ii\0"
"glDrawTransformFeedback\0"
"\0"
- /* _mesa_function_pool[5688]: GetFragmentMaterialfvSGIX (dynamic) */
- "iip\0"
- "glGetFragmentMaterialfvSGIX\0"
+ /* _mesa_function_pool[6457]: DrawElementsInstancedARB (will be remapped) */
+ "iiipi\0"
+ "glDrawElementsInstancedARB\0"
+ "glDrawElementsInstancedEXT\0"
+ "glDrawElementsInstanced\0"
"\0"
- /* _mesa_function_pool[5721]: GetShaderInfoLog (will be remapped) */
+ /* _mesa_function_pool[6542]: GetShaderInfoLog (will be remapped) */
"iipp\0"
"glGetShaderInfoLog\0"
"\0"
- /* _mesa_function_pool[5746]: WeightivARB (dynamic) */
+ /* _mesa_function_pool[6567]: WeightivARB (dynamic) */
"ip\0"
"glWeightivARB\0"
"\0"
- /* _mesa_function_pool[5764]: PollInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[6585]: PollInstrumentsSGIX (dynamic) */
"p\0"
"glPollInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[5789]: GlobalAlphaFactordSUN (dynamic) */
+ /* _mesa_function_pool[6610]: GlobalAlphaFactordSUN (dynamic) */
"d\0"
"glGlobalAlphaFactordSUN\0"
"\0"
- /* _mesa_function_pool[5816]: GetFinalCombinerInputParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[6637]: GetFinalCombinerInputParameterfvNV (will be remapped) */
"iip\0"
"glGetFinalCombinerInputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[5858]: GenerateMipmapEXT (will be remapped) */
+ /* _mesa_function_pool[6679]: GenerateMipmapEXT (will be remapped) */
"i\0"
"glGenerateMipmap\0"
"glGenerateMipmapEXT\0"
"\0"
- /* _mesa_function_pool[5898]: GenLists (offset 5) */
+ /* _mesa_function_pool[6719]: GenLists (offset 5) */
"i\0"
"glGenLists\0"
"\0"
- /* _mesa_function_pool[5912]: SetFragmentShaderConstantATI (will be remapped) */
+ /* _mesa_function_pool[6733]: SetFragmentShaderConstantATI (will be remapped) */
"ip\0"
"glSetFragmentShaderConstantATI\0"
"\0"
- /* _mesa_function_pool[5947]: GetMapAttribParameterivNV (dynamic) */
+ /* _mesa_function_pool[6768]: GetMapAttribParameterivNV (dynamic) */
"iiip\0"
"glGetMapAttribParameterivNV\0"
"\0"
- /* _mesa_function_pool[5981]: CreateShaderObjectARB (will be remapped) */
+ /* _mesa_function_pool[6802]: CreateShaderObjectARB (will be remapped) */
"i\0"
"glCreateShaderObjectARB\0"
"\0"
- /* _mesa_function_pool[6008]: GetSharpenTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[6829]: GetSharpenTexFuncSGIS (dynamic) */
"ip\0"
"glGetSharpenTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[6036]: BufferDataARB (will be remapped) */
+ /* _mesa_function_pool[6857]: BufferDataARB (will be remapped) */
"iipi\0"
"glBufferData\0"
"glBufferDataARB\0"
"\0"
- /* _mesa_function_pool[6071]: FlushVertexArrayRangeNV (will be remapped) */
+ /* _mesa_function_pool[6892]: FlushVertexArrayRangeNV (will be remapped) */
"\0"
"glFlushVertexArrayRangeNV\0"
"\0"
- /* _mesa_function_pool[6099]: MapGrid2d (offset 226) */
+ /* _mesa_function_pool[6920]: MapGrid2d (offset 226) */
"iddidd\0"
"glMapGrid2d\0"
"\0"
- /* _mesa_function_pool[6119]: MapGrid2f (offset 227) */
+ /* _mesa_function_pool[6940]: MapGrid2f (offset 227) */
"iffiff\0"
"glMapGrid2f\0"
"\0"
- /* _mesa_function_pool[6139]: SampleMapATI (will be remapped) */
+ /* _mesa_function_pool[6960]: SampleMapATI (will be remapped) */
"iii\0"
"glSampleMapATI\0"
"\0"
- /* _mesa_function_pool[6159]: VertexPointerEXT (will be remapped) */
+ /* _mesa_function_pool[6980]: VertexPointerEXT (will be remapped) */
"iiiip\0"
"glVertexPointerEXT\0"
"\0"
- /* _mesa_function_pool[6185]: GetTexFilterFuncSGIS (dynamic) */
+ /* _mesa_function_pool[7006]: GetTexFilterFuncSGIS (dynamic) */
"iip\0"
"glGetTexFilterFuncSGIS\0"
"\0"
- /* _mesa_function_pool[6213]: Scissor (offset 176) */
+ /* _mesa_function_pool[7034]: Scissor (offset 176) */
"iiii\0"
"glScissor\0"
"\0"
- /* _mesa_function_pool[6229]: Fogf (offset 153) */
+ /* _mesa_function_pool[7050]: Fogf (offset 153) */
"if\0"
"glFogf\0"
"\0"
- /* _mesa_function_pool[6240]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[7061]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiColor4ubVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[6285]: TexSubImage1D (offset 332) */
+ /* _mesa_function_pool[7106]: TexSubImage1D (offset 332) */
"iiiiiip\0"
"glTexSubImage1D\0"
"glTexSubImage1DEXT\0"
"\0"
- /* _mesa_function_pool[6329]: VertexAttrib1sARB (will be remapped) */
+ /* _mesa_function_pool[7150]: VertexAttrib1sARB (will be remapped) */
"ii\0"
"glVertexAttrib1s\0"
"glVertexAttrib1sARB\0"
"\0"
- /* _mesa_function_pool[6370]: FenceSync (will be remapped) */
+ /* _mesa_function_pool[7191]: FenceSync (will be remapped) */
"ii\0"
"glFenceSync\0"
"\0"
- /* _mesa_function_pool[6386]: Color4usv (offset 40) */
+ /* _mesa_function_pool[7207]: Color4usv (offset 40) */
"p\0"
"glColor4usv\0"
"\0"
- /* _mesa_function_pool[6401]: Fogi (offset 155) */
+ /* _mesa_function_pool[7222]: Fogi (offset 155) */
"ii\0"
"glFogi\0"
"\0"
- /* _mesa_function_pool[6412]: DepthRange (offset 288) */
+ /* _mesa_function_pool[7233]: DepthRange (offset 288) */
"dd\0"
"glDepthRange\0"
"\0"
- /* _mesa_function_pool[6429]: RasterPos3iv (offset 75) */
+ /* _mesa_function_pool[7250]: RasterPos3iv (offset 75) */
"p\0"
"glRasterPos3iv\0"
"\0"
- /* _mesa_function_pool[6447]: FinalCombinerInputNV (will be remapped) */
+ /* _mesa_function_pool[7268]: FinalCombinerInputNV (will be remapped) */
"iiii\0"
"glFinalCombinerInputNV\0"
"\0"
- /* _mesa_function_pool[6476]: TexCoord2i (offset 106) */
+ /* _mesa_function_pool[7297]: TexCoord2i (offset 106) */
"ii\0"
"glTexCoord2i\0"
"\0"
- /* _mesa_function_pool[6493]: PixelMapfv (offset 251) */
+ /* _mesa_function_pool[7314]: PixelMapfv (offset 251) */
"iip\0"
"glPixelMapfv\0"
"\0"
- /* _mesa_function_pool[6511]: Color4ui (offset 37) */
+ /* _mesa_function_pool[7332]: Color4ui (offset 37) */
"iiii\0"
"glColor4ui\0"
"\0"
- /* _mesa_function_pool[6528]: RasterPos3s (offset 76) */
+ /* _mesa_function_pool[7349]: RasterPos3s (offset 76) */
"iii\0"
"glRasterPos3s\0"
"\0"
- /* _mesa_function_pool[6547]: Color3usv (offset 24) */
+ /* _mesa_function_pool[7368]: Color3usv (offset 24) */
"p\0"
"glColor3usv\0"
"\0"
- /* _mesa_function_pool[6562]: FlushRasterSGIX (dynamic) */
+ /* _mesa_function_pool[7383]: FlushRasterSGIX (dynamic) */
"\0"
"glFlushRasterSGIX\0"
"\0"
- /* _mesa_function_pool[6582]: TexCoord2f (offset 104) */
+ /* _mesa_function_pool[7403]: TexCoord2f (offset 104) */
"ff\0"
"glTexCoord2f\0"
"\0"
- /* _mesa_function_pool[6599]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[7420]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */
"ifffff\0"
"glReplacementCodeuiTexCoord2fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[6648]: TexCoord2d (offset 102) */
+ /* _mesa_function_pool[7469]: TexCoord2d (offset 102) */
"dd\0"
"glTexCoord2d\0"
"\0"
- /* _mesa_function_pool[6665]: RasterPos3d (offset 70) */
+ /* _mesa_function_pool[7486]: RasterPos3d (offset 70) */
"ddd\0"
"glRasterPos3d\0"
"\0"
- /* _mesa_function_pool[6684]: RasterPos3f (offset 72) */
+ /* _mesa_function_pool[7505]: RasterPos3f (offset 72) */
"fff\0"
"glRasterPos3f\0"
"\0"
- /* _mesa_function_pool[6703]: Uniform1fARB (will be remapped) */
+ /* _mesa_function_pool[7524]: Uniform1fARB (will be remapped) */
"if\0"
"glUniform1f\0"
"glUniform1fARB\0"
"\0"
- /* _mesa_function_pool[6734]: AreTexturesResident (offset 322) */
+ /* _mesa_function_pool[7555]: AreTexturesResident (offset 322) */
"ipp\0"
"glAreTexturesResident\0"
"glAreTexturesResidentEXT\0"
"\0"
- /* _mesa_function_pool[6786]: TexCoord2s (offset 108) */
+ /* _mesa_function_pool[7607]: TexCoord2s (offset 108) */
"ii\0"
"glTexCoord2s\0"
"\0"
- /* _mesa_function_pool[6803]: StencilOpSeparate (will be remapped) */
+ /* _mesa_function_pool[7624]: StencilOpSeparate (will be remapped) */
"iiii\0"
"glStencilOpSeparate\0"
"glStencilOpSeparateATI\0"
"\0"
- /* _mesa_function_pool[6852]: ColorTableParameteriv (offset 341) */
+ /* _mesa_function_pool[7673]: ColorTableParameteriv (offset 341) */
"iip\0"
"glColorTableParameteriv\0"
"glColorTableParameterivSGI\0"
"\0"
- /* _mesa_function_pool[6908]: FogCoordPointerListIBM (dynamic) */
+ /* _mesa_function_pool[7729]: FogCoordPointerListIBM (dynamic) */
"iipi\0"
"glFogCoordPointerListIBM\0"
"\0"
- /* _mesa_function_pool[6939]: WindowPos3dMESA (will be remapped) */
+ /* _mesa_function_pool[7760]: WindowPos3dMESA (will be remapped) */
"ddd\0"
"glWindowPos3d\0"
"glWindowPos3dARB\0"
"glWindowPos3dMESA\0"
"\0"
- /* _mesa_function_pool[6993]: Color4us (offset 39) */
+ /* _mesa_function_pool[7814]: Color4us (offset 39) */
"iiii\0"
"glColor4us\0"
"\0"
- /* _mesa_function_pool[7010]: PointParameterfvEXT (will be remapped) */
+ /* _mesa_function_pool[7831]: PointParameterfvEXT (will be remapped) */
"ip\0"
"glPointParameterfv\0"
"glPointParameterfvARB\0"
"glPointParameterfvEXT\0"
"glPointParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[7100]: Color3bv (offset 10) */
+ /* _mesa_function_pool[7921]: Color3bv (offset 10) */
"p\0"
"glColor3bv\0"
"\0"
- /* _mesa_function_pool[7114]: WindowPos2fvMESA (will be remapped) */
+ /* _mesa_function_pool[7935]: WindowPos2fvMESA (will be remapped) */
"p\0"
"glWindowPos2fv\0"
"glWindowPos2fvARB\0"
"glWindowPos2fvMESA\0"
"\0"
- /* _mesa_function_pool[7169]: SecondaryColor3bvEXT (will be remapped) */
+ /* _mesa_function_pool[7990]: SecondaryColor3bvEXT (will be remapped) */
"p\0"
"glSecondaryColor3bv\0"
"glSecondaryColor3bvEXT\0"
"\0"
- /* _mesa_function_pool[7215]: VertexPointerListIBM (dynamic) */
+ /* _mesa_function_pool[8036]: VertexPointerListIBM (dynamic) */
"iiipi\0"
"glVertexPointerListIBM\0"
"\0"
- /* _mesa_function_pool[7245]: GetProgramLocalParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[8066]: GetProgramLocalParameterfvARB (will be remapped) */
"iip\0"
"glGetProgramLocalParameterfvARB\0"
"\0"
- /* _mesa_function_pool[7282]: FragmentMaterialfSGIX (dynamic) */
+ /* _mesa_function_pool[8103]: FragmentMaterialfSGIX (dynamic) */
"iif\0"
"glFragmentMaterialfSGIX\0"
"\0"
- /* _mesa_function_pool[7311]: TexCoord2fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[8132]: TexCoord2fNormal3fVertex3fSUN (dynamic) */
"ffffffff\0"
"glTexCoord2fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[7353]: RenderbufferStorageEXT (will be remapped) */
+ /* _mesa_function_pool[8174]: RenderbufferStorageEXT (will be remapped) */
"iiii\0"
"glRenderbufferStorage\0"
"glRenderbufferStorageEXT\0"
"\0"
- /* _mesa_function_pool[7406]: IsFenceNV (will be remapped) */
+ /* _mesa_function_pool[8227]: IsFenceNV (will be remapped) */
"i\0"
"glIsFenceNV\0"
"\0"
- /* _mesa_function_pool[7421]: AttachObjectARB (will be remapped) */
+ /* _mesa_function_pool[8242]: AttachObjectARB (will be remapped) */
"ii\0"
"glAttachObjectARB\0"
"\0"
- /* _mesa_function_pool[7443]: GetFragmentLightivSGIX (dynamic) */
+ /* _mesa_function_pool[8264]: GetFragmentLightivSGIX (dynamic) */
"iip\0"
"glGetFragmentLightivSGIX\0"
"\0"
- /* _mesa_function_pool[7473]: UniformMatrix2fvARB (will be remapped) */
+ /* _mesa_function_pool[8294]: UniformMatrix2fvARB (will be remapped) */
"iiip\0"
"glUniformMatrix2fv\0"
"glUniformMatrix2fvARB\0"
"\0"
- /* _mesa_function_pool[7520]: MultiTexCoord2fARB (offset 386) */
+ /* _mesa_function_pool[8341]: MultiTexCoord2fARB (offset 386) */
"iff\0"
"glMultiTexCoord2f\0"
"glMultiTexCoord2fARB\0"
"\0"
- /* _mesa_function_pool[7564]: ColorTable (offset 339) */
+ /* _mesa_function_pool[8385]: ColorTable (offset 339) */
"iiiiip\0"
"glColorTable\0"
"glColorTableSGI\0"
"glColorTableEXT\0"
"\0"
- /* _mesa_function_pool[7617]: IndexPointer (offset 314) */
+ /* _mesa_function_pool[8438]: IndexPointer (offset 314) */
"iip\0"
"glIndexPointer\0"
"\0"
- /* _mesa_function_pool[7637]: Accum (offset 213) */
+ /* _mesa_function_pool[8458]: Accum (offset 213) */
"if\0"
"glAccum\0"
"\0"
- /* _mesa_function_pool[7649]: GetTexImage (offset 281) */
+ /* _mesa_function_pool[8470]: GetTexImage (offset 281) */
"iiiip\0"
"glGetTexImage\0"
"\0"
- /* _mesa_function_pool[7670]: MapControlPointsNV (dynamic) */
+ /* _mesa_function_pool[8491]: MapControlPointsNV (dynamic) */
"iiiiiiiip\0"
"glMapControlPointsNV\0"
"\0"
- /* _mesa_function_pool[7702]: ConvolutionFilter2D (offset 349) */
+ /* _mesa_function_pool[8523]: ConvolutionFilter2D (offset 349) */
"iiiiiip\0"
"glConvolutionFilter2D\0"
"glConvolutionFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[7758]: Finish (offset 216) */
+ /* _mesa_function_pool[8579]: Finish (offset 216) */
"\0"
"glFinish\0"
"\0"
- /* _mesa_function_pool[7769]: MapParameterfvNV (dynamic) */
+ /* _mesa_function_pool[8590]: MapParameterfvNV (dynamic) */
"iip\0"
"glMapParameterfvNV\0"
"\0"
- /* _mesa_function_pool[7793]: ClearStencil (offset 207) */
+ /* _mesa_function_pool[8614]: ClearStencil (offset 207) */
"i\0"
"glClearStencil\0"
"\0"
- /* _mesa_function_pool[7811]: VertexAttrib3dvARB (will be remapped) */
+ /* _mesa_function_pool[8632]: VertexAttrib3dvARB (will be remapped) */
"ip\0"
"glVertexAttrib3dv\0"
"glVertexAttrib3dvARB\0"
"\0"
- /* _mesa_function_pool[7854]: HintPGI (dynamic) */
+ /* _mesa_function_pool[8675]: Uniform4uivEXT (will be remapped) */
+ "iip\0"
+ "glUniform4uivEXT\0"
+ "glUniform4uiv\0"
+ "\0"
+ /* _mesa_function_pool[8711]: HintPGI (dynamic) */
"ii\0"
"glHintPGI\0"
"\0"
- /* _mesa_function_pool[7868]: ConvolutionParameteriv (offset 353) */
+ /* _mesa_function_pool[8725]: ConvolutionParameteriv (offset 353) */
"iip\0"
"glConvolutionParameteriv\0"
"glConvolutionParameterivEXT\0"
"\0"
- /* _mesa_function_pool[7926]: Color4s (offset 33) */
+ /* _mesa_function_pool[8783]: Color4s (offset 33) */
"iiii\0"
"glColor4s\0"
"\0"
- /* _mesa_function_pool[7942]: InterleavedArrays (offset 317) */
+ /* _mesa_function_pool[8799]: InterleavedArrays (offset 317) */
"iip\0"
"glInterleavedArrays\0"
"\0"
- /* _mesa_function_pool[7967]: RasterPos2fv (offset 65) */
+ /* _mesa_function_pool[8824]: RasterPos2fv (offset 65) */
"p\0"
"glRasterPos2fv\0"
"\0"
- /* _mesa_function_pool[7985]: TexCoord1fv (offset 97) */
+ /* _mesa_function_pool[8842]: TexCoord1fv (offset 97) */
"p\0"
"glTexCoord1fv\0"
"\0"
- /* _mesa_function_pool[8002]: Vertex2d (offset 126) */
+ /* _mesa_function_pool[8859]: Vertex2d (offset 126) */
"dd\0"
"glVertex2d\0"
"\0"
- /* _mesa_function_pool[8017]: CullParameterdvEXT (dynamic) */
+ /* _mesa_function_pool[8874]: CullParameterdvEXT (dynamic) */
"ip\0"
"glCullParameterdvEXT\0"
"\0"
- /* _mesa_function_pool[8042]: ProgramNamedParameter4fNV (will be remapped) */
+ /* _mesa_function_pool[8899]: ProgramNamedParameter4fNV (will be remapped) */
"iipffff\0"
"glProgramNamedParameter4fNV\0"
"\0"
- /* _mesa_function_pool[8079]: Color3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[8936]: Color3fVertex3fSUN (dynamic) */
"ffffff\0"
"glColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[8108]: ProgramEnvParameter4fvARB (will be remapped) */
+ /* _mesa_function_pool[8965]: ProgramEnvParameter4fvARB (will be remapped) */
"iip\0"
"glProgramEnvParameter4fvARB\0"
"glProgramParameter4fvNV\0"
"\0"
- /* _mesa_function_pool[8165]: Color4i (offset 31) */
+ /* _mesa_function_pool[9022]: Color4i (offset 31) */
"iiii\0"
"glColor4i\0"
"\0"
- /* _mesa_function_pool[8181]: Color4f (offset 29) */
+ /* _mesa_function_pool[9038]: Color4f (offset 29) */
"ffff\0"
"glColor4f\0"
"\0"
- /* _mesa_function_pool[8197]: RasterPos4fv (offset 81) */
+ /* _mesa_function_pool[9054]: RasterPos4fv (offset 81) */
"p\0"
"glRasterPos4fv\0"
"\0"
- /* _mesa_function_pool[8215]: Color4d (offset 27) */
+ /* _mesa_function_pool[9072]: Color4d (offset 27) */
"dddd\0"
"glColor4d\0"
"\0"
- /* _mesa_function_pool[8231]: ClearIndex (offset 205) */
+ /* _mesa_function_pool[9088]: ClearIndex (offset 205) */
"f\0"
"glClearIndex\0"
"\0"
- /* _mesa_function_pool[8247]: Color4b (offset 25) */
+ /* _mesa_function_pool[9104]: Color4b (offset 25) */
"iiii\0"
"glColor4b\0"
"\0"
- /* _mesa_function_pool[8263]: LoadMatrixd (offset 292) */
+ /* _mesa_function_pool[9120]: LoadMatrixd (offset 292) */
"p\0"
"glLoadMatrixd\0"
"\0"
- /* _mesa_function_pool[8280]: FragmentLightModeliSGIX (dynamic) */
+ /* _mesa_function_pool[9137]: FragmentLightModeliSGIX (dynamic) */
"ii\0"
"glFragmentLightModeliSGIX\0"
"\0"
- /* _mesa_function_pool[8310]: RasterPos2dv (offset 63) */
+ /* _mesa_function_pool[9167]: RasterPos2dv (offset 63) */
"p\0"
"glRasterPos2dv\0"
"\0"
- /* _mesa_function_pool[8328]: ConvolutionParameterfv (offset 351) */
+ /* _mesa_function_pool[9185]: ConvolutionParameterfv (offset 351) */
"iip\0"
"glConvolutionParameterfv\0"
"glConvolutionParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[8386]: TbufferMask3DFX (dynamic) */
+ /* _mesa_function_pool[9243]: TbufferMask3DFX (dynamic) */
"i\0"
"glTbufferMask3DFX\0"
"\0"
- /* _mesa_function_pool[8407]: GetTexGendv (offset 278) */
+ /* _mesa_function_pool[9264]: GetTexGendv (offset 278) */
"iip\0"
"glGetTexGendv\0"
"\0"
- /* _mesa_function_pool[8426]: GetVertexAttribfvNV (will be remapped) */
+ /* _mesa_function_pool[9283]: GetVertexAttribfvNV (will be remapped) */
"iip\0"
"glGetVertexAttribfvNV\0"
"\0"
- /* _mesa_function_pool[8453]: BeginTransformFeedbackEXT (will be remapped) */
+ /* _mesa_function_pool[9310]: BeginTransformFeedbackEXT (will be remapped) */
"i\0"
"glBeginTransformFeedbackEXT\0"
"glBeginTransformFeedback\0"
"\0"
- /* _mesa_function_pool[8509]: LoadProgramNV (will be remapped) */
+ /* _mesa_function_pool[9366]: LoadProgramNV (will be remapped) */
"iiip\0"
"glLoadProgramNV\0"
"\0"
- /* _mesa_function_pool[8531]: WaitSync (will be remapped) */
+ /* _mesa_function_pool[9388]: WaitSync (will be remapped) */
"iii\0"
"glWaitSync\0"
"\0"
- /* _mesa_function_pool[8547]: EndList (offset 1) */
+ /* _mesa_function_pool[9404]: EndList (offset 1) */
"\0"
"glEndList\0"
"\0"
- /* _mesa_function_pool[8559]: VertexAttrib4fvNV (will be remapped) */
+ /* _mesa_function_pool[9416]: VertexAttrib4fvNV (will be remapped) */
"ip\0"
"glVertexAttrib4fvNV\0"
"\0"
- /* _mesa_function_pool[8583]: GetAttachedObjectsARB (will be remapped) */
+ /* _mesa_function_pool[9440]: GetAttachedObjectsARB (will be remapped) */
"iipp\0"
"glGetAttachedObjectsARB\0"
"\0"
- /* _mesa_function_pool[8613]: Uniform3fvARB (will be remapped) */
+ /* _mesa_function_pool[9470]: Uniform3fvARB (will be remapped) */
"iip\0"
"glUniform3fv\0"
"glUniform3fvARB\0"
"\0"
- /* _mesa_function_pool[8647]: EvalCoord1fv (offset 231) */
+ /* _mesa_function_pool[9504]: EvalCoord1fv (offset 231) */
"p\0"
"glEvalCoord1fv\0"
"\0"
- /* _mesa_function_pool[8665]: DrawRangeElements (offset 338) */
+ /* _mesa_function_pool[9522]: DrawRangeElements (offset 338) */
"iiiiip\0"
"glDrawRangeElements\0"
"glDrawRangeElementsEXT\0"
"\0"
- /* _mesa_function_pool[8716]: EvalMesh2 (offset 238) */
+ /* _mesa_function_pool[9573]: EvalMesh2 (offset 238) */
"iiiii\0"
"glEvalMesh2\0"
"\0"
- /* _mesa_function_pool[8735]: Vertex4fv (offset 145) */
+ /* _mesa_function_pool[9592]: Vertex4fv (offset 145) */
"p\0"
"glVertex4fv\0"
"\0"
- /* _mesa_function_pool[8750]: GenTransformFeedbacks (will be remapped) */
+ /* _mesa_function_pool[9607]: GenTransformFeedbacks (will be remapped) */
"ip\0"
"glGenTransformFeedbacks\0"
"\0"
- /* _mesa_function_pool[8778]: SpriteParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[9635]: SpriteParameterfvSGIX (dynamic) */
"ip\0"
"glSpriteParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[8806]: CheckFramebufferStatusEXT (will be remapped) */
+ /* _mesa_function_pool[9663]: CheckFramebufferStatusEXT (will be remapped) */
"i\0"
"glCheckFramebufferStatus\0"
"glCheckFramebufferStatusEXT\0"
"\0"
- /* _mesa_function_pool[8862]: GlobalAlphaFactoruiSUN (dynamic) */
+ /* _mesa_function_pool[9719]: GlobalAlphaFactoruiSUN (dynamic) */
"i\0"
"glGlobalAlphaFactoruiSUN\0"
"\0"
- /* _mesa_function_pool[8890]: GetHandleARB (will be remapped) */
+ /* _mesa_function_pool[9747]: GetHandleARB (will be remapped) */
"i\0"
"glGetHandleARB\0"
"\0"
- /* _mesa_function_pool[8908]: GetVertexAttribivARB (will be remapped) */
+ /* _mesa_function_pool[9765]: GetVertexAttribivARB (will be remapped) */
"iip\0"
"glGetVertexAttribiv\0"
"glGetVertexAttribivARB\0"
"\0"
- /* _mesa_function_pool[8956]: GetCombinerInputParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[9813]: GetCombinerInputParameterfvNV (will be remapped) */
"iiiip\0"
"glGetCombinerInputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[8995]: CreateProgram (will be remapped) */
+ /* _mesa_function_pool[9852]: GetTexParameterIivEXT (will be remapped) */
+ "iip\0"
+ "glGetTexParameterIivEXT\0"
+ "glGetTexParameterIiv\0"
+ "\0"
+ /* _mesa_function_pool[9902]: CreateProgram (will be remapped) */
"\0"
"glCreateProgram\0"
"\0"
- /* _mesa_function_pool[9013]: LoadTransposeMatrixdARB (will be remapped) */
+ /* _mesa_function_pool[9920]: LoadTransposeMatrixdARB (will be remapped) */
"p\0"
"glLoadTransposeMatrixd\0"
"glLoadTransposeMatrixdARB\0"
"\0"
- /* _mesa_function_pool[9065]: GetMinmax (offset 364) */
+ /* _mesa_function_pool[9972]: GetMinmax (offset 364) */
"iiiip\0"
"glGetMinmax\0"
"glGetMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[9099]: StencilFuncSeparate (will be remapped) */
+ /* _mesa_function_pool[10006]: StencilFuncSeparate (will be remapped) */
"iiii\0"
"glStencilFuncSeparate\0"
"\0"
- /* _mesa_function_pool[9127]: SecondaryColor3sEXT (will be remapped) */
+ /* _mesa_function_pool[10034]: SecondaryColor3sEXT (will be remapped) */
"iii\0"
"glSecondaryColor3s\0"
"glSecondaryColor3sEXT\0"
"\0"
- /* _mesa_function_pool[9173]: Color3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[10080]: Color3fVertex3fvSUN (dynamic) */
"pp\0"
"glColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[9199]: Normal3fv (offset 57) */
+ /* _mesa_function_pool[10106]: GetInteger64i_v (will be remapped) */
+ "iip\0"
+ "glGetInteger64i_v\0"
+ "\0"
+ /* _mesa_function_pool[10129]: Normal3fv (offset 57) */
"p\0"
"glNormal3fv\0"
"\0"
- /* _mesa_function_pool[9214]: GlobalAlphaFactorbSUN (dynamic) */
+ /* _mesa_function_pool[10144]: GlobalAlphaFactorbSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorbSUN\0"
"\0"
- /* _mesa_function_pool[9241]: Color3us (offset 23) */
+ /* _mesa_function_pool[10171]: Color3us (offset 23) */
"iii\0"
"glColor3us\0"
"\0"
- /* _mesa_function_pool[9257]: ImageTransformParameterfvHP (dynamic) */
+ /* _mesa_function_pool[10187]: ImageTransformParameterfvHP (dynamic) */
"iip\0"
"glImageTransformParameterfvHP\0"
"\0"
- /* _mesa_function_pool[9292]: VertexAttrib4ivARB (will be remapped) */
+ /* _mesa_function_pool[10222]: VertexAttrib4ivARB (will be remapped) */
"ip\0"
"glVertexAttrib4iv\0"
"glVertexAttrib4ivARB\0"
"\0"
- /* _mesa_function_pool[9335]: End (offset 43) */
+ /* _mesa_function_pool[10265]: End (offset 43) */
"\0"
"glEnd\0"
"\0"
- /* _mesa_function_pool[9343]: VertexAttrib3fNV (will be remapped) */
+ /* _mesa_function_pool[10273]: VertexAttrib3fNV (will be remapped) */
"ifff\0"
"glVertexAttrib3fNV\0"
"\0"
- /* _mesa_function_pool[9368]: VertexAttribs2dvNV (will be remapped) */
+ /* _mesa_function_pool[10298]: VertexAttribs2dvNV (will be remapped) */
"iip\0"
"glVertexAttribs2dvNV\0"
"\0"
- /* _mesa_function_pool[9394]: GetQueryObjectui64vEXT (will be remapped) */
+ /* _mesa_function_pool[10324]: GetQueryObjectui64vEXT (will be remapped) */
"iip\0"
"glGetQueryObjectui64vEXT\0"
"\0"
- /* _mesa_function_pool[9424]: MultiTexCoord3fvARB (offset 395) */
+ /* _mesa_function_pool[10354]: MultiTexCoord3fvARB (offset 395) */
"ip\0"
"glMultiTexCoord3fv\0"
"glMultiTexCoord3fvARB\0"
"\0"
- /* _mesa_function_pool[9469]: SecondaryColor3dEXT (will be remapped) */
+ /* _mesa_function_pool[10399]: SecondaryColor3dEXT (will be remapped) */
"ddd\0"
"glSecondaryColor3d\0"
"glSecondaryColor3dEXT\0"
"\0"
- /* _mesa_function_pool[9515]: Color3ub (offset 19) */
+ /* _mesa_function_pool[10445]: Color3ub (offset 19) */
"iii\0"
"glColor3ub\0"
"\0"
- /* _mesa_function_pool[9531]: GetProgramParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[10461]: GetProgramParameterfvNV (will be remapped) */
"iiip\0"
"glGetProgramParameterfvNV\0"
"\0"
- /* _mesa_function_pool[9563]: TangentPointerEXT (dynamic) */
+ /* _mesa_function_pool[10493]: TangentPointerEXT (dynamic) */
"iip\0"
"glTangentPointerEXT\0"
"\0"
- /* _mesa_function_pool[9588]: Color4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[10518]: Color4fNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[9623]: GetInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[10553]: GetInstrumentsSGIX (dynamic) */
"\0"
"glGetInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[9646]: Color3ui (offset 21) */
+ /* _mesa_function_pool[10576]: GetUniformuivEXT (will be remapped) */
+ "iip\0"
+ "glGetUniformuivEXT\0"
+ "glGetUniformuiv\0"
+ "\0"
+ /* _mesa_function_pool[10616]: Color3ui (offset 21) */
"iii\0"
"glColor3ui\0"
"\0"
- /* _mesa_function_pool[9662]: EvalMapsNV (dynamic) */
+ /* _mesa_function_pool[10632]: EvalMapsNV (dynamic) */
"ii\0"
"glEvalMapsNV\0"
"\0"
- /* _mesa_function_pool[9679]: TexSubImage2D (offset 333) */
+ /* _mesa_function_pool[10649]: TexSubImage2D (offset 333) */
"iiiiiiiip\0"
"glTexSubImage2D\0"
"glTexSubImage2DEXT\0"
"\0"
- /* _mesa_function_pool[9725]: FragmentLightivSGIX (dynamic) */
+ /* _mesa_function_pool[10695]: FragmentLightivSGIX (dynamic) */
"iip\0"
"glFragmentLightivSGIX\0"
"\0"
- /* _mesa_function_pool[9752]: GetTexParameterPointervAPPLE (will be remapped) */
+ /* _mesa_function_pool[10722]: GetTexParameterPointervAPPLE (will be remapped) */
"iip\0"
"glGetTexParameterPointervAPPLE\0"
"\0"
- /* _mesa_function_pool[9788]: TexGenfv (offset 191) */
+ /* _mesa_function_pool[10758]: TexGenfv (offset 191) */
"iip\0"
"glTexGenfv\0"
"\0"
- /* _mesa_function_pool[9804]: GetTransformFeedbackVaryingEXT (will be remapped) */
+ /* _mesa_function_pool[10774]: GetTransformFeedbackVaryingEXT (will be remapped) */
"iiipppp\0"
"glGetTransformFeedbackVaryingEXT\0"
"glGetTransformFeedbackVarying\0"
"\0"
- /* _mesa_function_pool[9876]: VertexAttrib4bvARB (will be remapped) */
+ /* _mesa_function_pool[10846]: VertexAttrib4bvARB (will be remapped) */
"ip\0"
"glVertexAttrib4bv\0"
"glVertexAttrib4bvARB\0"
"\0"
- /* _mesa_function_pool[9919]: AlphaFragmentOp2ATI (will be remapped) */
+ /* _mesa_function_pool[10889]: AlphaFragmentOp2ATI (will be remapped) */
"iiiiiiiii\0"
"glAlphaFragmentOp2ATI\0"
"\0"
- /* _mesa_function_pool[9952]: GetIntegerIndexedvEXT (will be remapped) */
+ /* _mesa_function_pool[10922]: GetIntegerIndexedvEXT (will be remapped) */
"iip\0"
"glGetIntegerIndexedvEXT\0"
+ "glGetIntegeri_v\0"
"\0"
- /* _mesa_function_pool[9981]: MultiTexCoord4sARB (offset 406) */
+ /* _mesa_function_pool[10967]: MultiTexCoord4sARB (offset 406) */
"iiiii\0"
"glMultiTexCoord4s\0"
"glMultiTexCoord4sARB\0"
"\0"
- /* _mesa_function_pool[10027]: GetFragmentMaterialivSGIX (dynamic) */
+ /* _mesa_function_pool[11013]: GetFragmentMaterialivSGIX (dynamic) */
"iip\0"
"glGetFragmentMaterialivSGIX\0"
"\0"
- /* _mesa_function_pool[10060]: WindowPos4dMESA (will be remapped) */
+ /* _mesa_function_pool[11046]: WindowPos4dMESA (will be remapped) */
"dddd\0"
"glWindowPos4dMESA\0"
"\0"
- /* _mesa_function_pool[10084]: WeightPointerARB (dynamic) */
+ /* _mesa_function_pool[11070]: WeightPointerARB (dynamic) */
"iiip\0"
"glWeightPointerARB\0"
"\0"
- /* _mesa_function_pool[10109]: WindowPos2dMESA (will be remapped) */
+ /* _mesa_function_pool[11095]: WindowPos2dMESA (will be remapped) */
"dd\0"
"glWindowPos2d\0"
"glWindowPos2dARB\0"
"glWindowPos2dMESA\0"
"\0"
- /* _mesa_function_pool[10162]: FramebufferTexture3DEXT (will be remapped) */
+ /* _mesa_function_pool[11148]: FramebufferTexture3DEXT (will be remapped) */
"iiiiii\0"
"glFramebufferTexture3D\0"
"glFramebufferTexture3DEXT\0"
"\0"
- /* _mesa_function_pool[10219]: BlendEquation (offset 337) */
+ /* _mesa_function_pool[11205]: BlendEquation (offset 337) */
"i\0"
"glBlendEquation\0"
"glBlendEquationEXT\0"
"\0"
- /* _mesa_function_pool[10257]: VertexAttrib3dNV (will be remapped) */
+ /* _mesa_function_pool[11243]: VertexAttrib3dNV (will be remapped) */
"iddd\0"
"glVertexAttrib3dNV\0"
"\0"
- /* _mesa_function_pool[10282]: VertexAttrib3dARB (will be remapped) */
+ /* _mesa_function_pool[11268]: VertexAttrib3dARB (will be remapped) */
"iddd\0"
"glVertexAttrib3d\0"
"glVertexAttrib3dARB\0"
"\0"
- /* _mesa_function_pool[10325]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[11311]: VertexAttribI4usvEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI4usvEXT\0"
+ "glVertexAttribI4usv\0"
+ "\0"
+ /* _mesa_function_pool[11358]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
"ppppp\0"
"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[10389]: VertexAttrib4fARB (will be remapped) */
+ /* _mesa_function_pool[11422]: VertexAttrib4fARB (will be remapped) */
"iffff\0"
"glVertexAttrib4f\0"
"glVertexAttrib4fARB\0"
"\0"
- /* _mesa_function_pool[10433]: GetError (offset 261) */
+ /* _mesa_function_pool[11466]: GetError (offset 261) */
"\0"
"glGetError\0"
"\0"
- /* _mesa_function_pool[10446]: IndexFuncEXT (dynamic) */
+ /* _mesa_function_pool[11479]: IndexFuncEXT (dynamic) */
"if\0"
"glIndexFuncEXT\0"
"\0"
- /* _mesa_function_pool[10465]: TexCoord3dv (offset 111) */
+ /* _mesa_function_pool[11498]: TexCoord3dv (offset 111) */
"p\0"
"glTexCoord3dv\0"
"\0"
- /* _mesa_function_pool[10482]: Indexdv (offset 45) */
+ /* _mesa_function_pool[11515]: Indexdv (offset 45) */
"p\0"
"glIndexdv\0"
"\0"
- /* _mesa_function_pool[10495]: FramebufferTexture2DEXT (will be remapped) */
+ /* _mesa_function_pool[11528]: FramebufferTexture2DEXT (will be remapped) */
"iiiii\0"
"glFramebufferTexture2D\0"
"glFramebufferTexture2DEXT\0"
"\0"
- /* _mesa_function_pool[10551]: Normal3s (offset 60) */
+ /* _mesa_function_pool[11584]: Normal3s (offset 60) */
"iii\0"
"glNormal3s\0"
"\0"
- /* _mesa_function_pool[10567]: GetObjectParameterivAPPLE (will be remapped) */
+ /* _mesa_function_pool[11600]: GetObjectParameterivAPPLE (will be remapped) */
"iiip\0"
"glGetObjectParameterivAPPLE\0"
"\0"
- /* _mesa_function_pool[10601]: PushName (offset 201) */
+ /* _mesa_function_pool[11634]: PushName (offset 201) */
"i\0"
"glPushName\0"
"\0"
- /* _mesa_function_pool[10615]: MultiTexCoord2dvARB (offset 385) */
+ /* _mesa_function_pool[11648]: MultiTexCoord2dvARB (offset 385) */
"ip\0"
"glMultiTexCoord2dv\0"
"glMultiTexCoord2dvARB\0"
"\0"
- /* _mesa_function_pool[10660]: CullParameterfvEXT (dynamic) */
+ /* _mesa_function_pool[11693]: CullParameterfvEXT (dynamic) */
"ip\0"
"glCullParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[10685]: Normal3i (offset 58) */
+ /* _mesa_function_pool[11718]: Normal3i (offset 58) */
"iii\0"
"glNormal3i\0"
"\0"
- /* _mesa_function_pool[10701]: ProgramNamedParameter4fvNV (will be remapped) */
+ /* _mesa_function_pool[11734]: ProgramNamedParameter4fvNV (will be remapped) */
"iipp\0"
"glProgramNamedParameter4fvNV\0"
"\0"
- /* _mesa_function_pool[10736]: SecondaryColorPointerEXT (will be remapped) */
+ /* _mesa_function_pool[11769]: SecondaryColorPointerEXT (will be remapped) */
"iiip\0"
"glSecondaryColorPointer\0"
"glSecondaryColorPointerEXT\0"
"\0"
- /* _mesa_function_pool[10793]: VertexAttrib4fvARB (will be remapped) */
+ /* _mesa_function_pool[11826]: VertexAttrib4fvARB (will be remapped) */
"ip\0"
"glVertexAttrib4fv\0"
"glVertexAttrib4fvARB\0"
"\0"
- /* _mesa_function_pool[10836]: ColorPointerListIBM (dynamic) */
+ /* _mesa_function_pool[11869]: ColorPointerListIBM (dynamic) */
"iiipi\0"
"glColorPointerListIBM\0"
"\0"
- /* _mesa_function_pool[10865]: GetActiveUniformARB (will be remapped) */
+ /* _mesa_function_pool[11898]: GetActiveUniformARB (will be remapped) */
"iiipppp\0"
"glGetActiveUniform\0"
"glGetActiveUniformARB\0"
"\0"
- /* _mesa_function_pool[10915]: ImageTransformParameteriHP (dynamic) */
+ /* _mesa_function_pool[11948]: ImageTransformParameteriHP (dynamic) */
"iii\0"
"glImageTransformParameteriHP\0"
"\0"
- /* _mesa_function_pool[10949]: Normal3b (offset 52) */
+ /* _mesa_function_pool[11982]: Normal3b (offset 52) */
"iii\0"
"glNormal3b\0"
"\0"
- /* _mesa_function_pool[10965]: Normal3d (offset 54) */
+ /* _mesa_function_pool[11998]: Normal3d (offset 54) */
"ddd\0"
"glNormal3d\0"
"\0"
- /* _mesa_function_pool[10981]: Normal3f (offset 56) */
+ /* _mesa_function_pool[12014]: Uniform1uiEXT (will be remapped) */
+ "ii\0"
+ "glUniform1uiEXT\0"
+ "glUniform1ui\0"
+ "\0"
+ /* _mesa_function_pool[12047]: Normal3f (offset 56) */
"fff\0"
"glNormal3f\0"
"\0"
- /* _mesa_function_pool[10997]: MultiTexCoord1svARB (offset 383) */
+ /* _mesa_function_pool[12063]: MultiTexCoord1svARB (offset 383) */
"ip\0"
"glMultiTexCoord1sv\0"
"glMultiTexCoord1svARB\0"
"\0"
- /* _mesa_function_pool[11042]: Indexi (offset 48) */
+ /* _mesa_function_pool[12108]: Indexi (offset 48) */
"i\0"
"glIndexi\0"
"\0"
- /* _mesa_function_pool[11054]: EGLImageTargetTexture2DOES (will be remapped) */
+ /* _mesa_function_pool[12120]: EGLImageTargetTexture2DOES (will be remapped) */
"ip\0"
"glEGLImageTargetTexture2DOES\0"
"\0"
- /* _mesa_function_pool[11087]: EndQueryARB (will be remapped) */
+ /* _mesa_function_pool[12153]: EndQueryARB (will be remapped) */
"i\0"
"glEndQuery\0"
"glEndQueryARB\0"
"\0"
- /* _mesa_function_pool[11115]: DeleteFencesNV (will be remapped) */
+ /* _mesa_function_pool[12181]: DeleteFencesNV (will be remapped) */
"ip\0"
"glDeleteFencesNV\0"
"\0"
- /* _mesa_function_pool[11136]: BindBufferRangeEXT (will be remapped) */
+ /* _mesa_function_pool[12202]: BindBufferRangeEXT (will be remapped) */
"iiiii\0"
"glBindBufferRangeEXT\0"
"glBindBufferRange\0"
"\0"
- /* _mesa_function_pool[11182]: DepthMask (offset 211) */
+ /* _mesa_function_pool[12248]: DepthMask (offset 211) */
"i\0"
"glDepthMask\0"
"\0"
- /* _mesa_function_pool[11197]: IsShader (will be remapped) */
+ /* _mesa_function_pool[12263]: IsShader (will be remapped) */
"i\0"
"glIsShader\0"
"\0"
- /* _mesa_function_pool[11211]: Indexf (offset 46) */
+ /* _mesa_function_pool[12277]: Indexf (offset 46) */
"f\0"
"glIndexf\0"
"\0"
- /* _mesa_function_pool[11223]: GetImageTransformParameterivHP (dynamic) */
+ /* _mesa_function_pool[12289]: GetImageTransformParameterivHP (dynamic) */
"iip\0"
"glGetImageTransformParameterivHP\0"
"\0"
- /* _mesa_function_pool[11261]: Indexd (offset 44) */
+ /* _mesa_function_pool[12327]: Indexd (offset 44) */
"d\0"
"glIndexd\0"
"\0"
- /* _mesa_function_pool[11273]: GetMaterialiv (offset 270) */
+ /* _mesa_function_pool[12339]: GetMaterialiv (offset 270) */
"iip\0"
"glGetMaterialiv\0"
"\0"
- /* _mesa_function_pool[11294]: StencilOp (offset 244) */
+ /* _mesa_function_pool[12360]: StencilOp (offset 244) */
"iii\0"
"glStencilOp\0"
"\0"
- /* _mesa_function_pool[11311]: WindowPos4ivMESA (will be remapped) */
+ /* _mesa_function_pool[12377]: WindowPos4ivMESA (will be remapped) */
"p\0"
"glWindowPos4ivMESA\0"
"\0"
- /* _mesa_function_pool[11333]: FramebufferTextureLayer (dynamic) */
+ /* _mesa_function_pool[12399]: FramebufferTextureLayer (dynamic) */
"iiiii\0"
"glFramebufferTextureLayerARB\0"
"\0"
- /* _mesa_function_pool[11369]: MultiTexCoord3svARB (offset 399) */
+ /* _mesa_function_pool[12435]: MultiTexCoord3svARB (offset 399) */
"ip\0"
"glMultiTexCoord3sv\0"
"glMultiTexCoord3svARB\0"
"\0"
- /* _mesa_function_pool[11414]: TexEnvfv (offset 185) */
+ /* _mesa_function_pool[12480]: TexEnvfv (offset 185) */
"iip\0"
"glTexEnvfv\0"
"\0"
- /* _mesa_function_pool[11430]: MultiTexCoord4iARB (offset 404) */
+ /* _mesa_function_pool[12496]: MultiTexCoord4iARB (offset 404) */
"iiiii\0"
"glMultiTexCoord4i\0"
"glMultiTexCoord4iARB\0"
"\0"
- /* _mesa_function_pool[11476]: Indexs (offset 50) */
+ /* _mesa_function_pool[12542]: Indexs (offset 50) */
"i\0"
"glIndexs\0"
"\0"
- /* _mesa_function_pool[11488]: Binormal3ivEXT (dynamic) */
+ /* _mesa_function_pool[12554]: Binormal3ivEXT (dynamic) */
"p\0"
"glBinormal3ivEXT\0"
"\0"
- /* _mesa_function_pool[11508]: ResizeBuffersMESA (will be remapped) */
+ /* _mesa_function_pool[12574]: ResizeBuffersMESA (will be remapped) */
"\0"
"glResizeBuffersMESA\0"
"\0"
- /* _mesa_function_pool[11530]: GetUniformivARB (will be remapped) */
+ /* _mesa_function_pool[12596]: GetUniformivARB (will be remapped) */
"iip\0"
"glGetUniformiv\0"
"glGetUniformivARB\0"
"\0"
- /* _mesa_function_pool[11568]: PixelTexGenParameteriSGIS (will be remapped) */
+ /* _mesa_function_pool[12634]: PixelTexGenParameteriSGIS (will be remapped) */
"ii\0"
"glPixelTexGenParameteriSGIS\0"
"\0"
- /* _mesa_function_pool[11600]: VertexPointervINTEL (dynamic) */
+ /* _mesa_function_pool[12666]: VertexPointervINTEL (dynamic) */
"iip\0"
"glVertexPointervINTEL\0"
"\0"
- /* _mesa_function_pool[11627]: Vertex2i (offset 130) */
+ /* _mesa_function_pool[12693]: Vertex2i (offset 130) */
"ii\0"
"glVertex2i\0"
"\0"
- /* _mesa_function_pool[11642]: LoadMatrixf (offset 291) */
+ /* _mesa_function_pool[12708]: LoadMatrixf (offset 291) */
"p\0"
"glLoadMatrixf\0"
"\0"
- /* _mesa_function_pool[11659]: Vertex2f (offset 128) */
+ /* _mesa_function_pool[12725]: VertexAttribI1uivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI1uivEXT\0"
+ "glVertexAttribI1uiv\0"
+ "\0"
+ /* _mesa_function_pool[12772]: Vertex2f (offset 128) */
"ff\0"
"glVertex2f\0"
"\0"
- /* _mesa_function_pool[11674]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[12787]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[11727]: Color4bv (offset 26) */
+ /* _mesa_function_pool[12840]: Color4bv (offset 26) */
"p\0"
"glColor4bv\0"
"\0"
- /* _mesa_function_pool[11741]: VertexPointer (offset 321) */
+ /* _mesa_function_pool[12854]: VertexPointer (offset 321) */
"iiip\0"
"glVertexPointer\0"
"\0"
- /* _mesa_function_pool[11763]: SecondaryColor3uiEXT (will be remapped) */
+ /* _mesa_function_pool[12876]: SecondaryColor3uiEXT (will be remapped) */
"iii\0"
"glSecondaryColor3ui\0"
"glSecondaryColor3uiEXT\0"
"\0"
- /* _mesa_function_pool[11811]: StartInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[12924]: StartInstrumentsSGIX (dynamic) */
"\0"
"glStartInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[11836]: SecondaryColor3usvEXT (will be remapped) */
+ /* _mesa_function_pool[12949]: SecondaryColor3usvEXT (will be remapped) */
"p\0"
"glSecondaryColor3usv\0"
"glSecondaryColor3usvEXT\0"
"\0"
- /* _mesa_function_pool[11884]: VertexAttrib2fvNV (will be remapped) */
+ /* _mesa_function_pool[12997]: VertexAttrib2fvNV (will be remapped) */
"ip\0"
"glVertexAttrib2fvNV\0"
"\0"
- /* _mesa_function_pool[11908]: ProgramLocalParameter4dvARB (will be remapped) */
+ /* _mesa_function_pool[13021]: ProgramLocalParameter4dvARB (will be remapped) */
"iip\0"
"glProgramLocalParameter4dvARB\0"
"\0"
- /* _mesa_function_pool[11943]: DeleteLists (offset 4) */
+ /* _mesa_function_pool[13056]: DeleteLists (offset 4) */
"ii\0"
"glDeleteLists\0"
"\0"
- /* _mesa_function_pool[11961]: LogicOp (offset 242) */
+ /* _mesa_function_pool[13074]: LogicOp (offset 242) */
"i\0"
"glLogicOp\0"
"\0"
- /* _mesa_function_pool[11974]: MatrixIndexuivARB (dynamic) */
+ /* _mesa_function_pool[13087]: MatrixIndexuivARB (dynamic) */
"ip\0"
"glMatrixIndexuivARB\0"
"\0"
- /* _mesa_function_pool[11998]: Vertex2s (offset 132) */
+ /* _mesa_function_pool[13111]: Vertex2s (offset 132) */
"ii\0"
"glVertex2s\0"
"\0"
- /* _mesa_function_pool[12013]: RenderbufferStorageMultisample (will be remapped) */
+ /* _mesa_function_pool[13126]: RenderbufferStorageMultisample (will be remapped) */
"iiiii\0"
"glRenderbufferStorageMultisample\0"
"glRenderbufferStorageMultisampleEXT\0"
"\0"
- /* _mesa_function_pool[12089]: TexCoord4fv (offset 121) */
+ /* _mesa_function_pool[13202]: TexCoord4fv (offset 121) */
"p\0"
"glTexCoord4fv\0"
"\0"
- /* _mesa_function_pool[12106]: Tangent3sEXT (dynamic) */
+ /* _mesa_function_pool[13219]: Tangent3sEXT (dynamic) */
"iii\0"
"glTangent3sEXT\0"
"\0"
- /* _mesa_function_pool[12126]: GlobalAlphaFactorfSUN (dynamic) */
+ /* _mesa_function_pool[13239]: GlobalAlphaFactorfSUN (dynamic) */
"f\0"
"glGlobalAlphaFactorfSUN\0"
"\0"
- /* _mesa_function_pool[12153]: MultiTexCoord3iARB (offset 396) */
+ /* _mesa_function_pool[13266]: MultiTexCoord3iARB (offset 396) */
"iiii\0"
"glMultiTexCoord3i\0"
"glMultiTexCoord3iARB\0"
"\0"
- /* _mesa_function_pool[12198]: IsProgram (will be remapped) */
+ /* _mesa_function_pool[13311]: IsProgram (will be remapped) */
"i\0"
"glIsProgram\0"
"\0"
- /* _mesa_function_pool[12213]: TexCoordPointerListIBM (dynamic) */
+ /* _mesa_function_pool[13326]: TexCoordPointerListIBM (dynamic) */
"iiipi\0"
"glTexCoordPointerListIBM\0"
"\0"
- /* _mesa_function_pool[12245]: GlobalAlphaFactorusSUN (dynamic) */
+ /* _mesa_function_pool[13358]: VertexAttribI4svEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI4svEXT\0"
+ "glVertexAttribI4sv\0"
+ "\0"
+ /* _mesa_function_pool[13403]: GlobalAlphaFactorusSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorusSUN\0"
"\0"
- /* _mesa_function_pool[12273]: VertexAttrib2dvNV (will be remapped) */
+ /* _mesa_function_pool[13431]: VertexAttrib2dvNV (will be remapped) */
"ip\0"
"glVertexAttrib2dvNV\0"
"\0"
- /* _mesa_function_pool[12297]: FramebufferRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[13455]: FramebufferRenderbufferEXT (will be remapped) */
"iiii\0"
"glFramebufferRenderbuffer\0"
"glFramebufferRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[12358]: VertexAttrib1dvNV (will be remapped) */
+ /* _mesa_function_pool[13516]: ClearBufferuiv (will be remapped) */
+ "iip\0"
+ "glClearBufferuiv\0"
+ "\0"
+ /* _mesa_function_pool[13538]: VertexAttrib1dvNV (will be remapped) */
"ip\0"
"glVertexAttrib1dvNV\0"
"\0"
- /* _mesa_function_pool[12382]: GenTextures (offset 328) */
+ /* _mesa_function_pool[13562]: GenTextures (offset 328) */
"ip\0"
"glGenTextures\0"
"glGenTexturesEXT\0"
"\0"
- /* _mesa_function_pool[12417]: FramebufferTextureARB (will be remapped) */
+ /* _mesa_function_pool[13597]: FramebufferTextureARB (will be remapped) */
"iiii\0"
"glFramebufferTextureARB\0"
"\0"
- /* _mesa_function_pool[12447]: SetFenceNV (will be remapped) */
+ /* _mesa_function_pool[13627]: SetFenceNV (will be remapped) */
"ii\0"
"glSetFenceNV\0"
"\0"
- /* _mesa_function_pool[12464]: FramebufferTexture1DEXT (will be remapped) */
+ /* _mesa_function_pool[13644]: FramebufferTexture1DEXT (will be remapped) */
"iiiii\0"
"glFramebufferTexture1D\0"
"glFramebufferTexture1DEXT\0"
"\0"
- /* _mesa_function_pool[12520]: GetCombinerOutputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[13700]: GetCombinerOutputParameterivNV (will be remapped) */
"iiip\0"
"glGetCombinerOutputParameterivNV\0"
"\0"
- /* _mesa_function_pool[12559]: MultiModeDrawArraysIBM (will be remapped) */
+ /* _mesa_function_pool[13739]: MultiModeDrawArraysIBM (will be remapped) */
"pppii\0"
"glMultiModeDrawArraysIBM\0"
"\0"
- /* _mesa_function_pool[12591]: PixelTexGenParameterivSGIS (will be remapped) */
+ /* _mesa_function_pool[13771]: PixelTexGenParameterivSGIS (will be remapped) */
"ip\0"
"glPixelTexGenParameterivSGIS\0"
"\0"
- /* _mesa_function_pool[12624]: TextureNormalEXT (dynamic) */
+ /* _mesa_function_pool[13804]: TextureNormalEXT (dynamic) */
"i\0"
"glTextureNormalEXT\0"
"\0"
- /* _mesa_function_pool[12646]: IndexPointerListIBM (dynamic) */
+ /* _mesa_function_pool[13826]: IndexPointerListIBM (dynamic) */
"iipi\0"
"glIndexPointerListIBM\0"
"\0"
- /* _mesa_function_pool[12674]: WeightfvARB (dynamic) */
+ /* _mesa_function_pool[13854]: WeightfvARB (dynamic) */
"ip\0"
"glWeightfvARB\0"
"\0"
- /* _mesa_function_pool[12692]: GetCombinerOutputParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[13872]: GetCombinerOutputParameterfvNV (will be remapped) */
"iiip\0"
"glGetCombinerOutputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[12731]: RasterPos2sv (offset 69) */
+ /* _mesa_function_pool[13911]: RasterPos2sv (offset 69) */
"p\0"
"glRasterPos2sv\0"
"\0"
- /* _mesa_function_pool[12749]: Color4ubv (offset 36) */
+ /* _mesa_function_pool[13929]: Color4ubv (offset 36) */
"p\0"
"glColor4ubv\0"
"\0"
- /* _mesa_function_pool[12764]: DrawBuffer (offset 202) */
+ /* _mesa_function_pool[13944]: DrawBuffer (offset 202) */
"i\0"
"glDrawBuffer\0"
"\0"
- /* _mesa_function_pool[12780]: TexCoord2fv (offset 105) */
+ /* _mesa_function_pool[13960]: TexCoord2fv (offset 105) */
"p\0"
"glTexCoord2fv\0"
"\0"
- /* _mesa_function_pool[12797]: WindowPos4fMESA (will be remapped) */
+ /* _mesa_function_pool[13977]: WindowPos4fMESA (will be remapped) */
"ffff\0"
"glWindowPos4fMESA\0"
"\0"
- /* _mesa_function_pool[12821]: TexCoord1sv (offset 101) */
+ /* _mesa_function_pool[14001]: TexCoord1sv (offset 101) */
"p\0"
"glTexCoord1sv\0"
"\0"
- /* _mesa_function_pool[12838]: WindowPos3dvMESA (will be remapped) */
+ /* _mesa_function_pool[14018]: WindowPos3dvMESA (will be remapped) */
"p\0"
"glWindowPos3dv\0"
"glWindowPos3dvARB\0"
"glWindowPos3dvMESA\0"
"\0"
- /* _mesa_function_pool[12893]: DepthFunc (offset 245) */
+ /* _mesa_function_pool[14073]: DepthFunc (offset 245) */
"i\0"
"glDepthFunc\0"
"\0"
- /* _mesa_function_pool[12908]: PixelMapusv (offset 253) */
+ /* _mesa_function_pool[14088]: PixelMapusv (offset 253) */
"iip\0"
"glPixelMapusv\0"
"\0"
- /* _mesa_function_pool[12927]: GetQueryObjecti64vEXT (will be remapped) */
+ /* _mesa_function_pool[14107]: GetQueryObjecti64vEXT (will be remapped) */
"iip\0"
"glGetQueryObjecti64vEXT\0"
"\0"
- /* _mesa_function_pool[12956]: MultiTexCoord1dARB (offset 376) */
+ /* _mesa_function_pool[14136]: MultiTexCoord1dARB (offset 376) */
"id\0"
"glMultiTexCoord1d\0"
"glMultiTexCoord1dARB\0"
"\0"
- /* _mesa_function_pool[12999]: PointParameterivNV (will be remapped) */
+ /* _mesa_function_pool[14179]: PointParameterivNV (will be remapped) */
"ip\0"
"glPointParameteriv\0"
"glPointParameterivNV\0"
"\0"
- /* _mesa_function_pool[13043]: BlendFunc (offset 241) */
+ /* _mesa_function_pool[14223]: BlendFunc (offset 241) */
"ii\0"
"glBlendFunc\0"
"\0"
- /* _mesa_function_pool[13059]: EndTransformFeedbackEXT (will be remapped) */
+ /* _mesa_function_pool[14239]: EndTransformFeedbackEXT (will be remapped) */
"\0"
"glEndTransformFeedbackEXT\0"
"glEndTransformFeedback\0"
"\0"
- /* _mesa_function_pool[13110]: Uniform2fvARB (will be remapped) */
+ /* _mesa_function_pool[14290]: Uniform2fvARB (will be remapped) */
"iip\0"
"glUniform2fv\0"
"glUniform2fvARB\0"
"\0"
- /* _mesa_function_pool[13144]: BufferParameteriAPPLE (will be remapped) */
+ /* _mesa_function_pool[14324]: BufferParameteriAPPLE (will be remapped) */
"iii\0"
"glBufferParameteriAPPLE\0"
"\0"
- /* _mesa_function_pool[13173]: MultiTexCoord3dvARB (offset 393) */
+ /* _mesa_function_pool[14353]: MultiTexCoord3dvARB (offset 393) */
"ip\0"
"glMultiTexCoord3dv\0"
"glMultiTexCoord3dvARB\0"
"\0"
- /* _mesa_function_pool[13218]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[14398]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[13274]: DeleteObjectARB (will be remapped) */
+ /* _mesa_function_pool[14454]: DeleteObjectARB (will be remapped) */
"i\0"
"glDeleteObjectARB\0"
"\0"
- /* _mesa_function_pool[13295]: MatrixIndexPointerARB (dynamic) */
+ /* _mesa_function_pool[14475]: MatrixIndexPointerARB (dynamic) */
"iiip\0"
"glMatrixIndexPointerARB\0"
"\0"
- /* _mesa_function_pool[13325]: ProgramNamedParameter4dvNV (will be remapped) */
+ /* _mesa_function_pool[14505]: ProgramNamedParameter4dvNV (will be remapped) */
"iipp\0"
"glProgramNamedParameter4dvNV\0"
"\0"
- /* _mesa_function_pool[13360]: Tangent3fvEXT (dynamic) */
+ /* _mesa_function_pool[14540]: Tangent3fvEXT (dynamic) */
"p\0"
"glTangent3fvEXT\0"
"\0"
- /* _mesa_function_pool[13379]: Flush (offset 217) */
+ /* _mesa_function_pool[14559]: Flush (offset 217) */
"\0"
"glFlush\0"
"\0"
- /* _mesa_function_pool[13389]: Color4uiv (offset 38) */
+ /* _mesa_function_pool[14569]: Color4uiv (offset 38) */
"p\0"
"glColor4uiv\0"
"\0"
- /* _mesa_function_pool[13404]: GenVertexArrays (will be remapped) */
+ /* _mesa_function_pool[14584]: VertexAttribI4iEXT (will be remapped) */
+ "iiiii\0"
+ "glVertexAttribI4iEXT\0"
+ "glVertexAttribI4i\0"
+ "\0"
+ /* _mesa_function_pool[14630]: GenVertexArrays (will be remapped) */
"ip\0"
"glGenVertexArrays\0"
"\0"
- /* _mesa_function_pool[13426]: RasterPos3sv (offset 77) */
+ /* _mesa_function_pool[14652]: Uniform3uivEXT (will be remapped) */
+ "iip\0"
+ "glUniform3uivEXT\0"
+ "glUniform3uiv\0"
+ "\0"
+ /* _mesa_function_pool[14688]: RasterPos3sv (offset 77) */
"p\0"
"glRasterPos3sv\0"
"\0"
- /* _mesa_function_pool[13444]: BindFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[14706]: BindFramebufferEXT (will be remapped) */
"ii\0"
"glBindFramebuffer\0"
"glBindFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[13487]: ReferencePlaneSGIX (dynamic) */
+ /* _mesa_function_pool[14749]: ReferencePlaneSGIX (dynamic) */
"p\0"
"glReferencePlaneSGIX\0"
"\0"
- /* _mesa_function_pool[13511]: PushAttrib (offset 219) */
+ /* _mesa_function_pool[14773]: PushAttrib (offset 219) */
"i\0"
"glPushAttrib\0"
"\0"
- /* _mesa_function_pool[13527]: RasterPos2i (offset 66) */
+ /* _mesa_function_pool[14789]: RasterPos2i (offset 66) */
"ii\0"
"glRasterPos2i\0"
"\0"
- /* _mesa_function_pool[13545]: ValidateProgramARB (will be remapped) */
+ /* _mesa_function_pool[14807]: ValidateProgramARB (will be remapped) */
"i\0"
"glValidateProgram\0"
"glValidateProgramARB\0"
"\0"
- /* _mesa_function_pool[13587]: TexParameteriv (offset 181) */
+ /* _mesa_function_pool[14849]: TexParameteriv (offset 181) */
"iip\0"
"glTexParameteriv\0"
"\0"
- /* _mesa_function_pool[13609]: UnlockArraysEXT (will be remapped) */
+ /* _mesa_function_pool[14871]: UnlockArraysEXT (will be remapped) */
"\0"
"glUnlockArraysEXT\0"
"\0"
- /* _mesa_function_pool[13629]: TexCoord2fColor3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[14891]: TexCoord2fColor3fVertex3fSUN (dynamic) */
"ffffffff\0"
"glTexCoord2fColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[13670]: WindowPos3fvMESA (will be remapped) */
+ /* _mesa_function_pool[14932]: WindowPos3fvMESA (will be remapped) */
"p\0"
"glWindowPos3fv\0"
"glWindowPos3fvARB\0"
"glWindowPos3fvMESA\0"
"\0"
- /* _mesa_function_pool[13725]: RasterPos2f (offset 64) */
+ /* _mesa_function_pool[14987]: RasterPos2f (offset 64) */
"ff\0"
"glRasterPos2f\0"
"\0"
- /* _mesa_function_pool[13743]: VertexAttrib1svNV (will be remapped) */
+ /* _mesa_function_pool[15005]: VertexAttrib1svNV (will be remapped) */
"ip\0"
"glVertexAttrib1svNV\0"
"\0"
- /* _mesa_function_pool[13767]: RasterPos2d (offset 62) */
+ /* _mesa_function_pool[15029]: RasterPos2d (offset 62) */
"dd\0"
"glRasterPos2d\0"
"\0"
- /* _mesa_function_pool[13785]: RasterPos3fv (offset 73) */
+ /* _mesa_function_pool[15047]: RasterPos3fv (offset 73) */
"p\0"
"glRasterPos3fv\0"
"\0"
- /* _mesa_function_pool[13803]: CopyTexSubImage3D (offset 373) */
+ /* _mesa_function_pool[15065]: CopyTexSubImage3D (offset 373) */
"iiiiiiiii\0"
"glCopyTexSubImage3D\0"
"glCopyTexSubImage3DEXT\0"
"\0"
- /* _mesa_function_pool[13857]: VertexAttrib2dARB (will be remapped) */
+ /* _mesa_function_pool[15119]: VertexAttrib2dARB (will be remapped) */
"idd\0"
"glVertexAttrib2d\0"
"glVertexAttrib2dARB\0"
"\0"
- /* _mesa_function_pool[13899]: Color4ub (offset 35) */
+ /* _mesa_function_pool[15161]: Color4ub (offset 35) */
"iiii\0"
"glColor4ub\0"
"\0"
- /* _mesa_function_pool[13916]: GetInteger64v (will be remapped) */
+ /* _mesa_function_pool[15178]: GetInteger64v (will be remapped) */
"ip\0"
"glGetInteger64v\0"
"\0"
- /* _mesa_function_pool[13936]: TextureColorMaskSGIS (dynamic) */
+ /* _mesa_function_pool[15198]: TextureColorMaskSGIS (dynamic) */
"iiii\0"
"glTextureColorMaskSGIS\0"
"\0"
- /* _mesa_function_pool[13965]: RasterPos2s (offset 68) */
+ /* _mesa_function_pool[15227]: RasterPos2s (offset 68) */
"ii\0"
"glRasterPos2s\0"
"\0"
- /* _mesa_function_pool[13983]: GetColorTable (offset 343) */
+ /* _mesa_function_pool[15245]: GetColorTable (offset 343) */
"iiip\0"
"glGetColorTable\0"
"glGetColorTableSGI\0"
"glGetColorTableEXT\0"
"\0"
- /* _mesa_function_pool[14043]: SelectBuffer (offset 195) */
+ /* _mesa_function_pool[15305]: SelectBuffer (offset 195) */
"ip\0"
"glSelectBuffer\0"
"\0"
- /* _mesa_function_pool[14062]: Indexiv (offset 49) */
+ /* _mesa_function_pool[15324]: Indexiv (offset 49) */
"p\0"
"glIndexiv\0"
"\0"
- /* _mesa_function_pool[14075]: TexCoord3i (offset 114) */
+ /* _mesa_function_pool[15337]: TexCoord3i (offset 114) */
"iii\0"
"glTexCoord3i\0"
"\0"
- /* _mesa_function_pool[14093]: CopyColorTable (offset 342) */
+ /* _mesa_function_pool[15355]: CopyColorTable (offset 342) */
"iiiii\0"
"glCopyColorTable\0"
"glCopyColorTableSGI\0"
"\0"
- /* _mesa_function_pool[14137]: GetHistogramParameterfv (offset 362) */
+ /* _mesa_function_pool[15399]: GetHistogramParameterfv (offset 362) */
"iip\0"
"glGetHistogramParameterfv\0"
"glGetHistogramParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[14197]: Frustum (offset 289) */
+ /* _mesa_function_pool[15459]: Frustum (offset 289) */
"dddddd\0"
"glFrustum\0"
"\0"
- /* _mesa_function_pool[14215]: GetString (offset 275) */
+ /* _mesa_function_pool[15477]: GetString (offset 275) */
"i\0"
"glGetString\0"
"\0"
- /* _mesa_function_pool[14230]: ColorPointervINTEL (dynamic) */
+ /* _mesa_function_pool[15492]: ColorPointervINTEL (dynamic) */
"iip\0"
"glColorPointervINTEL\0"
"\0"
- /* _mesa_function_pool[14256]: TexEnvf (offset 184) */
+ /* _mesa_function_pool[15518]: TexEnvf (offset 184) */
"iif\0"
"glTexEnvf\0"
"\0"
- /* _mesa_function_pool[14271]: TexCoord3d (offset 110) */
+ /* _mesa_function_pool[15533]: TexCoord3d (offset 110) */
"ddd\0"
"glTexCoord3d\0"
"\0"
- /* _mesa_function_pool[14289]: AlphaFragmentOp1ATI (will be remapped) */
+ /* _mesa_function_pool[15551]: AlphaFragmentOp1ATI (will be remapped) */
"iiiiii\0"
"glAlphaFragmentOp1ATI\0"
"\0"
- /* _mesa_function_pool[14319]: TexCoord3f (offset 112) */
+ /* _mesa_function_pool[15581]: TexCoord3f (offset 112) */
"fff\0"
"glTexCoord3f\0"
"\0"
- /* _mesa_function_pool[14337]: MultiTexCoord3ivARB (offset 397) */
+ /* _mesa_function_pool[15599]: MultiTexCoord3ivARB (offset 397) */
"ip\0"
"glMultiTexCoord3iv\0"
"glMultiTexCoord3ivARB\0"
"\0"
- /* _mesa_function_pool[14382]: MultiTexCoord2sARB (offset 390) */
+ /* _mesa_function_pool[15644]: MultiTexCoord2sARB (offset 390) */
"iii\0"
"glMultiTexCoord2s\0"
"glMultiTexCoord2sARB\0"
"\0"
- /* _mesa_function_pool[14426]: VertexAttrib1dvARB (will be remapped) */
+ /* _mesa_function_pool[15688]: VertexAttrib1dvARB (will be remapped) */
"ip\0"
"glVertexAttrib1dv\0"
"glVertexAttrib1dvARB\0"
"\0"
- /* _mesa_function_pool[14469]: DeleteTextures (offset 327) */
+ /* _mesa_function_pool[15731]: DeleteTextures (offset 327) */
"ip\0"
"glDeleteTextures\0"
"glDeleteTexturesEXT\0"
"\0"
- /* _mesa_function_pool[14510]: TexCoordPointerEXT (will be remapped) */
+ /* _mesa_function_pool[15772]: TexCoordPointerEXT (will be remapped) */
"iiiip\0"
"glTexCoordPointerEXT\0"
"\0"
- /* _mesa_function_pool[14538]: TexSubImage4DSGIS (dynamic) */
+ /* _mesa_function_pool[15800]: TexSubImage4DSGIS (dynamic) */
"iiiiiiiiiiiip\0"
"glTexSubImage4DSGIS\0"
"\0"
- /* _mesa_function_pool[14573]: TexCoord3s (offset 116) */
+ /* _mesa_function_pool[15835]: TexCoord3s (offset 116) */
"iii\0"
"glTexCoord3s\0"
"\0"
- /* _mesa_function_pool[14591]: GetTexLevelParameteriv (offset 285) */
+ /* _mesa_function_pool[15853]: GetTexLevelParameteriv (offset 285) */
"iiip\0"
"glGetTexLevelParameteriv\0"
"\0"
- /* _mesa_function_pool[14622]: DrawArraysInstanced (will be remapped) */
- "iiii\0"
- "glDrawArraysInstanced\0"
- "glDrawArraysInstancedARB\0"
- "glDrawArraysInstancedEXT\0"
- "\0"
- /* _mesa_function_pool[14700]: CombinerStageParameterfvNV (dynamic) */
+ /* _mesa_function_pool[15884]: CombinerStageParameterfvNV (dynamic) */
"iip\0"
"glCombinerStageParameterfvNV\0"
"\0"
- /* _mesa_function_pool[14734]: StopInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[15918]: StopInstrumentsSGIX (dynamic) */
"i\0"
"glStopInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[14759]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */
+ /* _mesa_function_pool[15943]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */
"fffffffffffffff\0"
"glTexCoord4fColor4fNormal3fVertex4fSUN\0"
"\0"
- /* _mesa_function_pool[14815]: ClearAccum (offset 204) */
+ /* _mesa_function_pool[15999]: ClearAccum (offset 204) */
"ffff\0"
"glClearAccum\0"
"\0"
- /* _mesa_function_pool[14834]: DeformSGIX (dynamic) */
+ /* _mesa_function_pool[16018]: DeformSGIX (dynamic) */
"i\0"
"glDeformSGIX\0"
"\0"
- /* _mesa_function_pool[14850]: GetVertexAttribfvARB (will be remapped) */
+ /* _mesa_function_pool[16034]: GetVertexAttribfvARB (will be remapped) */
"iip\0"
"glGetVertexAttribfv\0"
"glGetVertexAttribfvARB\0"
"\0"
- /* _mesa_function_pool[14898]: SecondaryColor3ivEXT (will be remapped) */
+ /* _mesa_function_pool[16082]: SecondaryColor3ivEXT (will be remapped) */
"p\0"
"glSecondaryColor3iv\0"
"glSecondaryColor3ivEXT\0"
"\0"
- /* _mesa_function_pool[14944]: TexCoord4iv (offset 123) */
+ /* _mesa_function_pool[16128]: TexCoord4iv (offset 123) */
"p\0"
"glTexCoord4iv\0"
"\0"
- /* _mesa_function_pool[14961]: UniformMatrix4x2fv (will be remapped) */
+ /* _mesa_function_pool[16145]: VertexAttribI4uiEXT (will be remapped) */
+ "iiiii\0"
+ "glVertexAttribI4uiEXT\0"
+ "glVertexAttribI4ui\0"
+ "\0"
+ /* _mesa_function_pool[16193]: GetFragmentMaterialfvSGIX (dynamic) */
+ "iip\0"
+ "glGetFragmentMaterialfvSGIX\0"
+ "\0"
+ /* _mesa_function_pool[16226]: UniformMatrix4x2fv (will be remapped) */
"iiip\0"
"glUniformMatrix4x2fv\0"
"\0"
- /* _mesa_function_pool[14988]: GetDetailTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[16253]: GetDetailTexFuncSGIS (dynamic) */
"ip\0"
"glGetDetailTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[15015]: GetCombinerStageParameterfvNV (dynamic) */
+ /* _mesa_function_pool[16280]: GetCombinerStageParameterfvNV (dynamic) */
"iip\0"
"glGetCombinerStageParameterfvNV\0"
"\0"
- /* _mesa_function_pool[15052]: PolygonOffset (offset 319) */
+ /* _mesa_function_pool[16317]: PolygonOffset (offset 319) */
"ff\0"
"glPolygonOffset\0"
"\0"
- /* _mesa_function_pool[15072]: BindVertexArray (will be remapped) */
+ /* _mesa_function_pool[16337]: BindVertexArray (will be remapped) */
"i\0"
"glBindVertexArray\0"
"\0"
- /* _mesa_function_pool[15093]: Color4ubVertex2fvSUN (dynamic) */
+ /* _mesa_function_pool[16358]: Color4ubVertex2fvSUN (dynamic) */
"pp\0"
"glColor4ubVertex2fvSUN\0"
"\0"
- /* _mesa_function_pool[15120]: Rectd (offset 86) */
+ /* _mesa_function_pool[16385]: Rectd (offset 86) */
"dddd\0"
"glRectd\0"
"\0"
- /* _mesa_function_pool[15134]: TexFilterFuncSGIS (dynamic) */
+ /* _mesa_function_pool[16399]: TexFilterFuncSGIS (dynamic) */
"iiip\0"
"glTexFilterFuncSGIS\0"
"\0"
- /* _mesa_function_pool[15160]: SampleMaskSGIS (will be remapped) */
+ /* _mesa_function_pool[16425]: SampleMaskSGIS (will be remapped) */
"fi\0"
"glSampleMaskSGIS\0"
"glSampleMaskEXT\0"
"\0"
- /* _mesa_function_pool[15197]: GetAttribLocationARB (will be remapped) */
+ /* _mesa_function_pool[16462]: VertexAttribI4ubvEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI4ubvEXT\0"
+ "glVertexAttribI4ubv\0"
+ "\0"
+ /* _mesa_function_pool[16509]: GetAttribLocationARB (will be remapped) */
"ip\0"
"glGetAttribLocation\0"
"glGetAttribLocationARB\0"
"\0"
- /* _mesa_function_pool[15244]: RasterPos3i (offset 74) */
+ /* _mesa_function_pool[16556]: RasterPos3i (offset 74) */
"iii\0"
"glRasterPos3i\0"
"\0"
- /* _mesa_function_pool[15263]: VertexAttrib4ubvARB (will be remapped) */
+ /* _mesa_function_pool[16575]: VertexAttrib4ubvARB (will be remapped) */
"ip\0"
"glVertexAttrib4ubv\0"
"glVertexAttrib4ubvARB\0"
"\0"
- /* _mesa_function_pool[15308]: DetailTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[16620]: DetailTexFuncSGIS (dynamic) */
"iip\0"
"glDetailTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[15333]: Normal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[16645]: Normal3fVertex3fSUN (dynamic) */
"ffffff\0"
"glNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[15363]: CopyTexImage2D (offset 324) */
+ /* _mesa_function_pool[16675]: CopyTexImage2D (offset 324) */
"iiiiiiii\0"
"glCopyTexImage2D\0"
"glCopyTexImage2DEXT\0"
"\0"
- /* _mesa_function_pool[15410]: GetBufferPointervARB (will be remapped) */
+ /* _mesa_function_pool[16722]: GetBufferPointervARB (will be remapped) */
"iip\0"
"glGetBufferPointerv\0"
"glGetBufferPointervARB\0"
"\0"
- /* _mesa_function_pool[15458]: ProgramEnvParameter4fARB (will be remapped) */
+ /* _mesa_function_pool[16770]: ProgramEnvParameter4fARB (will be remapped) */
"iiffff\0"
"glProgramEnvParameter4fARB\0"
"glProgramParameter4fNV\0"
"\0"
- /* _mesa_function_pool[15516]: Uniform3ivARB (will be remapped) */
+ /* _mesa_function_pool[16828]: Uniform3ivARB (will be remapped) */
"iip\0"
"glUniform3iv\0"
"glUniform3ivARB\0"
"\0"
- /* _mesa_function_pool[15550]: Lightfv (offset 160) */
+ /* _mesa_function_pool[16862]: Lightfv (offset 160) */
"iip\0"
"glLightfv\0"
"\0"
- /* _mesa_function_pool[15565]: PrimitiveRestartIndexNV (will be remapped) */
+ /* _mesa_function_pool[16877]: PrimitiveRestartIndexNV (will be remapped) */
"i\0"
"glPrimitiveRestartIndexNV\0"
+ "glPrimitiveRestartIndex\0"
"\0"
- /* _mesa_function_pool[15594]: ClearDepth (offset 208) */
+ /* _mesa_function_pool[16930]: ClearDepth (offset 208) */
"d\0"
"glClearDepth\0"
"\0"
- /* _mesa_function_pool[15610]: GetFenceivNV (will be remapped) */
+ /* _mesa_function_pool[16946]: GetFenceivNV (will be remapped) */
"iip\0"
"glGetFenceivNV\0"
"\0"
- /* _mesa_function_pool[15630]: WindowPos4dvMESA (will be remapped) */
+ /* _mesa_function_pool[16966]: WindowPos4dvMESA (will be remapped) */
"p\0"
"glWindowPos4dvMESA\0"
"\0"
- /* _mesa_function_pool[15652]: ColorSubTable (offset 346) */
+ /* _mesa_function_pool[16988]: ColorSubTable (offset 346) */
"iiiiip\0"
"glColorSubTable\0"
"glColorSubTableEXT\0"
"\0"
- /* _mesa_function_pool[15695]: Color4fv (offset 30) */
+ /* _mesa_function_pool[17031]: Color4fv (offset 30) */
"p\0"
"glColor4fv\0"
"\0"
- /* _mesa_function_pool[15709]: MultiTexCoord4ivARB (offset 405) */
+ /* _mesa_function_pool[17045]: MultiTexCoord4ivARB (offset 405) */
"ip\0"
"glMultiTexCoord4iv\0"
"glMultiTexCoord4ivARB\0"
"\0"
- /* _mesa_function_pool[15754]: DrawElementsInstanced (will be remapped) */
- "iiipi\0"
- "glDrawElementsInstanced\0"
- "glDrawElementsInstancedARB\0"
- "glDrawElementsInstancedEXT\0"
+ /* _mesa_function_pool[17090]: ProgramLocalParameters4fvEXT (will be remapped) */
+ "iiip\0"
+ "glProgramLocalParameters4fvEXT\0"
"\0"
- /* _mesa_function_pool[15839]: ColorPointer (offset 308) */
+ /* _mesa_function_pool[17127]: ColorPointer (offset 308) */
"iiip\0"
"glColorPointer\0"
"\0"
- /* _mesa_function_pool[15860]: Rects (offset 92) */
+ /* _mesa_function_pool[17148]: Rects (offset 92) */
"iiii\0"
"glRects\0"
"\0"
- /* _mesa_function_pool[15874]: GetMapAttribParameterfvNV (dynamic) */
+ /* _mesa_function_pool[17162]: GetMapAttribParameterfvNV (dynamic) */
"iiip\0"
"glGetMapAttribParameterfvNV\0"
"\0"
- /* _mesa_function_pool[15908]: Lightiv (offset 162) */
+ /* _mesa_function_pool[17196]: CreateShaderProgramEXT (will be remapped) */
+ "ip\0"
+ "glCreateShaderProgramEXT\0"
+ "\0"
+ /* _mesa_function_pool[17225]: ActiveProgramEXT (will be remapped) */
+ "i\0"
+ "glActiveProgramEXT\0"
+ "\0"
+ /* _mesa_function_pool[17247]: Lightiv (offset 162) */
"iip\0"
"glLightiv\0"
"\0"
- /* _mesa_function_pool[15923]: VertexAttrib4sARB (will be remapped) */
+ /* _mesa_function_pool[17262]: VertexAttrib4sARB (will be remapped) */
"iiiii\0"
"glVertexAttrib4s\0"
"glVertexAttrib4sARB\0"
"\0"
- /* _mesa_function_pool[15967]: GetQueryObjectuivARB (will be remapped) */
+ /* _mesa_function_pool[17306]: GetQueryObjectuivARB (will be remapped) */
"iip\0"
"glGetQueryObjectuiv\0"
"glGetQueryObjectuivARB\0"
"\0"
- /* _mesa_function_pool[16015]: GetTexParameteriv (offset 283) */
+ /* _mesa_function_pool[17354]: GetTexParameteriv (offset 283) */
"iip\0"
"glGetTexParameteriv\0"
"\0"
- /* _mesa_function_pool[16040]: MapParameterivNV (dynamic) */
+ /* _mesa_function_pool[17379]: MapParameterivNV (dynamic) */
"iip\0"
"glMapParameterivNV\0"
"\0"
- /* _mesa_function_pool[16064]: GenRenderbuffersEXT (will be remapped) */
+ /* _mesa_function_pool[17403]: GenRenderbuffersEXT (will be remapped) */
"ip\0"
"glGenRenderbuffers\0"
"glGenRenderbuffersEXT\0"
"\0"
- /* _mesa_function_pool[16109]: VertexAttrib2dvARB (will be remapped) */
+ /* _mesa_function_pool[17448]: ClearBufferfv (will be remapped) */
+ "iip\0"
+ "glClearBufferfv\0"
+ "\0"
+ /* _mesa_function_pool[17469]: VertexAttrib2dvARB (will be remapped) */
"ip\0"
"glVertexAttrib2dv\0"
"glVertexAttrib2dvARB\0"
"\0"
- /* _mesa_function_pool[16152]: EdgeFlagPointerEXT (will be remapped) */
+ /* _mesa_function_pool[17512]: EdgeFlagPointerEXT (will be remapped) */
"iip\0"
"glEdgeFlagPointerEXT\0"
"\0"
- /* _mesa_function_pool[16178]: VertexAttribs2svNV (will be remapped) */
+ /* _mesa_function_pool[17538]: VertexAttribs2svNV (will be remapped) */
"iip\0"
"glVertexAttribs2svNV\0"
"\0"
- /* _mesa_function_pool[16204]: WeightbvARB (dynamic) */
+ /* _mesa_function_pool[17564]: WeightbvARB (dynamic) */
"ip\0"
"glWeightbvARB\0"
"\0"
- /* _mesa_function_pool[16222]: VertexAttrib2fvARB (will be remapped) */
+ /* _mesa_function_pool[17582]: VertexAttrib2fvARB (will be remapped) */
"ip\0"
"glVertexAttrib2fv\0"
"glVertexAttrib2fvARB\0"
"\0"
- /* _mesa_function_pool[16265]: GetBufferParameterivARB (will be remapped) */
+ /* _mesa_function_pool[17625]: GetBufferParameterivARB (will be remapped) */
"iip\0"
"glGetBufferParameteriv\0"
"glGetBufferParameterivARB\0"
"\0"
- /* _mesa_function_pool[16319]: Rectdv (offset 87) */
+ /* _mesa_function_pool[17679]: Rectdv (offset 87) */
"pp\0"
"glRectdv\0"
"\0"
- /* _mesa_function_pool[16332]: ListParameteriSGIX (dynamic) */
+ /* _mesa_function_pool[17692]: ListParameteriSGIX (dynamic) */
"iii\0"
"glListParameteriSGIX\0"
"\0"
- /* _mesa_function_pool[16358]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[17718]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */
"iffffffffff\0"
"glReplacementCodeuiColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[16417]: InstrumentsBufferSGIX (dynamic) */
+ /* _mesa_function_pool[17777]: InstrumentsBufferSGIX (dynamic) */
"ip\0"
"glInstrumentsBufferSGIX\0"
"\0"
- /* _mesa_function_pool[16445]: VertexAttrib4NivARB (will be remapped) */
+ /* _mesa_function_pool[17805]: VertexAttrib4NivARB (will be remapped) */
"ip\0"
"glVertexAttrib4Niv\0"
"glVertexAttrib4NivARB\0"
"\0"
- /* _mesa_function_pool[16490]: GetAttachedShaders (will be remapped) */
+ /* _mesa_function_pool[17850]: DrawArraysInstancedARB (will be remapped) */
+ "iiii\0"
+ "glDrawArraysInstancedARB\0"
+ "glDrawArraysInstancedEXT\0"
+ "glDrawArraysInstanced\0"
+ "\0"
+ /* _mesa_function_pool[17928]: GetAttachedShaders (will be remapped) */
"iipp\0"
"glGetAttachedShaders\0"
"\0"
- /* _mesa_function_pool[16517]: GenVertexArraysAPPLE (will be remapped) */
+ /* _mesa_function_pool[17955]: GenVertexArraysAPPLE (will be remapped) */
"ip\0"
"glGenVertexArraysAPPLE\0"
"\0"
- /* _mesa_function_pool[16544]: Materialiv (offset 172) */
+ /* _mesa_function_pool[17982]: ClearBufferfi (will be remapped) */
+ "iifi\0"
+ "glClearBufferfi\0"
+ "\0"
+ /* _mesa_function_pool[18004]: Materialiv (offset 172) */
"iip\0"
"glMaterialiv\0"
"\0"
- /* _mesa_function_pool[16562]: PushClientAttrib (offset 335) */
+ /* _mesa_function_pool[18022]: PushClientAttrib (offset 335) */
"i\0"
"glPushClientAttrib\0"
"\0"
- /* _mesa_function_pool[16584]: ProgramEnvParameters4fvEXT (will be remapped) */
+ /* _mesa_function_pool[18044]: ProgramEnvParameters4fvEXT (will be remapped) */
"iiip\0"
"glProgramEnvParameters4fvEXT\0"
"\0"
- /* _mesa_function_pool[16619]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[18079]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glTexCoord2fColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[16665]: WindowPos2iMESA (will be remapped) */
+ /* _mesa_function_pool[18125]: WindowPos2iMESA (will be remapped) */
"ii\0"
"glWindowPos2i\0"
"glWindowPos2iARB\0"
"glWindowPos2iMESA\0"
"\0"
- /* _mesa_function_pool[16718]: SecondaryColor3fvEXT (will be remapped) */
+ /* _mesa_function_pool[18178]: SecondaryColor3fvEXT (will be remapped) */
"p\0"
"glSecondaryColor3fv\0"
"glSecondaryColor3fvEXT\0"
"\0"
- /* _mesa_function_pool[16764]: PolygonMode (offset 174) */
+ /* _mesa_function_pool[18224]: PolygonMode (offset 174) */
"ii\0"
"glPolygonMode\0"
"\0"
- /* _mesa_function_pool[16782]: CompressedTexSubImage1DARB (will be remapped) */
+ /* _mesa_function_pool[18242]: CompressedTexSubImage1DARB (will be remapped) */
"iiiiiip\0"
"glCompressedTexSubImage1D\0"
"glCompressedTexSubImage1DARB\0"
"\0"
- /* _mesa_function_pool[16846]: GetVertexAttribivNV (will be remapped) */
+ /* _mesa_function_pool[18306]: VertexAttribI1iEXT (will be remapped) */
+ "ii\0"
+ "glVertexAttribI1iEXT\0"
+ "glVertexAttribI1i\0"
+ "\0"
+ /* _mesa_function_pool[18349]: GetVertexAttribivNV (will be remapped) */
"iip\0"
"glGetVertexAttribivNV\0"
"\0"
- /* _mesa_function_pool[16873]: GetProgramStringARB (will be remapped) */
+ /* _mesa_function_pool[18376]: GetProgramStringARB (will be remapped) */
"iip\0"
"glGetProgramStringARB\0"
"\0"
- /* _mesa_function_pool[16900]: TexBumpParameterfvATI (will be remapped) */
+ /* _mesa_function_pool[18403]: VertexAttribIPointerEXT (will be remapped) */
+ "iiiip\0"
+ "glVertexAttribIPointerEXT\0"
+ "glVertexAttribIPointer\0"
+ "\0"
+ /* _mesa_function_pool[18459]: TexBumpParameterfvATI (will be remapped) */
"ip\0"
"glTexBumpParameterfvATI\0"
"\0"
- /* _mesa_function_pool[16928]: CompileShaderARB (will be remapped) */
+ /* _mesa_function_pool[18487]: CompileShaderARB (will be remapped) */
"i\0"
"glCompileShader\0"
"glCompileShaderARB\0"
"\0"
- /* _mesa_function_pool[16966]: DeleteShader (will be remapped) */
+ /* _mesa_function_pool[18525]: DeleteShader (will be remapped) */
"i\0"
"glDeleteShader\0"
"\0"
- /* _mesa_function_pool[16984]: DisableClientState (offset 309) */
+ /* _mesa_function_pool[18543]: DisableClientState (offset 309) */
"i\0"
"glDisableClientState\0"
"\0"
- /* _mesa_function_pool[17008]: TexGeni (offset 192) */
+ /* _mesa_function_pool[18567]: TexGeni (offset 192) */
"iii\0"
"glTexGeni\0"
"\0"
- /* _mesa_function_pool[17023]: TexGenf (offset 190) */
+ /* _mesa_function_pool[18582]: TexGenf (offset 190) */
"iif\0"
"glTexGenf\0"
"\0"
- /* _mesa_function_pool[17038]: Uniform3fARB (will be remapped) */
+ /* _mesa_function_pool[18597]: Uniform3fARB (will be remapped) */
"ifff\0"
"glUniform3f\0"
"glUniform3fARB\0"
"\0"
- /* _mesa_function_pool[17071]: TexGend (offset 188) */
+ /* _mesa_function_pool[18630]: TexGend (offset 188) */
"iid\0"
"glTexGend\0"
"\0"
- /* _mesa_function_pool[17086]: ListParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[18645]: ListParameterfvSGIX (dynamic) */
"iip\0"
"glListParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[17113]: GetPolygonStipple (offset 274) */
+ /* _mesa_function_pool[18672]: GetPolygonStipple (offset 274) */
"p\0"
"glGetPolygonStipple\0"
"\0"
- /* _mesa_function_pool[17136]: Tangent3dvEXT (dynamic) */
+ /* _mesa_function_pool[18695]: Tangent3dvEXT (dynamic) */
"p\0"
"glTangent3dvEXT\0"
"\0"
- /* _mesa_function_pool[17155]: BindBufferOffsetEXT (will be remapped) */
+ /* _mesa_function_pool[18714]: BindBufferOffsetEXT (will be remapped) */
"iiii\0"
"glBindBufferOffsetEXT\0"
"\0"
- /* _mesa_function_pool[17183]: WindowPos3sMESA (will be remapped) */
+ /* _mesa_function_pool[18742]: WindowPos3sMESA (will be remapped) */
"iii\0"
"glWindowPos3s\0"
"glWindowPos3sARB\0"
"glWindowPos3sMESA\0"
"\0"
- /* _mesa_function_pool[17237]: VertexAttrib2svNV (will be remapped) */
+ /* _mesa_function_pool[18796]: VertexAttrib2svNV (will be remapped) */
"ip\0"
"glVertexAttrib2svNV\0"
"\0"
- /* _mesa_function_pool[17261]: DisableIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[18820]: DisableIndexedEXT (will be remapped) */
"ii\0"
"glDisableIndexedEXT\0"
+ "glDisablei\0"
"\0"
- /* _mesa_function_pool[17285]: BindBufferBaseEXT (will be remapped) */
+ /* _mesa_function_pool[18855]: BindBufferBaseEXT (will be remapped) */
"iii\0"
"glBindBufferBaseEXT\0"
"glBindBufferBase\0"
"\0"
- /* _mesa_function_pool[17327]: TexCoord2fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[18897]: TexCoord2fVertex3fvSUN (dynamic) */
"pp\0"
"glTexCoord2fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[17356]: WindowPos4sMESA (will be remapped) */
+ /* _mesa_function_pool[18926]: WindowPos4sMESA (will be remapped) */
"iiii\0"
"glWindowPos4sMESA\0"
"\0"
- /* _mesa_function_pool[17380]: VertexAttrib4NuivARB (will be remapped) */
+ /* _mesa_function_pool[18950]: VertexAttrib4NuivARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nuiv\0"
"glVertexAttrib4NuivARB\0"
"\0"
- /* _mesa_function_pool[17427]: ClientActiveTextureARB (offset 375) */
+ /* _mesa_function_pool[18997]: ClientActiveTextureARB (offset 375) */
"i\0"
"glClientActiveTexture\0"
"glClientActiveTextureARB\0"
"\0"
- /* _mesa_function_pool[17477]: PixelTexGenSGIX (will be remapped) */
+ /* _mesa_function_pool[19047]: PixelTexGenSGIX (will be remapped) */
"i\0"
"glPixelTexGenSGIX\0"
"\0"
- /* _mesa_function_pool[17498]: ReplacementCodeusvSUN (dynamic) */
+ /* _mesa_function_pool[19068]: ReplacementCodeusvSUN (dynamic) */
"p\0"
"glReplacementCodeusvSUN\0"
"\0"
- /* _mesa_function_pool[17525]: Uniform4fARB (will be remapped) */
+ /* _mesa_function_pool[19095]: Uniform4fARB (will be remapped) */
"iffff\0"
"glUniform4f\0"
"glUniform4fARB\0"
"\0"
- /* _mesa_function_pool[17559]: Color4sv (offset 34) */
+ /* _mesa_function_pool[19129]: Color4sv (offset 34) */
"p\0"
"glColor4sv\0"
"\0"
- /* _mesa_function_pool[17573]: FlushMappedBufferRange (will be remapped) */
+ /* _mesa_function_pool[19143]: FlushMappedBufferRange (will be remapped) */
"iii\0"
"glFlushMappedBufferRange\0"
"\0"
- /* _mesa_function_pool[17603]: IsProgramNV (will be remapped) */
+ /* _mesa_function_pool[19173]: IsProgramNV (will be remapped) */
"i\0"
"glIsProgramARB\0"
"glIsProgramNV\0"
"\0"
- /* _mesa_function_pool[17635]: FlushMappedBufferRangeAPPLE (will be remapped) */
+ /* _mesa_function_pool[19205]: FlushMappedBufferRangeAPPLE (will be remapped) */
"iii\0"
"glFlushMappedBufferRangeAPPLE\0"
"\0"
- /* _mesa_function_pool[17670]: PixelZoom (offset 246) */
+ /* _mesa_function_pool[19240]: PixelZoom (offset 246) */
"ff\0"
"glPixelZoom\0"
"\0"
- /* _mesa_function_pool[17686]: ReplacementCodePointerSUN (dynamic) */
+ /* _mesa_function_pool[19256]: ReplacementCodePointerSUN (dynamic) */
"iip\0"
"glReplacementCodePointerSUN\0"
"\0"
- /* _mesa_function_pool[17719]: ProgramEnvParameter4dARB (will be remapped) */
+ /* _mesa_function_pool[19289]: ProgramEnvParameter4dARB (will be remapped) */
"iidddd\0"
"glProgramEnvParameter4dARB\0"
"glProgramParameter4dNV\0"
"\0"
- /* _mesa_function_pool[17777]: ColorTableParameterfv (offset 340) */
+ /* _mesa_function_pool[19347]: ColorTableParameterfv (offset 340) */
"iip\0"
"glColorTableParameterfv\0"
"glColorTableParameterfvSGI\0"
"\0"
- /* _mesa_function_pool[17833]: FragmentLightModelfSGIX (dynamic) */
+ /* _mesa_function_pool[19403]: FragmentLightModelfSGIX (dynamic) */
"if\0"
"glFragmentLightModelfSGIX\0"
"\0"
- /* _mesa_function_pool[17863]: Binormal3bvEXT (dynamic) */
+ /* _mesa_function_pool[19433]: Binormal3bvEXT (dynamic) */
"p\0"
"glBinormal3bvEXT\0"
"\0"
- /* _mesa_function_pool[17883]: PixelMapuiv (offset 252) */
+ /* _mesa_function_pool[19453]: PixelMapuiv (offset 252) */
"iip\0"
"glPixelMapuiv\0"
"\0"
- /* _mesa_function_pool[17902]: Color3dv (offset 12) */
+ /* _mesa_function_pool[19472]: Color3dv (offset 12) */
"p\0"
"glColor3dv\0"
"\0"
- /* _mesa_function_pool[17916]: IsTexture (offset 330) */
+ /* _mesa_function_pool[19486]: IsTexture (offset 330) */
"i\0"
"glIsTexture\0"
"glIsTextureEXT\0"
"\0"
- /* _mesa_function_pool[17946]: VertexWeightfvEXT (dynamic) */
+ /* _mesa_function_pool[19516]: VertexWeightfvEXT (dynamic) */
"p\0"
"glVertexWeightfvEXT\0"
"\0"
- /* _mesa_function_pool[17969]: VertexAttrib1dARB (will be remapped) */
+ /* _mesa_function_pool[19539]: VertexAttrib1dARB (will be remapped) */
"id\0"
"glVertexAttrib1d\0"
"glVertexAttrib1dARB\0"
"\0"
- /* _mesa_function_pool[18010]: ImageTransformParameterivHP (dynamic) */
+ /* _mesa_function_pool[19580]: ImageTransformParameterivHP (dynamic) */
"iip\0"
"glImageTransformParameterivHP\0"
"\0"
- /* _mesa_function_pool[18045]: TexCoord4i (offset 122) */
+ /* _mesa_function_pool[19615]: TexCoord4i (offset 122) */
"iiii\0"
"glTexCoord4i\0"
"\0"
- /* _mesa_function_pool[18064]: DeleteQueriesARB (will be remapped) */
+ /* _mesa_function_pool[19634]: DeleteQueriesARB (will be remapped) */
"ip\0"
"glDeleteQueries\0"
"glDeleteQueriesARB\0"
"\0"
- /* _mesa_function_pool[18103]: Color4ubVertex2fSUN (dynamic) */
+ /* _mesa_function_pool[19673]: Color4ubVertex2fSUN (dynamic) */
"iiiiff\0"
"glColor4ubVertex2fSUN\0"
"\0"
- /* _mesa_function_pool[18133]: FragmentColorMaterialSGIX (dynamic) */
+ /* _mesa_function_pool[19703]: FragmentColorMaterialSGIX (dynamic) */
"ii\0"
"glFragmentColorMaterialSGIX\0"
"\0"
- /* _mesa_function_pool[18165]: CurrentPaletteMatrixARB (dynamic) */
+ /* _mesa_function_pool[19735]: CurrentPaletteMatrixARB (dynamic) */
"i\0"
"glCurrentPaletteMatrixARB\0"
"\0"
- /* _mesa_function_pool[18194]: GetMapdv (offset 266) */
+ /* _mesa_function_pool[19764]: GetMapdv (offset 266) */
"iip\0"
"glGetMapdv\0"
"\0"
- /* _mesa_function_pool[18210]: ObjectPurgeableAPPLE (will be remapped) */
+ /* _mesa_function_pool[19780]: ObjectPurgeableAPPLE (will be remapped) */
"iii\0"
"glObjectPurgeableAPPLE\0"
"\0"
- /* _mesa_function_pool[18238]: SamplePatternSGIS (will be remapped) */
+ /* _mesa_function_pool[19808]: GetStringi (will be remapped) */
+ "ii\0"
+ "glGetStringi\0"
+ "\0"
+ /* _mesa_function_pool[19825]: SamplePatternSGIS (will be remapped) */
"i\0"
"glSamplePatternSGIS\0"
"glSamplePatternEXT\0"
"\0"
- /* _mesa_function_pool[18280]: PixelStoref (offset 249) */
+ /* _mesa_function_pool[19867]: PixelStoref (offset 249) */
"if\0"
"glPixelStoref\0"
"\0"
- /* _mesa_function_pool[18298]: IsQueryARB (will be remapped) */
+ /* _mesa_function_pool[19885]: IsQueryARB (will be remapped) */
"i\0"
"glIsQuery\0"
"glIsQueryARB\0"
"\0"
- /* _mesa_function_pool[18324]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[19911]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */
"iiiiifff\0"
"glReplacementCodeuiColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[18373]: PixelStorei (offset 250) */
+ /* _mesa_function_pool[19960]: PixelStorei (offset 250) */
"ii\0"
"glPixelStorei\0"
"\0"
- /* _mesa_function_pool[18391]: VertexAttrib4usvARB (will be remapped) */
+ /* _mesa_function_pool[19978]: VertexAttrib4usvARB (will be remapped) */
"ip\0"
"glVertexAttrib4usv\0"
"glVertexAttrib4usvARB\0"
"\0"
- /* _mesa_function_pool[18436]: LinkProgramARB (will be remapped) */
+ /* _mesa_function_pool[20023]: LinkProgramARB (will be remapped) */
"i\0"
"glLinkProgram\0"
"glLinkProgramARB\0"
"\0"
- /* _mesa_function_pool[18470]: VertexAttrib2fNV (will be remapped) */
+ /* _mesa_function_pool[20057]: VertexAttrib2fNV (will be remapped) */
"iff\0"
"glVertexAttrib2fNV\0"
"\0"
- /* _mesa_function_pool[18494]: ShaderSourceARB (will be remapped) */
+ /* _mesa_function_pool[20081]: ShaderSourceARB (will be remapped) */
"iipp\0"
"glShaderSource\0"
"glShaderSourceARB\0"
"\0"
- /* _mesa_function_pool[18533]: FragmentMaterialiSGIX (dynamic) */
+ /* _mesa_function_pool[20120]: FragmentMaterialiSGIX (dynamic) */
"iii\0"
"glFragmentMaterialiSGIX\0"
"\0"
- /* _mesa_function_pool[18562]: EvalCoord2dv (offset 233) */
+ /* _mesa_function_pool[20149]: EvalCoord2dv (offset 233) */
"p\0"
"glEvalCoord2dv\0"
"\0"
- /* _mesa_function_pool[18580]: VertexAttrib3svARB (will be remapped) */
+ /* _mesa_function_pool[20167]: VertexAttrib3svARB (will be remapped) */
"ip\0"
"glVertexAttrib3sv\0"
"glVertexAttrib3svARB\0"
"\0"
- /* _mesa_function_pool[18623]: ColorMaterial (offset 151) */
+ /* _mesa_function_pool[20210]: ColorMaterial (offset 151) */
"ii\0"
"glColorMaterial\0"
"\0"
- /* _mesa_function_pool[18643]: CompressedTexSubImage3DARB (will be remapped) */
+ /* _mesa_function_pool[20230]: CompressedTexSubImage3DARB (will be remapped) */
"iiiiiiiiiip\0"
"glCompressedTexSubImage3D\0"
"glCompressedTexSubImage3DARB\0"
"\0"
- /* _mesa_function_pool[18711]: WindowPos2ivMESA (will be remapped) */
+ /* _mesa_function_pool[20298]: WindowPos2ivMESA (will be remapped) */
"p\0"
"glWindowPos2iv\0"
"glWindowPos2ivARB\0"
"glWindowPos2ivMESA\0"
"\0"
- /* _mesa_function_pool[18766]: IsFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[20353]: IsFramebufferEXT (will be remapped) */
"i\0"
"glIsFramebuffer\0"
"glIsFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[18804]: Uniform4ivARB (will be remapped) */
+ /* _mesa_function_pool[20391]: Uniform4ivARB (will be remapped) */
"iip\0"
"glUniform4iv\0"
"glUniform4ivARB\0"
"\0"
- /* _mesa_function_pool[18838]: GetVertexAttribdvARB (will be remapped) */
+ /* _mesa_function_pool[20425]: GetVertexAttribdvARB (will be remapped) */
"iip\0"
"glGetVertexAttribdv\0"
"glGetVertexAttribdvARB\0"
"\0"
- /* _mesa_function_pool[18886]: TexBumpParameterivATI (will be remapped) */
+ /* _mesa_function_pool[20473]: TexBumpParameterivATI (will be remapped) */
"ip\0"
"glTexBumpParameterivATI\0"
"\0"
- /* _mesa_function_pool[18914]: GetSeparableFilter (offset 359) */
+ /* _mesa_function_pool[20501]: GetSeparableFilter (offset 359) */
"iiippp\0"
"glGetSeparableFilter\0"
"glGetSeparableFilterEXT\0"
"\0"
- /* _mesa_function_pool[18967]: Binormal3dEXT (dynamic) */
+ /* _mesa_function_pool[20554]: Binormal3dEXT (dynamic) */
"ddd\0"
"glBinormal3dEXT\0"
"\0"
- /* _mesa_function_pool[18988]: SpriteParameteriSGIX (dynamic) */
+ /* _mesa_function_pool[20575]: SpriteParameteriSGIX (dynamic) */
"ii\0"
"glSpriteParameteriSGIX\0"
"\0"
- /* _mesa_function_pool[19015]: RequestResidentProgramsNV (will be remapped) */
+ /* _mesa_function_pool[20602]: RequestResidentProgramsNV (will be remapped) */
"ip\0"
"glRequestResidentProgramsNV\0"
"\0"
- /* _mesa_function_pool[19047]: TagSampleBufferSGIX (dynamic) */
+ /* _mesa_function_pool[20634]: TagSampleBufferSGIX (dynamic) */
"\0"
"glTagSampleBufferSGIX\0"
"\0"
- /* _mesa_function_pool[19071]: TransformFeedbackVaryingsEXT (will be remapped) */
+ /* _mesa_function_pool[20658]: TransformFeedbackVaryingsEXT (will be remapped) */
"iipi\0"
"glTransformFeedbackVaryingsEXT\0"
"glTransformFeedbackVaryings\0"
"\0"
- /* _mesa_function_pool[19136]: FeedbackBuffer (offset 194) */
+ /* _mesa_function_pool[20723]: FeedbackBuffer (offset 194) */
"iip\0"
"glFeedbackBuffer\0"
"\0"
- /* _mesa_function_pool[19158]: RasterPos2iv (offset 67) */
+ /* _mesa_function_pool[20745]: RasterPos2iv (offset 67) */
"p\0"
"glRasterPos2iv\0"
"\0"
- /* _mesa_function_pool[19176]: TexImage1D (offset 182) */
+ /* _mesa_function_pool[20763]: TexImage1D (offset 182) */
"iiiiiiip\0"
"glTexImage1D\0"
"\0"
- /* _mesa_function_pool[19199]: ListParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[20786]: ListParameterivSGIX (dynamic) */
"iip\0"
"glListParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[19226]: MultiDrawElementsEXT (will be remapped) */
+ /* _mesa_function_pool[20813]: MultiDrawElementsEXT (will be remapped) */
"ipipi\0"
"glMultiDrawElements\0"
"glMultiDrawElementsEXT\0"
"\0"
- /* _mesa_function_pool[19276]: Color3s (offset 17) */
+ /* _mesa_function_pool[20863]: Color3s (offset 17) */
"iii\0"
"glColor3s\0"
"\0"
- /* _mesa_function_pool[19291]: Uniform1ivARB (will be remapped) */
+ /* _mesa_function_pool[20878]: Uniform1ivARB (will be remapped) */
"iip\0"
"glUniform1iv\0"
"glUniform1ivARB\0"
"\0"
- /* _mesa_function_pool[19325]: WindowPos2sMESA (will be remapped) */
+ /* _mesa_function_pool[20912]: WindowPos2sMESA (will be remapped) */
"ii\0"
"glWindowPos2s\0"
"glWindowPos2sARB\0"
"glWindowPos2sMESA\0"
"\0"
- /* _mesa_function_pool[19378]: WeightusvARB (dynamic) */
+ /* _mesa_function_pool[20965]: WeightusvARB (dynamic) */
"ip\0"
"glWeightusvARB\0"
"\0"
- /* _mesa_function_pool[19397]: TexCoordPointer (offset 320) */
+ /* _mesa_function_pool[20984]: TexCoordPointer (offset 320) */
"iiip\0"
"glTexCoordPointer\0"
"\0"
- /* _mesa_function_pool[19421]: FogCoordPointerEXT (will be remapped) */
+ /* _mesa_function_pool[21008]: FogCoordPointerEXT (will be remapped) */
"iip\0"
"glFogCoordPointer\0"
"glFogCoordPointerEXT\0"
"\0"
- /* _mesa_function_pool[19465]: IndexMaterialEXT (dynamic) */
+ /* _mesa_function_pool[21052]: IndexMaterialEXT (dynamic) */
"ii\0"
"glIndexMaterialEXT\0"
"\0"
- /* _mesa_function_pool[19488]: Color3i (offset 15) */
+ /* _mesa_function_pool[21075]: Color3i (offset 15) */
"iii\0"
"glColor3i\0"
"\0"
- /* _mesa_function_pool[19503]: FrontFace (offset 157) */
+ /* _mesa_function_pool[21090]: FrontFace (offset 157) */
"i\0"
"glFrontFace\0"
"\0"
- /* _mesa_function_pool[19518]: EvalCoord2d (offset 232) */
+ /* _mesa_function_pool[21105]: EvalCoord2d (offset 232) */
"dd\0"
"glEvalCoord2d\0"
"\0"
- /* _mesa_function_pool[19536]: SecondaryColor3ubvEXT (will be remapped) */
+ /* _mesa_function_pool[21123]: SecondaryColor3ubvEXT (will be remapped) */
"p\0"
"glSecondaryColor3ubv\0"
"glSecondaryColor3ubvEXT\0"
"\0"
- /* _mesa_function_pool[19584]: EvalCoord2f (offset 234) */
+ /* _mesa_function_pool[21171]: EvalCoord2f (offset 234) */
"ff\0"
"glEvalCoord2f\0"
"\0"
- /* _mesa_function_pool[19602]: VertexAttrib4dvARB (will be remapped) */
+ /* _mesa_function_pool[21189]: VertexAttrib4dvARB (will be remapped) */
"ip\0"
"glVertexAttrib4dv\0"
"glVertexAttrib4dvARB\0"
"\0"
- /* _mesa_function_pool[19645]: BindAttribLocationARB (will be remapped) */
+ /* _mesa_function_pool[21232]: BindAttribLocationARB (will be remapped) */
"iip\0"
"glBindAttribLocation\0"
"glBindAttribLocationARB\0"
"\0"
- /* _mesa_function_pool[19695]: Color3b (offset 9) */
+ /* _mesa_function_pool[21282]: Color3b (offset 9) */
"iii\0"
"glColor3b\0"
"\0"
- /* _mesa_function_pool[19710]: MultiTexCoord2dARB (offset 384) */
+ /* _mesa_function_pool[21297]: MultiTexCoord2dARB (offset 384) */
"idd\0"
"glMultiTexCoord2d\0"
"glMultiTexCoord2dARB\0"
"\0"
- /* _mesa_function_pool[19754]: ExecuteProgramNV (will be remapped) */
+ /* _mesa_function_pool[21341]: ExecuteProgramNV (will be remapped) */
"iip\0"
"glExecuteProgramNV\0"
"\0"
- /* _mesa_function_pool[19778]: Color3f (offset 13) */
+ /* _mesa_function_pool[21365]: Color3f (offset 13) */
"fff\0"
"glColor3f\0"
"\0"
- /* _mesa_function_pool[19793]: LightEnviSGIX (dynamic) */
+ /* _mesa_function_pool[21380]: LightEnviSGIX (dynamic) */
"ii\0"
"glLightEnviSGIX\0"
"\0"
- /* _mesa_function_pool[19813]: Color3d (offset 11) */
+ /* _mesa_function_pool[21400]: Color3d (offset 11) */
"ddd\0"
"glColor3d\0"
"\0"
- /* _mesa_function_pool[19828]: Normal3dv (offset 55) */
+ /* _mesa_function_pool[21415]: Normal3dv (offset 55) */
"p\0"
"glNormal3dv\0"
"\0"
- /* _mesa_function_pool[19843]: Lightf (offset 159) */
+ /* _mesa_function_pool[21430]: Lightf (offset 159) */
"iif\0"
"glLightf\0"
"\0"
- /* _mesa_function_pool[19857]: ReplacementCodeuiSUN (dynamic) */
+ /* _mesa_function_pool[21444]: ReplacementCodeuiSUN (dynamic) */
"i\0"
"glReplacementCodeuiSUN\0"
"\0"
- /* _mesa_function_pool[19883]: MatrixMode (offset 293) */
+ /* _mesa_function_pool[21470]: MatrixMode (offset 293) */
"i\0"
"glMatrixMode\0"
"\0"
- /* _mesa_function_pool[19899]: GetPixelMapusv (offset 273) */
+ /* _mesa_function_pool[21486]: GetPixelMapusv (offset 273) */
"ip\0"
"glGetPixelMapusv\0"
"\0"
- /* _mesa_function_pool[19920]: Lighti (offset 161) */
+ /* _mesa_function_pool[21507]: Lighti (offset 161) */
"iii\0"
"glLighti\0"
"\0"
- /* _mesa_function_pool[19934]: VertexAttribPointerNV (will be remapped) */
+ /* _mesa_function_pool[21521]: VertexAttribPointerNV (will be remapped) */
"iiiip\0"
"glVertexAttribPointerNV\0"
"\0"
- /* _mesa_function_pool[19965]: ProgramLocalParameters4fvEXT (will be remapped) */
- "iiip\0"
- "glProgramLocalParameters4fvEXT\0"
- "\0"
- /* _mesa_function_pool[20002]: GetBooleanIndexedvEXT (will be remapped) */
+ /* _mesa_function_pool[21552]: GetBooleanIndexedvEXT (will be remapped) */
"iip\0"
"glGetBooleanIndexedvEXT\0"
+ "glGetBooleani_v\0"
"\0"
- /* _mesa_function_pool[20031]: GetFramebufferAttachmentParameterivEXT (will be remapped) */
+ /* _mesa_function_pool[21597]: GetFramebufferAttachmentParameterivEXT (will be remapped) */
"iiip\0"
"glGetFramebufferAttachmentParameteriv\0"
"glGetFramebufferAttachmentParameterivEXT\0"
"\0"
- /* _mesa_function_pool[20116]: PixelTransformParameterfEXT (dynamic) */
+ /* _mesa_function_pool[21682]: PixelTransformParameterfEXT (dynamic) */
"iif\0"
"glPixelTransformParameterfEXT\0"
"\0"
- /* _mesa_function_pool[20151]: MultiTexCoord4dvARB (offset 401) */
+ /* _mesa_function_pool[21717]: MultiTexCoord4dvARB (offset 401) */
"ip\0"
"glMultiTexCoord4dv\0"
"glMultiTexCoord4dvARB\0"
"\0"
- /* _mesa_function_pool[20196]: PixelTransformParameteriEXT (dynamic) */
+ /* _mesa_function_pool[21762]: PixelTransformParameteriEXT (dynamic) */
"iii\0"
"glPixelTransformParameteriEXT\0"
"\0"
- /* _mesa_function_pool[20231]: GetDoublev (offset 260) */
+ /* _mesa_function_pool[21797]: GetDoublev (offset 260) */
"ip\0"
"glGetDoublev\0"
"\0"
- /* _mesa_function_pool[20248]: MultMatrixd (offset 295) */
+ /* _mesa_function_pool[21814]: MultMatrixd (offset 295) */
"p\0"
"glMultMatrixd\0"
"\0"
- /* _mesa_function_pool[20265]: MultMatrixf (offset 294) */
+ /* _mesa_function_pool[21831]: MultMatrixf (offset 294) */
"p\0"
"glMultMatrixf\0"
"\0"
- /* _mesa_function_pool[20282]: TexCoord2fColor4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[21848]: VertexAttribI4bvEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI4bvEXT\0"
+ "glVertexAttribI4bv\0"
+ "\0"
+ /* _mesa_function_pool[21893]: TexCoord2fColor4ubVertex3fSUN (dynamic) */
"ffiiiifff\0"
"glTexCoord2fColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[20325]: Uniform1iARB (will be remapped) */
+ /* _mesa_function_pool[21936]: Uniform1iARB (will be remapped) */
"ii\0"
"glUniform1i\0"
"glUniform1iARB\0"
"\0"
- /* _mesa_function_pool[20356]: VertexAttribPointerARB (will be remapped) */
+ /* _mesa_function_pool[21967]: VertexAttribPointerARB (will be remapped) */
"iiiiip\0"
"glVertexAttribPointer\0"
"glVertexAttribPointerARB\0"
"\0"
- /* _mesa_function_pool[20411]: VertexAttrib3sNV (will be remapped) */
+ /* _mesa_function_pool[22022]: VertexAttrib3sNV (will be remapped) */
"iiii\0"
"glVertexAttrib3sNV\0"
"\0"
- /* _mesa_function_pool[20436]: SharpenTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[22047]: SharpenTexFuncSGIS (dynamic) */
"iip\0"
"glSharpenTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[20462]: MultiTexCoord4fvARB (offset 403) */
+ /* _mesa_function_pool[22073]: MultiTexCoord4fvARB (offset 403) */
"ip\0"
"glMultiTexCoord4fv\0"
"glMultiTexCoord4fvARB\0"
"\0"
- /* _mesa_function_pool[20507]: UniformMatrix2x3fv (will be remapped) */
+ /* _mesa_function_pool[22118]: Uniform2uiEXT (will be remapped) */
+ "iii\0"
+ "glUniform2uiEXT\0"
+ "glUniform2ui\0"
+ "\0"
+ /* _mesa_function_pool[22152]: UniformMatrix2x3fv (will be remapped) */
"iiip\0"
"glUniformMatrix2x3fv\0"
"\0"
- /* _mesa_function_pool[20534]: TrackMatrixNV (will be remapped) */
+ /* _mesa_function_pool[22179]: TrackMatrixNV (will be remapped) */
"iiii\0"
"glTrackMatrixNV\0"
"\0"
- /* _mesa_function_pool[20556]: CombinerParameteriNV (will be remapped) */
+ /* _mesa_function_pool[22201]: CombinerParameteriNV (will be remapped) */
"ii\0"
"glCombinerParameteriNV\0"
"\0"
- /* _mesa_function_pool[20583]: DeleteAsyncMarkersSGIX (dynamic) */
+ /* _mesa_function_pool[22228]: DeleteAsyncMarkersSGIX (dynamic) */
"ii\0"
"glDeleteAsyncMarkersSGIX\0"
"\0"
- /* _mesa_function_pool[20612]: ReplacementCodeusSUN (dynamic) */
+ /* _mesa_function_pool[22257]: ReplacementCodeusSUN (dynamic) */
"i\0"
"glReplacementCodeusSUN\0"
"\0"
- /* _mesa_function_pool[20638]: IsAsyncMarkerSGIX (dynamic) */
+ /* _mesa_function_pool[22283]: IsAsyncMarkerSGIX (dynamic) */
"i\0"
"glIsAsyncMarkerSGIX\0"
"\0"
- /* _mesa_function_pool[20661]: FrameZoomSGIX (dynamic) */
+ /* _mesa_function_pool[22306]: FrameZoomSGIX (dynamic) */
"i\0"
"glFrameZoomSGIX\0"
"\0"
- /* _mesa_function_pool[20680]: Normal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[22325]: Normal3fVertex3fvSUN (dynamic) */
"pp\0"
"glNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[20707]: RasterPos4sv (offset 85) */
+ /* _mesa_function_pool[22352]: RasterPos4sv (offset 85) */
"p\0"
"glRasterPos4sv\0"
"\0"
- /* _mesa_function_pool[20725]: VertexAttrib4NsvARB (will be remapped) */
+ /* _mesa_function_pool[22370]: VertexAttrib4NsvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nsv\0"
"glVertexAttrib4NsvARB\0"
"\0"
- /* _mesa_function_pool[20770]: VertexAttrib3fvARB (will be remapped) */
+ /* _mesa_function_pool[22415]: VertexAttrib3fvARB (will be remapped) */
"ip\0"
"glVertexAttrib3fv\0"
"glVertexAttrib3fvARB\0"
"\0"
- /* _mesa_function_pool[20813]: ClearColor (offset 206) */
+ /* _mesa_function_pool[22458]: ClearColor (offset 206) */
"ffff\0"
"glClearColor\0"
"\0"
- /* _mesa_function_pool[20832]: GetSynciv (will be remapped) */
+ /* _mesa_function_pool[22477]: GetSynciv (will be remapped) */
"iiipp\0"
"glGetSynciv\0"
"\0"
- /* _mesa_function_pool[20851]: DeleteFramebuffersEXT (will be remapped) */
+ /* _mesa_function_pool[22496]: ClearColorIiEXT (will be remapped) */
+ "iiii\0"
+ "glClearColorIiEXT\0"
+ "\0"
+ /* _mesa_function_pool[22520]: DeleteFramebuffersEXT (will be remapped) */
"ip\0"
"glDeleteFramebuffers\0"
"glDeleteFramebuffersEXT\0"
"\0"
- /* _mesa_function_pool[20900]: GlobalAlphaFactorsSUN (dynamic) */
+ /* _mesa_function_pool[22569]: GlobalAlphaFactorsSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorsSUN\0"
"\0"
- /* _mesa_function_pool[20927]: IsEnabledIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[22596]: IsEnabledIndexedEXT (will be remapped) */
"ii\0"
"glIsEnabledIndexedEXT\0"
+ "glIsEnabledi\0"
"\0"
- /* _mesa_function_pool[20953]: TexEnviv (offset 187) */
+ /* _mesa_function_pool[22635]: TexEnviv (offset 187) */
"iip\0"
"glTexEnviv\0"
"\0"
- /* _mesa_function_pool[20969]: TexSubImage3D (offset 372) */
+ /* _mesa_function_pool[22651]: TexSubImage3D (offset 372) */
"iiiiiiiiiip\0"
"glTexSubImage3D\0"
"glTexSubImage3DEXT\0"
"\0"
- /* _mesa_function_pool[21017]: Tangent3fEXT (dynamic) */
+ /* _mesa_function_pool[22699]: Tangent3fEXT (dynamic) */
"fff\0"
"glTangent3fEXT\0"
"\0"
- /* _mesa_function_pool[21037]: SecondaryColor3uivEXT (will be remapped) */
+ /* _mesa_function_pool[22719]: SecondaryColor3uivEXT (will be remapped) */
"p\0"
"glSecondaryColor3uiv\0"
"glSecondaryColor3uivEXT\0"
"\0"
- /* _mesa_function_pool[21085]: MatrixIndexubvARB (dynamic) */
+ /* _mesa_function_pool[22767]: MatrixIndexubvARB (dynamic) */
"ip\0"
"glMatrixIndexubvARB\0"
"\0"
- /* _mesa_function_pool[21109]: Color4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[22791]: Color4fNormal3fVertex3fSUN (dynamic) */
"ffffffffff\0"
"glColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[21150]: PixelTexGenParameterfSGIS (will be remapped) */
+ /* _mesa_function_pool[22832]: PixelTexGenParameterfSGIS (will be remapped) */
"if\0"
"glPixelTexGenParameterfSGIS\0"
"\0"
- /* _mesa_function_pool[21182]: CreateShader (will be remapped) */
+ /* _mesa_function_pool[22864]: CreateShader (will be remapped) */
"i\0"
"glCreateShader\0"
"\0"
- /* _mesa_function_pool[21200]: GetColorTableParameterfv (offset 344) */
+ /* _mesa_function_pool[22882]: GetColorTableParameterfv (offset 344) */
"iip\0"
"glGetColorTableParameterfv\0"
"glGetColorTableParameterfvSGI\0"
"glGetColorTableParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[21292]: FragmentLightModelfvSGIX (dynamic) */
+ /* _mesa_function_pool[22974]: FragmentLightModelfvSGIX (dynamic) */
"ip\0"
"glFragmentLightModelfvSGIX\0"
"\0"
- /* _mesa_function_pool[21323]: Bitmap (offset 8) */
+ /* _mesa_function_pool[23005]: Bitmap (offset 8) */
"iiffffp\0"
"glBitmap\0"
"\0"
- /* _mesa_function_pool[21341]: MultiTexCoord3fARB (offset 394) */
+ /* _mesa_function_pool[23023]: MultiTexCoord3fARB (offset 394) */
"ifff\0"
"glMultiTexCoord3f\0"
"glMultiTexCoord3fARB\0"
"\0"
- /* _mesa_function_pool[21386]: GetTexLevelParameterfv (offset 284) */
+ /* _mesa_function_pool[23068]: GetTexLevelParameterfv (offset 284) */
"iiip\0"
"glGetTexLevelParameterfv\0"
"\0"
- /* _mesa_function_pool[21417]: GetPixelTexGenParameterfvSGIS (will be remapped) */
+ /* _mesa_function_pool[23099]: GetPixelTexGenParameterfvSGIS (will be remapped) */
"ip\0"
"glGetPixelTexGenParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[21453]: GenFramebuffersEXT (will be remapped) */
+ /* _mesa_function_pool[23135]: GenFramebuffersEXT (will be remapped) */
"ip\0"
"glGenFramebuffers\0"
"glGenFramebuffersEXT\0"
"\0"
- /* _mesa_function_pool[21496]: GetProgramParameterdvNV (will be remapped) */
+ /* _mesa_function_pool[23178]: VertexAttribDivisor (will be remapped) */
+ "ii\0"
+ "glVertexAttribDivisor\0"
+ "\0"
+ /* _mesa_function_pool[23204]: GetProgramParameterdvNV (will be remapped) */
"iiip\0"
"glGetProgramParameterdvNV\0"
"\0"
- /* _mesa_function_pool[21528]: Vertex2sv (offset 133) */
+ /* _mesa_function_pool[23236]: Vertex2sv (offset 133) */
"p\0"
"glVertex2sv\0"
"\0"
- /* _mesa_function_pool[21543]: GetIntegerv (offset 263) */
+ /* _mesa_function_pool[23251]: GetIntegerv (offset 263) */
"ip\0"
"glGetIntegerv\0"
"\0"
- /* _mesa_function_pool[21561]: IsVertexArrayAPPLE (will be remapped) */
+ /* _mesa_function_pool[23269]: IsVertexArrayAPPLE (will be remapped) */
"i\0"
"glIsVertexArray\0"
"glIsVertexArrayAPPLE\0"
"\0"
- /* _mesa_function_pool[21601]: FragmentLightfvSGIX (dynamic) */
+ /* _mesa_function_pool[23309]: FragmentLightfvSGIX (dynamic) */
"iip\0"
"glFragmentLightfvSGIX\0"
"\0"
- /* _mesa_function_pool[21628]: DetachShader (will be remapped) */
+ /* _mesa_function_pool[23336]: DetachShader (will be remapped) */
"ii\0"
"glDetachShader\0"
"\0"
- /* _mesa_function_pool[21647]: VertexAttrib4NubARB (will be remapped) */
+ /* _mesa_function_pool[23355]: VertexAttrib4NubARB (will be remapped) */
"iiiii\0"
"glVertexAttrib4Nub\0"
"glVertexAttrib4NubARB\0"
"\0"
- /* _mesa_function_pool[21695]: GetProgramEnvParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[23403]: GetProgramEnvParameterfvARB (will be remapped) */
"iip\0"
"glGetProgramEnvParameterfvARB\0"
"\0"
- /* _mesa_function_pool[21730]: GetTrackMatrixivNV (will be remapped) */
+ /* _mesa_function_pool[23438]: GetTrackMatrixivNV (will be remapped) */
"iiip\0"
"glGetTrackMatrixivNV\0"
"\0"
- /* _mesa_function_pool[21757]: VertexAttrib3svNV (will be remapped) */
+ /* _mesa_function_pool[23465]: VertexAttrib3svNV (will be remapped) */
"ip\0"
"glVertexAttrib3svNV\0"
"\0"
- /* _mesa_function_pool[21781]: Uniform4fvARB (will be remapped) */
+ /* _mesa_function_pool[23489]: Uniform4fvARB (will be remapped) */
"iip\0"
"glUniform4fv\0"
"glUniform4fvARB\0"
"\0"
- /* _mesa_function_pool[21815]: MultTransposeMatrixfARB (will be remapped) */
+ /* _mesa_function_pool[23523]: MultTransposeMatrixfARB (will be remapped) */
"p\0"
"glMultTransposeMatrixf\0"
"glMultTransposeMatrixfARB\0"
"\0"
- /* _mesa_function_pool[21867]: GetTexEnviv (offset 277) */
+ /* _mesa_function_pool[23575]: GetTexEnviv (offset 277) */
"iip\0"
"glGetTexEnviv\0"
"\0"
- /* _mesa_function_pool[21886]: ColorFragmentOp1ATI (will be remapped) */
+ /* _mesa_function_pool[23594]: ColorFragmentOp1ATI (will be remapped) */
"iiiiiii\0"
"glColorFragmentOp1ATI\0"
"\0"
- /* _mesa_function_pool[21917]: GetUniformfvARB (will be remapped) */
+ /* _mesa_function_pool[23625]: GetUniformfvARB (will be remapped) */
"iip\0"
"glGetUniformfv\0"
"glGetUniformfvARB\0"
"\0"
- /* _mesa_function_pool[21955]: EGLImageTargetRenderbufferStorageOES (will be remapped) */
+ /* _mesa_function_pool[23663]: EGLImageTargetRenderbufferStorageOES (will be remapped) */
"ip\0"
"glEGLImageTargetRenderbufferStorageOES\0"
"\0"
- /* _mesa_function_pool[21998]: PopClientAttrib (offset 334) */
+ /* _mesa_function_pool[23706]: VertexAttribI2ivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI2ivEXT\0"
+ "glVertexAttribI2iv\0"
+ "\0"
+ /* _mesa_function_pool[23751]: PopClientAttrib (offset 334) */
"\0"
"glPopClientAttrib\0"
"\0"
- /* _mesa_function_pool[22018]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[23771]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
"iffffffffffff\0"
"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[22089]: DetachObjectARB (will be remapped) */
+ /* _mesa_function_pool[23842]: DetachObjectARB (will be remapped) */
"ii\0"
"glDetachObjectARB\0"
"\0"
- /* _mesa_function_pool[22111]: VertexBlendARB (dynamic) */
+ /* _mesa_function_pool[23864]: VertexBlendARB (dynamic) */
"i\0"
"glVertexBlendARB\0"
"\0"
- /* _mesa_function_pool[22131]: WindowPos3iMESA (will be remapped) */
+ /* _mesa_function_pool[23884]: WindowPos3iMESA (will be remapped) */
"iii\0"
"glWindowPos3i\0"
"glWindowPos3iARB\0"
"glWindowPos3iMESA\0"
"\0"
- /* _mesa_function_pool[22185]: SeparableFilter2D (offset 360) */
+ /* _mesa_function_pool[23938]: SeparableFilter2D (offset 360) */
"iiiiiipp\0"
"glSeparableFilter2D\0"
"glSeparableFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[22238]: ProgramParameteriARB (will be remapped) */
+ /* _mesa_function_pool[23991]: ProgramParameteriARB (will be remapped) */
"iii\0"
"glProgramParameteriARB\0"
"\0"
- /* _mesa_function_pool[22266]: Map1d (offset 220) */
+ /* _mesa_function_pool[24019]: Map1d (offset 220) */
"iddiip\0"
"glMap1d\0"
"\0"
- /* _mesa_function_pool[22282]: Map1f (offset 221) */
+ /* _mesa_function_pool[24035]: Map1f (offset 221) */
"iffiip\0"
"glMap1f\0"
"\0"
- /* _mesa_function_pool[22298]: CompressedTexImage2DARB (will be remapped) */
+ /* _mesa_function_pool[24051]: CompressedTexImage2DARB (will be remapped) */
"iiiiiiip\0"
"glCompressedTexImage2D\0"
"glCompressedTexImage2DARB\0"
"\0"
- /* _mesa_function_pool[22357]: ArrayElement (offset 306) */
+ /* _mesa_function_pool[24110]: ArrayElement (offset 306) */
"i\0"
"glArrayElement\0"
"glArrayElementEXT\0"
"\0"
- /* _mesa_function_pool[22393]: TexImage2D (offset 183) */
+ /* _mesa_function_pool[24146]: TexImage2D (offset 183) */
"iiiiiiiip\0"
"glTexImage2D\0"
"\0"
- /* _mesa_function_pool[22417]: DepthBoundsEXT (will be remapped) */
+ /* _mesa_function_pool[24170]: DepthBoundsEXT (will be remapped) */
"dd\0"
"glDepthBoundsEXT\0"
"\0"
- /* _mesa_function_pool[22438]: ProgramParameters4fvNV (will be remapped) */
+ /* _mesa_function_pool[24191]: ProgramParameters4fvNV (will be remapped) */
"iiip\0"
"glProgramParameters4fvNV\0"
"\0"
- /* _mesa_function_pool[22469]: DeformationMap3fSGIX (dynamic) */
+ /* _mesa_function_pool[24222]: DeformationMap3fSGIX (dynamic) */
"iffiiffiiffiip\0"
"glDeformationMap3fSGIX\0"
"\0"
- /* _mesa_function_pool[22508]: GetProgramivNV (will be remapped) */
+ /* _mesa_function_pool[24261]: GetProgramivNV (will be remapped) */
"iip\0"
"glGetProgramivNV\0"
"\0"
- /* _mesa_function_pool[22530]: GetMinmaxParameteriv (offset 366) */
+ /* _mesa_function_pool[24283]: GetFragDataLocationEXT (will be remapped) */
+ "ip\0"
+ "glGetFragDataLocationEXT\0"
+ "glGetFragDataLocation\0"
+ "\0"
+ /* _mesa_function_pool[24334]: GetMinmaxParameteriv (offset 366) */
"iip\0"
"glGetMinmaxParameteriv\0"
"glGetMinmaxParameterivEXT\0"
"\0"
- /* _mesa_function_pool[22584]: PixelTransferf (offset 247) */
+ /* _mesa_function_pool[24388]: PixelTransferf (offset 247) */
"if\0"
"glPixelTransferf\0"
"\0"
- /* _mesa_function_pool[22605]: CopyTexImage1D (offset 323) */
+ /* _mesa_function_pool[24409]: CopyTexImage1D (offset 323) */
"iiiiiii\0"
"glCopyTexImage1D\0"
"glCopyTexImage1DEXT\0"
"\0"
- /* _mesa_function_pool[22651]: PushMatrix (offset 298) */
+ /* _mesa_function_pool[24455]: PushMatrix (offset 298) */
"\0"
"glPushMatrix\0"
"\0"
- /* _mesa_function_pool[22666]: Fogiv (offset 156) */
+ /* _mesa_function_pool[24470]: Fogiv (offset 156) */
"ip\0"
"glFogiv\0"
"\0"
- /* _mesa_function_pool[22678]: TexCoord1dv (offset 95) */
+ /* _mesa_function_pool[24482]: TexCoord1dv (offset 95) */
"p\0"
"glTexCoord1dv\0"
"\0"
- /* _mesa_function_pool[22695]: AlphaFragmentOp3ATI (will be remapped) */
+ /* _mesa_function_pool[24499]: AlphaFragmentOp3ATI (will be remapped) */
"iiiiiiiiiiii\0"
"glAlphaFragmentOp3ATI\0"
"\0"
- /* _mesa_function_pool[22731]: PixelTransferi (offset 248) */
+ /* _mesa_function_pool[24535]: PixelTransferi (offset 248) */
"ii\0"
"glPixelTransferi\0"
"\0"
- /* _mesa_function_pool[22752]: GetVertexAttribdvNV (will be remapped) */
+ /* _mesa_function_pool[24556]: GetVertexAttribdvNV (will be remapped) */
"iip\0"
"glGetVertexAttribdvNV\0"
"\0"
- /* _mesa_function_pool[22779]: VertexAttrib3fvNV (will be remapped) */
+ /* _mesa_function_pool[24583]: VertexAttrib3fvNV (will be remapped) */
"ip\0"
"glVertexAttrib3fvNV\0"
"\0"
- /* _mesa_function_pool[22803]: Rotatef (offset 300) */
+ /* _mesa_function_pool[24607]: Rotatef (offset 300) */
"ffff\0"
"glRotatef\0"
"\0"
- /* _mesa_function_pool[22819]: GetFinalCombinerInputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[24623]: GetFinalCombinerInputParameterivNV (will be remapped) */
"iip\0"
"glGetFinalCombinerInputParameterivNV\0"
"\0"
- /* _mesa_function_pool[22861]: Vertex3i (offset 138) */
+ /* _mesa_function_pool[24665]: Vertex3i (offset 138) */
"iii\0"
"glVertex3i\0"
"\0"
- /* _mesa_function_pool[22877]: Vertex3f (offset 136) */
+ /* _mesa_function_pool[24681]: Vertex3f (offset 136) */
"fff\0"
"glVertex3f\0"
"\0"
- /* _mesa_function_pool[22893]: Clear (offset 203) */
+ /* _mesa_function_pool[24697]: Clear (offset 203) */
"i\0"
"glClear\0"
"\0"
- /* _mesa_function_pool[22904]: Vertex3d (offset 134) */
+ /* _mesa_function_pool[24708]: Vertex3d (offset 134) */
"ddd\0"
"glVertex3d\0"
"\0"
- /* _mesa_function_pool[22920]: GetMapParameterivNV (dynamic) */
+ /* _mesa_function_pool[24724]: GetMapParameterivNV (dynamic) */
"iip\0"
"glGetMapParameterivNV\0"
"\0"
- /* _mesa_function_pool[22947]: Uniform4iARB (will be remapped) */
+ /* _mesa_function_pool[24751]: Uniform4iARB (will be remapped) */
"iiiii\0"
"glUniform4i\0"
"glUniform4iARB\0"
"\0"
- /* _mesa_function_pool[22981]: ReadBuffer (offset 254) */
+ /* _mesa_function_pool[24785]: ReadBuffer (offset 254) */
"i\0"
"glReadBuffer\0"
"\0"
- /* _mesa_function_pool[22997]: ConvolutionParameteri (offset 352) */
+ /* _mesa_function_pool[24801]: ConvolutionParameteri (offset 352) */
"iii\0"
"glConvolutionParameteri\0"
"glConvolutionParameteriEXT\0"
"\0"
- /* _mesa_function_pool[23053]: Ortho (offset 296) */
+ /* _mesa_function_pool[24857]: Ortho (offset 296) */
"dddddd\0"
"glOrtho\0"
"\0"
- /* _mesa_function_pool[23069]: Binormal3sEXT (dynamic) */
+ /* _mesa_function_pool[24873]: Binormal3sEXT (dynamic) */
"iii\0"
"glBinormal3sEXT\0"
"\0"
- /* _mesa_function_pool[23090]: ListBase (offset 6) */
+ /* _mesa_function_pool[24894]: ListBase (offset 6) */
"i\0"
"glListBase\0"
"\0"
- /* _mesa_function_pool[23104]: Vertex3s (offset 140) */
+ /* _mesa_function_pool[24908]: Vertex3s (offset 140) */
"iii\0"
"glVertex3s\0"
"\0"
- /* _mesa_function_pool[23120]: ConvolutionParameterf (offset 350) */
+ /* _mesa_function_pool[24924]: ConvolutionParameterf (offset 350) */
"iif\0"
"glConvolutionParameterf\0"
"glConvolutionParameterfEXT\0"
"\0"
- /* _mesa_function_pool[23176]: GetColorTableParameteriv (offset 345) */
+ /* _mesa_function_pool[24980]: GetColorTableParameteriv (offset 345) */
"iip\0"
"glGetColorTableParameteriv\0"
"glGetColorTableParameterivSGI\0"
"glGetColorTableParameterivEXT\0"
"\0"
- /* _mesa_function_pool[23268]: ProgramEnvParameter4dvARB (will be remapped) */
+ /* _mesa_function_pool[25072]: ProgramEnvParameter4dvARB (will be remapped) */
"iip\0"
"glProgramEnvParameter4dvARB\0"
"glProgramParameter4dvNV\0"
"\0"
- /* _mesa_function_pool[23325]: ShadeModel (offset 177) */
+ /* _mesa_function_pool[25129]: ShadeModel (offset 177) */
"i\0"
"glShadeModel\0"
"\0"
- /* _mesa_function_pool[23341]: VertexAttribs2fvNV (will be remapped) */
+ /* _mesa_function_pool[25145]: VertexAttribs2fvNV (will be remapped) */
"iip\0"
"glVertexAttribs2fvNV\0"
"\0"
- /* _mesa_function_pool[23367]: Rectiv (offset 91) */
+ /* _mesa_function_pool[25171]: Rectiv (offset 91) */
"pp\0"
"glRectiv\0"
"\0"
- /* _mesa_function_pool[23380]: UseProgramObjectARB (will be remapped) */
+ /* _mesa_function_pool[25184]: UseProgramObjectARB (will be remapped) */
"i\0"
"glUseProgram\0"
"glUseProgramObjectARB\0"
"\0"
- /* _mesa_function_pool[23418]: GetMapParameterfvNV (dynamic) */
+ /* _mesa_function_pool[25222]: GetMapParameterfvNV (dynamic) */
"iip\0"
"glGetMapParameterfvNV\0"
"\0"
- /* _mesa_function_pool[23445]: EndConditionalRenderNV (will be remapped) */
+ /* _mesa_function_pool[25249]: EndConditionalRenderNV (will be remapped) */
"\0"
"glEndConditionalRenderNV\0"
+ "glEndConditionalRender\0"
"\0"
- /* _mesa_function_pool[23472]: PassTexCoordATI (will be remapped) */
+ /* _mesa_function_pool[25299]: PassTexCoordATI (will be remapped) */
"iii\0"
"glPassTexCoordATI\0"
"\0"
- /* _mesa_function_pool[23495]: DeleteProgram (will be remapped) */
+ /* _mesa_function_pool[25322]: DeleteProgram (will be remapped) */
"i\0"
"glDeleteProgram\0"
"\0"
- /* _mesa_function_pool[23514]: Tangent3ivEXT (dynamic) */
+ /* _mesa_function_pool[25341]: Tangent3ivEXT (dynamic) */
"p\0"
"glTangent3ivEXT\0"
"\0"
- /* _mesa_function_pool[23533]: Tangent3dEXT (dynamic) */
+ /* _mesa_function_pool[25360]: Tangent3dEXT (dynamic) */
"ddd\0"
"glTangent3dEXT\0"
"\0"
- /* _mesa_function_pool[23553]: SecondaryColor3dvEXT (will be remapped) */
+ /* _mesa_function_pool[25380]: SecondaryColor3dvEXT (will be remapped) */
"p\0"
"glSecondaryColor3dv\0"
"glSecondaryColor3dvEXT\0"
"\0"
- /* _mesa_function_pool[23599]: Vertex2fv (offset 129) */
+ /* _mesa_function_pool[25426]: Vertex2fv (offset 129) */
"p\0"
"glVertex2fv\0"
"\0"
- /* _mesa_function_pool[23614]: MultiDrawArraysEXT (will be remapped) */
+ /* _mesa_function_pool[25441]: MultiDrawArraysEXT (will be remapped) */
"ippi\0"
"glMultiDrawArrays\0"
"glMultiDrawArraysEXT\0"
"\0"
- /* _mesa_function_pool[23659]: BindRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[25486]: BindRenderbufferEXT (will be remapped) */
"ii\0"
"glBindRenderbuffer\0"
"glBindRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[23704]: MultiTexCoord4dARB (offset 400) */
+ /* _mesa_function_pool[25531]: MultiTexCoord4dARB (offset 400) */
"idddd\0"
"glMultiTexCoord4d\0"
"glMultiTexCoord4dARB\0"
"\0"
- /* _mesa_function_pool[23750]: FramebufferTextureFaceARB (will be remapped) */
+ /* _mesa_function_pool[25577]: FramebufferTextureFaceARB (will be remapped) */
"iiiii\0"
"glFramebufferTextureFaceARB\0"
"\0"
- /* _mesa_function_pool[23785]: Vertex3sv (offset 141) */
+ /* _mesa_function_pool[25612]: Vertex3sv (offset 141) */
"p\0"
"glVertex3sv\0"
"\0"
- /* _mesa_function_pool[23800]: SecondaryColor3usEXT (will be remapped) */
+ /* _mesa_function_pool[25627]: SecondaryColor3usEXT (will be remapped) */
"iii\0"
"glSecondaryColor3us\0"
"glSecondaryColor3usEXT\0"
"\0"
- /* _mesa_function_pool[23848]: ProgramLocalParameter4fvARB (will be remapped) */
+ /* _mesa_function_pool[25675]: ProgramLocalParameter4fvARB (will be remapped) */
"iip\0"
"glProgramLocalParameter4fvARB\0"
"\0"
- /* _mesa_function_pool[23883]: DeleteProgramsNV (will be remapped) */
+ /* _mesa_function_pool[25710]: DeleteProgramsNV (will be remapped) */
"ip\0"
"glDeleteProgramsARB\0"
"glDeleteProgramsNV\0"
"\0"
- /* _mesa_function_pool[23926]: EvalMesh1 (offset 236) */
+ /* _mesa_function_pool[25753]: EvalMesh1 (offset 236) */
"iii\0"
"glEvalMesh1\0"
"\0"
- /* _mesa_function_pool[23943]: PauseTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[25770]: PauseTransformFeedback (will be remapped) */
"\0"
"glPauseTransformFeedback\0"
"\0"
- /* _mesa_function_pool[23970]: MultiTexCoord1sARB (offset 382) */
+ /* _mesa_function_pool[25797]: MultiTexCoord1sARB (offset 382) */
"ii\0"
"glMultiTexCoord1s\0"
"glMultiTexCoord1sARB\0"
"\0"
- /* _mesa_function_pool[24013]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[25840]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */
"iffffff\0"
"glReplacementCodeuiColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[24060]: GetVertexAttribPointervNV (will be remapped) */
+ /* _mesa_function_pool[25887]: GetVertexAttribPointervNV (will be remapped) */
"iip\0"
"glGetVertexAttribPointerv\0"
"glGetVertexAttribPointervARB\0"
"glGetVertexAttribPointervNV\0"
"\0"
- /* _mesa_function_pool[24148]: VertexAttribs1fvNV (will be remapped) */
+ /* _mesa_function_pool[25975]: VertexAttribs1fvNV (will be remapped) */
"iip\0"
"glVertexAttribs1fvNV\0"
"\0"
- /* _mesa_function_pool[24174]: MultiTexCoord1dvARB (offset 377) */
+ /* _mesa_function_pool[26001]: MultiTexCoord1dvARB (offset 377) */
"ip\0"
"glMultiTexCoord1dv\0"
"glMultiTexCoord1dvARB\0"
"\0"
- /* _mesa_function_pool[24219]: Uniform2iARB (will be remapped) */
+ /* _mesa_function_pool[26046]: Uniform2iARB (will be remapped) */
"iii\0"
"glUniform2i\0"
"glUniform2iARB\0"
"\0"
- /* _mesa_function_pool[24251]: Vertex2iv (offset 131) */
+ /* _mesa_function_pool[26078]: Vertex2iv (offset 131) */
"p\0"
"glVertex2iv\0"
"\0"
- /* _mesa_function_pool[24266]: GetProgramStringNV (will be remapped) */
+ /* _mesa_function_pool[26093]: GetProgramStringNV (will be remapped) */
"iip\0"
"glGetProgramStringNV\0"
"\0"
- /* _mesa_function_pool[24292]: ColorPointerEXT (will be remapped) */
+ /* _mesa_function_pool[26119]: ColorPointerEXT (will be remapped) */
"iiiip\0"
"glColorPointerEXT\0"
"\0"
- /* _mesa_function_pool[24317]: LineWidth (offset 168) */
+ /* _mesa_function_pool[26144]: LineWidth (offset 168) */
"f\0"
"glLineWidth\0"
"\0"
- /* _mesa_function_pool[24332]: MapBufferARB (will be remapped) */
+ /* _mesa_function_pool[26159]: MapBufferARB (will be remapped) */
"ii\0"
"glMapBuffer\0"
"glMapBufferARB\0"
"\0"
- /* _mesa_function_pool[24363]: MultiDrawElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[26190]: MultiDrawElementsBaseVertex (will be remapped) */
"ipipip\0"
"glMultiDrawElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[24401]: Binormal3svEXT (dynamic) */
+ /* _mesa_function_pool[26228]: TexParameterIuivEXT (will be remapped) */
+ "iip\0"
+ "glTexParameterIuivEXT\0"
+ "glTexParameterIuiv\0"
+ "\0"
+ /* _mesa_function_pool[26274]: Binormal3svEXT (dynamic) */
"p\0"
"glBinormal3svEXT\0"
"\0"
- /* _mesa_function_pool[24421]: ApplyTextureEXT (dynamic) */
+ /* _mesa_function_pool[26294]: ApplyTextureEXT (dynamic) */
"i\0"
"glApplyTextureEXT\0"
"\0"
- /* _mesa_function_pool[24442]: TexGendv (offset 189) */
+ /* _mesa_function_pool[26315]: GetBufferParameteri64v (will be remapped) */
+ "iip\0"
+ "glGetBufferParameteri64v\0"
+ "\0"
+ /* _mesa_function_pool[26345]: TexGendv (offset 189) */
"iip\0"
"glTexGendv\0"
"\0"
- /* _mesa_function_pool[24458]: EnableIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[26361]: VertexAttribI3iEXT (will be remapped) */
+ "iiii\0"
+ "glVertexAttribI3iEXT\0"
+ "glVertexAttribI3i\0"
+ "\0"
+ /* _mesa_function_pool[26406]: EnableIndexedEXT (will be remapped) */
"ii\0"
"glEnableIndexedEXT\0"
+ "glEnablei\0"
"\0"
- /* _mesa_function_pool[24481]: TextureMaterialEXT (dynamic) */
+ /* _mesa_function_pool[26439]: TextureMaterialEXT (dynamic) */
"ii\0"
"glTextureMaterialEXT\0"
"\0"
- /* _mesa_function_pool[24506]: TextureLightEXT (dynamic) */
+ /* _mesa_function_pool[26464]: TextureLightEXT (dynamic) */
"i\0"
"glTextureLightEXT\0"
"\0"
- /* _mesa_function_pool[24527]: ResetMinmax (offset 370) */
+ /* _mesa_function_pool[26485]: ResetMinmax (offset 370) */
"i\0"
"glResetMinmax\0"
"glResetMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[24561]: SpriteParameterfSGIX (dynamic) */
+ /* _mesa_function_pool[26519]: SpriteParameterfSGIX (dynamic) */
"if\0"
"glSpriteParameterfSGIX\0"
"\0"
- /* _mesa_function_pool[24588]: EnableClientState (offset 313) */
+ /* _mesa_function_pool[26546]: EnableClientState (offset 313) */
"i\0"
"glEnableClientState\0"
"\0"
- /* _mesa_function_pool[24611]: VertexAttrib4sNV (will be remapped) */
+ /* _mesa_function_pool[26569]: VertexAttrib4sNV (will be remapped) */
"iiiii\0"
"glVertexAttrib4sNV\0"
"\0"
- /* _mesa_function_pool[24637]: GetConvolutionParameterfv (offset 357) */
+ /* _mesa_function_pool[26595]: GetConvolutionParameterfv (offset 357) */
"iip\0"
"glGetConvolutionParameterfv\0"
"glGetConvolutionParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[24701]: VertexAttribs4dvNV (will be remapped) */
+ /* _mesa_function_pool[26659]: VertexAttribs4dvNV (will be remapped) */
"iip\0"
"glVertexAttribs4dvNV\0"
"\0"
- /* _mesa_function_pool[24727]: VertexAttrib4dARB (will be remapped) */
+ /* _mesa_function_pool[26685]: VertexAttrib4dARB (will be remapped) */
"idddd\0"
"glVertexAttrib4d\0"
"glVertexAttrib4dARB\0"
"\0"
- /* _mesa_function_pool[24771]: GetTexBumpParameterfvATI (will be remapped) */
+ /* _mesa_function_pool[26729]: GetTexBumpParameterfvATI (will be remapped) */
"ip\0"
"glGetTexBumpParameterfvATI\0"
"\0"
- /* _mesa_function_pool[24802]: ProgramNamedParameter4dNV (will be remapped) */
+ /* _mesa_function_pool[26760]: ProgramNamedParameter4dNV (will be remapped) */
"iipdddd\0"
"glProgramNamedParameter4dNV\0"
"\0"
- /* _mesa_function_pool[24839]: GetMaterialfv (offset 269) */
+ /* _mesa_function_pool[26797]: GetMaterialfv (offset 269) */
"iip\0"
"glGetMaterialfv\0"
"\0"
- /* _mesa_function_pool[24860]: VertexWeightfEXT (dynamic) */
+ /* _mesa_function_pool[26818]: VertexWeightfEXT (dynamic) */
"f\0"
"glVertexWeightfEXT\0"
"\0"
- /* _mesa_function_pool[24882]: Binormal3fEXT (dynamic) */
+ /* _mesa_function_pool[26840]: Binormal3fEXT (dynamic) */
"fff\0"
"glBinormal3fEXT\0"
"\0"
- /* _mesa_function_pool[24903]: CallList (offset 2) */
+ /* _mesa_function_pool[26861]: CallList (offset 2) */
"i\0"
"glCallList\0"
"\0"
- /* _mesa_function_pool[24917]: Materialfv (offset 170) */
+ /* _mesa_function_pool[26875]: Materialfv (offset 170) */
"iip\0"
"glMaterialfv\0"
"\0"
- /* _mesa_function_pool[24935]: TexCoord3fv (offset 113) */
+ /* _mesa_function_pool[26893]: TexCoord3fv (offset 113) */
"p\0"
"glTexCoord3fv\0"
"\0"
- /* _mesa_function_pool[24952]: FogCoordfvEXT (will be remapped) */
+ /* _mesa_function_pool[26910]: FogCoordfvEXT (will be remapped) */
"p\0"
"glFogCoordfv\0"
"glFogCoordfvEXT\0"
"\0"
- /* _mesa_function_pool[24984]: MultiTexCoord1ivARB (offset 381) */
+ /* _mesa_function_pool[26942]: MultiTexCoord1ivARB (offset 381) */
"ip\0"
"glMultiTexCoord1iv\0"
"glMultiTexCoord1ivARB\0"
"\0"
- /* _mesa_function_pool[25029]: SecondaryColor3ubEXT (will be remapped) */
+ /* _mesa_function_pool[26987]: SecondaryColor3ubEXT (will be remapped) */
"iii\0"
"glSecondaryColor3ub\0"
"glSecondaryColor3ubEXT\0"
"\0"
- /* _mesa_function_pool[25077]: MultiTexCoord2ivARB (offset 389) */
+ /* _mesa_function_pool[27035]: MultiTexCoord2ivARB (offset 389) */
"ip\0"
"glMultiTexCoord2iv\0"
"glMultiTexCoord2ivARB\0"
"\0"
- /* _mesa_function_pool[25122]: FogFuncSGIS (dynamic) */
+ /* _mesa_function_pool[27080]: FogFuncSGIS (dynamic) */
"ip\0"
"glFogFuncSGIS\0"
"\0"
- /* _mesa_function_pool[25140]: CopyTexSubImage2D (offset 326) */
+ /* _mesa_function_pool[27098]: CopyTexSubImage2D (offset 326) */
"iiiiiiii\0"
"glCopyTexSubImage2D\0"
"glCopyTexSubImage2DEXT\0"
"\0"
- /* _mesa_function_pool[25193]: GetObjectParameterivARB (will be remapped) */
+ /* _mesa_function_pool[27151]: GetObjectParameterivARB (will be remapped) */
"iip\0"
"glGetObjectParameterivARB\0"
"\0"
- /* _mesa_function_pool[25224]: Color3iv (offset 16) */
+ /* _mesa_function_pool[27182]: Color3iv (offset 16) */
"p\0"
"glColor3iv\0"
"\0"
- /* _mesa_function_pool[25238]: TexCoord4fVertex4fSUN (dynamic) */
+ /* _mesa_function_pool[27196]: TexCoord4fVertex4fSUN (dynamic) */
"ffffffff\0"
"glTexCoord4fVertex4fSUN\0"
"\0"
- /* _mesa_function_pool[25272]: DrawElements (offset 311) */
+ /* _mesa_function_pool[27230]: DrawElements (offset 311) */
"iiip\0"
"glDrawElements\0"
"\0"
- /* _mesa_function_pool[25293]: BindVertexArrayAPPLE (will be remapped) */
+ /* _mesa_function_pool[27251]: BindVertexArrayAPPLE (will be remapped) */
"i\0"
"glBindVertexArrayAPPLE\0"
"\0"
- /* _mesa_function_pool[25319]: GetProgramLocalParameterdvARB (will be remapped) */
+ /* _mesa_function_pool[27277]: GetProgramLocalParameterdvARB (will be remapped) */
"iip\0"
"glGetProgramLocalParameterdvARB\0"
"\0"
- /* _mesa_function_pool[25356]: GetHistogramParameteriv (offset 363) */
+ /* _mesa_function_pool[27314]: GetHistogramParameteriv (offset 363) */
"iip\0"
"glGetHistogramParameteriv\0"
"glGetHistogramParameterivEXT\0"
"\0"
- /* _mesa_function_pool[25416]: MultiTexCoord1iARB (offset 380) */
+ /* _mesa_function_pool[27374]: MultiTexCoord1iARB (offset 380) */
"ii\0"
"glMultiTexCoord1i\0"
"glMultiTexCoord1iARB\0"
"\0"
- /* _mesa_function_pool[25459]: GetConvolutionFilter (offset 356) */
+ /* _mesa_function_pool[27417]: GetConvolutionFilter (offset 356) */
"iiip\0"
"glGetConvolutionFilter\0"
"glGetConvolutionFilterEXT\0"
"\0"
- /* _mesa_function_pool[25514]: GetProgramivARB (will be remapped) */
+ /* _mesa_function_pool[27472]: GetProgramivARB (will be remapped) */
"iip\0"
"glGetProgramivARB\0"
"\0"
- /* _mesa_function_pool[25537]: BlendFuncSeparateEXT (will be remapped) */
+ /* _mesa_function_pool[27495]: BlendFuncSeparateEXT (will be remapped) */
"iiii\0"
"glBlendFuncSeparate\0"
"glBlendFuncSeparateEXT\0"
"glBlendFuncSeparateINGR\0"
"\0"
- /* _mesa_function_pool[25610]: MapBufferRange (will be remapped) */
+ /* _mesa_function_pool[27568]: MapBufferRange (will be remapped) */
"iiii\0"
"glMapBufferRange\0"
"\0"
- /* _mesa_function_pool[25633]: ProgramParameters4dvNV (will be remapped) */
+ /* _mesa_function_pool[27591]: ProgramParameters4dvNV (will be remapped) */
"iiip\0"
"glProgramParameters4dvNV\0"
"\0"
- /* _mesa_function_pool[25664]: TexCoord2fColor3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[27622]: TexCoord2fColor3fVertex3fvSUN (dynamic) */
"ppp\0"
"glTexCoord2fColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[25701]: EvalPoint2 (offset 239) */
+ /* _mesa_function_pool[27659]: EvalPoint2 (offset 239) */
"ii\0"
"glEvalPoint2\0"
"\0"
- /* _mesa_function_pool[25718]: EvalPoint1 (offset 237) */
+ /* _mesa_function_pool[27676]: Uniform1uivEXT (will be remapped) */
+ "iip\0"
+ "glUniform1uivEXT\0"
+ "glUniform1uiv\0"
+ "\0"
+ /* _mesa_function_pool[27712]: EvalPoint1 (offset 237) */
"i\0"
"glEvalPoint1\0"
"\0"
- /* _mesa_function_pool[25734]: Binormal3dvEXT (dynamic) */
+ /* _mesa_function_pool[27728]: Binormal3dvEXT (dynamic) */
"p\0"
"glBinormal3dvEXT\0"
"\0"
- /* _mesa_function_pool[25754]: PopMatrix (offset 297) */
+ /* _mesa_function_pool[27748]: PopMatrix (offset 297) */
"\0"
"glPopMatrix\0"
"\0"
- /* _mesa_function_pool[25768]: FinishFenceNV (will be remapped) */
+ /* _mesa_function_pool[27762]: FinishFenceNV (will be remapped) */
"i\0"
"glFinishFenceNV\0"
"\0"
- /* _mesa_function_pool[25787]: GetFogFuncSGIS (dynamic) */
+ /* _mesa_function_pool[27781]: GetFogFuncSGIS (dynamic) */
"p\0"
"glGetFogFuncSGIS\0"
"\0"
- /* _mesa_function_pool[25807]: GetUniformLocationARB (will be remapped) */
+ /* _mesa_function_pool[27801]: GetUniformLocationARB (will be remapped) */
"ip\0"
"glGetUniformLocation\0"
"glGetUniformLocationARB\0"
"\0"
- /* _mesa_function_pool[25856]: SecondaryColor3fEXT (will be remapped) */
+ /* _mesa_function_pool[27850]: SecondaryColor3fEXT (will be remapped) */
"fff\0"
"glSecondaryColor3f\0"
"glSecondaryColor3fEXT\0"
"\0"
- /* _mesa_function_pool[25902]: GetTexGeniv (offset 280) */
+ /* _mesa_function_pool[27896]: GetTexGeniv (offset 280) */
"iip\0"
"glGetTexGeniv\0"
"\0"
- /* _mesa_function_pool[25921]: CombinerInputNV (will be remapped) */
+ /* _mesa_function_pool[27915]: CombinerInputNV (will be remapped) */
"iiiiii\0"
"glCombinerInputNV\0"
"\0"
- /* _mesa_function_pool[25947]: VertexAttrib3sARB (will be remapped) */
+ /* _mesa_function_pool[27941]: VertexAttrib3sARB (will be remapped) */
"iiii\0"
"glVertexAttrib3s\0"
"glVertexAttrib3sARB\0"
"\0"
- /* _mesa_function_pool[25990]: IsTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[27984]: IsTransformFeedback (will be remapped) */
"i\0"
"glIsTransformFeedback\0"
"\0"
- /* _mesa_function_pool[26015]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[28009]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[26060]: Map2d (offset 222) */
+ /* _mesa_function_pool[28054]: Map2d (offset 222) */
"iddiiddiip\0"
"glMap2d\0"
"\0"
- /* _mesa_function_pool[26080]: Map2f (offset 223) */
+ /* _mesa_function_pool[28074]: Map2f (offset 223) */
"iffiiffiip\0"
"glMap2f\0"
"\0"
- /* _mesa_function_pool[26100]: ProgramStringARB (will be remapped) */
+ /* _mesa_function_pool[28094]: ProgramStringARB (will be remapped) */
"iiip\0"
"glProgramStringARB\0"
"\0"
- /* _mesa_function_pool[26125]: Vertex4s (offset 148) */
+ /* _mesa_function_pool[28119]: Vertex4s (offset 148) */
"iiii\0"
"glVertex4s\0"
"\0"
- /* _mesa_function_pool[26142]: TexCoord4fVertex4fvSUN (dynamic) */
+ /* _mesa_function_pool[28136]: TexCoord4fVertex4fvSUN (dynamic) */
"pp\0"
"glTexCoord4fVertex4fvSUN\0"
"\0"
- /* _mesa_function_pool[26171]: FragmentLightModelivSGIX (dynamic) */
+ /* _mesa_function_pool[28165]: FragmentLightModelivSGIX (dynamic) */
"ip\0"
"glFragmentLightModelivSGIX\0"
"\0"
- /* _mesa_function_pool[26202]: VertexAttrib1fNV (will be remapped) */
+ /* _mesa_function_pool[28196]: VertexAttrib1fNV (will be remapped) */
"if\0"
"glVertexAttrib1fNV\0"
"\0"
- /* _mesa_function_pool[26225]: Vertex4f (offset 144) */
+ /* _mesa_function_pool[28219]: Vertex4f (offset 144) */
"ffff\0"
"glVertex4f\0"
"\0"
- /* _mesa_function_pool[26242]: EvalCoord1d (offset 228) */
+ /* _mesa_function_pool[28236]: EvalCoord1d (offset 228) */
"d\0"
"glEvalCoord1d\0"
"\0"
- /* _mesa_function_pool[26259]: Vertex4d (offset 142) */
+ /* _mesa_function_pool[28253]: Vertex4d (offset 142) */
"dddd\0"
"glVertex4d\0"
"\0"
- /* _mesa_function_pool[26276]: RasterPos4dv (offset 79) */
+ /* _mesa_function_pool[28270]: RasterPos4dv (offset 79) */
"p\0"
"glRasterPos4dv\0"
"\0"
- /* _mesa_function_pool[26294]: FragmentLightfSGIX (dynamic) */
+ /* _mesa_function_pool[28288]: UseShaderProgramEXT (will be remapped) */
+ "ii\0"
+ "glUseShaderProgramEXT\0"
+ "\0"
+ /* _mesa_function_pool[28314]: FragmentLightfSGIX (dynamic) */
"iif\0"
"glFragmentLightfSGIX\0"
"\0"
- /* _mesa_function_pool[26320]: GetCompressedTexImageARB (will be remapped) */
+ /* _mesa_function_pool[28340]: GetCompressedTexImageARB (will be remapped) */
"iip\0"
"glGetCompressedTexImage\0"
"glGetCompressedTexImageARB\0"
"\0"
- /* _mesa_function_pool[26376]: GetTexGenfv (offset 279) */
+ /* _mesa_function_pool[28396]: GetTexGenfv (offset 279) */
"iip\0"
"glGetTexGenfv\0"
"\0"
- /* _mesa_function_pool[26395]: Vertex4i (offset 146) */
+ /* _mesa_function_pool[28415]: Vertex4i (offset 146) */
"iiii\0"
"glVertex4i\0"
"\0"
- /* _mesa_function_pool[26412]: VertexWeightPointerEXT (dynamic) */
+ /* _mesa_function_pool[28432]: VertexWeightPointerEXT (dynamic) */
"iiip\0"
"glVertexWeightPointerEXT\0"
"\0"
- /* _mesa_function_pool[26443]: GetHistogram (offset 361) */
+ /* _mesa_function_pool[28463]: GetHistogram (offset 361) */
"iiiip\0"
"glGetHistogram\0"
"glGetHistogramEXT\0"
"\0"
- /* _mesa_function_pool[26483]: ActiveStencilFaceEXT (will be remapped) */
+ /* _mesa_function_pool[28503]: ActiveStencilFaceEXT (will be remapped) */
"i\0"
"glActiveStencilFaceEXT\0"
"\0"
- /* _mesa_function_pool[26509]: StencilFuncSeparateATI (will be remapped) */
+ /* _mesa_function_pool[28529]: StencilFuncSeparateATI (will be remapped) */
"iiii\0"
"glStencilFuncSeparateATI\0"
"\0"
- /* _mesa_function_pool[26540]: Materialf (offset 169) */
+ /* _mesa_function_pool[28560]: Materialf (offset 169) */
"iif\0"
"glMaterialf\0"
"\0"
- /* _mesa_function_pool[26557]: GetShaderSourceARB (will be remapped) */
+ /* _mesa_function_pool[28577]: GetShaderSourceARB (will be remapped) */
"iipp\0"
"glGetShaderSource\0"
"glGetShaderSourceARB\0"
"\0"
- /* _mesa_function_pool[26602]: IglooInterfaceSGIX (dynamic) */
+ /* _mesa_function_pool[28622]: IglooInterfaceSGIX (dynamic) */
"ip\0"
"glIglooInterfaceSGIX\0"
"\0"
- /* _mesa_function_pool[26627]: Materiali (offset 171) */
+ /* _mesa_function_pool[28647]: Materiali (offset 171) */
"iii\0"
"glMateriali\0"
"\0"
- /* _mesa_function_pool[26644]: VertexAttrib4dNV (will be remapped) */
+ /* _mesa_function_pool[28664]: VertexAttrib4dNV (will be remapped) */
"idddd\0"
"glVertexAttrib4dNV\0"
"\0"
- /* _mesa_function_pool[26670]: MultiModeDrawElementsIBM (will be remapped) */
+ /* _mesa_function_pool[28690]: MultiModeDrawElementsIBM (will be remapped) */
"ppipii\0"
"glMultiModeDrawElementsIBM\0"
"\0"
- /* _mesa_function_pool[26705]: Indexsv (offset 51) */
+ /* _mesa_function_pool[28725]: Indexsv (offset 51) */
"p\0"
"glIndexsv\0"
"\0"
- /* _mesa_function_pool[26718]: MultiTexCoord4svARB (offset 407) */
+ /* _mesa_function_pool[28738]: MultiTexCoord4svARB (offset 407) */
"ip\0"
"glMultiTexCoord4sv\0"
"glMultiTexCoord4svARB\0"
"\0"
- /* _mesa_function_pool[26763]: LightModelfv (offset 164) */
+ /* _mesa_function_pool[28783]: LightModelfv (offset 164) */
"ip\0"
"glLightModelfv\0"
"\0"
- /* _mesa_function_pool[26782]: TexCoord2dv (offset 103) */
+ /* _mesa_function_pool[28802]: TexCoord2dv (offset 103) */
"p\0"
"glTexCoord2dv\0"
"\0"
- /* _mesa_function_pool[26799]: GenQueriesARB (will be remapped) */
+ /* _mesa_function_pool[28819]: GenQueriesARB (will be remapped) */
"ip\0"
"glGenQueries\0"
"glGenQueriesARB\0"
"\0"
- /* _mesa_function_pool[26832]: EvalCoord1dv (offset 229) */
+ /* _mesa_function_pool[28852]: EvalCoord1dv (offset 229) */
"p\0"
"glEvalCoord1dv\0"
"\0"
- /* _mesa_function_pool[26850]: ReplacementCodeuiVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[28870]: ReplacementCodeuiVertex3fSUN (dynamic) */
"ifff\0"
"glReplacementCodeuiVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[26887]: Translated (offset 303) */
+ /* _mesa_function_pool[28907]: Translated (offset 303) */
"ddd\0"
"glTranslated\0"
"\0"
- /* _mesa_function_pool[26905]: Translatef (offset 304) */
+ /* _mesa_function_pool[28925]: Translatef (offset 304) */
"fff\0"
"glTranslatef\0"
"\0"
- /* _mesa_function_pool[26923]: StencilMask (offset 209) */
+ /* _mesa_function_pool[28943]: Uniform3uiEXT (will be remapped) */
+ "iiii\0"
+ "glUniform3uiEXT\0"
+ "glUniform3ui\0"
+ "\0"
+ /* _mesa_function_pool[28978]: StencilMask (offset 209) */
"i\0"
"glStencilMask\0"
"\0"
- /* _mesa_function_pool[26940]: Tangent3iEXT (dynamic) */
+ /* _mesa_function_pool[28995]: Tangent3iEXT (dynamic) */
"iii\0"
"glTangent3iEXT\0"
"\0"
- /* _mesa_function_pool[26960]: GetLightiv (offset 265) */
+ /* _mesa_function_pool[29015]: GetLightiv (offset 265) */
"iip\0"
"glGetLightiv\0"
"\0"
- /* _mesa_function_pool[26978]: DrawMeshArraysSUN (dynamic) */
+ /* _mesa_function_pool[29033]: DrawMeshArraysSUN (dynamic) */
"iiii\0"
"glDrawMeshArraysSUN\0"
"\0"
- /* _mesa_function_pool[27004]: IsList (offset 287) */
+ /* _mesa_function_pool[29059]: IsList (offset 287) */
"i\0"
"glIsList\0"
"\0"
- /* _mesa_function_pool[27016]: IsSync (will be remapped) */
+ /* _mesa_function_pool[29071]: IsSync (will be remapped) */
"i\0"
"glIsSync\0"
"\0"
- /* _mesa_function_pool[27028]: RenderMode (offset 196) */
+ /* _mesa_function_pool[29083]: RenderMode (offset 196) */
"i\0"
"glRenderMode\0"
"\0"
- /* _mesa_function_pool[27044]: GetMapControlPointsNV (dynamic) */
+ /* _mesa_function_pool[29099]: GetMapControlPointsNV (dynamic) */
"iiiiiip\0"
"glGetMapControlPointsNV\0"
"\0"
- /* _mesa_function_pool[27077]: DrawBuffersARB (will be remapped) */
+ /* _mesa_function_pool[29132]: DrawBuffersARB (will be remapped) */
"ip\0"
"glDrawBuffers\0"
"glDrawBuffersARB\0"
"glDrawBuffersATI\0"
"\0"
- /* _mesa_function_pool[27129]: ProgramLocalParameter4fARB (will be remapped) */
+ /* _mesa_function_pool[29184]: ClearBufferiv (will be remapped) */
+ "iip\0"
+ "glClearBufferiv\0"
+ "\0"
+ /* _mesa_function_pool[29205]: ProgramLocalParameter4fARB (will be remapped) */
"iiffff\0"
"glProgramLocalParameter4fARB\0"
"\0"
- /* _mesa_function_pool[27166]: SpriteParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[29242]: SpriteParameterivSGIX (dynamic) */
"ip\0"
"glSpriteParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[27194]: ProvokingVertexEXT (will be remapped) */
+ /* _mesa_function_pool[29270]: ProvokingVertexEXT (will be remapped) */
"i\0"
"glProvokingVertexEXT\0"
"glProvokingVertex\0"
"\0"
- /* _mesa_function_pool[27236]: MultiTexCoord1fARB (offset 378) */
+ /* _mesa_function_pool[29312]: MultiTexCoord1fARB (offset 378) */
"if\0"
"glMultiTexCoord1f\0"
"glMultiTexCoord1fARB\0"
"\0"
- /* _mesa_function_pool[27279]: LoadName (offset 198) */
+ /* _mesa_function_pool[29355]: LoadName (offset 198) */
"i\0"
"glLoadName\0"
"\0"
- /* _mesa_function_pool[27293]: VertexAttribs4ubvNV (will be remapped) */
+ /* _mesa_function_pool[29369]: VertexAttribs4ubvNV (will be remapped) */
"iip\0"
"glVertexAttribs4ubvNV\0"
"\0"
- /* _mesa_function_pool[27320]: WeightsvARB (dynamic) */
+ /* _mesa_function_pool[29396]: WeightsvARB (dynamic) */
"ip\0"
"glWeightsvARB\0"
"\0"
- /* _mesa_function_pool[27338]: Uniform1fvARB (will be remapped) */
+ /* _mesa_function_pool[29414]: Uniform1fvARB (will be remapped) */
"iip\0"
"glUniform1fv\0"
"glUniform1fvARB\0"
"\0"
- /* _mesa_function_pool[27372]: CopyTexSubImage1D (offset 325) */
+ /* _mesa_function_pool[29448]: CopyTexSubImage1D (offset 325) */
"iiiiii\0"
"glCopyTexSubImage1D\0"
"glCopyTexSubImage1DEXT\0"
"\0"
- /* _mesa_function_pool[27423]: CullFace (offset 152) */
+ /* _mesa_function_pool[29499]: CullFace (offset 152) */
"i\0"
"glCullFace\0"
"\0"
- /* _mesa_function_pool[27437]: BindTexture (offset 307) */
+ /* _mesa_function_pool[29513]: BindTexture (offset 307) */
"ii\0"
"glBindTexture\0"
"glBindTextureEXT\0"
"\0"
- /* _mesa_function_pool[27472]: BeginFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[29548]: BeginFragmentShaderATI (will be remapped) */
"\0"
"glBeginFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[27499]: MultiTexCoord4fARB (offset 402) */
+ /* _mesa_function_pool[29575]: MultiTexCoord4fARB (offset 402) */
"iffff\0"
"glMultiTexCoord4f\0"
"glMultiTexCoord4fARB\0"
"\0"
- /* _mesa_function_pool[27545]: VertexAttribs3svNV (will be remapped) */
+ /* _mesa_function_pool[29621]: VertexAttribs3svNV (will be remapped) */
"iip\0"
"glVertexAttribs3svNV\0"
"\0"
- /* _mesa_function_pool[27571]: StencilFunc (offset 243) */
+ /* _mesa_function_pool[29647]: StencilFunc (offset 243) */
"iii\0"
"glStencilFunc\0"
"\0"
- /* _mesa_function_pool[27590]: CopyPixels (offset 255) */
+ /* _mesa_function_pool[29666]: CopyPixels (offset 255) */
"iiiii\0"
"glCopyPixels\0"
"\0"
- /* _mesa_function_pool[27610]: Rectsv (offset 93) */
+ /* _mesa_function_pool[29686]: Rectsv (offset 93) */
"pp\0"
"glRectsv\0"
"\0"
- /* _mesa_function_pool[27623]: ReplacementCodeuivSUN (dynamic) */
+ /* _mesa_function_pool[29699]: ReplacementCodeuivSUN (dynamic) */
"p\0"
"glReplacementCodeuivSUN\0"
"\0"
- /* _mesa_function_pool[27650]: EnableVertexAttribArrayARB (will be remapped) */
+ /* _mesa_function_pool[29726]: EnableVertexAttribArrayARB (will be remapped) */
"i\0"
"glEnableVertexAttribArray\0"
"glEnableVertexAttribArrayARB\0"
"\0"
- /* _mesa_function_pool[27708]: NormalPointervINTEL (dynamic) */
+ /* _mesa_function_pool[29784]: NormalPointervINTEL (dynamic) */
"ip\0"
"glNormalPointervINTEL\0"
"\0"
- /* _mesa_function_pool[27734]: CopyConvolutionFilter2D (offset 355) */
+ /* _mesa_function_pool[29810]: CopyConvolutionFilter2D (offset 355) */
"iiiiii\0"
"glCopyConvolutionFilter2D\0"
"glCopyConvolutionFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[27797]: WindowPos3ivMESA (will be remapped) */
+ /* _mesa_function_pool[29873]: WindowPos3ivMESA (will be remapped) */
"p\0"
"glWindowPos3iv\0"
"glWindowPos3ivARB\0"
"glWindowPos3ivMESA\0"
"\0"
- /* _mesa_function_pool[27852]: CopyBufferSubData (will be remapped) */
+ /* _mesa_function_pool[29928]: CopyBufferSubData (will be remapped) */
"iiiii\0"
"glCopyBufferSubData\0"
"\0"
- /* _mesa_function_pool[27879]: NormalPointer (offset 318) */
+ /* _mesa_function_pool[29955]: NormalPointer (offset 318) */
"iip\0"
"glNormalPointer\0"
"\0"
- /* _mesa_function_pool[27900]: TexParameterfv (offset 179) */
+ /* _mesa_function_pool[29976]: TexParameterfv (offset 179) */
"iip\0"
"glTexParameterfv\0"
"\0"
- /* _mesa_function_pool[27922]: IsBufferARB (will be remapped) */
+ /* _mesa_function_pool[29998]: IsBufferARB (will be remapped) */
"i\0"
"glIsBuffer\0"
"glIsBufferARB\0"
"\0"
- /* _mesa_function_pool[27950]: WindowPos4iMESA (will be remapped) */
+ /* _mesa_function_pool[30026]: WindowPos4iMESA (will be remapped) */
"iiii\0"
"glWindowPos4iMESA\0"
"\0"
- /* _mesa_function_pool[27974]: VertexAttrib4uivARB (will be remapped) */
+ /* _mesa_function_pool[30050]: VertexAttrib4uivARB (will be remapped) */
"ip\0"
"glVertexAttrib4uiv\0"
"glVertexAttrib4uivARB\0"
"\0"
- /* _mesa_function_pool[28019]: Tangent3bvEXT (dynamic) */
+ /* _mesa_function_pool[30095]: Tangent3bvEXT (dynamic) */
"p\0"
"glTangent3bvEXT\0"
"\0"
- /* _mesa_function_pool[28038]: UniformMatrix3x4fv (will be remapped) */
+ /* _mesa_function_pool[30114]: VertexAttribI3uivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI3uivEXT\0"
+ "glVertexAttribI3uiv\0"
+ "\0"
+ /* _mesa_function_pool[30161]: UniformMatrix3x4fv (will be remapped) */
"iiip\0"
"glUniformMatrix3x4fv\0"
"\0"
- /* _mesa_function_pool[28065]: ClipPlane (offset 150) */
+ /* _mesa_function_pool[30188]: ClipPlane (offset 150) */
"ip\0"
"glClipPlane\0"
"\0"
- /* _mesa_function_pool[28081]: Recti (offset 90) */
+ /* _mesa_function_pool[30204]: Recti (offset 90) */
"iiii\0"
"glRecti\0"
"\0"
- /* _mesa_function_pool[28095]: DrawRangeElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[30218]: VertexAttribI3ivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI3ivEXT\0"
+ "glVertexAttribI3iv\0"
+ "\0"
+ /* _mesa_function_pool[30263]: DrawRangeElementsBaseVertex (will be remapped) */
"iiiiipi\0"
"glDrawRangeElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[28134]: TexCoordPointervINTEL (dynamic) */
+ /* _mesa_function_pool[30302]: TexCoordPointervINTEL (dynamic) */
"iip\0"
"glTexCoordPointervINTEL\0"
"\0"
- /* _mesa_function_pool[28163]: DeleteBuffersARB (will be remapped) */
+ /* _mesa_function_pool[30331]: DeleteBuffersARB (will be remapped) */
"ip\0"
"glDeleteBuffers\0"
"glDeleteBuffersARB\0"
"\0"
- /* _mesa_function_pool[28202]: PixelTransformParameterfvEXT (dynamic) */
+ /* _mesa_function_pool[30370]: PixelTransformParameterfvEXT (dynamic) */
"iip\0"
"glPixelTransformParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[28238]: PrimitiveRestartNV (will be remapped) */
+ /* _mesa_function_pool[30406]: PrimitiveRestartNV (will be remapped) */
"\0"
"glPrimitiveRestartNV\0"
"\0"
- /* _mesa_function_pool[28261]: WindowPos4fvMESA (will be remapped) */
+ /* _mesa_function_pool[30429]: WindowPos4fvMESA (will be remapped) */
"p\0"
"glWindowPos4fvMESA\0"
"\0"
- /* _mesa_function_pool[28283]: GetPixelMapuiv (offset 272) */
+ /* _mesa_function_pool[30451]: GetPixelMapuiv (offset 272) */
"ip\0"
"glGetPixelMapuiv\0"
"\0"
- /* _mesa_function_pool[28304]: Rectf (offset 88) */
+ /* _mesa_function_pool[30472]: Rectf (offset 88) */
"ffff\0"
"glRectf\0"
"\0"
- /* _mesa_function_pool[28318]: VertexAttrib1sNV (will be remapped) */
+ /* _mesa_function_pool[30486]: VertexAttrib1sNV (will be remapped) */
"ii\0"
"glVertexAttrib1sNV\0"
"\0"
- /* _mesa_function_pool[28341]: Indexfv (offset 47) */
+ /* _mesa_function_pool[30509]: Indexfv (offset 47) */
"p\0"
"glIndexfv\0"
"\0"
- /* _mesa_function_pool[28354]: SecondaryColor3svEXT (will be remapped) */
+ /* _mesa_function_pool[30522]: SecondaryColor3svEXT (will be remapped) */
"p\0"
"glSecondaryColor3sv\0"
"glSecondaryColor3svEXT\0"
"\0"
- /* _mesa_function_pool[28400]: LoadTransposeMatrixfARB (will be remapped) */
+ /* _mesa_function_pool[30568]: LoadTransposeMatrixfARB (will be remapped) */
"p\0"
"glLoadTransposeMatrixf\0"
"glLoadTransposeMatrixfARB\0"
"\0"
- /* _mesa_function_pool[28452]: GetPointerv (offset 329) */
+ /* _mesa_function_pool[30620]: GetPointerv (offset 329) */
"ip\0"
"glGetPointerv\0"
"glGetPointervEXT\0"
"\0"
- /* _mesa_function_pool[28487]: Tangent3bEXT (dynamic) */
+ /* _mesa_function_pool[30655]: Tangent3bEXT (dynamic) */
"iii\0"
"glTangent3bEXT\0"
"\0"
- /* _mesa_function_pool[28507]: CombinerParameterfNV (will be remapped) */
+ /* _mesa_function_pool[30675]: CombinerParameterfNV (will be remapped) */
"if\0"
"glCombinerParameterfNV\0"
"\0"
- /* _mesa_function_pool[28534]: IndexMask (offset 212) */
+ /* _mesa_function_pool[30702]: IndexMask (offset 212) */
"i\0"
"glIndexMask\0"
"\0"
- /* _mesa_function_pool[28549]: BindProgramNV (will be remapped) */
+ /* _mesa_function_pool[30717]: BindProgramNV (will be remapped) */
"ii\0"
"glBindProgramARB\0"
"glBindProgramNV\0"
"\0"
- /* _mesa_function_pool[28586]: VertexAttrib4svARB (will be remapped) */
+ /* _mesa_function_pool[30754]: VertexAttrib4svARB (will be remapped) */
"ip\0"
"glVertexAttrib4sv\0"
"glVertexAttrib4svARB\0"
"\0"
- /* _mesa_function_pool[28629]: GetFloatv (offset 262) */
+ /* _mesa_function_pool[30797]: GetFloatv (offset 262) */
"ip\0"
"glGetFloatv\0"
"\0"
- /* _mesa_function_pool[28645]: CreateDebugObjectMESA (dynamic) */
+ /* _mesa_function_pool[30813]: CreateDebugObjectMESA (dynamic) */
"\0"
"glCreateDebugObjectMESA\0"
"\0"
- /* _mesa_function_pool[28671]: GetShaderiv (will be remapped) */
+ /* _mesa_function_pool[30839]: GetShaderiv (will be remapped) */
"iip\0"
"glGetShaderiv\0"
"\0"
- /* _mesa_function_pool[28690]: ClientWaitSync (will be remapped) */
+ /* _mesa_function_pool[30858]: ClientWaitSync (will be remapped) */
"iii\0"
"glClientWaitSync\0"
"\0"
- /* _mesa_function_pool[28712]: TexCoord4s (offset 124) */
+ /* _mesa_function_pool[30880]: TexCoord4s (offset 124) */
"iiii\0"
"glTexCoord4s\0"
"\0"
- /* _mesa_function_pool[28731]: TexCoord3sv (offset 117) */
+ /* _mesa_function_pool[30899]: TexCoord3sv (offset 117) */
"p\0"
"glTexCoord3sv\0"
"\0"
- /* _mesa_function_pool[28748]: BindFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[30916]: BindFragmentShaderATI (will be remapped) */
"i\0"
"glBindFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[28775]: PopAttrib (offset 218) */
+ /* _mesa_function_pool[30943]: PopAttrib (offset 218) */
"\0"
"glPopAttrib\0"
"\0"
- /* _mesa_function_pool[28789]: Fogfv (offset 154) */
+ /* _mesa_function_pool[30957]: Fogfv (offset 154) */
"ip\0"
"glFogfv\0"
"\0"
- /* _mesa_function_pool[28801]: UnmapBufferARB (will be remapped) */
+ /* _mesa_function_pool[30969]: UnmapBufferARB (will be remapped) */
"i\0"
"glUnmapBuffer\0"
"glUnmapBufferARB\0"
"\0"
- /* _mesa_function_pool[28835]: InitNames (offset 197) */
+ /* _mesa_function_pool[31003]: InitNames (offset 197) */
"\0"
"glInitNames\0"
"\0"
- /* _mesa_function_pool[28849]: Normal3sv (offset 61) */
+ /* _mesa_function_pool[31017]: Normal3sv (offset 61) */
"p\0"
"glNormal3sv\0"
"\0"
- /* _mesa_function_pool[28864]: Minmax (offset 368) */
+ /* _mesa_function_pool[31032]: Minmax (offset 368) */
"iii\0"
"glMinmax\0"
"glMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[28890]: TexCoord4d (offset 118) */
+ /* _mesa_function_pool[31058]: TexCoord4d (offset 118) */
"dddd\0"
"glTexCoord4d\0"
"\0"
- /* _mesa_function_pool[28909]: DeformationMap3dSGIX (dynamic) */
+ /* _mesa_function_pool[31077]: DeformationMap3dSGIX (dynamic) */
"iddiiddiiddiip\0"
"glDeformationMap3dSGIX\0"
"\0"
- /* _mesa_function_pool[28948]: TexCoord4f (offset 120) */
+ /* _mesa_function_pool[31116]: TexCoord4f (offset 120) */
"ffff\0"
"glTexCoord4f\0"
"\0"
- /* _mesa_function_pool[28967]: FogCoorddvEXT (will be remapped) */
+ /* _mesa_function_pool[31135]: FogCoorddvEXT (will be remapped) */
"p\0"
"glFogCoorddv\0"
"glFogCoorddvEXT\0"
"\0"
- /* _mesa_function_pool[28999]: FinishTextureSUNX (dynamic) */
+ /* _mesa_function_pool[31167]: FinishTextureSUNX (dynamic) */
"\0"
"glFinishTextureSUNX\0"
"\0"
- /* _mesa_function_pool[29021]: GetFragmentLightfvSGIX (dynamic) */
+ /* _mesa_function_pool[31189]: GetFragmentLightfvSGIX (dynamic) */
"iip\0"
"glGetFragmentLightfvSGIX\0"
"\0"
- /* _mesa_function_pool[29051]: Binormal3fvEXT (dynamic) */
+ /* _mesa_function_pool[31219]: Binormal3fvEXT (dynamic) */
"p\0"
"glBinormal3fvEXT\0"
"\0"
- /* _mesa_function_pool[29071]: GetBooleanv (offset 258) */
+ /* _mesa_function_pool[31239]: GetBooleanv (offset 258) */
"ip\0"
"glGetBooleanv\0"
"\0"
- /* _mesa_function_pool[29089]: ColorFragmentOp3ATI (will be remapped) */
+ /* _mesa_function_pool[31257]: ColorFragmentOp3ATI (will be remapped) */
"iiiiiiiiiiiii\0"
"glColorFragmentOp3ATI\0"
"\0"
- /* _mesa_function_pool[29126]: Hint (offset 158) */
+ /* _mesa_function_pool[31294]: Hint (offset 158) */
"ii\0"
"glHint\0"
"\0"
- /* _mesa_function_pool[29137]: Color4dv (offset 28) */
+ /* _mesa_function_pool[31305]: Color4dv (offset 28) */
"p\0"
"glColor4dv\0"
"\0"
- /* _mesa_function_pool[29151]: VertexAttrib2svARB (will be remapped) */
+ /* _mesa_function_pool[31319]: VertexAttrib2svARB (will be remapped) */
"ip\0"
"glVertexAttrib2sv\0"
"glVertexAttrib2svARB\0"
"\0"
- /* _mesa_function_pool[29194]: AreProgramsResidentNV (will be remapped) */
+ /* _mesa_function_pool[31362]: AreProgramsResidentNV (will be remapped) */
"ipp\0"
"glAreProgramsResidentNV\0"
"\0"
- /* _mesa_function_pool[29223]: WindowPos3svMESA (will be remapped) */
+ /* _mesa_function_pool[31391]: WindowPos3svMESA (will be remapped) */
"p\0"
"glWindowPos3sv\0"
"glWindowPos3svARB\0"
"glWindowPos3svMESA\0"
"\0"
- /* _mesa_function_pool[29278]: CopyColorSubTable (offset 347) */
+ /* _mesa_function_pool[31446]: CopyColorSubTable (offset 347) */
"iiiii\0"
"glCopyColorSubTable\0"
"glCopyColorSubTableEXT\0"
"\0"
- /* _mesa_function_pool[29328]: WeightdvARB (dynamic) */
+ /* _mesa_function_pool[31496]: WeightdvARB (dynamic) */
"ip\0"
"glWeightdvARB\0"
"\0"
- /* _mesa_function_pool[29346]: DeleteRenderbuffersEXT (will be remapped) */
+ /* _mesa_function_pool[31514]: DeleteRenderbuffersEXT (will be remapped) */
"ip\0"
"glDeleteRenderbuffers\0"
"glDeleteRenderbuffersEXT\0"
"\0"
- /* _mesa_function_pool[29397]: VertexAttrib4NubvARB (will be remapped) */
+ /* _mesa_function_pool[31565]: VertexAttrib4NubvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nubv\0"
"glVertexAttrib4NubvARB\0"
"\0"
- /* _mesa_function_pool[29444]: VertexAttrib3dvNV (will be remapped) */
+ /* _mesa_function_pool[31612]: VertexAttrib3dvNV (will be remapped) */
"ip\0"
"glVertexAttrib3dvNV\0"
"\0"
- /* _mesa_function_pool[29468]: GetObjectParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[31636]: GetObjectParameterfvARB (will be remapped) */
"iip\0"
"glGetObjectParameterfvARB\0"
"\0"
- /* _mesa_function_pool[29499]: Vertex4iv (offset 147) */
+ /* _mesa_function_pool[31667]: Vertex4iv (offset 147) */
"p\0"
"glVertex4iv\0"
"\0"
- /* _mesa_function_pool[29514]: GetProgramEnvParameterdvARB (will be remapped) */
+ /* _mesa_function_pool[31682]: GetProgramEnvParameterdvARB (will be remapped) */
"iip\0"
"glGetProgramEnvParameterdvARB\0"
"\0"
- /* _mesa_function_pool[29549]: TexCoord4dv (offset 119) */
+ /* _mesa_function_pool[31717]: TexCoord4dv (offset 119) */
"p\0"
"glTexCoord4dv\0"
"\0"
- /* _mesa_function_pool[29566]: LockArraysEXT (will be remapped) */
+ /* _mesa_function_pool[31734]: LockArraysEXT (will be remapped) */
"ii\0"
"glLockArraysEXT\0"
"\0"
- /* _mesa_function_pool[29586]: Begin (offset 7) */
+ /* _mesa_function_pool[31754]: Begin (offset 7) */
"i\0"
"glBegin\0"
"\0"
- /* _mesa_function_pool[29597]: LightModeli (offset 165) */
+ /* _mesa_function_pool[31765]: LightModeli (offset 165) */
"ii\0"
"glLightModeli\0"
"\0"
- /* _mesa_function_pool[29615]: Rectfv (offset 89) */
+ /* _mesa_function_pool[31783]: VertexAttribI4ivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI4ivEXT\0"
+ "glVertexAttribI4iv\0"
+ "\0"
+ /* _mesa_function_pool[31828]: Rectfv (offset 89) */
"pp\0"
"glRectfv\0"
"\0"
- /* _mesa_function_pool[29628]: LightModelf (offset 163) */
+ /* _mesa_function_pool[31841]: LightModelf (offset 163) */
"if\0"
"glLightModelf\0"
"\0"
- /* _mesa_function_pool[29646]: GetTexParameterfv (offset 282) */
+ /* _mesa_function_pool[31859]: GetTexParameterfv (offset 282) */
"iip\0"
"glGetTexParameterfv\0"
"\0"
- /* _mesa_function_pool[29671]: GetLightfv (offset 264) */
+ /* _mesa_function_pool[31884]: GetLightfv (offset 264) */
"iip\0"
"glGetLightfv\0"
"\0"
- /* _mesa_function_pool[29689]: PixelTransformParameterivEXT (dynamic) */
+ /* _mesa_function_pool[31902]: PixelTransformParameterivEXT (dynamic) */
"iip\0"
"glPixelTransformParameterivEXT\0"
"\0"
- /* _mesa_function_pool[29725]: BinormalPointerEXT (dynamic) */
+ /* _mesa_function_pool[31938]: BinormalPointerEXT (dynamic) */
"iip\0"
"glBinormalPointerEXT\0"
"\0"
- /* _mesa_function_pool[29751]: VertexAttrib1dNV (will be remapped) */
+ /* _mesa_function_pool[31964]: VertexAttrib1dNV (will be remapped) */
"id\0"
"glVertexAttrib1dNV\0"
"\0"
- /* _mesa_function_pool[29774]: GetCombinerInputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[31987]: GetCombinerInputParameterivNV (will be remapped) */
"iiiip\0"
"glGetCombinerInputParameterivNV\0"
"\0"
- /* _mesa_function_pool[29813]: Disable (offset 214) */
+ /* _mesa_function_pool[32026]: Disable (offset 214) */
"i\0"
"glDisable\0"
"\0"
- /* _mesa_function_pool[29826]: MultiTexCoord2fvARB (offset 387) */
+ /* _mesa_function_pool[32039]: MultiTexCoord2fvARB (offset 387) */
"ip\0"
"glMultiTexCoord2fv\0"
"glMultiTexCoord2fvARB\0"
"\0"
- /* _mesa_function_pool[29871]: GetRenderbufferParameterivEXT (will be remapped) */
+ /* _mesa_function_pool[32084]: GetRenderbufferParameterivEXT (will be remapped) */
"iip\0"
"glGetRenderbufferParameteriv\0"
"glGetRenderbufferParameterivEXT\0"
"\0"
- /* _mesa_function_pool[29937]: CombinerParameterivNV (will be remapped) */
+ /* _mesa_function_pool[32150]: CombinerParameterivNV (will be remapped) */
"ip\0"
"glCombinerParameterivNV\0"
"\0"
- /* _mesa_function_pool[29965]: GenFragmentShadersATI (will be remapped) */
+ /* _mesa_function_pool[32178]: GenFragmentShadersATI (will be remapped) */
"i\0"
"glGenFragmentShadersATI\0"
"\0"
- /* _mesa_function_pool[29992]: DrawArrays (offset 310) */
+ /* _mesa_function_pool[32205]: DrawArrays (offset 310) */
"iii\0"
"glDrawArrays\0"
"glDrawArraysEXT\0"
"\0"
- /* _mesa_function_pool[30026]: WeightuivARB (dynamic) */
+ /* _mesa_function_pool[32239]: WeightuivARB (dynamic) */
"ip\0"
"glWeightuivARB\0"
"\0"
- /* _mesa_function_pool[30045]: VertexAttrib2sARB (will be remapped) */
+ /* _mesa_function_pool[32258]: VertexAttrib2sARB (will be remapped) */
"iii\0"
"glVertexAttrib2s\0"
"glVertexAttrib2sARB\0"
"\0"
- /* _mesa_function_pool[30087]: ColorMask (offset 210) */
+ /* _mesa_function_pool[32300]: ColorMask (offset 210) */
"iiii\0"
"glColorMask\0"
"\0"
- /* _mesa_function_pool[30105]: GenAsyncMarkersSGIX (dynamic) */
+ /* _mesa_function_pool[32318]: GenAsyncMarkersSGIX (dynamic) */
"i\0"
"glGenAsyncMarkersSGIX\0"
"\0"
- /* _mesa_function_pool[30130]: Tangent3svEXT (dynamic) */
+ /* _mesa_function_pool[32343]: Tangent3svEXT (dynamic) */
"p\0"
"glTangent3svEXT\0"
"\0"
- /* _mesa_function_pool[30149]: GetListParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[32362]: GetListParameterivSGIX (dynamic) */
"iip\0"
"glGetListParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[30179]: BindBufferARB (will be remapped) */
+ /* _mesa_function_pool[32392]: BindBufferARB (will be remapped) */
"ii\0"
"glBindBuffer\0"
"glBindBufferARB\0"
"\0"
- /* _mesa_function_pool[30212]: GetInfoLogARB (will be remapped) */
+ /* _mesa_function_pool[32425]: GetInfoLogARB (will be remapped) */
"iipp\0"
"glGetInfoLogARB\0"
"\0"
- /* _mesa_function_pool[30234]: RasterPos4iv (offset 83) */
+ /* _mesa_function_pool[32447]: RasterPos4iv (offset 83) */
"p\0"
"glRasterPos4iv\0"
"\0"
- /* _mesa_function_pool[30252]: Enable (offset 215) */
+ /* _mesa_function_pool[32465]: Enable (offset 215) */
"i\0"
"glEnable\0"
"\0"
- /* _mesa_function_pool[30264]: LineStipple (offset 167) */
+ /* _mesa_function_pool[32477]: LineStipple (offset 167) */
"ii\0"
"glLineStipple\0"
"\0"
- /* _mesa_function_pool[30282]: VertexAttribs4svNV (will be remapped) */
+ /* _mesa_function_pool[32495]: VertexAttribs4svNV (will be remapped) */
"iip\0"
"glVertexAttribs4svNV\0"
"\0"
- /* _mesa_function_pool[30308]: EdgeFlagPointerListIBM (dynamic) */
+ /* _mesa_function_pool[32521]: EdgeFlagPointerListIBM (dynamic) */
"ipi\0"
"glEdgeFlagPointerListIBM\0"
"\0"
- /* _mesa_function_pool[30338]: UniformMatrix3x2fv (will be remapped) */
+ /* _mesa_function_pool[32551]: UniformMatrix3x2fv (will be remapped) */
"iiip\0"
"glUniformMatrix3x2fv\0"
"\0"
- /* _mesa_function_pool[30365]: GetMinmaxParameterfv (offset 365) */
+ /* _mesa_function_pool[32578]: GetMinmaxParameterfv (offset 365) */
"iip\0"
"glGetMinmaxParameterfv\0"
"glGetMinmaxParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[30419]: VertexAttrib1fvARB (will be remapped) */
+ /* _mesa_function_pool[32632]: VertexAttrib1fvARB (will be remapped) */
"ip\0"
"glVertexAttrib1fv\0"
"glVertexAttrib1fvARB\0"
"\0"
- /* _mesa_function_pool[30462]: GenBuffersARB (will be remapped) */
+ /* _mesa_function_pool[32675]: GenBuffersARB (will be remapped) */
"ip\0"
"glGenBuffers\0"
"glGenBuffersARB\0"
"\0"
- /* _mesa_function_pool[30495]: VertexAttribs1svNV (will be remapped) */
+ /* _mesa_function_pool[32708]: VertexAttribs1svNV (will be remapped) */
"iip\0"
"glVertexAttribs1svNV\0"
"\0"
- /* _mesa_function_pool[30521]: Vertex3fv (offset 137) */
+ /* _mesa_function_pool[32734]: Vertex3fv (offset 137) */
"p\0"
"glVertex3fv\0"
"\0"
- /* _mesa_function_pool[30536]: GetTexBumpParameterivATI (will be remapped) */
+ /* _mesa_function_pool[32749]: GetTexBumpParameterivATI (will be remapped) */
"ip\0"
"glGetTexBumpParameterivATI\0"
"\0"
- /* _mesa_function_pool[30567]: Binormal3bEXT (dynamic) */
+ /* _mesa_function_pool[32780]: Binormal3bEXT (dynamic) */
"iii\0"
"glBinormal3bEXT\0"
"\0"
- /* _mesa_function_pool[30588]: FragmentMaterialivSGIX (dynamic) */
+ /* _mesa_function_pool[32801]: FragmentMaterialivSGIX (dynamic) */
"iip\0"
"glFragmentMaterialivSGIX\0"
"\0"
- /* _mesa_function_pool[30618]: IsRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[32831]: IsRenderbufferEXT (will be remapped) */
"i\0"
"glIsRenderbuffer\0"
"glIsRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[30658]: GenProgramsNV (will be remapped) */
+ /* _mesa_function_pool[32871]: GenProgramsNV (will be remapped) */
"ip\0"
"glGenProgramsARB\0"
"glGenProgramsNV\0"
"\0"
- /* _mesa_function_pool[30695]: VertexAttrib4dvNV (will be remapped) */
+ /* _mesa_function_pool[32908]: VertexAttrib4dvNV (will be remapped) */
"ip\0"
"glVertexAttrib4dvNV\0"
"\0"
- /* _mesa_function_pool[30719]: EndFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[32932]: EndFragmentShaderATI (will be remapped) */
"\0"
"glEndFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[30744]: Binormal3iEXT (dynamic) */
+ /* _mesa_function_pool[32957]: Binormal3iEXT (dynamic) */
"iii\0"
"glBinormal3iEXT\0"
"\0"
- /* _mesa_function_pool[30765]: WindowPos2fMESA (will be remapped) */
+ /* _mesa_function_pool[32978]: WindowPos2fMESA (will be remapped) */
"ff\0"
"glWindowPos2f\0"
"glWindowPos2fARB\0"
@@ -4476,535 +4739,589 @@ static const char _mesa_function_pool[] =
/* these functions need to be remapped */
static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
- { 1461, AttachShader_remap_index },
- { 8995, CreateProgram_remap_index },
- { 21182, CreateShader_remap_index },
- { 23495, DeleteProgram_remap_index },
- { 16966, DeleteShader_remap_index },
- { 21628, DetachShader_remap_index },
- { 16490, GetAttachedShaders_remap_index },
- { 4275, GetProgramInfoLog_remap_index },
- { 361, GetProgramiv_remap_index },
- { 5721, GetShaderInfoLog_remap_index },
- { 28671, GetShaderiv_remap_index },
- { 12198, IsProgram_remap_index },
- { 11197, IsShader_remap_index },
- { 9099, StencilFuncSeparate_remap_index },
- { 3487, StencilMaskSeparate_remap_index },
- { 6803, StencilOpSeparate_remap_index },
- { 20507, UniformMatrix2x3fv_remap_index },
- { 2615, UniformMatrix2x4fv_remap_index },
- { 30338, UniformMatrix3x2fv_remap_index },
- { 28038, UniformMatrix3x4fv_remap_index },
- { 14961, UniformMatrix4x2fv_remap_index },
- { 2937, UniformMatrix4x3fv_remap_index },
- { 14622, DrawArraysInstanced_remap_index },
- { 15754, DrawElementsInstanced_remap_index },
- { 9013, LoadTransposeMatrixdARB_remap_index },
- { 28400, LoadTransposeMatrixfARB_remap_index },
- { 4904, MultTransposeMatrixdARB_remap_index },
- { 21815, MultTransposeMatrixfARB_remap_index },
- { 172, SampleCoverageARB_remap_index },
- { 5117, CompressedTexImage1DARB_remap_index },
- { 22298, CompressedTexImage2DARB_remap_index },
- { 3550, CompressedTexImage3DARB_remap_index },
- { 16782, CompressedTexSubImage1DARB_remap_index },
- { 1880, CompressedTexSubImage2DARB_remap_index },
- { 18643, CompressedTexSubImage3DARB_remap_index },
- { 26320, GetCompressedTexImageARB_remap_index },
- { 3395, DisableVertexAttribArrayARB_remap_index },
- { 27650, EnableVertexAttribArrayARB_remap_index },
- { 29514, GetProgramEnvParameterdvARB_remap_index },
- { 21695, GetProgramEnvParameterfvARB_remap_index },
- { 25319, GetProgramLocalParameterdvARB_remap_index },
- { 7245, GetProgramLocalParameterfvARB_remap_index },
- { 16873, GetProgramStringARB_remap_index },
- { 25514, GetProgramivARB_remap_index },
- { 18838, GetVertexAttribdvARB_remap_index },
- { 14850, GetVertexAttribfvARB_remap_index },
- { 8908, GetVertexAttribivARB_remap_index },
- { 17719, ProgramEnvParameter4dARB_remap_index },
- { 23268, ProgramEnvParameter4dvARB_remap_index },
- { 15458, ProgramEnvParameter4fARB_remap_index },
- { 8108, ProgramEnvParameter4fvARB_remap_index },
- { 3513, ProgramLocalParameter4dARB_remap_index },
- { 11908, ProgramLocalParameter4dvARB_remap_index },
- { 27129, ProgramLocalParameter4fARB_remap_index },
- { 23848, ProgramLocalParameter4fvARB_remap_index },
- { 26100, ProgramStringARB_remap_index },
- { 17969, VertexAttrib1dARB_remap_index },
- { 14426, VertexAttrib1dvARB_remap_index },
- { 3688, VertexAttrib1fARB_remap_index },
- { 30419, VertexAttrib1fvARB_remap_index },
- { 6329, VertexAttrib1sARB_remap_index },
- { 2054, VertexAttrib1svARB_remap_index },
- { 13857, VertexAttrib2dARB_remap_index },
- { 16109, VertexAttrib2dvARB_remap_index },
- { 1480, VertexAttrib2fARB_remap_index },
- { 16222, VertexAttrib2fvARB_remap_index },
- { 30045, VertexAttrib2sARB_remap_index },
- { 29151, VertexAttrib2svARB_remap_index },
- { 10282, VertexAttrib3dARB_remap_index },
- { 7811, VertexAttrib3dvARB_remap_index },
- { 1567, VertexAttrib3fARB_remap_index },
- { 20770, VertexAttrib3fvARB_remap_index },
- { 25947, VertexAttrib3sARB_remap_index },
- { 18580, VertexAttrib3svARB_remap_index },
- { 4301, VertexAttrib4NbvARB_remap_index },
- { 16445, VertexAttrib4NivARB_remap_index },
- { 20725, VertexAttrib4NsvARB_remap_index },
- { 21647, VertexAttrib4NubARB_remap_index },
- { 29397, VertexAttrib4NubvARB_remap_index },
- { 17380, VertexAttrib4NuivARB_remap_index },
- { 2810, VertexAttrib4NusvARB_remap_index },
- { 9876, VertexAttrib4bvARB_remap_index },
- { 24727, VertexAttrib4dARB_remap_index },
- { 19602, VertexAttrib4dvARB_remap_index },
- { 10389, VertexAttrib4fARB_remap_index },
- { 10793, VertexAttrib4fvARB_remap_index },
- { 9292, VertexAttrib4ivARB_remap_index },
- { 15923, VertexAttrib4sARB_remap_index },
- { 28586, VertexAttrib4svARB_remap_index },
- { 15263, VertexAttrib4ubvARB_remap_index },
- { 27974, VertexAttrib4uivARB_remap_index },
- { 18391, VertexAttrib4usvARB_remap_index },
- { 20356, VertexAttribPointerARB_remap_index },
- { 30179, BindBufferARB_remap_index },
- { 6036, BufferDataARB_remap_index },
- { 1382, BufferSubDataARB_remap_index },
- { 28163, DeleteBuffersARB_remap_index },
- { 30462, GenBuffersARB_remap_index },
- { 16265, GetBufferParameterivARB_remap_index },
- { 15410, GetBufferPointervARB_remap_index },
- { 1335, GetBufferSubDataARB_remap_index },
- { 27922, IsBufferARB_remap_index },
- { 24332, MapBufferARB_remap_index },
- { 28801, UnmapBufferARB_remap_index },
- { 268, BeginQueryARB_remap_index },
- { 18064, DeleteQueriesARB_remap_index },
- { 11087, EndQueryARB_remap_index },
- { 26799, GenQueriesARB_remap_index },
- { 1772, GetQueryObjectivARB_remap_index },
- { 15967, GetQueryObjectuivARB_remap_index },
- { 1624, GetQueryivARB_remap_index },
- { 18298, IsQueryARB_remap_index },
- { 7421, AttachObjectARB_remap_index },
- { 16928, CompileShaderARB_remap_index },
- { 2879, CreateProgramObjectARB_remap_index },
- { 5981, CreateShaderObjectARB_remap_index },
- { 13274, DeleteObjectARB_remap_index },
- { 22089, DetachObjectARB_remap_index },
- { 10865, GetActiveUniformARB_remap_index },
- { 8583, GetAttachedObjectsARB_remap_index },
- { 8890, GetHandleARB_remap_index },
- { 30212, GetInfoLogARB_remap_index },
- { 29468, GetObjectParameterfvARB_remap_index },
- { 25193, GetObjectParameterivARB_remap_index },
- { 26557, GetShaderSourceARB_remap_index },
- { 25807, GetUniformLocationARB_remap_index },
- { 21917, GetUniformfvARB_remap_index },
- { 11530, GetUniformivARB_remap_index },
- { 18436, LinkProgramARB_remap_index },
- { 18494, ShaderSourceARB_remap_index },
- { 6703, Uniform1fARB_remap_index },
- { 27338, Uniform1fvARB_remap_index },
- { 20325, Uniform1iARB_remap_index },
- { 19291, Uniform1ivARB_remap_index },
- { 2003, Uniform2fARB_remap_index },
- { 13110, Uniform2fvARB_remap_index },
- { 24219, Uniform2iARB_remap_index },
- { 2123, Uniform2ivARB_remap_index },
- { 17038, Uniform3fARB_remap_index },
- { 8613, Uniform3fvARB_remap_index },
- { 5627, Uniform3iARB_remap_index },
- { 15516, Uniform3ivARB_remap_index },
- { 17525, Uniform4fARB_remap_index },
- { 21781, Uniform4fvARB_remap_index },
- { 22947, Uniform4iARB_remap_index },
- { 18804, Uniform4ivARB_remap_index },
- { 7473, UniformMatrix2fvARB_remap_index },
+ { 1577, AttachShader_remap_index },
+ { 9902, CreateProgram_remap_index },
+ { 22864, CreateShader_remap_index },
+ { 25322, DeleteProgram_remap_index },
+ { 18525, DeleteShader_remap_index },
+ { 23336, DetachShader_remap_index },
+ { 17928, GetAttachedShaders_remap_index },
+ { 4869, GetProgramInfoLog_remap_index },
+ { 405, GetProgramiv_remap_index },
+ { 6542, GetShaderInfoLog_remap_index },
+ { 30839, GetShaderiv_remap_index },
+ { 13311, IsProgram_remap_index },
+ { 12263, IsShader_remap_index },
+ { 10006, StencilFuncSeparate_remap_index },
+ { 3921, StencilMaskSeparate_remap_index },
+ { 7624, StencilOpSeparate_remap_index },
+ { 22152, UniformMatrix2x3fv_remap_index },
+ { 2847, UniformMatrix2x4fv_remap_index },
+ { 32551, UniformMatrix3x2fv_remap_index },
+ { 30161, UniformMatrix3x4fv_remap_index },
+ { 16226, UniformMatrix4x2fv_remap_index },
+ { 3263, UniformMatrix4x3fv_remap_index },
+ { 5030, ClampColor_remap_index },
+ { 17982, ClearBufferfi_remap_index },
+ { 17448, ClearBufferfv_remap_index },
+ { 29184, ClearBufferiv_remap_index },
+ { 13516, ClearBufferuiv_remap_index },
+ { 19808, GetStringi_remap_index },
+ { 2788, TexBuffer_remap_index },
+ { 938, FramebufferTexture_remap_index },
+ { 26315, GetBufferParameteri64v_remap_index },
+ { 10106, GetInteger64i_v_remap_index },
+ { 23178, VertexAttribDivisor_remap_index },
+ { 9920, LoadTransposeMatrixdARB_remap_index },
+ { 30568, LoadTransposeMatrixfARB_remap_index },
+ { 5608, MultTransposeMatrixdARB_remap_index },
+ { 23523, MultTransposeMatrixfARB_remap_index },
+ { 216, SampleCoverageARB_remap_index },
+ { 5834, CompressedTexImage1DARB_remap_index },
+ { 24051, CompressedTexImage2DARB_remap_index },
+ { 3984, CompressedTexImage3DARB_remap_index },
+ { 18242, CompressedTexSubImage1DARB_remap_index },
+ { 2050, CompressedTexSubImage2DARB_remap_index },
+ { 20230, CompressedTexSubImage3DARB_remap_index },
+ { 28340, GetCompressedTexImageARB_remap_index },
+ { 3829, DisableVertexAttribArrayARB_remap_index },
+ { 29726, EnableVertexAttribArrayARB_remap_index },
+ { 31682, GetProgramEnvParameterdvARB_remap_index },
+ { 23403, GetProgramEnvParameterfvARB_remap_index },
+ { 27277, GetProgramLocalParameterdvARB_remap_index },
+ { 8066, GetProgramLocalParameterfvARB_remap_index },
+ { 18376, GetProgramStringARB_remap_index },
+ { 27472, GetProgramivARB_remap_index },
+ { 20425, GetVertexAttribdvARB_remap_index },
+ { 16034, GetVertexAttribfvARB_remap_index },
+ { 9765, GetVertexAttribivARB_remap_index },
+ { 19289, ProgramEnvParameter4dARB_remap_index },
+ { 25072, ProgramEnvParameter4dvARB_remap_index },
+ { 16770, ProgramEnvParameter4fARB_remap_index },
+ { 8965, ProgramEnvParameter4fvARB_remap_index },
+ { 3947, ProgramLocalParameter4dARB_remap_index },
+ { 13021, ProgramLocalParameter4dvARB_remap_index },
+ { 29205, ProgramLocalParameter4fARB_remap_index },
+ { 25675, ProgramLocalParameter4fvARB_remap_index },
+ { 28094, ProgramStringARB_remap_index },
+ { 19539, VertexAttrib1dARB_remap_index },
+ { 15688, VertexAttrib1dvARB_remap_index },
+ { 4122, VertexAttrib1fARB_remap_index },
+ { 32632, VertexAttrib1fvARB_remap_index },
+ { 7150, VertexAttrib1sARB_remap_index },
+ { 2224, VertexAttrib1svARB_remap_index },
+ { 15119, VertexAttrib2dARB_remap_index },
+ { 17469, VertexAttrib2dvARB_remap_index },
+ { 1596, VertexAttrib2fARB_remap_index },
+ { 17582, VertexAttrib2fvARB_remap_index },
+ { 32258, VertexAttrib2sARB_remap_index },
+ { 31319, VertexAttrib2svARB_remap_index },
+ { 11268, VertexAttrib3dARB_remap_index },
+ { 8632, VertexAttrib3dvARB_remap_index },
+ { 1683, VertexAttrib3fARB_remap_index },
+ { 22415, VertexAttrib3fvARB_remap_index },
+ { 27941, VertexAttrib3sARB_remap_index },
+ { 20167, VertexAttrib3svARB_remap_index },
+ { 4895, VertexAttrib4NbvARB_remap_index },
+ { 17805, VertexAttrib4NivARB_remap_index },
+ { 22370, VertexAttrib4NsvARB_remap_index },
+ { 23355, VertexAttrib4NubARB_remap_index },
+ { 31565, VertexAttrib4NubvARB_remap_index },
+ { 18950, VertexAttrib4NuivARB_remap_index },
+ { 3136, VertexAttrib4NusvARB_remap_index },
+ { 10846, VertexAttrib4bvARB_remap_index },
+ { 26685, VertexAttrib4dARB_remap_index },
+ { 21189, VertexAttrib4dvARB_remap_index },
+ { 11422, VertexAttrib4fARB_remap_index },
+ { 11826, VertexAttrib4fvARB_remap_index },
+ { 10222, VertexAttrib4ivARB_remap_index },
+ { 17262, VertexAttrib4sARB_remap_index },
+ { 30754, VertexAttrib4svARB_remap_index },
+ { 16575, VertexAttrib4ubvARB_remap_index },
+ { 30050, VertexAttrib4uivARB_remap_index },
+ { 19978, VertexAttrib4usvARB_remap_index },
+ { 21967, VertexAttribPointerARB_remap_index },
+ { 32392, BindBufferARB_remap_index },
+ { 6857, BufferDataARB_remap_index },
+ { 1498, BufferSubDataARB_remap_index },
+ { 30331, DeleteBuffersARB_remap_index },
+ { 32675, GenBuffersARB_remap_index },
+ { 17625, GetBufferParameterivARB_remap_index },
+ { 16722, GetBufferPointervARB_remap_index },
+ { 1451, GetBufferSubDataARB_remap_index },
+ { 29998, IsBufferARB_remap_index },
+ { 26159, MapBufferARB_remap_index },
+ { 30969, UnmapBufferARB_remap_index },
+ { 312, BeginQueryARB_remap_index },
+ { 19634, DeleteQueriesARB_remap_index },
+ { 12153, EndQueryARB_remap_index },
+ { 28819, GenQueriesARB_remap_index },
+ { 1942, GetQueryObjectivARB_remap_index },
+ { 17306, GetQueryObjectuivARB_remap_index },
+ { 1740, GetQueryivARB_remap_index },
+ { 19885, IsQueryARB_remap_index },
+ { 8242, AttachObjectARB_remap_index },
+ { 18487, CompileShaderARB_remap_index },
+ { 3205, CreateProgramObjectARB_remap_index },
+ { 6802, CreateShaderObjectARB_remap_index },
+ { 14454, DeleteObjectARB_remap_index },
+ { 23842, DetachObjectARB_remap_index },
+ { 11898, GetActiveUniformARB_remap_index },
+ { 9440, GetAttachedObjectsARB_remap_index },
+ { 9747, GetHandleARB_remap_index },
+ { 32425, GetInfoLogARB_remap_index },
+ { 31636, GetObjectParameterfvARB_remap_index },
+ { 27151, GetObjectParameterivARB_remap_index },
+ { 28577, GetShaderSourceARB_remap_index },
+ { 27801, GetUniformLocationARB_remap_index },
+ { 23625, GetUniformfvARB_remap_index },
+ { 12596, GetUniformivARB_remap_index },
+ { 20023, LinkProgramARB_remap_index },
+ { 20081, ShaderSourceARB_remap_index },
+ { 7524, Uniform1fARB_remap_index },
+ { 29414, Uniform1fvARB_remap_index },
+ { 21936, Uniform1iARB_remap_index },
+ { 20878, Uniform1ivARB_remap_index },
+ { 2173, Uniform2fARB_remap_index },
+ { 14290, Uniform2fvARB_remap_index },
+ { 26046, Uniform2iARB_remap_index },
+ { 2293, Uniform2ivARB_remap_index },
+ { 18597, Uniform3fARB_remap_index },
+ { 9470, Uniform3fvARB_remap_index },
+ { 6396, Uniform3iARB_remap_index },
+ { 16828, Uniform3ivARB_remap_index },
+ { 19095, Uniform4fARB_remap_index },
+ { 23489, Uniform4fvARB_remap_index },
+ { 24751, Uniform4iARB_remap_index },
+ { 20391, Uniform4ivARB_remap_index },
+ { 8294, UniformMatrix2fvARB_remap_index },
{ 17, UniformMatrix3fvARB_remap_index },
- { 2475, UniformMatrix4fvARB_remap_index },
- { 23380, UseProgramObjectARB_remap_index },
- { 13545, ValidateProgramARB_remap_index },
- { 19645, BindAttribLocationARB_remap_index },
- { 4346, GetActiveAttribARB_remap_index },
- { 15197, GetAttribLocationARB_remap_index },
- { 27077, DrawBuffersARB_remap_index },
- { 12013, RenderbufferStorageMultisample_remap_index },
- { 12417, FramebufferTextureARB_remap_index },
- { 23750, FramebufferTextureFaceARB_remap_index },
- { 22238, ProgramParameteriARB_remap_index },
- { 17573, FlushMappedBufferRange_remap_index },
- { 25610, MapBufferRange_remap_index },
- { 15072, BindVertexArray_remap_index },
- { 13404, GenVertexArrays_remap_index },
- { 27852, CopyBufferSubData_remap_index },
- { 28690, ClientWaitSync_remap_index },
- { 2394, DeleteSync_remap_index },
- { 6370, FenceSync_remap_index },
- { 13916, GetInteger64v_remap_index },
- { 20832, GetSynciv_remap_index },
- { 27016, IsSync_remap_index },
- { 8531, WaitSync_remap_index },
- { 3363, DrawElementsBaseVertex_remap_index },
- { 28095, DrawRangeElementsBaseVertex_remap_index },
- { 24363, MultiDrawElementsBaseVertex_remap_index },
- { 4480, BindTransformFeedback_remap_index },
- { 2906, DeleteTransformFeedbacks_remap_index },
- { 5660, DrawTransformFeedback_remap_index },
- { 8750, GenTransformFeedbacks_remap_index },
- { 25990, IsTransformFeedback_remap_index },
- { 23943, PauseTransformFeedback_remap_index },
- { 4824, ResumeTransformFeedback_remap_index },
- { 4739, PolygonOffsetEXT_remap_index },
- { 21417, GetPixelTexGenParameterfvSGIS_remap_index },
- { 3895, GetPixelTexGenParameterivSGIS_remap_index },
- { 21150, PixelTexGenParameterfSGIS_remap_index },
- { 580, PixelTexGenParameterfvSGIS_remap_index },
- { 11568, PixelTexGenParameteriSGIS_remap_index },
- { 12591, PixelTexGenParameterivSGIS_remap_index },
- { 15160, SampleMaskSGIS_remap_index },
- { 18238, SamplePatternSGIS_remap_index },
- { 24292, ColorPointerEXT_remap_index },
- { 16152, EdgeFlagPointerEXT_remap_index },
- { 5281, IndexPointerEXT_remap_index },
- { 5361, NormalPointerEXT_remap_index },
- { 14510, TexCoordPointerEXT_remap_index },
- { 6159, VertexPointerEXT_remap_index },
- { 3165, PointParameterfEXT_remap_index },
- { 7010, PointParameterfvEXT_remap_index },
- { 29566, LockArraysEXT_remap_index },
- { 13609, UnlockArraysEXT_remap_index },
- { 1151, SecondaryColor3bEXT_remap_index },
- { 7169, SecondaryColor3bvEXT_remap_index },
- { 9469, SecondaryColor3dEXT_remap_index },
- { 23553, SecondaryColor3dvEXT_remap_index },
- { 25856, SecondaryColor3fEXT_remap_index },
- { 16718, SecondaryColor3fvEXT_remap_index },
- { 426, SecondaryColor3iEXT_remap_index },
- { 14898, SecondaryColor3ivEXT_remap_index },
- { 9127, SecondaryColor3sEXT_remap_index },
- { 28354, SecondaryColor3svEXT_remap_index },
- { 25029, SecondaryColor3ubEXT_remap_index },
- { 19536, SecondaryColor3ubvEXT_remap_index },
- { 11763, SecondaryColor3uiEXT_remap_index },
- { 21037, SecondaryColor3uivEXT_remap_index },
- { 23800, SecondaryColor3usEXT_remap_index },
- { 11836, SecondaryColor3usvEXT_remap_index },
- { 10736, SecondaryColorPointerEXT_remap_index },
- { 23614, MultiDrawArraysEXT_remap_index },
- { 19226, MultiDrawElementsEXT_remap_index },
- { 19421, FogCoordPointerEXT_remap_index },
- { 4044, FogCoorddEXT_remap_index },
- { 28967, FogCoorddvEXT_remap_index },
- { 4136, FogCoordfEXT_remap_index },
- { 24952, FogCoordfvEXT_remap_index },
- { 17477, PixelTexGenSGIX_remap_index },
- { 25537, BlendFuncSeparateEXT_remap_index },
- { 6071, FlushVertexArrayRangeNV_remap_index },
- { 4688, VertexArrayRangeNV_remap_index },
- { 25921, CombinerInputNV_remap_index },
- { 1946, CombinerOutputNV_remap_index },
- { 28507, CombinerParameterfNV_remap_index },
- { 4608, CombinerParameterfvNV_remap_index },
- { 20556, CombinerParameteriNV_remap_index },
- { 29937, CombinerParameterivNV_remap_index },
- { 6447, FinalCombinerInputNV_remap_index },
- { 8956, GetCombinerInputParameterfvNV_remap_index },
- { 29774, GetCombinerInputParameterivNV_remap_index },
- { 12692, GetCombinerOutputParameterfvNV_remap_index },
- { 12520, GetCombinerOutputParameterivNV_remap_index },
- { 5816, GetFinalCombinerInputParameterfvNV_remap_index },
- { 22819, GetFinalCombinerInputParameterivNV_remap_index },
- { 11508, ResizeBuffersMESA_remap_index },
- { 10109, WindowPos2dMESA_remap_index },
- { 944, WindowPos2dvMESA_remap_index },
- { 30765, WindowPos2fMESA_remap_index },
- { 7114, WindowPos2fvMESA_remap_index },
- { 16665, WindowPos2iMESA_remap_index },
- { 18711, WindowPos2ivMESA_remap_index },
- { 19325, WindowPos2sMESA_remap_index },
- { 5031, WindowPos2svMESA_remap_index },
- { 6939, WindowPos3dMESA_remap_index },
- { 12838, WindowPos3dvMESA_remap_index },
- { 472, WindowPos3fMESA_remap_index },
- { 13670, WindowPos3fvMESA_remap_index },
- { 22131, WindowPos3iMESA_remap_index },
- { 27797, WindowPos3ivMESA_remap_index },
- { 17183, WindowPos3sMESA_remap_index },
- { 29223, WindowPos3svMESA_remap_index },
- { 10060, WindowPos4dMESA_remap_index },
- { 15630, WindowPos4dvMESA_remap_index },
- { 12797, WindowPos4fMESA_remap_index },
- { 28261, WindowPos4fvMESA_remap_index },
- { 27950, WindowPos4iMESA_remap_index },
- { 11311, WindowPos4ivMESA_remap_index },
- { 17356, WindowPos4sMESA_remap_index },
- { 2857, WindowPos4svMESA_remap_index },
- { 12559, MultiModeDrawArraysIBM_remap_index },
- { 26670, MultiModeDrawElementsIBM_remap_index },
- { 11115, DeleteFencesNV_remap_index },
- { 25768, FinishFenceNV_remap_index },
- { 3287, GenFencesNV_remap_index },
- { 15610, GetFenceivNV_remap_index },
- { 7406, IsFenceNV_remap_index },
- { 12447, SetFenceNV_remap_index },
- { 3744, TestFenceNV_remap_index },
- { 29194, AreProgramsResidentNV_remap_index },
- { 28549, BindProgramNV_remap_index },
- { 23883, DeleteProgramsNV_remap_index },
- { 19754, ExecuteProgramNV_remap_index },
- { 30658, GenProgramsNV_remap_index },
- { 21496, GetProgramParameterdvNV_remap_index },
- { 9531, GetProgramParameterfvNV_remap_index },
- { 24266, GetProgramStringNV_remap_index },
- { 22508, GetProgramivNV_remap_index },
- { 21730, GetTrackMatrixivNV_remap_index },
- { 24060, GetVertexAttribPointervNV_remap_index },
- { 22752, GetVertexAttribdvNV_remap_index },
- { 8426, GetVertexAttribfvNV_remap_index },
- { 16846, GetVertexAttribivNV_remap_index },
- { 17603, IsProgramNV_remap_index },
- { 8509, LoadProgramNV_remap_index },
- { 25633, ProgramParameters4dvNV_remap_index },
- { 22438, ProgramParameters4fvNV_remap_index },
- { 19015, RequestResidentProgramsNV_remap_index },
- { 20534, TrackMatrixNV_remap_index },
- { 29751, VertexAttrib1dNV_remap_index },
- { 12358, VertexAttrib1dvNV_remap_index },
- { 26202, VertexAttrib1fNV_remap_index },
- { 2245, VertexAttrib1fvNV_remap_index },
- { 28318, VertexAttrib1sNV_remap_index },
- { 13743, VertexAttrib1svNV_remap_index },
- { 4251, VertexAttrib2dNV_remap_index },
- { 12273, VertexAttrib2dvNV_remap_index },
- { 18470, VertexAttrib2fNV_remap_index },
- { 11884, VertexAttrib2fvNV_remap_index },
- { 5191, VertexAttrib2sNV_remap_index },
- { 17237, VertexAttrib2svNV_remap_index },
- { 10257, VertexAttrib3dNV_remap_index },
- { 29444, VertexAttrib3dvNV_remap_index },
- { 9343, VertexAttrib3fNV_remap_index },
- { 22779, VertexAttrib3fvNV_remap_index },
- { 20411, VertexAttrib3sNV_remap_index },
- { 21757, VertexAttrib3svNV_remap_index },
- { 26644, VertexAttrib4dNV_remap_index },
- { 30695, VertexAttrib4dvNV_remap_index },
- { 3945, VertexAttrib4fNV_remap_index },
- { 8559, VertexAttrib4fvNV_remap_index },
- { 24611, VertexAttrib4sNV_remap_index },
- { 1293, VertexAttrib4svNV_remap_index },
- { 4409, VertexAttrib4ubNV_remap_index },
- { 734, VertexAttrib4ubvNV_remap_index },
- { 19934, VertexAttribPointerNV_remap_index },
- { 2097, VertexAttribs1dvNV_remap_index },
- { 24148, VertexAttribs1fvNV_remap_index },
- { 30495, VertexAttribs1svNV_remap_index },
- { 9368, VertexAttribs2dvNV_remap_index },
- { 23341, VertexAttribs2fvNV_remap_index },
- { 16178, VertexAttribs2svNV_remap_index },
- { 4636, VertexAttribs3dvNV_remap_index },
- { 1977, VertexAttribs3fvNV_remap_index },
- { 27545, VertexAttribs3svNV_remap_index },
- { 24701, VertexAttribs4dvNV_remap_index },
- { 4662, VertexAttribs4fvNV_remap_index },
- { 30282, VertexAttribs4svNV_remap_index },
- { 27293, VertexAttribs4ubvNV_remap_index },
- { 24771, GetTexBumpParameterfvATI_remap_index },
- { 30536, GetTexBumpParameterivATI_remap_index },
- { 16900, TexBumpParameterfvATI_remap_index },
- { 18886, TexBumpParameterivATI_remap_index },
- { 14289, AlphaFragmentOp1ATI_remap_index },
- { 9919, AlphaFragmentOp2ATI_remap_index },
- { 22695, AlphaFragmentOp3ATI_remap_index },
- { 27472, BeginFragmentShaderATI_remap_index },
- { 28748, BindFragmentShaderATI_remap_index },
- { 21886, ColorFragmentOp1ATI_remap_index },
- { 3823, ColorFragmentOp2ATI_remap_index },
- { 29089, ColorFragmentOp3ATI_remap_index },
- { 4781, DeleteFragmentShaderATI_remap_index },
- { 30719, EndFragmentShaderATI_remap_index },
- { 29965, GenFragmentShadersATI_remap_index },
- { 23472, PassTexCoordATI_remap_index },
- { 6139, SampleMapATI_remap_index },
- { 5912, SetFragmentShaderConstantATI_remap_index },
- { 319, PointParameteriNV_remap_index },
- { 12999, PointParameterivNV_remap_index },
- { 26483, ActiveStencilFaceEXT_remap_index },
- { 25293, BindVertexArrayAPPLE_remap_index },
- { 2522, DeleteVertexArraysAPPLE_remap_index },
- { 16517, GenVertexArraysAPPLE_remap_index },
- { 21561, IsVertexArrayAPPLE_remap_index },
- { 775, GetProgramNamedParameterdvNV_remap_index },
- { 3128, GetProgramNamedParameterfvNV_remap_index },
- { 24802, ProgramNamedParameter4dNV_remap_index },
- { 13325, ProgramNamedParameter4dvNV_remap_index },
- { 8042, ProgramNamedParameter4fNV_remap_index },
- { 10701, ProgramNamedParameter4fvNV_remap_index },
- { 15565, PrimitiveRestartIndexNV_remap_index },
- { 28238, PrimitiveRestartNV_remap_index },
- { 22417, DepthBoundsEXT_remap_index },
- { 1043, BlendEquationSeparateEXT_remap_index },
- { 13444, BindFramebufferEXT_remap_index },
- { 23659, BindRenderbufferEXT_remap_index },
- { 8806, CheckFramebufferStatusEXT_remap_index },
- { 20851, DeleteFramebuffersEXT_remap_index },
- { 29346, DeleteRenderbuffersEXT_remap_index },
- { 12297, FramebufferRenderbufferEXT_remap_index },
- { 12464, FramebufferTexture1DEXT_remap_index },
- { 10495, FramebufferTexture2DEXT_remap_index },
- { 10162, FramebufferTexture3DEXT_remap_index },
- { 21453, GenFramebuffersEXT_remap_index },
- { 16064, GenRenderbuffersEXT_remap_index },
- { 5858, GenerateMipmapEXT_remap_index },
- { 20031, GetFramebufferAttachmentParameterivEXT_remap_index },
- { 29871, GetRenderbufferParameterivEXT_remap_index },
- { 18766, IsFramebufferEXT_remap_index },
- { 30618, IsRenderbufferEXT_remap_index },
- { 7353, RenderbufferStorageEXT_remap_index },
- { 651, BlitFramebufferEXT_remap_index },
- { 13144, BufferParameteriAPPLE_remap_index },
- { 17635, FlushMappedBufferRangeAPPLE_remap_index },
- { 2701, FramebufferTextureLayerEXT_remap_index },
- { 4956, ColorMaskIndexedEXT_remap_index },
- { 17261, DisableIndexedEXT_remap_index },
- { 24458, EnableIndexedEXT_remap_index },
- { 20002, GetBooleanIndexedvEXT_remap_index },
- { 9952, GetIntegerIndexedvEXT_remap_index },
- { 20927, IsEnabledIndexedEXT_remap_index },
- { 4074, BeginConditionalRenderNV_remap_index },
- { 23445, EndConditionalRenderNV_remap_index },
- { 8453, BeginTransformFeedbackEXT_remap_index },
- { 17285, BindBufferBaseEXT_remap_index },
- { 17155, BindBufferOffsetEXT_remap_index },
- { 11136, BindBufferRangeEXT_remap_index },
- { 13059, EndTransformFeedbackEXT_remap_index },
- { 9804, GetTransformFeedbackVaryingEXT_remap_index },
- { 19071, TransformFeedbackVaryingsEXT_remap_index },
- { 27194, ProvokingVertexEXT_remap_index },
- { 9752, GetTexParameterPointervAPPLE_remap_index },
- { 4436, TextureRangeAPPLE_remap_index },
- { 10567, GetObjectParameterivAPPLE_remap_index },
- { 18210, ObjectPurgeableAPPLE_remap_index },
- { 4985, ObjectUnpurgeableAPPLE_remap_index },
- { 26509, StencilFuncSeparateATI_remap_index },
- { 16584, ProgramEnvParameters4fvEXT_remap_index },
- { 19965, ProgramLocalParameters4fvEXT_remap_index },
- { 12927, GetQueryObjecti64vEXT_remap_index },
- { 9394, GetQueryObjectui64vEXT_remap_index },
- { 21955, EGLImageTargetRenderbufferStorageOES_remap_index },
- { 11054, EGLImageTargetTexture2DOES_remap_index },
+ { 2690, UniformMatrix4fvARB_remap_index },
+ { 25184, UseProgramObjectARB_remap_index },
+ { 14807, ValidateProgramARB_remap_index },
+ { 21232, BindAttribLocationARB_remap_index },
+ { 4940, GetActiveAttribARB_remap_index },
+ { 16509, GetAttribLocationARB_remap_index },
+ { 29132, DrawBuffersARB_remap_index },
+ { 17850, DrawArraysInstancedARB_remap_index },
+ { 6457, DrawElementsInstancedARB_remap_index },
+ { 13126, RenderbufferStorageMultisample_remap_index },
+ { 13597, FramebufferTextureARB_remap_index },
+ { 25577, FramebufferTextureFaceARB_remap_index },
+ { 23991, ProgramParameteriARB_remap_index },
+ { 19143, FlushMappedBufferRange_remap_index },
+ { 27568, MapBufferRange_remap_index },
+ { 16337, BindVertexArray_remap_index },
+ { 14630, GenVertexArrays_remap_index },
+ { 29928, CopyBufferSubData_remap_index },
+ { 30858, ClientWaitSync_remap_index },
+ { 2609, DeleteSync_remap_index },
+ { 7191, FenceSync_remap_index },
+ { 15178, GetInteger64v_remap_index },
+ { 22477, GetSynciv_remap_index },
+ { 29071, IsSync_remap_index },
+ { 9388, WaitSync_remap_index },
+ { 3797, DrawElementsBaseVertex_remap_index },
+ { 30263, DrawRangeElementsBaseVertex_remap_index },
+ { 26190, MultiDrawElementsBaseVertex_remap_index },
+ { 5091, BindTransformFeedback_remap_index },
+ { 3232, DeleteTransformFeedbacks_remap_index },
+ { 6429, DrawTransformFeedback_remap_index },
+ { 9607, GenTransformFeedbacks_remap_index },
+ { 27984, IsTransformFeedback_remap_index },
+ { 25770, PauseTransformFeedback_remap_index },
+ { 5528, ResumeTransformFeedback_remap_index },
+ { 5396, PolygonOffsetEXT_remap_index },
+ { 23099, GetPixelTexGenParameterfvSGIS_remap_index },
+ { 4417, GetPixelTexGenParameterivSGIS_remap_index },
+ { 22832, PixelTexGenParameterfSGIS_remap_index },
+ { 624, PixelTexGenParameterfvSGIS_remap_index },
+ { 12634, PixelTexGenParameteriSGIS_remap_index },
+ { 13771, PixelTexGenParameterivSGIS_remap_index },
+ { 16425, SampleMaskSGIS_remap_index },
+ { 19825, SamplePatternSGIS_remap_index },
+ { 26119, ColorPointerEXT_remap_index },
+ { 17512, EdgeFlagPointerEXT_remap_index },
+ { 6050, IndexPointerEXT_remap_index },
+ { 6130, NormalPointerEXT_remap_index },
+ { 15772, TexCoordPointerEXT_remap_index },
+ { 6980, VertexPointerEXT_remap_index },
+ { 3599, PointParameterfEXT_remap_index },
+ { 7831, PointParameterfvEXT_remap_index },
+ { 31734, LockArraysEXT_remap_index },
+ { 14871, UnlockArraysEXT_remap_index },
+ { 1267, SecondaryColor3bEXT_remap_index },
+ { 7990, SecondaryColor3bvEXT_remap_index },
+ { 10399, SecondaryColor3dEXT_remap_index },
+ { 25380, SecondaryColor3dvEXT_remap_index },
+ { 27850, SecondaryColor3fEXT_remap_index },
+ { 18178, SecondaryColor3fvEXT_remap_index },
+ { 470, SecondaryColor3iEXT_remap_index },
+ { 16082, SecondaryColor3ivEXT_remap_index },
+ { 10034, SecondaryColor3sEXT_remap_index },
+ { 30522, SecondaryColor3svEXT_remap_index },
+ { 26987, SecondaryColor3ubEXT_remap_index },
+ { 21123, SecondaryColor3ubvEXT_remap_index },
+ { 12876, SecondaryColor3uiEXT_remap_index },
+ { 22719, SecondaryColor3uivEXT_remap_index },
+ { 25627, SecondaryColor3usEXT_remap_index },
+ { 12949, SecondaryColor3usvEXT_remap_index },
+ { 11769, SecondaryColorPointerEXT_remap_index },
+ { 25441, MultiDrawArraysEXT_remap_index },
+ { 20813, MultiDrawElementsEXT_remap_index },
+ { 21008, FogCoordPointerEXT_remap_index },
+ { 4566, FogCoorddEXT_remap_index },
+ { 31135, FogCoorddvEXT_remap_index },
+ { 4683, FogCoordfEXT_remap_index },
+ { 26910, FogCoordfvEXT_remap_index },
+ { 19047, PixelTexGenSGIX_remap_index },
+ { 27495, BlendFuncSeparateEXT_remap_index },
+ { 6892, FlushVertexArrayRangeNV_remap_index },
+ { 5345, VertexArrayRangeNV_remap_index },
+ { 27915, CombinerInputNV_remap_index },
+ { 2116, CombinerOutputNV_remap_index },
+ { 30675, CombinerParameterfNV_remap_index },
+ { 5219, CombinerParameterfvNV_remap_index },
+ { 22201, CombinerParameteriNV_remap_index },
+ { 32150, CombinerParameterivNV_remap_index },
+ { 7268, FinalCombinerInputNV_remap_index },
+ { 9813, GetCombinerInputParameterfvNV_remap_index },
+ { 31987, GetCombinerInputParameterivNV_remap_index },
+ { 13872, GetCombinerOutputParameterfvNV_remap_index },
+ { 13700, GetCombinerOutputParameterivNV_remap_index },
+ { 6637, GetFinalCombinerInputParameterfvNV_remap_index },
+ { 24623, GetFinalCombinerInputParameterivNV_remap_index },
+ { 12574, ResizeBuffersMESA_remap_index },
+ { 11095, WindowPos2dMESA_remap_index },
+ { 1060, WindowPos2dvMESA_remap_index },
+ { 32978, WindowPos2fMESA_remap_index },
+ { 7935, WindowPos2fvMESA_remap_index },
+ { 18125, WindowPos2iMESA_remap_index },
+ { 20298, WindowPos2ivMESA_remap_index },
+ { 20912, WindowPos2sMESA_remap_index },
+ { 5748, WindowPos2svMESA_remap_index },
+ { 7760, WindowPos3dMESA_remap_index },
+ { 14018, WindowPos3dvMESA_remap_index },
+ { 516, WindowPos3fMESA_remap_index },
+ { 14932, WindowPos3fvMESA_remap_index },
+ { 23884, WindowPos3iMESA_remap_index },
+ { 29873, WindowPos3ivMESA_remap_index },
+ { 18742, WindowPos3sMESA_remap_index },
+ { 31391, WindowPos3svMESA_remap_index },
+ { 11046, WindowPos4dMESA_remap_index },
+ { 16966, WindowPos4dvMESA_remap_index },
+ { 13977, WindowPos4fMESA_remap_index },
+ { 30429, WindowPos4fvMESA_remap_index },
+ { 30026, WindowPos4iMESA_remap_index },
+ { 12377, WindowPos4ivMESA_remap_index },
+ { 18926, WindowPos4sMESA_remap_index },
+ { 3183, WindowPos4svMESA_remap_index },
+ { 13739, MultiModeDrawArraysIBM_remap_index },
+ { 28690, MultiModeDrawElementsIBM_remap_index },
+ { 12181, DeleteFencesNV_remap_index },
+ { 27762, FinishFenceNV_remap_index },
+ { 3721, GenFencesNV_remap_index },
+ { 16946, GetFenceivNV_remap_index },
+ { 8227, IsFenceNV_remap_index },
+ { 13627, SetFenceNV_remap_index },
+ { 4178, TestFenceNV_remap_index },
+ { 31362, AreProgramsResidentNV_remap_index },
+ { 30717, BindProgramNV_remap_index },
+ { 25710, DeleteProgramsNV_remap_index },
+ { 21341, ExecuteProgramNV_remap_index },
+ { 32871, GenProgramsNV_remap_index },
+ { 23204, GetProgramParameterdvNV_remap_index },
+ { 10461, GetProgramParameterfvNV_remap_index },
+ { 26093, GetProgramStringNV_remap_index },
+ { 24261, GetProgramivNV_remap_index },
+ { 23438, GetTrackMatrixivNV_remap_index },
+ { 25887, GetVertexAttribPointervNV_remap_index },
+ { 24556, GetVertexAttribdvNV_remap_index },
+ { 9283, GetVertexAttribfvNV_remap_index },
+ { 18349, GetVertexAttribivNV_remap_index },
+ { 19173, IsProgramNV_remap_index },
+ { 9366, LoadProgramNV_remap_index },
+ { 27591, ProgramParameters4dvNV_remap_index },
+ { 24191, ProgramParameters4fvNV_remap_index },
+ { 20602, RequestResidentProgramsNV_remap_index },
+ { 22179, TrackMatrixNV_remap_index },
+ { 31964, VertexAttrib1dNV_remap_index },
+ { 13538, VertexAttrib1dvNV_remap_index },
+ { 28196, VertexAttrib1fNV_remap_index },
+ { 2415, VertexAttrib1fvNV_remap_index },
+ { 30486, VertexAttrib1sNV_remap_index },
+ { 15005, VertexAttrib1svNV_remap_index },
+ { 4845, VertexAttrib2dNV_remap_index },
+ { 13431, VertexAttrib2dvNV_remap_index },
+ { 20057, VertexAttrib2fNV_remap_index },
+ { 12997, VertexAttrib2fvNV_remap_index },
+ { 5960, VertexAttrib2sNV_remap_index },
+ { 18796, VertexAttrib2svNV_remap_index },
+ { 11243, VertexAttrib3dNV_remap_index },
+ { 31612, VertexAttrib3dvNV_remap_index },
+ { 10273, VertexAttrib3fNV_remap_index },
+ { 24583, VertexAttrib3fvNV_remap_index },
+ { 22022, VertexAttrib3sNV_remap_index },
+ { 23465, VertexAttrib3svNV_remap_index },
+ { 28664, VertexAttrib4dNV_remap_index },
+ { 32908, VertexAttrib4dvNV_remap_index },
+ { 4467, VertexAttrib4fNV_remap_index },
+ { 9416, VertexAttrib4fvNV_remap_index },
+ { 26569, VertexAttrib4sNV_remap_index },
+ { 1409, VertexAttrib4svNV_remap_index },
+ { 5003, VertexAttrib4ubNV_remap_index },
+ { 778, VertexAttrib4ubvNV_remap_index },
+ { 21521, VertexAttribPointerNV_remap_index },
+ { 2267, VertexAttribs1dvNV_remap_index },
+ { 25975, VertexAttribs1fvNV_remap_index },
+ { 32708, VertexAttribs1svNV_remap_index },
+ { 10298, VertexAttribs2dvNV_remap_index },
+ { 25145, VertexAttribs2fvNV_remap_index },
+ { 17538, VertexAttribs2svNV_remap_index },
+ { 5247, VertexAttribs3dvNV_remap_index },
+ { 2147, VertexAttribs3fvNV_remap_index },
+ { 29621, VertexAttribs3svNV_remap_index },
+ { 26659, VertexAttribs4dvNV_remap_index },
+ { 5319, VertexAttribs4fvNV_remap_index },
+ { 32495, VertexAttribs4svNV_remap_index },
+ { 29369, VertexAttribs4ubvNV_remap_index },
+ { 26729, GetTexBumpParameterfvATI_remap_index },
+ { 32749, GetTexBumpParameterivATI_remap_index },
+ { 18459, TexBumpParameterfvATI_remap_index },
+ { 20473, TexBumpParameterivATI_remap_index },
+ { 15551, AlphaFragmentOp1ATI_remap_index },
+ { 10889, AlphaFragmentOp2ATI_remap_index },
+ { 24499, AlphaFragmentOp3ATI_remap_index },
+ { 29548, BeginFragmentShaderATI_remap_index },
+ { 30916, BindFragmentShaderATI_remap_index },
+ { 23594, ColorFragmentOp1ATI_remap_index },
+ { 4345, ColorFragmentOp2ATI_remap_index },
+ { 31257, ColorFragmentOp3ATI_remap_index },
+ { 5485, DeleteFragmentShaderATI_remap_index },
+ { 32932, EndFragmentShaderATI_remap_index },
+ { 32178, GenFragmentShadersATI_remap_index },
+ { 25299, PassTexCoordATI_remap_index },
+ { 6960, SampleMapATI_remap_index },
+ { 6733, SetFragmentShaderConstantATI_remap_index },
+ { 363, PointParameteriNV_remap_index },
+ { 14179, PointParameterivNV_remap_index },
+ { 28503, ActiveStencilFaceEXT_remap_index },
+ { 27251, BindVertexArrayAPPLE_remap_index },
+ { 2737, DeleteVertexArraysAPPLE_remap_index },
+ { 17955, GenVertexArraysAPPLE_remap_index },
+ { 23269, IsVertexArrayAPPLE_remap_index },
+ { 819, GetProgramNamedParameterdvNV_remap_index },
+ { 3562, GetProgramNamedParameterfvNV_remap_index },
+ { 26760, ProgramNamedParameter4dNV_remap_index },
+ { 14505, ProgramNamedParameter4dvNV_remap_index },
+ { 8899, ProgramNamedParameter4fNV_remap_index },
+ { 11734, ProgramNamedParameter4fvNV_remap_index },
+ { 16877, PrimitiveRestartIndexNV_remap_index },
+ { 30406, PrimitiveRestartNV_remap_index },
+ { 24170, DepthBoundsEXT_remap_index },
+ { 1159, BlendEquationSeparateEXT_remap_index },
+ { 14706, BindFramebufferEXT_remap_index },
+ { 25486, BindRenderbufferEXT_remap_index },
+ { 9663, CheckFramebufferStatusEXT_remap_index },
+ { 22520, DeleteFramebuffersEXT_remap_index },
+ { 31514, DeleteRenderbuffersEXT_remap_index },
+ { 13455, FramebufferRenderbufferEXT_remap_index },
+ { 13644, FramebufferTexture1DEXT_remap_index },
+ { 11528, FramebufferTexture2DEXT_remap_index },
+ { 11148, FramebufferTexture3DEXT_remap_index },
+ { 23135, GenFramebuffersEXT_remap_index },
+ { 17403, GenRenderbuffersEXT_remap_index },
+ { 6679, GenerateMipmapEXT_remap_index },
+ { 21597, GetFramebufferAttachmentParameterivEXT_remap_index },
+ { 32084, GetRenderbufferParameterivEXT_remap_index },
+ { 20353, IsFramebufferEXT_remap_index },
+ { 32831, IsRenderbufferEXT_remap_index },
+ { 8174, RenderbufferStorageEXT_remap_index },
+ { 695, BlitFramebufferEXT_remap_index },
+ { 14324, BufferParameteriAPPLE_remap_index },
+ { 19205, FlushMappedBufferRangeAPPLE_remap_index },
+ { 1815, BindFragDataLocationEXT_remap_index },
+ { 24283, GetFragDataLocationEXT_remap_index },
+ { 10576, GetUniformuivEXT_remap_index },
+ { 2933, GetVertexAttribIivEXT_remap_index },
+ { 4195, GetVertexAttribIuivEXT_remap_index },
+ { 12014, Uniform1uiEXT_remap_index },
+ { 27676, Uniform1uivEXT_remap_index },
+ { 22118, Uniform2uiEXT_remap_index },
+ { 4309, Uniform2uivEXT_remap_index },
+ { 28943, Uniform3uiEXT_remap_index },
+ { 14652, Uniform3uivEXT_remap_index },
+ { 3486, Uniform4uiEXT_remap_index },
+ { 8675, Uniform4uivEXT_remap_index },
+ { 18306, VertexAttribI1iEXT_remap_index },
+ { 965, VertexAttribI1ivEXT_remap_index },
+ { 2516, VertexAttribI1uiEXT_remap_index },
+ { 12725, VertexAttribI1uivEXT_remap_index },
+ { 81, VertexAttribI2iEXT_remap_index },
+ { 23706, VertexAttribI2ivEXT_remap_index },
+ { 5273, VertexAttribI2uiEXT_remap_index },
+ { 4728, VertexAttribI2uivEXT_remap_index },
+ { 26361, VertexAttribI3iEXT_remap_index },
+ { 30218, VertexAttribI3ivEXT_remap_index },
+ { 3340, VertexAttribI3uiEXT_remap_index },
+ { 30114, VertexAttribI3uivEXT_remap_index },
+ { 21848, VertexAttribI4bvEXT_remap_index },
+ { 14584, VertexAttribI4iEXT_remap_index },
+ { 31783, VertexAttribI4ivEXT_remap_index },
+ { 13358, VertexAttribI4svEXT_remap_index },
+ { 16462, VertexAttribI4ubvEXT_remap_index },
+ { 16145, VertexAttribI4uiEXT_remap_index },
+ { 5419, VertexAttribI4uivEXT_remap_index },
+ { 11311, VertexAttribI4usvEXT_remap_index },
+ { 18403, VertexAttribIPointerEXT_remap_index },
+ { 3027, FramebufferTextureLayerEXT_remap_index },
+ { 5660, ColorMaskIndexedEXT_remap_index },
+ { 18820, DisableIndexedEXT_remap_index },
+ { 26406, EnableIndexedEXT_remap_index },
+ { 21552, GetBooleanIndexedvEXT_remap_index },
+ { 10922, GetIntegerIndexedvEXT_remap_index },
+ { 22596, IsEnabledIndexedEXT_remap_index },
+ { 22496, ClearColorIiEXT_remap_index },
+ { 3436, ClearColorIuiEXT_remap_index },
+ { 9852, GetTexParameterIivEXT_remap_index },
+ { 5908, GetTexParameterIuivEXT_remap_index },
+ { 2983, TexParameterIivEXT_remap_index },
+ { 26228, TexParameterIuivEXT_remap_index },
+ { 4596, BeginConditionalRenderNV_remap_index },
+ { 25249, EndConditionalRenderNV_remap_index },
+ { 9310, BeginTransformFeedbackEXT_remap_index },
+ { 18855, BindBufferBaseEXT_remap_index },
+ { 18714, BindBufferOffsetEXT_remap_index },
+ { 12202, BindBufferRangeEXT_remap_index },
+ { 14239, EndTransformFeedbackEXT_remap_index },
+ { 10774, GetTransformFeedbackVaryingEXT_remap_index },
+ { 20658, TransformFeedbackVaryingsEXT_remap_index },
+ { 29270, ProvokingVertexEXT_remap_index },
+ { 10722, GetTexParameterPointervAPPLE_remap_index },
+ { 5047, TextureRangeAPPLE_remap_index },
+ { 11600, GetObjectParameterivAPPLE_remap_index },
+ { 19780, ObjectPurgeableAPPLE_remap_index },
+ { 5702, ObjectUnpurgeableAPPLE_remap_index },
+ { 17225, ActiveProgramEXT_remap_index },
+ { 17196, CreateShaderProgramEXT_remap_index },
+ { 28288, UseShaderProgramEXT_remap_index },
+ { 28529, StencilFuncSeparateATI_remap_index },
+ { 18044, ProgramEnvParameters4fvEXT_remap_index },
+ { 17090, ProgramLocalParameters4fvEXT_remap_index },
+ { 14107, GetQueryObjecti64vEXT_remap_index },
+ { 10324, GetQueryObjectui64vEXT_remap_index },
+ { 23663, EGLImageTargetRenderbufferStorageOES_remap_index },
+ { 12120, EGLImageTargetTexture2DOES_remap_index },
{ -1, -1 }
};
/* these functions are in the ABI, but have alternative names */
static const struct gl_function_remap MESA_alt_functions[] = {
/* from GL_EXT_blend_color */
- { 2440, _gloffset_BlendColor },
+ { 2655, _gloffset_BlendColor },
/* from GL_EXT_blend_minmax */
- { 10219, _gloffset_BlendEquation },
+ { 11205, _gloffset_BlendEquation },
/* from GL_EXT_color_subtable */
- { 15652, _gloffset_ColorSubTable },
- { 29278, _gloffset_CopyColorSubTable },
+ { 16988, _gloffset_ColorSubTable },
+ { 31446, _gloffset_CopyColorSubTable },
/* from GL_EXT_convolution */
- { 213, _gloffset_ConvolutionFilter1D },
- { 2284, _gloffset_CopyConvolutionFilter1D },
- { 3624, _gloffset_GetConvolutionParameteriv },
- { 7702, _gloffset_ConvolutionFilter2D },
- { 7868, _gloffset_ConvolutionParameteriv },
- { 8328, _gloffset_ConvolutionParameterfv },
- { 18914, _gloffset_GetSeparableFilter },
- { 22185, _gloffset_SeparableFilter2D },
- { 22997, _gloffset_ConvolutionParameteri },
- { 23120, _gloffset_ConvolutionParameterf },
- { 24637, _gloffset_GetConvolutionParameterfv },
- { 25459, _gloffset_GetConvolutionFilter },
- { 27734, _gloffset_CopyConvolutionFilter2D },
+ { 257, _gloffset_ConvolutionFilter1D },
+ { 2454, _gloffset_CopyConvolutionFilter1D },
+ { 4058, _gloffset_GetConvolutionParameteriv },
+ { 8523, _gloffset_ConvolutionFilter2D },
+ { 8725, _gloffset_ConvolutionParameteriv },
+ { 9185, _gloffset_ConvolutionParameterfv },
+ { 20501, _gloffset_GetSeparableFilter },
+ { 23938, _gloffset_SeparableFilter2D },
+ { 24801, _gloffset_ConvolutionParameteri },
+ { 24924, _gloffset_ConvolutionParameterf },
+ { 26595, _gloffset_GetConvolutionParameterfv },
+ { 27417, _gloffset_GetConvolutionFilter },
+ { 29810, _gloffset_CopyConvolutionFilter2D },
/* from GL_EXT_copy_texture */
- { 13803, _gloffset_CopyTexSubImage3D },
- { 15363, _gloffset_CopyTexImage2D },
- { 22605, _gloffset_CopyTexImage1D },
- { 25140, _gloffset_CopyTexSubImage2D },
- { 27372, _gloffset_CopyTexSubImage1D },
+ { 15065, _gloffset_CopyTexSubImage3D },
+ { 16675, _gloffset_CopyTexImage2D },
+ { 24409, _gloffset_CopyTexImage1D },
+ { 27098, _gloffset_CopyTexSubImage2D },
+ { 29448, _gloffset_CopyTexSubImage1D },
/* from GL_EXT_draw_range_elements */
- { 8665, _gloffset_DrawRangeElements },
+ { 9522, _gloffset_DrawRangeElements },
/* from GL_EXT_histogram */
- { 812, _gloffset_Histogram },
- { 3088, _gloffset_ResetHistogram },
- { 9065, _gloffset_GetMinmax },
- { 14137, _gloffset_GetHistogramParameterfv },
- { 22530, _gloffset_GetMinmaxParameteriv },
- { 24527, _gloffset_ResetMinmax },
- { 25356, _gloffset_GetHistogramParameteriv },
- { 26443, _gloffset_GetHistogram },
- { 28864, _gloffset_Minmax },
- { 30365, _gloffset_GetMinmaxParameterfv },
+ { 856, _gloffset_Histogram },
+ { 3522, _gloffset_ResetHistogram },
+ { 9972, _gloffset_GetMinmax },
+ { 15399, _gloffset_GetHistogramParameterfv },
+ { 24334, _gloffset_GetMinmaxParameteriv },
+ { 26485, _gloffset_ResetMinmax },
+ { 27314, _gloffset_GetHistogramParameteriv },
+ { 28463, _gloffset_GetHistogram },
+ { 31032, _gloffset_Minmax },
+ { 32578, _gloffset_GetMinmaxParameterfv },
/* from GL_EXT_paletted_texture */
- { 7564, _gloffset_ColorTable },
- { 13983, _gloffset_GetColorTable },
- { 21200, _gloffset_GetColorTableParameterfv },
- { 23176, _gloffset_GetColorTableParameteriv },
+ { 8385, _gloffset_ColorTable },
+ { 15245, _gloffset_GetColorTable },
+ { 22882, _gloffset_GetColorTableParameterfv },
+ { 24980, _gloffset_GetColorTableParameteriv },
/* from GL_EXT_subtexture */
- { 6285, _gloffset_TexSubImage1D },
- { 9679, _gloffset_TexSubImage2D },
+ { 7106, _gloffset_TexSubImage1D },
+ { 10649, _gloffset_TexSubImage2D },
/* from GL_EXT_texture3D */
- { 1658, _gloffset_TexImage3D },
- { 20969, _gloffset_TexSubImage3D },
+ { 1774, _gloffset_TexImage3D },
+ { 22651, _gloffset_TexSubImage3D },
/* from GL_EXT_texture_object */
- { 2964, _gloffset_PrioritizeTextures },
- { 6734, _gloffset_AreTexturesResident },
- { 12382, _gloffset_GenTextures },
- { 14469, _gloffset_DeleteTextures },
- { 17916, _gloffset_IsTexture },
- { 27437, _gloffset_BindTexture },
+ { 3290, _gloffset_PrioritizeTextures },
+ { 7555, _gloffset_AreTexturesResident },
+ { 13562, _gloffset_GenTextures },
+ { 15731, _gloffset_DeleteTextures },
+ { 19486, _gloffset_IsTexture },
+ { 29513, _gloffset_BindTexture },
/* from GL_EXT_vertex_array */
- { 22357, _gloffset_ArrayElement },
- { 28452, _gloffset_GetPointerv },
- { 29992, _gloffset_DrawArrays },
+ { 24110, _gloffset_ArrayElement },
+ { 30620, _gloffset_GetPointerv },
+ { 32205, _gloffset_DrawArrays },
/* from GL_SGI_color_table */
- { 6852, _gloffset_ColorTableParameteriv },
- { 7564, _gloffset_ColorTable },
- { 13983, _gloffset_GetColorTable },
- { 14093, _gloffset_CopyColorTable },
- { 17777, _gloffset_ColorTableParameterfv },
- { 21200, _gloffset_GetColorTableParameterfv },
- { 23176, _gloffset_GetColorTableParameteriv },
+ { 7673, _gloffset_ColorTableParameteriv },
+ { 8385, _gloffset_ColorTable },
+ { 15245, _gloffset_GetColorTable },
+ { 15355, _gloffset_CopyColorTable },
+ { 19347, _gloffset_ColorTableParameterfv },
+ { 22882, _gloffset_GetColorTableParameterfv },
+ { 24980, _gloffset_GetColorTableParameteriv },
/* from GL_VERSION_1_3 */
- { 381, _gloffset_MultiTexCoord3sARB },
- { 613, _gloffset_ActiveTextureARB },
- { 3761, _gloffset_MultiTexCoord1fvARB },
- { 5386, _gloffset_MultiTexCoord3dARB },
- { 5431, _gloffset_MultiTexCoord2iARB },
- { 5555, _gloffset_MultiTexCoord2svARB },
- { 7520, _gloffset_MultiTexCoord2fARB },
- { 9424, _gloffset_MultiTexCoord3fvARB },
- { 9981, _gloffset_MultiTexCoord4sARB },
- { 10615, _gloffset_MultiTexCoord2dvARB },
- { 10997, _gloffset_MultiTexCoord1svARB },
- { 11369, _gloffset_MultiTexCoord3svARB },
- { 11430, _gloffset_MultiTexCoord4iARB },
- { 12153, _gloffset_MultiTexCoord3iARB },
- { 12956, _gloffset_MultiTexCoord1dARB },
- { 13173, _gloffset_MultiTexCoord3dvARB },
- { 14337, _gloffset_MultiTexCoord3ivARB },
- { 14382, _gloffset_MultiTexCoord2sARB },
- { 15709, _gloffset_MultiTexCoord4ivARB },
- { 17427, _gloffset_ClientActiveTextureARB },
- { 19710, _gloffset_MultiTexCoord2dARB },
- { 20151, _gloffset_MultiTexCoord4dvARB },
- { 20462, _gloffset_MultiTexCoord4fvARB },
- { 21341, _gloffset_MultiTexCoord3fARB },
- { 23704, _gloffset_MultiTexCoord4dARB },
- { 23970, _gloffset_MultiTexCoord1sARB },
- { 24174, _gloffset_MultiTexCoord1dvARB },
- { 24984, _gloffset_MultiTexCoord1ivARB },
- { 25077, _gloffset_MultiTexCoord2ivARB },
- { 25416, _gloffset_MultiTexCoord1iARB },
- { 26718, _gloffset_MultiTexCoord4svARB },
- { 27236, _gloffset_MultiTexCoord1fARB },
- { 27499, _gloffset_MultiTexCoord4fARB },
- { 29826, _gloffset_MultiTexCoord2fvARB },
+ { 425, _gloffset_MultiTexCoord3sARB },
+ { 657, _gloffset_ActiveTextureARB },
+ { 4247, _gloffset_MultiTexCoord1fvARB },
+ { 6155, _gloffset_MultiTexCoord3dARB },
+ { 6200, _gloffset_MultiTexCoord2iARB },
+ { 6324, _gloffset_MultiTexCoord2svARB },
+ { 8341, _gloffset_MultiTexCoord2fARB },
+ { 10354, _gloffset_MultiTexCoord3fvARB },
+ { 10967, _gloffset_MultiTexCoord4sARB },
+ { 11648, _gloffset_MultiTexCoord2dvARB },
+ { 12063, _gloffset_MultiTexCoord1svARB },
+ { 12435, _gloffset_MultiTexCoord3svARB },
+ { 12496, _gloffset_MultiTexCoord4iARB },
+ { 13266, _gloffset_MultiTexCoord3iARB },
+ { 14136, _gloffset_MultiTexCoord1dARB },
+ { 14353, _gloffset_MultiTexCoord3dvARB },
+ { 15599, _gloffset_MultiTexCoord3ivARB },
+ { 15644, _gloffset_MultiTexCoord2sARB },
+ { 17045, _gloffset_MultiTexCoord4ivARB },
+ { 18997, _gloffset_ClientActiveTextureARB },
+ { 21297, _gloffset_MultiTexCoord2dARB },
+ { 21717, _gloffset_MultiTexCoord4dvARB },
+ { 22073, _gloffset_MultiTexCoord4fvARB },
+ { 23023, _gloffset_MultiTexCoord3fARB },
+ { 25531, _gloffset_MultiTexCoord4dARB },
+ { 25797, _gloffset_MultiTexCoord1sARB },
+ { 26001, _gloffset_MultiTexCoord1dvARB },
+ { 26942, _gloffset_MultiTexCoord1ivARB },
+ { 27035, _gloffset_MultiTexCoord2ivARB },
+ { 27374, _gloffset_MultiTexCoord1iARB },
+ { 28738, _gloffset_MultiTexCoord4svARB },
+ { 29312, _gloffset_MultiTexCoord1fARB },
+ { 29575, _gloffset_MultiTexCoord4fARB },
+ { 32039, _gloffset_MultiTexCoord2fvARB },
{ -1, -1 }
};
@@ -5012,7 +5329,7 @@ static const struct gl_function_remap MESA_alt_functions[] = {
#if defined(need_GL_3DFX_tbuffer)
static const struct gl_function_remap GL_3DFX_tbuffer_functions[] = {
- { 8386, -1 }, /* TbufferMask3DFX */
+ { 9243, -1 }, /* TbufferMask3DFX */
{ -1, -1 }
};
#endif
@@ -5083,7 +5400,7 @@ static const struct gl_function_remap GL_ARB_framebuffer_object_functions[] = {
#if defined(need_GL_ARB_geometry_shader4)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_ARB_geometry_shader4_functions[] = {
- { 11333, -1 }, /* FramebufferTextureLayer */
+ { 12399, -1 }, /* FramebufferTextureLayer */
{ -1, -1 }
};
#endif
@@ -5097,11 +5414,11 @@ static const struct gl_function_remap GL_ARB_map_buffer_range_functions[] = {
#if defined(need_GL_ARB_matrix_palette)
static const struct gl_function_remap GL_ARB_matrix_palette_functions[] = {
- { 3339, -1 }, /* MatrixIndexusvARB */
- { 11974, -1 }, /* MatrixIndexuivARB */
- { 13295, -1 }, /* MatrixIndexPointerARB */
- { 18165, -1 }, /* CurrentPaletteMatrixARB */
- { 21085, -1 }, /* MatrixIndexubvARB */
+ { 3773, -1 }, /* MatrixIndexusvARB */
+ { 13087, -1 }, /* MatrixIndexuivARB */
+ { 14475, -1 }, /* MatrixIndexPointerARB */
+ { 19735, -1 }, /* CurrentPaletteMatrixARB */
+ { 22767, -1 }, /* MatrixIndexubvARB */
{ -1, -1 }
};
#endif
@@ -5178,16 +5495,16 @@ static const struct gl_function_remap GL_ARB_vertex_array_object_functions[] = {
#if defined(need_GL_ARB_vertex_blend)
static const struct gl_function_remap GL_ARB_vertex_blend_functions[] = {
- { 2226, -1 }, /* WeightubvARB */
- { 5746, -1 }, /* WeightivARB */
- { 10084, -1 }, /* WeightPointerARB */
- { 12674, -1 }, /* WeightfvARB */
- { 16204, -1 }, /* WeightbvARB */
- { 19378, -1 }, /* WeightusvARB */
- { 22111, -1 }, /* VertexBlendARB */
- { 27320, -1 }, /* WeightsvARB */
- { 29328, -1 }, /* WeightdvARB */
- { 30026, -1 }, /* WeightuivARB */
+ { 2396, -1 }, /* WeightubvARB */
+ { 6567, -1 }, /* WeightivARB */
+ { 11070, -1 }, /* WeightPointerARB */
+ { 13854, -1 }, /* WeightfvARB */
+ { 17564, -1 }, /* WeightbvARB */
+ { 20965, -1 }, /* WeightusvARB */
+ { 23864, -1 }, /* VertexBlendARB */
+ { 29396, -1 }, /* WeightsvARB */
+ { 31496, -1 }, /* WeightdvARB */
+ { 32239, -1 }, /* WeightuivARB */
{ -1, -1 }
};
#endif
@@ -5257,7 +5574,7 @@ static const struct gl_function_remap GL_ATI_separate_stencil_functions[] = {
#if defined(need_GL_EXT_blend_color)
static const struct gl_function_remap GL_EXT_blend_color_functions[] = {
- { 2440, _gloffset_BlendColor },
+ { 2655, _gloffset_BlendColor },
{ -1, -1 }
};
#endif
@@ -5278,15 +5595,15 @@ static const struct gl_function_remap GL_EXT_blend_func_separate_functions[] = {
#if defined(need_GL_EXT_blend_minmax)
static const struct gl_function_remap GL_EXT_blend_minmax_functions[] = {
- { 10219, _gloffset_BlendEquation },
+ { 11205, _gloffset_BlendEquation },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_color_subtable)
static const struct gl_function_remap GL_EXT_color_subtable_functions[] = {
- { 15652, _gloffset_ColorSubTable },
- { 29278, _gloffset_CopyColorSubTable },
+ { 16988, _gloffset_ColorSubTable },
+ { 31446, _gloffset_CopyColorSubTable },
{ -1, -1 }
};
#endif
@@ -5300,66 +5617,66 @@ static const struct gl_function_remap GL_EXT_compiled_vertex_array_functions[] =
#if defined(need_GL_EXT_convolution)
static const struct gl_function_remap GL_EXT_convolution_functions[] = {
- { 213, _gloffset_ConvolutionFilter1D },
- { 2284, _gloffset_CopyConvolutionFilter1D },
- { 3624, _gloffset_GetConvolutionParameteriv },
- { 7702, _gloffset_ConvolutionFilter2D },
- { 7868, _gloffset_ConvolutionParameteriv },
- { 8328, _gloffset_ConvolutionParameterfv },
- { 18914, _gloffset_GetSeparableFilter },
- { 22185, _gloffset_SeparableFilter2D },
- { 22997, _gloffset_ConvolutionParameteri },
- { 23120, _gloffset_ConvolutionParameterf },
- { 24637, _gloffset_GetConvolutionParameterfv },
- { 25459, _gloffset_GetConvolutionFilter },
- { 27734, _gloffset_CopyConvolutionFilter2D },
+ { 257, _gloffset_ConvolutionFilter1D },
+ { 2454, _gloffset_CopyConvolutionFilter1D },
+ { 4058, _gloffset_GetConvolutionParameteriv },
+ { 8523, _gloffset_ConvolutionFilter2D },
+ { 8725, _gloffset_ConvolutionParameteriv },
+ { 9185, _gloffset_ConvolutionParameterfv },
+ { 20501, _gloffset_GetSeparableFilter },
+ { 23938, _gloffset_SeparableFilter2D },
+ { 24801, _gloffset_ConvolutionParameteri },
+ { 24924, _gloffset_ConvolutionParameterf },
+ { 26595, _gloffset_GetConvolutionParameterfv },
+ { 27417, _gloffset_GetConvolutionFilter },
+ { 29810, _gloffset_CopyConvolutionFilter2D },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_coordinate_frame)
static const struct gl_function_remap GL_EXT_coordinate_frame_functions[] = {
- { 9563, -1 }, /* TangentPointerEXT */
- { 11488, -1 }, /* Binormal3ivEXT */
- { 12106, -1 }, /* Tangent3sEXT */
- { 13360, -1 }, /* Tangent3fvEXT */
- { 17136, -1 }, /* Tangent3dvEXT */
- { 17863, -1 }, /* Binormal3bvEXT */
- { 18967, -1 }, /* Binormal3dEXT */
- { 21017, -1 }, /* Tangent3fEXT */
- { 23069, -1 }, /* Binormal3sEXT */
- { 23514, -1 }, /* Tangent3ivEXT */
- { 23533, -1 }, /* Tangent3dEXT */
- { 24401, -1 }, /* Binormal3svEXT */
- { 24882, -1 }, /* Binormal3fEXT */
- { 25734, -1 }, /* Binormal3dvEXT */
- { 26940, -1 }, /* Tangent3iEXT */
- { 28019, -1 }, /* Tangent3bvEXT */
- { 28487, -1 }, /* Tangent3bEXT */
- { 29051, -1 }, /* Binormal3fvEXT */
- { 29725, -1 }, /* BinormalPointerEXT */
- { 30130, -1 }, /* Tangent3svEXT */
- { 30567, -1 }, /* Binormal3bEXT */
- { 30744, -1 }, /* Binormal3iEXT */
+ { 10493, -1 }, /* TangentPointerEXT */
+ { 12554, -1 }, /* Binormal3ivEXT */
+ { 13219, -1 }, /* Tangent3sEXT */
+ { 14540, -1 }, /* Tangent3fvEXT */
+ { 18695, -1 }, /* Tangent3dvEXT */
+ { 19433, -1 }, /* Binormal3bvEXT */
+ { 20554, -1 }, /* Binormal3dEXT */
+ { 22699, -1 }, /* Tangent3fEXT */
+ { 24873, -1 }, /* Binormal3sEXT */
+ { 25341, -1 }, /* Tangent3ivEXT */
+ { 25360, -1 }, /* Tangent3dEXT */
+ { 26274, -1 }, /* Binormal3svEXT */
+ { 26840, -1 }, /* Binormal3fEXT */
+ { 27728, -1 }, /* Binormal3dvEXT */
+ { 28995, -1 }, /* Tangent3iEXT */
+ { 30095, -1 }, /* Tangent3bvEXT */
+ { 30655, -1 }, /* Tangent3bEXT */
+ { 31219, -1 }, /* Binormal3fvEXT */
+ { 31938, -1 }, /* BinormalPointerEXT */
+ { 32343, -1 }, /* Tangent3svEXT */
+ { 32780, -1 }, /* Binormal3bEXT */
+ { 32957, -1 }, /* Binormal3iEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_copy_texture)
static const struct gl_function_remap GL_EXT_copy_texture_functions[] = {
- { 13803, _gloffset_CopyTexSubImage3D },
- { 15363, _gloffset_CopyTexImage2D },
- { 22605, _gloffset_CopyTexImage1D },
- { 25140, _gloffset_CopyTexSubImage2D },
- { 27372, _gloffset_CopyTexSubImage1D },
+ { 15065, _gloffset_CopyTexSubImage3D },
+ { 16675, _gloffset_CopyTexImage2D },
+ { 24409, _gloffset_CopyTexImage1D },
+ { 27098, _gloffset_CopyTexSubImage2D },
+ { 29448, _gloffset_CopyTexSubImage1D },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_cull_vertex)
static const struct gl_function_remap GL_EXT_cull_vertex_functions[] = {
- { 8017, -1 }, /* CullParameterdvEXT */
- { 10660, -1 }, /* CullParameterfvEXT */
+ { 8874, -1 }, /* CullParameterdvEXT */
+ { 11693, -1 }, /* CullParameterfvEXT */
{ -1, -1 }
};
#endif
@@ -5387,7 +5704,7 @@ static const struct gl_function_remap GL_EXT_draw_instanced_functions[] = {
#if defined(need_GL_EXT_draw_range_elements)
static const struct gl_function_remap GL_EXT_draw_range_elements_functions[] = {
- { 8665, _gloffset_DrawRangeElements },
+ { 9522, _gloffset_DrawRangeElements },
{ -1, -1 }
};
#endif
@@ -5427,41 +5744,48 @@ static const struct gl_function_remap GL_EXT_gpu_program_parameters_functions[]
};
#endif
+#if defined(need_GL_EXT_gpu_shader4)
+/* functions defined in MESA_remap_table_functions are excluded */
+static const struct gl_function_remap GL_EXT_gpu_shader4_functions[] = {
+ { -1, -1 }
+};
+#endif
+
#if defined(need_GL_EXT_histogram)
static const struct gl_function_remap GL_EXT_histogram_functions[] = {
- { 812, _gloffset_Histogram },
- { 3088, _gloffset_ResetHistogram },
- { 9065, _gloffset_GetMinmax },
- { 14137, _gloffset_GetHistogramParameterfv },
- { 22530, _gloffset_GetMinmaxParameteriv },
- { 24527, _gloffset_ResetMinmax },
- { 25356, _gloffset_GetHistogramParameteriv },
- { 26443, _gloffset_GetHistogram },
- { 28864, _gloffset_Minmax },
- { 30365, _gloffset_GetMinmaxParameterfv },
+ { 856, _gloffset_Histogram },
+ { 3522, _gloffset_ResetHistogram },
+ { 9972, _gloffset_GetMinmax },
+ { 15399, _gloffset_GetHistogramParameterfv },
+ { 24334, _gloffset_GetMinmaxParameteriv },
+ { 26485, _gloffset_ResetMinmax },
+ { 27314, _gloffset_GetHistogramParameteriv },
+ { 28463, _gloffset_GetHistogram },
+ { 31032, _gloffset_Minmax },
+ { 32578, _gloffset_GetMinmaxParameterfv },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_index_func)
static const struct gl_function_remap GL_EXT_index_func_functions[] = {
- { 10446, -1 }, /* IndexFuncEXT */
+ { 11479, -1 }, /* IndexFuncEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_index_material)
static const struct gl_function_remap GL_EXT_index_material_functions[] = {
- { 19465, -1 }, /* IndexMaterialEXT */
+ { 21052, -1 }, /* IndexMaterialEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_light_texture)
static const struct gl_function_remap GL_EXT_light_texture_functions[] = {
- { 24421, -1 }, /* ApplyTextureEXT */
- { 24481, -1 }, /* TextureMaterialEXT */
- { 24506, -1 }, /* TextureLightEXT */
+ { 26294, -1 }, /* ApplyTextureEXT */
+ { 26439, -1 }, /* TextureMaterialEXT */
+ { 26464, -1 }, /* TextureLightEXT */
{ -1, -1 }
};
#endif
@@ -5482,20 +5806,20 @@ static const struct gl_function_remap GL_EXT_multisample_functions[] = {
#if defined(need_GL_EXT_paletted_texture)
static const struct gl_function_remap GL_EXT_paletted_texture_functions[] = {
- { 7564, _gloffset_ColorTable },
- { 13983, _gloffset_GetColorTable },
- { 21200, _gloffset_GetColorTableParameterfv },
- { 23176, _gloffset_GetColorTableParameteriv },
+ { 8385, _gloffset_ColorTable },
+ { 15245, _gloffset_GetColorTable },
+ { 22882, _gloffset_GetColorTableParameterfv },
+ { 24980, _gloffset_GetColorTableParameteriv },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_pixel_transform)
static const struct gl_function_remap GL_EXT_pixel_transform_functions[] = {
- { 20116, -1 }, /* PixelTransformParameterfEXT */
- { 20196, -1 }, /* PixelTransformParameteriEXT */
- { 28202, -1 }, /* PixelTransformParameterfvEXT */
- { 29689, -1 }, /* PixelTransformParameterivEXT */
+ { 21682, -1 }, /* PixelTransformParameterfEXT */
+ { 21762, -1 }, /* PixelTransformParameteriEXT */
+ { 30370, -1 }, /* PixelTransformParameterfvEXT */
+ { 31902, -1 }, /* PixelTransformParameterivEXT */
{ -1, -1 }
};
#endif
@@ -5528,6 +5852,13 @@ static const struct gl_function_remap GL_EXT_secondary_color_functions[] = {
};
#endif
+#if defined(need_GL_EXT_separate_shader_objects)
+/* functions defined in MESA_remap_table_functions are excluded */
+static const struct gl_function_remap GL_EXT_separate_shader_objects_functions[] = {
+ { -1, -1 }
+};
+#endif
+
#if defined(need_GL_EXT_stencil_two_side)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_EXT_stencil_two_side_functions[] = {
@@ -5537,16 +5868,16 @@ static const struct gl_function_remap GL_EXT_stencil_two_side_functions[] = {
#if defined(need_GL_EXT_subtexture)
static const struct gl_function_remap GL_EXT_subtexture_functions[] = {
- { 6285, _gloffset_TexSubImage1D },
- { 9679, _gloffset_TexSubImage2D },
+ { 7106, _gloffset_TexSubImage1D },
+ { 10649, _gloffset_TexSubImage2D },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_texture3D)
static const struct gl_function_remap GL_EXT_texture3D_functions[] = {
- { 1658, _gloffset_TexImage3D },
- { 20969, _gloffset_TexSubImage3D },
+ { 1774, _gloffset_TexImage3D },
+ { 22651, _gloffset_TexSubImage3D },
{ -1, -1 }
};
#endif
@@ -5558,21 +5889,28 @@ static const struct gl_function_remap GL_EXT_texture_array_functions[] = {
};
#endif
+#if defined(need_GL_EXT_texture_integer)
+/* functions defined in MESA_remap_table_functions are excluded */
+static const struct gl_function_remap GL_EXT_texture_integer_functions[] = {
+ { -1, -1 }
+};
+#endif
+
#if defined(need_GL_EXT_texture_object)
static const struct gl_function_remap GL_EXT_texture_object_functions[] = {
- { 2964, _gloffset_PrioritizeTextures },
- { 6734, _gloffset_AreTexturesResident },
- { 12382, _gloffset_GenTextures },
- { 14469, _gloffset_DeleteTextures },
- { 17916, _gloffset_IsTexture },
- { 27437, _gloffset_BindTexture },
+ { 3290, _gloffset_PrioritizeTextures },
+ { 7555, _gloffset_AreTexturesResident },
+ { 13562, _gloffset_GenTextures },
+ { 15731, _gloffset_DeleteTextures },
+ { 19486, _gloffset_IsTexture },
+ { 29513, _gloffset_BindTexture },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_texture_perturb_normal)
static const struct gl_function_remap GL_EXT_texture_perturb_normal_functions[] = {
- { 12624, -1 }, /* TextureNormalEXT */
+ { 13804, -1 }, /* TextureNormalEXT */
{ -1, -1 }
};
#endif
@@ -5594,30 +5932,30 @@ static const struct gl_function_remap GL_EXT_transform_feedback_functions[] = {
#if defined(need_GL_EXT_vertex_array)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_EXT_vertex_array_functions[] = {
- { 22357, _gloffset_ArrayElement },
- { 28452, _gloffset_GetPointerv },
- { 29992, _gloffset_DrawArrays },
+ { 24110, _gloffset_ArrayElement },
+ { 30620, _gloffset_GetPointerv },
+ { 32205, _gloffset_DrawArrays },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_vertex_weighting)
static const struct gl_function_remap GL_EXT_vertex_weighting_functions[] = {
- { 17946, -1 }, /* VertexWeightfvEXT */
- { 24860, -1 }, /* VertexWeightfEXT */
- { 26412, -1 }, /* VertexWeightPointerEXT */
+ { 19516, -1 }, /* VertexWeightfvEXT */
+ { 26818, -1 }, /* VertexWeightfEXT */
+ { 28432, -1 }, /* VertexWeightPointerEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_HP_image_transform)
static const struct gl_function_remap GL_HP_image_transform_functions[] = {
- { 2157, -1 }, /* GetImageTransformParameterfvHP */
- { 3305, -1 }, /* ImageTransformParameterfHP */
- { 9257, -1 }, /* ImageTransformParameterfvHP */
- { 10915, -1 }, /* ImageTransformParameteriHP */
- { 11223, -1 }, /* GetImageTransformParameterivHP */
- { 18010, -1 }, /* ImageTransformParameterivHP */
+ { 2327, -1 }, /* GetImageTransformParameterfvHP */
+ { 3739, -1 }, /* ImageTransformParameterfHP */
+ { 10187, -1 }, /* ImageTransformParameterfvHP */
+ { 11948, -1 }, /* ImageTransformParameteriHP */
+ { 12289, -1 }, /* GetImageTransformParameterivHP */
+ { 19580, -1 }, /* ImageTransformParameterivHP */
{ -1, -1 }
};
#endif
@@ -5631,14 +5969,14 @@ static const struct gl_function_remap GL_IBM_multimode_draw_arrays_functions[] =
#if defined(need_GL_IBM_vertex_array_lists)
static const struct gl_function_remap GL_IBM_vertex_array_lists_functions[] = {
- { 3857, -1 }, /* SecondaryColorPointerListIBM */
- { 5252, -1 }, /* NormalPointerListIBM */
- { 6908, -1 }, /* FogCoordPointerListIBM */
- { 7215, -1 }, /* VertexPointerListIBM */
- { 10836, -1 }, /* ColorPointerListIBM */
- { 12213, -1 }, /* TexCoordPointerListIBM */
- { 12646, -1 }, /* IndexPointerListIBM */
- { 30308, -1 }, /* EdgeFlagPointerListIBM */
+ { 4379, -1 }, /* SecondaryColorPointerListIBM */
+ { 6021, -1 }, /* NormalPointerListIBM */
+ { 7729, -1 }, /* FogCoordPointerListIBM */
+ { 8036, -1 }, /* VertexPointerListIBM */
+ { 11869, -1 }, /* ColorPointerListIBM */
+ { 13326, -1 }, /* TexCoordPointerListIBM */
+ { 13826, -1 }, /* IndexPointerListIBM */
+ { 32521, -1 }, /* EdgeFlagPointerListIBM */
{ -1, -1 }
};
#endif
@@ -5652,10 +5990,10 @@ static const struct gl_function_remap GL_INGR_blend_func_separate_functions[] =
#if defined(need_GL_INTEL_parallel_arrays)
static const struct gl_function_remap GL_INTEL_parallel_arrays_functions[] = {
- { 11600, -1 }, /* VertexPointervINTEL */
- { 14230, -1 }, /* ColorPointervINTEL */
- { 27708, -1 }, /* NormalPointervINTEL */
- { 28134, -1 }, /* TexCoordPointervINTEL */
+ { 12666, -1 }, /* VertexPointervINTEL */
+ { 15492, -1 }, /* ColorPointervINTEL */
+ { 29784, -1 }, /* NormalPointervINTEL */
+ { 30302, -1 }, /* TexCoordPointervINTEL */
{ -1, -1 }
};
#endif
@@ -5669,10 +6007,10 @@ static const struct gl_function_remap GL_MESA_resize_buffers_functions[] = {
#if defined(need_GL_MESA_shader_debug)
static const struct gl_function_remap GL_MESA_shader_debug_functions[] = {
- { 1522, -1 }, /* GetDebugLogLengthMESA */
- { 3063, -1 }, /* ClearDebugLogMESA */
- { 4018, -1 }, /* GetDebugLogMESA */
- { 28645, -1 }, /* CreateDebugObjectMESA */
+ { 1638, -1 }, /* GetDebugLogLengthMESA */
+ { 3461, -1 }, /* ClearDebugLogMESA */
+ { 4540, -1 }, /* GetDebugLogMESA */
+ { 30813, -1 }, /* CreateDebugObjectMESA */
{ -1, -1 }
};
#endif
@@ -5693,15 +6031,15 @@ static const struct gl_function_remap GL_NV_condtitional_render_functions[] = {
#if defined(need_GL_NV_evaluators)
static const struct gl_function_remap GL_NV_evaluators_functions[] = {
- { 5947, -1 }, /* GetMapAttribParameterivNV */
- { 7670, -1 }, /* MapControlPointsNV */
- { 7769, -1 }, /* MapParameterfvNV */
- { 9662, -1 }, /* EvalMapsNV */
- { 15874, -1 }, /* GetMapAttribParameterfvNV */
- { 16040, -1 }, /* MapParameterivNV */
- { 22920, -1 }, /* GetMapParameterivNV */
- { 23418, -1 }, /* GetMapParameterfvNV */
- { 27044, -1 }, /* GetMapControlPointsNV */
+ { 6768, -1 }, /* GetMapAttribParameterivNV */
+ { 8491, -1 }, /* MapControlPointsNV */
+ { 8590, -1 }, /* MapParameterfvNV */
+ { 10632, -1 }, /* EvalMapsNV */
+ { 17162, -1 }, /* GetMapAttribParameterfvNV */
+ { 17379, -1 }, /* MapParameterivNV */
+ { 24724, -1 }, /* GetMapParameterivNV */
+ { 25222, -1 }, /* GetMapParameterfvNV */
+ { 29099, -1 }, /* GetMapControlPointsNV */
{ -1, -1 }
};
#endif
@@ -5743,8 +6081,8 @@ static const struct gl_function_remap GL_NV_register_combiners_functions[] = {
#if defined(need_GL_NV_register_combiners2)
static const struct gl_function_remap GL_NV_register_combiners2_functions[] = {
- { 14700, -1 }, /* CombinerStageParameterfvNV */
- { 15015, -1 }, /* GetCombinerStageParameterfvNV */
+ { 15884, -1 }, /* CombinerStageParameterfvNV */
+ { 16280, -1 }, /* GetCombinerStageParameterfvNV */
{ -1, -1 }
};
#endif
@@ -5772,23 +6110,23 @@ static const struct gl_function_remap GL_OES_EGL_image_functions[] = {
#if defined(need_GL_PGI_misc_hints)
static const struct gl_function_remap GL_PGI_misc_hints_functions[] = {
- { 7854, -1 }, /* HintPGI */
+ { 8711, -1 }, /* HintPGI */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_detail_texture)
static const struct gl_function_remap GL_SGIS_detail_texture_functions[] = {
- { 14988, -1 }, /* GetDetailTexFuncSGIS */
- { 15308, -1 }, /* DetailTexFuncSGIS */
+ { 16253, -1 }, /* GetDetailTexFuncSGIS */
+ { 16620, -1 }, /* DetailTexFuncSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_fog_function)
static const struct gl_function_remap GL_SGIS_fog_function_functions[] = {
- { 25122, -1 }, /* FogFuncSGIS */
- { 25787, -1 }, /* GetFogFuncSGIS */
+ { 27080, -1 }, /* FogFuncSGIS */
+ { 27781, -1 }, /* GetFogFuncSGIS */
{ -1, -1 }
};
#endif
@@ -5816,112 +6154,112 @@ static const struct gl_function_remap GL_SGIS_point_parameters_functions[] = {
#if defined(need_GL_SGIS_sharpen_texture)
static const struct gl_function_remap GL_SGIS_sharpen_texture_functions[] = {
- { 6008, -1 }, /* GetSharpenTexFuncSGIS */
- { 20436, -1 }, /* SharpenTexFuncSGIS */
+ { 6829, -1 }, /* GetSharpenTexFuncSGIS */
+ { 22047, -1 }, /* SharpenTexFuncSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_texture4D)
static const struct gl_function_remap GL_SGIS_texture4D_functions[] = {
- { 894, -1 }, /* TexImage4DSGIS */
- { 14538, -1 }, /* TexSubImage4DSGIS */
+ { 1010, -1 }, /* TexImage4DSGIS */
+ { 15800, -1 }, /* TexSubImage4DSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_texture_color_mask)
static const struct gl_function_remap GL_SGIS_texture_color_mask_functions[] = {
- { 13936, -1 }, /* TextureColorMaskSGIS */
+ { 15198, -1 }, /* TextureColorMaskSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_texture_filter4)
static const struct gl_function_remap GL_SGIS_texture_filter4_functions[] = {
- { 6185, -1 }, /* GetTexFilterFuncSGIS */
- { 15134, -1 }, /* TexFilterFuncSGIS */
+ { 7006, -1 }, /* GetTexFilterFuncSGIS */
+ { 16399, -1 }, /* TexFilterFuncSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_async)
static const struct gl_function_remap GL_SGIX_async_functions[] = {
- { 3014, -1 }, /* AsyncMarkerSGIX */
- { 3997, -1 }, /* FinishAsyncSGIX */
- { 4762, -1 }, /* PollAsyncSGIX */
- { 20583, -1 }, /* DeleteAsyncMarkersSGIX */
- { 20638, -1 }, /* IsAsyncMarkerSGIX */
- { 30105, -1 }, /* GenAsyncMarkersSGIX */
+ { 3387, -1 }, /* AsyncMarkerSGIX */
+ { 4519, -1 }, /* FinishAsyncSGIX */
+ { 5466, -1 }, /* PollAsyncSGIX */
+ { 22228, -1 }, /* DeleteAsyncMarkersSGIX */
+ { 22283, -1 }, /* IsAsyncMarkerSGIX */
+ { 32318, -1 }, /* GenAsyncMarkersSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_flush_raster)
static const struct gl_function_remap GL_SGIX_flush_raster_functions[] = {
- { 6562, -1 }, /* FlushRasterSGIX */
+ { 7383, -1 }, /* FlushRasterSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_fragment_lighting)
static const struct gl_function_remap GL_SGIX_fragment_lighting_functions[] = {
- { 2410, -1 }, /* FragmentMaterialfvSGIX */
- { 4713, -1 }, /* FragmentLightiSGIX */
- { 5688, -1 }, /* GetFragmentMaterialfvSGIX */
- { 7282, -1 }, /* FragmentMaterialfSGIX */
- { 7443, -1 }, /* GetFragmentLightivSGIX */
- { 8280, -1 }, /* FragmentLightModeliSGIX */
- { 9725, -1 }, /* FragmentLightivSGIX */
- { 10027, -1 }, /* GetFragmentMaterialivSGIX */
- { 17833, -1 }, /* FragmentLightModelfSGIX */
- { 18133, -1 }, /* FragmentColorMaterialSGIX */
- { 18533, -1 }, /* FragmentMaterialiSGIX */
- { 19793, -1 }, /* LightEnviSGIX */
- { 21292, -1 }, /* FragmentLightModelfvSGIX */
- { 21601, -1 }, /* FragmentLightfvSGIX */
- { 26171, -1 }, /* FragmentLightModelivSGIX */
- { 26294, -1 }, /* FragmentLightfSGIX */
- { 29021, -1 }, /* GetFragmentLightfvSGIX */
- { 30588, -1 }, /* FragmentMaterialivSGIX */
+ { 2625, -1 }, /* FragmentMaterialfvSGIX */
+ { 5370, -1 }, /* FragmentLightiSGIX */
+ { 8103, -1 }, /* FragmentMaterialfSGIX */
+ { 8264, -1 }, /* GetFragmentLightivSGIX */
+ { 9137, -1 }, /* FragmentLightModeliSGIX */
+ { 10695, -1 }, /* FragmentLightivSGIX */
+ { 11013, -1 }, /* GetFragmentMaterialivSGIX */
+ { 16193, -1 }, /* GetFragmentMaterialfvSGIX */
+ { 19403, -1 }, /* FragmentLightModelfSGIX */
+ { 19703, -1 }, /* FragmentColorMaterialSGIX */
+ { 20120, -1 }, /* FragmentMaterialiSGIX */
+ { 21380, -1 }, /* LightEnviSGIX */
+ { 22974, -1 }, /* FragmentLightModelfvSGIX */
+ { 23309, -1 }, /* FragmentLightfvSGIX */
+ { 28165, -1 }, /* FragmentLightModelivSGIX */
+ { 28314, -1 }, /* FragmentLightfSGIX */
+ { 31189, -1 }, /* GetFragmentLightfvSGIX */
+ { 32801, -1 }, /* FragmentMaterialivSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_framezoom)
static const struct gl_function_remap GL_SGIX_framezoom_functions[] = {
- { 20661, -1 }, /* FrameZoomSGIX */
+ { 22306, -1 }, /* FrameZoomSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_igloo_interface)
static const struct gl_function_remap GL_SGIX_igloo_interface_functions[] = {
- { 26602, -1 }, /* IglooInterfaceSGIX */
+ { 28622, -1 }, /* IglooInterfaceSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_instruments)
static const struct gl_function_remap GL_SGIX_instruments_functions[] = {
- { 2573, -1 }, /* ReadInstrumentsSGIX */
- { 5764, -1 }, /* PollInstrumentsSGIX */
- { 9623, -1 }, /* GetInstrumentsSGIX */
- { 11811, -1 }, /* StartInstrumentsSGIX */
- { 14734, -1 }, /* StopInstrumentsSGIX */
- { 16417, -1 }, /* InstrumentsBufferSGIX */
+ { 2805, -1 }, /* ReadInstrumentsSGIX */
+ { 6585, -1 }, /* PollInstrumentsSGIX */
+ { 10553, -1 }, /* GetInstrumentsSGIX */
+ { 12924, -1 }, /* StartInstrumentsSGIX */
+ { 15918, -1 }, /* StopInstrumentsSGIX */
+ { 17777, -1 }, /* InstrumentsBufferSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_list_priority)
static const struct gl_function_remap GL_SGIX_list_priority_functions[] = {
- { 1125, -1 }, /* ListParameterfSGIX */
- { 2763, -1 }, /* GetListParameterfvSGIX */
- { 16332, -1 }, /* ListParameteriSGIX */
- { 17086, -1 }, /* ListParameterfvSGIX */
- { 19199, -1 }, /* ListParameterivSGIX */
- { 30149, -1 }, /* GetListParameterivSGIX */
+ { 1241, -1 }, /* ListParameterfSGIX */
+ { 3089, -1 }, /* GetListParameterfvSGIX */
+ { 17692, -1 }, /* ListParameteriSGIX */
+ { 18645, -1 }, /* ListParameterfvSGIX */
+ { 20786, -1 }, /* ListParameterivSGIX */
+ { 32362, -1 }, /* GetListParameterivSGIX */
{ -1, -1 }
};
#endif
@@ -5935,134 +6273,134 @@ static const struct gl_function_remap GL_SGIX_pixel_texture_functions[] = {
#if defined(need_GL_SGIX_polynomial_ffd)
static const struct gl_function_remap GL_SGIX_polynomial_ffd_functions[] = {
- { 3251, -1 }, /* LoadIdentityDeformationMapSGIX */
- { 14834, -1 }, /* DeformSGIX */
- { 22469, -1 }, /* DeformationMap3fSGIX */
- { 28909, -1 }, /* DeformationMap3dSGIX */
+ { 3685, -1 }, /* LoadIdentityDeformationMapSGIX */
+ { 16018, -1 }, /* DeformSGIX */
+ { 24222, -1 }, /* DeformationMap3fSGIX */
+ { 31077, -1 }, /* DeformationMap3dSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_reference_plane)
static const struct gl_function_remap GL_SGIX_reference_plane_functions[] = {
- { 13487, -1 }, /* ReferencePlaneSGIX */
+ { 14749, -1 }, /* ReferencePlaneSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_sprite)
static const struct gl_function_remap GL_SGIX_sprite_functions[] = {
- { 8778, -1 }, /* SpriteParameterfvSGIX */
- { 18988, -1 }, /* SpriteParameteriSGIX */
- { 24561, -1 }, /* SpriteParameterfSGIX */
- { 27166, -1 }, /* SpriteParameterivSGIX */
+ { 9635, -1 }, /* SpriteParameterfvSGIX */
+ { 20575, -1 }, /* SpriteParameteriSGIX */
+ { 26519, -1 }, /* SpriteParameterfSGIX */
+ { 29242, -1 }, /* SpriteParameterivSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_tag_sample_buffer)
static const struct gl_function_remap GL_SGIX_tag_sample_buffer_functions[] = {
- { 19047, -1 }, /* TagSampleBufferSGIX */
+ { 20634, -1 }, /* TagSampleBufferSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGI_color_table)
static const struct gl_function_remap GL_SGI_color_table_functions[] = {
- { 6852, _gloffset_ColorTableParameteriv },
- { 7564, _gloffset_ColorTable },
- { 13983, _gloffset_GetColorTable },
- { 14093, _gloffset_CopyColorTable },
- { 17777, _gloffset_ColorTableParameterfv },
- { 21200, _gloffset_GetColorTableParameterfv },
- { 23176, _gloffset_GetColorTableParameteriv },
+ { 7673, _gloffset_ColorTableParameteriv },
+ { 8385, _gloffset_ColorTable },
+ { 15245, _gloffset_GetColorTable },
+ { 15355, _gloffset_CopyColorTable },
+ { 19347, _gloffset_ColorTableParameterfv },
+ { 22882, _gloffset_GetColorTableParameterfv },
+ { 24980, _gloffset_GetColorTableParameteriv },
{ -1, -1 }
};
#endif
#if defined(need_GL_SUNX_constant_data)
static const struct gl_function_remap GL_SUNX_constant_data_functions[] = {
- { 28999, -1 }, /* FinishTextureSUNX */
+ { 31167, -1 }, /* FinishTextureSUNX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_global_alpha)
static const struct gl_function_remap GL_SUN_global_alpha_functions[] = {
- { 3035, -1 }, /* GlobalAlphaFactorubSUN */
- { 4224, -1 }, /* GlobalAlphaFactoriSUN */
- { 5789, -1 }, /* GlobalAlphaFactordSUN */
- { 8862, -1 }, /* GlobalAlphaFactoruiSUN */
- { 9214, -1 }, /* GlobalAlphaFactorbSUN */
- { 12126, -1 }, /* GlobalAlphaFactorfSUN */
- { 12245, -1 }, /* GlobalAlphaFactorusSUN */
- { 20900, -1 }, /* GlobalAlphaFactorsSUN */
+ { 3408, -1 }, /* GlobalAlphaFactorubSUN */
+ { 4818, -1 }, /* GlobalAlphaFactoriSUN */
+ { 6610, -1 }, /* GlobalAlphaFactordSUN */
+ { 9719, -1 }, /* GlobalAlphaFactoruiSUN */
+ { 10144, -1 }, /* GlobalAlphaFactorbSUN */
+ { 13239, -1 }, /* GlobalAlphaFactorfSUN */
+ { 13403, -1 }, /* GlobalAlphaFactorusSUN */
+ { 22569, -1 }, /* GlobalAlphaFactorsSUN */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_mesh_array)
static const struct gl_function_remap GL_SUN_mesh_array_functions[] = {
- { 26978, -1 }, /* DrawMeshArraysSUN */
+ { 29033, -1 }, /* DrawMeshArraysSUN */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_triangle_list)
static const struct gl_function_remap GL_SUN_triangle_list_functions[] = {
- { 3971, -1 }, /* ReplacementCodeubSUN */
- { 5600, -1 }, /* ReplacementCodeubvSUN */
- { 17498, -1 }, /* ReplacementCodeusvSUN */
- { 17686, -1 }, /* ReplacementCodePointerSUN */
- { 19857, -1 }, /* ReplacementCodeuiSUN */
- { 20612, -1 }, /* ReplacementCodeusSUN */
- { 27623, -1 }, /* ReplacementCodeuivSUN */
+ { 4493, -1 }, /* ReplacementCodeubSUN */
+ { 6369, -1 }, /* ReplacementCodeubvSUN */
+ { 19068, -1 }, /* ReplacementCodeusvSUN */
+ { 19256, -1 }, /* ReplacementCodePointerSUN */
+ { 21444, -1 }, /* ReplacementCodeuiSUN */
+ { 22257, -1 }, /* ReplacementCodeusSUN */
+ { 29699, -1 }, /* ReplacementCodeuivSUN */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_vertex)
static const struct gl_function_remap GL_SUN_vertex_functions[] = {
- { 999, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */
- { 1197, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */
- { 1423, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */
- { 1699, -1 }, /* ReplacementCodeuiVertex3fvSUN */
- { 1833, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */
- { 2346, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */
- { 2642, -1 }, /* Color4ubVertex3fvSUN */
- { 4105, -1 }, /* Color4ubVertex3fSUN */
- { 4181, -1 }, /* TexCoord2fVertex3fSUN */
- { 4508, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */
- { 4866, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */
- { 5495, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */
- { 6240, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */
- { 6599, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */
- { 7311, -1 }, /* TexCoord2fNormal3fVertex3fSUN */
- { 8079, -1 }, /* Color3fVertex3fSUN */
- { 9173, -1 }, /* Color3fVertex3fvSUN */
- { 9588, -1 }, /* Color4fNormal3fVertex3fvSUN */
- { 10325, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */
- { 11674, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */
- { 13218, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */
- { 13629, -1 }, /* TexCoord2fColor3fVertex3fSUN */
- { 14759, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */
- { 15093, -1 }, /* Color4ubVertex2fvSUN */
- { 15333, -1 }, /* Normal3fVertex3fSUN */
- { 16358, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */
- { 16619, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */
- { 17327, -1 }, /* TexCoord2fVertex3fvSUN */
- { 18103, -1 }, /* Color4ubVertex2fSUN */
- { 18324, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */
- { 20282, -1 }, /* TexCoord2fColor4ubVertex3fSUN */
- { 20680, -1 }, /* Normal3fVertex3fvSUN */
- { 21109, -1 }, /* Color4fNormal3fVertex3fSUN */
- { 22018, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */
- { 24013, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */
- { 25238, -1 }, /* TexCoord4fVertex4fSUN */
- { 25664, -1 }, /* TexCoord2fColor3fVertex3fvSUN */
- { 26015, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */
- { 26142, -1 }, /* TexCoord4fVertex4fvSUN */
- { 26850, -1 }, /* ReplacementCodeuiVertex3fSUN */
+ { 1115, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */
+ { 1313, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */
+ { 1539, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */
+ { 1869, -1 }, /* ReplacementCodeuiVertex3fvSUN */
+ { 2003, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */
+ { 2561, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */
+ { 2874, -1 }, /* Color4ubVertex3fvSUN */
+ { 4652, -1 }, /* Color4ubVertex3fSUN */
+ { 4775, -1 }, /* TexCoord2fVertex3fSUN */
+ { 5119, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */
+ { 5570, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */
+ { 6264, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */
+ { 7061, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */
+ { 7420, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */
+ { 8132, -1 }, /* TexCoord2fNormal3fVertex3fSUN */
+ { 8936, -1 }, /* Color3fVertex3fSUN */
+ { 10080, -1 }, /* Color3fVertex3fvSUN */
+ { 10518, -1 }, /* Color4fNormal3fVertex3fvSUN */
+ { 11358, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */
+ { 12787, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */
+ { 14398, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */
+ { 14891, -1 }, /* TexCoord2fColor3fVertex3fSUN */
+ { 15943, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */
+ { 16358, -1 }, /* Color4ubVertex2fvSUN */
+ { 16645, -1 }, /* Normal3fVertex3fSUN */
+ { 17718, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */
+ { 18079, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */
+ { 18897, -1 }, /* TexCoord2fVertex3fvSUN */
+ { 19673, -1 }, /* Color4ubVertex2fSUN */
+ { 19911, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */
+ { 21893, -1 }, /* TexCoord2fColor4ubVertex3fSUN */
+ { 22325, -1 }, /* Normal3fVertex3fvSUN */
+ { 22791, -1 }, /* Color4fNormal3fVertex3fSUN */
+ { 23771, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */
+ { 25840, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */
+ { 27196, -1 }, /* TexCoord4fVertex4fSUN */
+ { 27622, -1 }, /* TexCoord2fColor3fVertex3fvSUN */
+ { 28009, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */
+ { 28136, -1 }, /* TexCoord4fVertex4fvSUN */
+ { 28870, -1 }, /* ReplacementCodeuiVertex3fSUN */
{ -1, -1 }
};
#endif
@@ -6070,40 +6408,40 @@ static const struct gl_function_remap GL_SUN_vertex_functions[] = {
#if defined(need_GL_VERSION_1_3)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_VERSION_1_3_functions[] = {
- { 381, _gloffset_MultiTexCoord3sARB },
- { 613, _gloffset_ActiveTextureARB },
- { 3761, _gloffset_MultiTexCoord1fvARB },
- { 5386, _gloffset_MultiTexCoord3dARB },
- { 5431, _gloffset_MultiTexCoord2iARB },
- { 5555, _gloffset_MultiTexCoord2svARB },
- { 7520, _gloffset_MultiTexCoord2fARB },
- { 9424, _gloffset_MultiTexCoord3fvARB },
- { 9981, _gloffset_MultiTexCoord4sARB },
- { 10615, _gloffset_MultiTexCoord2dvARB },
- { 10997, _gloffset_MultiTexCoord1svARB },
- { 11369, _gloffset_MultiTexCoord3svARB },
- { 11430, _gloffset_MultiTexCoord4iARB },
- { 12153, _gloffset_MultiTexCoord3iARB },
- { 12956, _gloffset_MultiTexCoord1dARB },
- { 13173, _gloffset_MultiTexCoord3dvARB },
- { 14337, _gloffset_MultiTexCoord3ivARB },
- { 14382, _gloffset_MultiTexCoord2sARB },
- { 15709, _gloffset_MultiTexCoord4ivARB },
- { 17427, _gloffset_ClientActiveTextureARB },
- { 19710, _gloffset_MultiTexCoord2dARB },
- { 20151, _gloffset_MultiTexCoord4dvARB },
- { 20462, _gloffset_MultiTexCoord4fvARB },
- { 21341, _gloffset_MultiTexCoord3fARB },
- { 23704, _gloffset_MultiTexCoord4dARB },
- { 23970, _gloffset_MultiTexCoord1sARB },
- { 24174, _gloffset_MultiTexCoord1dvARB },
- { 24984, _gloffset_MultiTexCoord1ivARB },
- { 25077, _gloffset_MultiTexCoord2ivARB },
- { 25416, _gloffset_MultiTexCoord1iARB },
- { 26718, _gloffset_MultiTexCoord4svARB },
- { 27236, _gloffset_MultiTexCoord1fARB },
- { 27499, _gloffset_MultiTexCoord4fARB },
- { 29826, _gloffset_MultiTexCoord2fvARB },
+ { 425, _gloffset_MultiTexCoord3sARB },
+ { 657, _gloffset_ActiveTextureARB },
+ { 4247, _gloffset_MultiTexCoord1fvARB },
+ { 6155, _gloffset_MultiTexCoord3dARB },
+ { 6200, _gloffset_MultiTexCoord2iARB },
+ { 6324, _gloffset_MultiTexCoord2svARB },
+ { 8341, _gloffset_MultiTexCoord2fARB },
+ { 10354, _gloffset_MultiTexCoord3fvARB },
+ { 10967, _gloffset_MultiTexCoord4sARB },
+ { 11648, _gloffset_MultiTexCoord2dvARB },
+ { 12063, _gloffset_MultiTexCoord1svARB },
+ { 12435, _gloffset_MultiTexCoord3svARB },
+ { 12496, _gloffset_MultiTexCoord4iARB },
+ { 13266, _gloffset_MultiTexCoord3iARB },
+ { 14136, _gloffset_MultiTexCoord1dARB },
+ { 14353, _gloffset_MultiTexCoord3dvARB },
+ { 15599, _gloffset_MultiTexCoord3ivARB },
+ { 15644, _gloffset_MultiTexCoord2sARB },
+ { 17045, _gloffset_MultiTexCoord4ivARB },
+ { 18997, _gloffset_ClientActiveTextureARB },
+ { 21297, _gloffset_MultiTexCoord2dARB },
+ { 21717, _gloffset_MultiTexCoord4dvARB },
+ { 22073, _gloffset_MultiTexCoord4fvARB },
+ { 23023, _gloffset_MultiTexCoord3fARB },
+ { 25531, _gloffset_MultiTexCoord4dARB },
+ { 25797, _gloffset_MultiTexCoord1sARB },
+ { 26001, _gloffset_MultiTexCoord1dvARB },
+ { 26942, _gloffset_MultiTexCoord1ivARB },
+ { 27035, _gloffset_MultiTexCoord2ivARB },
+ { 27374, _gloffset_MultiTexCoord1iARB },
+ { 28738, _gloffset_MultiTexCoord4svARB },
+ { 29312, _gloffset_MultiTexCoord1fARB },
+ { 29575, _gloffset_MultiTexCoord4fARB },
+ { 32039, _gloffset_MultiTexCoord2fvARB },
{ -1, -1 }
};
#endif
@@ -6150,3 +6488,17 @@ static const struct gl_function_remap GL_VERSION_3_1_functions[] = {
};
#endif
+#if defined(need_GL_VERSION_3_2)
+/* functions defined in MESA_remap_table_functions are excluded */
+static const struct gl_function_remap GL_VERSION_3_2_functions[] = {
+ { -1, -1 }
+};
+#endif
+
+#if defined(need_GL_VERSION_3_3)
+/* functions defined in MESA_remap_table_functions are excluded */
+static const struct gl_function_remap GL_VERSION_3_3_functions[] = {
+ { -1, -1 }
+};
+#endif
+
diff --git a/src/mesa/main/renderbuffer.c b/src/mesa/main/renderbuffer.c
index dc8bc74787..3d1a8f8592 100644
--- a/src/mesa/main/renderbuffer.c
+++ b/src/mesa/main/renderbuffer.c
@@ -1766,7 +1766,7 @@ _mesa_add_accum_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb,
/**
- * Add a software-based accumulation renderbuffer to the given framebuffer.
+ * Add a software-based aux renderbuffer to the given framebuffer.
* This is a helper routine for device drivers when creating a
* window system framebuffer (not a user-created render/framebuffer).
* Once this function is called, you can basically forget about this
@@ -1795,7 +1795,7 @@ _mesa_add_aux_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb,
assert(fb->Attachment[BUFFER_AUX0 + i].Renderbuffer == NULL);
if (!rb) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "Allocating accum buffer");
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "Allocating aux buffer");
return GL_FALSE;
}
diff --git a/src/mesa/main/renderbuffer.h b/src/mesa/main/renderbuffer.h
index 8791369dbe..62e812f93a 100644
--- a/src/mesa/main/renderbuffer.h
+++ b/src/mesa/main/renderbuffer.h
@@ -27,8 +27,8 @@
#define RENDERBUFFER_H
#include "glheader.h"
-#include "mtypes.h"
+struct gl_context;
struct gl_framebuffer;
struct gl_renderbuffer;
diff --git a/src/mesa/main/scissor.h b/src/mesa/main/scissor.h
index bd909019db..da9385e2b9 100644
--- a/src/mesa/main/scissor.h
+++ b/src/mesa/main/scissor.h
@@ -27,8 +27,9 @@
#define SCISSOR_H
-#include "main/mtypes.h"
+#include "glheader.h"
+struct gl_context;
extern void GLAPIENTRY
_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height );
diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
index 8ecda71928..030236e735 100644
--- a/src/mesa/main/shaderapi.c
+++ b/src/mesa/main/shaderapi.c
@@ -116,7 +116,12 @@ _mesa_init_shader_state(struct gl_context *ctx)
void
_mesa_free_shader_state(struct gl_context *ctx)
{
- _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentProgram, NULL);
+ _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentVertexProgram, NULL);
+ _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentGeometryProgram,
+ NULL);
+ _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentFragmentProgram,
+ NULL);
+ _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, NULL);
}
@@ -399,6 +404,14 @@ bind_attrib_location(struct gl_context *ctx, GLuint program, GLuint index,
}
+static void
+bind_frag_data_location(struct gl_context *ctx, GLuint program,
+ GLuint colorNumber, const GLchar *name)
+{
+ _mesa_problem(ctx, "bind_frag_data_location() not implemented yet");
+}
+
+
static GLuint
create_shader(struct gl_context *ctx, GLenum type)
{
@@ -600,6 +613,16 @@ get_attached_shaders(struct gl_context *ctx, GLuint program, GLsizei maxCount,
}
+static GLint
+get_frag_data_location(struct gl_context *ctx, GLuint program,
+ const GLchar *name)
+{
+ _mesa_problem(ctx, "get_frag_data_location() not implemented yet");
+ return -1;
+}
+
+
+
/**
* glGetHandleARB() - return ID/name of currently bound shader program.
*/
@@ -607,8 +630,8 @@ static GLuint
get_handle(struct gl_context *ctx, GLenum pname)
{
if (pname == GL_PROGRAM_OBJECT_ARB) {
- if (ctx->Shader.CurrentProgram)
- return ctx->Shader.CurrentProgram->Name;
+ if (ctx->Shader.ActiveProgram)
+ return ctx->Shader.ActiveProgram->Name;
else
return 0;
}
@@ -845,7 +868,10 @@ link_program(struct gl_context *ctx, GLuint program)
if (!shProg)
return;
- if (obj->Active && shProg == ctx->Shader.CurrentProgram) {
+ if (obj->Active
+ && (shProg == ctx->Shader.CurrentVertexProgram
+ || shProg == ctx->Shader.CurrentGeometryProgram
+ || shProg == ctx->Shader.CurrentFragmentProgram)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glLinkProgram(transform feedback active");
return;
@@ -908,52 +934,83 @@ print_shader_info(const struct gl_shader_program *shProg)
/**
- * Use the named shader program for subsequent rendering.
+ * Use the named shader program for subsequent glUniform calls
*/
void
-_mesa_use_program(struct gl_context *ctx, GLuint program)
+_mesa_active_program(struct gl_context *ctx, struct gl_shader_program *shProg,
+ const char *caller)
{
- struct gl_shader_program *shProg;
- struct gl_transform_feedback_object *obj =
- ctx->TransformFeedback.CurrentObject;
-
- if (obj->Active) {
+ if ((shProg != NULL) && !shProg->LinkStatus) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glUseProgram(transform feedback active)");
+ "%s(program %u not linked)", caller, shProg->Name);
return;
}
- if (ctx->Shader.CurrentProgram &&
- ctx->Shader.CurrentProgram->Name == program) {
- /* no-op */
- return;
+ if (ctx->Shader.ActiveProgram != shProg) {
+ _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, shProg);
}
+}
- if (program) {
- shProg = _mesa_lookup_shader_program_err(ctx, program, "glUseProgram");
- if (!shProg) {
- return;
+/**
+ */
+static bool
+use_shader_program(struct gl_context *ctx, GLenum type,
+ struct gl_shader_program *shProg)
+{
+ struct gl_shader_program **target;
+
+ switch (type) {
+#if FEATURE_ARB_vertex_shader
+ case GL_VERTEX_SHADER:
+ target = &ctx->Shader.CurrentVertexProgram;
+ if ((shProg == NULL)
+ || (shProg->_LinkedShaders[MESA_SHADER_VERTEX] == NULL)) {
+ shProg = NULL;
}
- if (!shProg->LinkStatus) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glUseProgram(program %u not linked)", program);
- return;
+ break;
+#endif
+#if FEATURE_ARB_geometry_shader4
+ case GL_GEOMETRY_SHADER_ARB:
+ target = &ctx->Shader.CurrentGeometryProgram;
+ if ((shProg == NULL)
+ || (shProg->_LinkedShaders[MESA_SHADER_GEOMETRY] == NULL)) {
+ shProg = NULL;
}
-
- /* debug code */
- if (ctx->Shader.Flags & GLSL_USE_PROG) {
- print_shader_info(shProg);
+ break;
+#endif
+#if FEATURE_ARB_fragment_shader
+ case GL_FRAGMENT_SHADER:
+ target = &ctx->Shader.CurrentFragmentProgram;
+ if ((shProg == NULL)
+ || (shProg->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL)) {
+ shProg = NULL;
}
- }
- else {
- shProg = NULL;
+ break;
+#endif
+ default:
+ return false;
}
- if (ctx->Shader.CurrentProgram != shProg) {
+ if (*target != shProg) {
FLUSH_VERTICES(ctx, _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS);
- _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentProgram, shProg);
+ _mesa_reference_shader_program(ctx, target, shProg);
+ return true;
}
+ return false;
+}
+
+/**
+ * Use the named shader program for subsequent rendering.
+ */
+void
+_mesa_use_program(struct gl_context *ctx, struct gl_shader_program *shProg)
+{
+ use_shader_program(ctx, GL_VERTEX_SHADER, shProg);
+ use_shader_program(ctx, GL_GEOMETRY_SHADER_ARB, shProg);
+ use_shader_program(ctx, GL_FRAGMENT_SHADER, shProg);
+ _mesa_active_program(ctx, shProg, "glUseProgram");
+
if (ctx->Driver.UseProgram)
ctx->Driver.UseProgram(ctx, shProg);
}
@@ -1110,6 +1167,16 @@ _mesa_BindAttribLocationARB(GLhandleARB program, GLuint index,
}
+/* GL_EXT_gpu_shader4, GL3 */
+void GLAPIENTRY
+_mesa_BindFragDataLocation(GLuint program, GLuint colorNumber,
+ const GLchar *name)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ bind_frag_data_location(ctx, program, colorNumber, name);
+}
+
+
void GLAPIENTRY
_mesa_CompileShaderARB(GLhandleARB shaderObj)
{
@@ -1240,6 +1307,16 @@ _mesa_GetAttribLocationARB(GLhandleARB program, const GLcharARB * name)
}
+/* GL_EXT_gpu_shader4, GL3 */
+GLint GLAPIENTRY
+_mesa_GetFragDataLocation(GLuint program, const GLchar *name)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ return get_frag_data_location(ctx, program, name);
+}
+
+
+
void GLAPIENTRY
_mesa_GetInfoLogARB(GLhandleARB object, GLsizei maxLength, GLsizei * length,
GLcharARB * infoLog)
@@ -1501,8 +1578,37 @@ void GLAPIENTRY
_mesa_UseProgramObjectARB(GLhandleARB program)
{
GET_CURRENT_CONTEXT(ctx);
- FLUSH_VERTICES(ctx, _NEW_PROGRAM);
- _mesa_use_program(ctx, program);
+ struct gl_shader_program *shProg;
+ struct gl_transform_feedback_object *obj =
+ ctx->TransformFeedback.CurrentObject;
+
+ if (obj->Active) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glUseProgram(transform feedback active)");
+ return;
+ }
+
+ if (program) {
+ shProg = _mesa_lookup_shader_program_err(ctx, program, "glUseProgram");
+ if (!shProg) {
+ return;
+ }
+ if (!shProg->LinkStatus) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glUseProgram(program %u not linked)", program);
+ return;
+ }
+
+ /* debug code */
+ if (ctx->Shader.Flags & GLSL_USE_PROG) {
+ print_shader_info(shProg);
+ }
+ }
+ else {
+ shProg = NULL;
+ }
+
+ _mesa_use_program(ctx, shProg);
}
@@ -1618,6 +1724,104 @@ _mesa_ProgramParameteriARB(GLuint program, GLenum pname,
#endif
+void
+_mesa_use_shader_program(struct gl_context *ctx, GLenum type,
+ struct gl_shader_program *shProg)
+{
+ use_shader_program(ctx, type, shProg);
+
+ if (ctx->Driver.UseProgram)
+ ctx->Driver.UseProgram(ctx, shProg);
+}
+
+void GLAPIENTRY
+_mesa_UseShaderProgramEXT(GLenum type, GLuint program)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg = NULL;
+
+ if (!validate_shader_target(ctx, type)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glUseShaderProgramEXT(type)");
+ return;
+ }
+
+ if (ctx->TransformFeedback.CurrentObject->Active) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glUseShaderProgramEXT(transform feedback is active)");
+ return;
+ }
+
+ if (program) {
+ shProg = _mesa_lookup_shader_program_err(ctx, program,
+ "glUseShaderProgramEXT");
+ if (shProg == NULL)
+ return;
+
+ if (!shProg->LinkStatus) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glUseShaderProgramEXT(program not linked)");
+ return;
+ }
+ }
+
+ _mesa_use_shader_program(ctx, type, shProg);
+}
+
+void GLAPIENTRY
+_mesa_ActiveProgramEXT(GLuint program)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg = (program != 0)
+ ? _mesa_lookup_shader_program_err(ctx, program, "glActiveProgramEXT")
+ : NULL;
+
+ _mesa_active_program(ctx, shProg, "glActiveProgramEXT");
+ return;
+}
+
+GLuint GLAPIENTRY
+_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ const GLuint shader = create_shader(ctx, type);
+ GLuint program = 0;
+
+ if (shader) {
+ shader_source(ctx, shader, _mesa_strdup(string));
+ compile_shader(ctx, shader);
+
+ program = create_shader_program(ctx);
+ if (program) {
+ struct gl_shader_program *shProg;
+ struct gl_shader *sh;
+ GLint compiled = GL_FALSE;
+
+ shProg = _mesa_lookup_shader_program(ctx, program);
+ sh = _mesa_lookup_shader(ctx, shader);
+
+ get_shaderiv(ctx, shader, GL_COMPILE_STATUS, &compiled);
+ if (compiled) {
+ attach_shader(ctx, program, shader);
+ link_program(ctx, program);
+ detach_shader(ctx, program, shader);
+
+#if 0
+ /* Possibly... */
+ if (active-user-defined-varyings-in-linked-program) {
+ append-error-to-info-log;
+ shProg->LinkStatus = GL_FALSE;
+ }
+#endif
+ }
+
+ shProg->InfoLog = talloc_strdup_append(shProg->InfoLog, sh->InfoLog);
+ }
+
+ delete_shader(ctx, shader);
+ }
+
+ return program;
+}
/**
* Plug in shader-related functions into API dispatch table.
@@ -1668,6 +1872,15 @@ _mesa_init_shader_dispatch(struct _glapi_table *exec)
#if FEATURE_ARB_geometry_shader4
SET_ProgramParameteriARB(exec, _mesa_ProgramParameteriARB);
#endif
+
+ SET_UseShaderProgramEXT(exec, _mesa_UseShaderProgramEXT);
+ SET_ActiveProgramEXT(exec, _mesa_ActiveProgramEXT);
+ SET_CreateShaderProgramEXT(exec, _mesa_CreateShaderProgramEXT);
+
+ /* GL_EXT_gpu_shader4 / GL 3.0 */
+ SET_BindFragDataLocationEXT(exec, _mesa_BindFragDataLocation);
+ SET_GetFragDataLocationEXT(exec, _mesa_GetFragDataLocation);
+
#endif /* FEATURE_GL */
}
diff --git a/src/mesa/main/shaderapi.h b/src/mesa/main/shaderapi.h
index b55d7ca8b2..e4b477660d 100644
--- a/src/mesa/main/shaderapi.h
+++ b/src/mesa/main/shaderapi.h
@@ -28,8 +28,10 @@
#include "glheader.h"
-#include "mtypes.h"
+struct _glapi_table;
+struct gl_context;
+struct gl_shader_program;
extern GLint
_mesa_sizeof_glsl_type(GLenum type);
@@ -39,8 +41,11 @@ _mesa_copy_string(GLchar *dst, GLsizei maxLength,
GLsizei *length, const GLchar *src);
extern void
-_mesa_use_program(struct gl_context *ctx, GLuint program);
+_mesa_use_program(struct gl_context *ctx, struct gl_shader_program *shProg);
+extern void
+_mesa_active_program(struct gl_context *ctx, struct gl_shader_program *shProg,
+ const char *caller);
extern void
_mesa_init_shader_dispatch(struct _glapi_table *exec);
@@ -68,6 +73,9 @@ _mesa_DetachObjectARB(GLhandleARB, GLhandleARB);
extern void GLAPIENTRY
_mesa_GetAttachedObjectsARB(GLhandleARB, GLsizei, GLsizei *, GLhandleARB *);
+extern GLint GLAPIENTRY
+_mesa_GetFragDataLocation(GLuint program, const GLchar *name);
+
extern GLhandleARB GLAPIENTRY
_mesa_GetHandleARB(GLenum pname);
@@ -106,6 +114,10 @@ extern void GLAPIENTRY
_mesa_BindAttribLocationARB(GLhandleARB, GLuint, const GLcharARB *);
extern void GLAPIENTRY
+_mesa_BindFragDataLocation(GLuint program, GLuint colorNumber,
+ const GLchar *name);
+
+extern void GLAPIENTRY
_mesa_GetActiveAttribARB(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *,
GLenum *, GLcharARB *);
@@ -165,5 +177,17 @@ _mesa_ShaderBinary(GLint n, const GLuint *shaders, GLenum binaryformat,
extern void GLAPIENTRY
_mesa_ProgramParameteriARB(GLuint program, GLenum pname,
GLint value);
+void
+_mesa_use_shader_program(struct gl_context *ctx, GLenum type,
+ struct gl_shader_program *shProg);
+
+extern void GLAPIENTRY
+_mesa_UseShaderProgramEXT(GLenum type, GLuint program);
+
+extern void GLAPIENTRY
+_mesa_ActiveProgramEXT(GLuint program);
+
+extern GLuint GLAPIENTRY
+_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string);
#endif /* SHADERAPI_H */
diff --git a/src/mesa/main/shaderobj.h b/src/mesa/main/shaderobj.h
index 5ea8ddc88d..346a5b7517 100644
--- a/src/mesa/main/shaderobj.h
+++ b/src/mesa/main/shaderobj.h
@@ -97,11 +97,11 @@ _mesa_init_shader_state(struct gl_context *ctx);
extern void
_mesa_free_shader_state(struct gl_context *ctx);
+
static INLINE GLuint
_mesa_shader_type_to_index(GLenum v)
{
- switch(v)
- {
+ switch (v) {
case GL_VERTEX_SHADER:
return MESA_SHADER_VERTEX;
case GL_FRAGMENT_SHADER:
@@ -109,25 +109,27 @@ _mesa_shader_type_to_index(GLenum v)
case GL_GEOMETRY_SHADER:
return MESA_SHADER_GEOMETRY;
default:
- ASSERT(0);
+ ASSERT(0 && "bad value in _mesa_shader_type_to_index()");
return ~0;
}
}
+
static INLINE GLenum
_mesa_shader_index_to_type(GLuint i)
{
- GLenum enums[MESA_SHADER_TYPES] = {
- GL_VERTEX_SHADER,
- GL_FRAGMENT_SHADER,
- GL_GEOMETRY_SHADER ,
+ static const GLenum enums[MESA_SHADER_TYPES] = {
+ GL_VERTEX_SHADER,
+ GL_FRAGMENT_SHADER,
+ GL_GEOMETRY_SHADER ,
};
- if(i >= MESA_SHADER_TYPES)
+ if (i >= MESA_SHADER_TYPES)
return 0;
else
return enums[i];
}
+
#ifdef __cplusplus
}
#endif
diff --git a/src/mesa/main/shared.h b/src/mesa/main/shared.h
index 43f8a388e6..768d69f694 100644
--- a/src/mesa/main/shared.h
+++ b/src/mesa/main/shared.h
@@ -25,7 +25,7 @@
#ifndef SHARED_H
#define SHARED_H
-#include "mtypes.h"
+struct gl_context;
struct gl_shared_state *
_mesa_alloc_shared_state(struct gl_context *ctx);
diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c
index 5529732de0..cce1b464f0 100644
--- a/src/mesa/main/state.c
+++ b/src/mesa/main/state.c
@@ -247,7 +247,9 @@ update_program_enables(struct gl_context *ctx)
static GLbitfield
update_program(struct gl_context *ctx)
{
- const struct gl_shader_program *shProg = ctx->Shader.CurrentProgram;
+ const struct gl_shader_program *vsProg = ctx->Shader.CurrentVertexProgram;
+ const struct gl_shader_program *gsProg = ctx->Shader.CurrentGeometryProgram;
+ const struct gl_shader_program *fsProg = ctx->Shader.CurrentFragmentProgram;
const struct gl_vertex_program *prevVP = ctx->VertexProgram._Current;
const struct gl_fragment_program *prevFP = ctx->FragmentProgram._Current;
const struct gl_geometry_program *prevGP = ctx->GeometryProgram._Current;
@@ -269,10 +271,10 @@ update_program(struct gl_context *ctx)
* come up, or matter.
*/
- if (shProg && shProg->LinkStatus && shProg->FragmentProgram) {
+ if (fsProg && fsProg->LinkStatus && fsProg->FragmentProgram) {
/* Use shader programs */
_mesa_reference_fragprog(ctx, &ctx->FragmentProgram._Current,
- shProg->FragmentProgram);
+ fsProg->FragmentProgram);
}
else if (ctx->FragmentProgram._Enabled) {
/* use user-defined vertex program */
@@ -292,10 +294,10 @@ update_program(struct gl_context *ctx)
_mesa_reference_fragprog(ctx, &ctx->FragmentProgram._Current, NULL);
}
- if (shProg && shProg->LinkStatus && shProg->GeometryProgram) {
+ if (gsProg && gsProg->LinkStatus && gsProg->GeometryProgram) {
/* Use shader programs */
_mesa_reference_geomprog(ctx, &ctx->GeometryProgram._Current,
- shProg->GeometryProgram);
+ gsProg->GeometryProgram);
} else {
/* no fragment program */
_mesa_reference_geomprog(ctx, &ctx->GeometryProgram._Current, NULL);
@@ -305,10 +307,10 @@ update_program(struct gl_context *ctx)
* _mesa_get_fixed_func_vertex_program() needs to know active
* fragprog inputs.
*/
- if (shProg && shProg->LinkStatus && shProg->VertexProgram) {
+ if (vsProg && vsProg->LinkStatus && vsProg->VertexProgram) {
/* Use shader programs */
_mesa_reference_vertprog(ctx, &ctx->VertexProgram._Current,
- shProg->VertexProgram);
+ vsProg->VertexProgram);
}
else if (ctx->VertexProgram._Enabled) {
/* use user-defined vertex program */
@@ -481,8 +483,6 @@ update_tricaps(struct gl_context *ctx, GLbitfield new_state)
if (1/*new_state & _NEW_POINT*/) {
if (ctx->Point.SmoothFlag)
ctx->_TriangleCaps |= DD_POINT_SMOOTH;
- if (ctx->Point.Size != 1.0F)
- ctx->_TriangleCaps |= DD_POINT_SIZE;
if (ctx->Point._Attenuated)
ctx->_TriangleCaps |= DD_POINT_ATTEN;
}
@@ -495,8 +495,6 @@ update_tricaps(struct gl_context *ctx, GLbitfield new_state)
ctx->_TriangleCaps |= DD_LINE_SMOOTH;
if (ctx->Line.StippleFlag)
ctx->_TriangleCaps |= DD_LINE_STIPPLE;
- if (ctx->Line.Width != 1.0)
- ctx->_TriangleCaps |= DD_LINE_WIDTH;
}
/*
diff --git a/src/mesa/main/stencil.h b/src/mesa/main/stencil.h
index 38a7183a81..b772bfd6e6 100644
--- a/src/mesa/main/stencil.h
+++ b/src/mesa/main/stencil.h
@@ -32,8 +32,9 @@
#define STENCIL_H
-#include "mtypes.h"
+#include "glheader.h"
+struct gl_context;
extern void GLAPIENTRY
_mesa_ClearStencil( GLint s );
diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c
index 4647a9c440..a8bffe416d 100644
--- a/src/mesa/main/texenvprogram.c
+++ b/src/mesa/main/texenvprogram.c
@@ -310,9 +310,10 @@ static GLuint translate_tex_src_bit( GLbitfield bit )
static GLbitfield get_fp_input_mask( struct gl_context *ctx )
{
/* _NEW_PROGRAM */
- const GLboolean vertexShader = (ctx->Shader.CurrentProgram &&
- ctx->Shader.CurrentProgram->LinkStatus &&
- ctx->Shader.CurrentProgram->VertexProgram);
+ const GLboolean vertexShader =
+ (ctx->Shader.CurrentVertexProgram &&
+ ctx->Shader.CurrentVertexProgram->LinkStatus &&
+ ctx->Shader.CurrentVertexProgram->VertexProgram);
const GLboolean vertexProgram = ctx->VertexProgram._Enabled;
GLbitfield fp_inputs = 0x0;
@@ -377,7 +378,7 @@ static GLbitfield get_fp_input_mask( struct gl_context *ctx )
* validation (see additional comments in state.c).
*/
if (vertexShader)
- vprog = ctx->Shader.CurrentProgram->VertexProgram;
+ vprog = ctx->Shader.CurrentVertexProgram->VertexProgram;
else
vprog = ctx->VertexProgram.Current;
diff --git a/src/mesa/main/texfetch.c b/src/mesa/main/texfetch.c
index aa3a6961b6..372ef2654a 100644
--- a/src/mesa/main/texfetch.c
+++ b/src/mesa/main/texfetch.c
@@ -823,17 +823,11 @@ void
_mesa_set_fetch_functions(struct gl_texture_image *texImage, GLuint dims)
{
ASSERT(dims == 1 || dims == 2 || dims == 3);
- ASSERT(texImage->TexFormat);
- if (!texImage->FetchTexelf) {
- texImage->FetchTexelf =
- _mesa_get_texel_fetch_func(texImage->TexFormat, dims);
- }
+ texImage->FetchTexelf =
+ _mesa_get_texel_fetch_func(texImage->TexFormat, dims);
- /* now check if we need to use a float/chan adaptor */
- if (!texImage->FetchTexelc) {
- texImage->FetchTexelc = fetch_texel_float_to_chan;
- }
+ texImage->FetchTexelc = fetch_texel_float_to_chan;
ASSERT(texImage->FetchTexelc);
ASSERT(texImage->FetchTexelf);
diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c
index 30d1062a41..879ac529a0 100644
--- a/src/mesa/main/texgetimage.c
+++ b/src/mesa/main/texgetimage.c
@@ -35,6 +35,7 @@
#include "context.h"
#include "formats.h"
#include "image.h"
+#include "pack.h"
#include "texgetimage.h"
#include "teximage.h"
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index bc66e5d76e..060f34b7f9 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -596,7 +596,8 @@ _mesa_free_texture_image_data(struct gl_context *ctx,
* Free the texture image structure and the associated image data.
*/
void
-_mesa_delete_texture_image( struct gl_context *ctx, struct gl_texture_image *texImage )
+_mesa_delete_texture_image(struct gl_context *ctx,
+ struct gl_texture_image *texImage)
{
/* Free texImage->Data and/or any other driver-specific texture
* image storage.
@@ -635,7 +636,8 @@ _mesa_is_proxy_texture(GLenum target)
/**
- * Get the texture object that corresponds to the target of the given texture unit.
+ * Get the texture object that corresponds to the target of the given
+ * texture unit.
*
* \param ctx GL context.
* \param texUnit texture unit.
@@ -646,7 +648,8 @@ _mesa_is_proxy_texture(GLenum target)
* \sa gl_texture_unit.
*/
struct gl_texture_object *
-_mesa_select_tex_object(struct gl_context *ctx, const struct gl_texture_unit *texUnit,
+_mesa_select_tex_object(struct gl_context *ctx,
+ const struct gl_texture_unit *texUnit,
GLenum target)
{
switch (target) {
@@ -723,7 +726,8 @@ _mesa_get_current_tex_object(struct gl_context *ctx, GLenum target)
* \return pointer to the texture image structure, or NULL on failure.
*/
struct gl_texture_image *
-_mesa_select_tex_image(struct gl_context *ctx, const struct gl_texture_object *texObj,
+_mesa_select_tex_image(struct gl_context *ctx,
+ const struct gl_texture_object *texObj,
GLenum target, GLint level)
{
const GLuint face = _mesa_tex_target_to_face(target);
@@ -883,6 +887,45 @@ _mesa_max_texture_levels(struct gl_context *ctx, GLenum target)
}
+/**
+ * Return number of dimensions per mipmap level for the given texture target.
+ */
+static GLint
+get_texture_dimensions(GLenum target)
+{
+ switch (target) {
+ case GL_TEXTURE_1D:
+ case GL_PROXY_TEXTURE_1D:
+ return 1;
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_RECTANGLE:
+ case GL_TEXTURE_CUBE_MAP:
+ case GL_PROXY_TEXTURE_2D:
+ case GL_PROXY_TEXTURE_RECTANGLE:
+ case GL_PROXY_TEXTURE_CUBE_MAP:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
+ case GL_TEXTURE_1D_ARRAY:
+ case GL_PROXY_TEXTURE_1D_ARRAY:
+ return 2;
+ case GL_TEXTURE_3D:
+ case GL_PROXY_TEXTURE_3D:
+ case GL_TEXTURE_2D_ARRAY:
+ case GL_PROXY_TEXTURE_2D_ARRAY:
+ return 3;
+ default:
+ _mesa_problem(NULL, "invalid target 0x%x in get_texture_dimensions()",
+ target);
+ return 2;
+ }
+}
+
+
+
#if 000 /* not used anymore */
/*
@@ -988,6 +1031,7 @@ clear_teximage_fields(struct gl_texture_image *img)
* \param depth image depth.
* \param border image border.
* \param internalFormat internal format.
+ * \param format the actual hardware format (one of MESA_FORMAT_*)
*
* Fills in the fields of \p img with the given information.
* Note: width, height and depth include the border.
@@ -996,9 +1040,10 @@ void
_mesa_init_teximage_fields(struct gl_context *ctx, GLenum target,
struct gl_texture_image *img,
GLsizei width, GLsizei height, GLsizei depth,
- GLint border, GLenum internalFormat)
+ GLint border, GLenum internalFormat,
+ gl_format format)
{
- GLint i;
+ GLint i, dims;
ASSERT(img);
ASSERT(width >= 0);
@@ -1069,8 +1114,11 @@ _mesa_init_teximage_fields(struct gl_context *ctx, GLenum target,
img->DepthScale = (GLfloat) img->Depth;
}
- img->FetchTexelc = NULL;
- img->FetchTexelf = NULL;
+ img->TexFormat = format;
+
+ dims = get_texture_dimensions(target);
+
+ _mesa_set_fetch_functions(img, dims);
}
@@ -1084,7 +1132,8 @@ _mesa_init_teximage_fields(struct gl_context *ctx, GLenum target,
* fields are cleared so that its parent object will test incomplete.
*/
void
-_mesa_clear_texture_image(struct gl_context *ctx, struct gl_texture_image *texImage)
+_mesa_clear_texture_image(struct gl_context *ctx,
+ struct gl_texture_image *texImage)
{
ctx->Driver.FreeTexImageData(ctx, texImage);
clear_teximage_fields(texImage);
@@ -1230,14 +1279,24 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level,
static GLboolean
target_can_be_compressed(struct gl_context *ctx, GLenum target)
{
- return (((target == GL_TEXTURE_2D || target == GL_PROXY_TEXTURE_2D))
- || ((ctx->Extensions.ARB_texture_cube_map &&
- (target == GL_PROXY_TEXTURE_CUBE_MAP ||
- (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
- target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z))))
- || ((ctx->Extensions.MESA_texture_array &&
- ((target == GL_PROXY_TEXTURE_2D_ARRAY_EXT) ||
- (target == GL_TEXTURE_2D_ARRAY_EXT)))));
+ switch (target) {
+ case GL_TEXTURE_2D:
+ case GL_PROXY_TEXTURE_2D:
+ return GL_TRUE;
+ case GL_PROXY_TEXTURE_CUBE_MAP:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
+ return ctx->Extensions.ARB_texture_cube_map;
+ case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
+ case GL_TEXTURE_2D_ARRAY_EXT:
+ return ctx->Extensions.MESA_texture_array;
+ default:
+ return GL_FALSE;
+ }
}
@@ -1245,12 +1304,12 @@ target_can_be_compressed(struct gl_context *ctx, GLenum target)
* Test the glTexImage[123]D() parameters for errors.
*
* \param ctx GL context.
+ * \param dimensions texture image dimensions (must be 1, 2 or 3).
* \param target texture target given by the user.
* \param level image level given by the user.
* \param internalFormat internal format given by the user.
* \param format pixel data format given by the user.
* \param type pixel data type given by the user.
- * \param dimensions texture image dimensions (must be 1, 2 or 3).
* \param width image width given by the user.
* \param height image height given by the user.
* \param depth image depth given by the user.
@@ -1259,14 +1318,14 @@ target_can_be_compressed(struct gl_context *ctx, GLenum target)
* \return GL_TRUE if an error was detected, or GL_FALSE if no errors.
*
* Verifies each of the parameters against the constants specified in
- * __struct gl_contextRec::Const and the supported extensions, and according to the
- * OpenGL specification.
+ * __struct gl_contextRec::Const and the supported extensions, and according
+ * to the OpenGL specification.
*/
static GLboolean
-texture_error_check( struct gl_context *ctx, GLenum target,
+texture_error_check( struct gl_context *ctx,
+ GLuint dimensions, GLenum target,
GLint level, GLint internalFormat,
GLenum format, GLenum type,
- GLuint dimensions,
GLint width, GLint height,
GLint depth, GLint border )
{
@@ -1392,11 +1451,15 @@ texture_error_check( struct gl_context *ctx, GLenum target,
/* Check incoming image format and type */
if (!_mesa_is_legal_format_and_type(ctx, format, type)) {
- /* Yes, generate GL_INVALID_OPERATION, not GL_INVALID_ENUM, if there
- * is a type/format mismatch. See 1.2 spec page 94, sec 3.6.4.
+ /* Normally, GL_INVALID_OPERATION is generated by a format/type
+ * mismatch (see the 1.2 spec page 94, sec 3.6.4.). But with the
+ * GL_EXT_texture_integer extension, some combinations should generate
+ * GL_INVALID_ENUM instead (grr!).
*/
if (!isProxy) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
+ GLenum error = _mesa_is_integer_format(format)
+ ? GL_INVALID_ENUM : GL_INVALID_OPERATION;
+ _mesa_error(ctx, error,
"glTexImage%dD(incompatible format 0x%x, type 0x%x)",
dimensions, format, type);
}
@@ -1482,6 +1545,18 @@ texture_error_check( struct gl_context *ctx, GLenum target,
}
}
+ /* additional checks for integer textures */
+ if (ctx->Extensions.EXT_texture_integer &&
+ (_mesa_is_integer_format(format) !=
+ _mesa_is_integer_format(internalFormat))) {
+ if (!isProxy) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glTexImage%dD(integer/non-integer format mismatch)",
+ dimensions);
+ }
+ return GL_TRUE;
+ }
+
/* if we get here, the parameters are OK */
return GL_FALSE;
}
@@ -1506,8 +1581,8 @@ texture_error_check( struct gl_context *ctx, GLenum target,
* \return GL_TRUE if an error was detected, or GL_FALSE if no errors.
*
* Verifies each of the parameters against the constants specified in
- * __struct gl_contextRec::Const and the supported extensions, and according to the
- * OpenGL specification.
+ * __struct gl_contextRec::Const and the supported extensions, and according
+ * to the OpenGL specification.
*/
static GLboolean
subtexture_error_check( struct gl_context *ctx, GLuint dimensions,
@@ -1588,7 +1663,12 @@ subtexture_error_check( struct gl_context *ctx, GLuint dimensions,
}
if (!_mesa_is_legal_format_and_type(ctx, format, type)) {
- _mesa_error(ctx, GL_INVALID_ENUM,
+ /* As with the glTexImage2D check above, the error code here
+ * depends on texture integer.
+ */
+ GLenum error = _mesa_is_integer_format(format)
+ ? GL_INVALID_OPERATION : GL_INVALID_ENUM;
+ _mesa_error(ctx, error,
"glTexSubImage%dD(incompatible format 0x%x, type 0x%x)",
dimensions, format, type);
return GL_TRUE;
@@ -1701,8 +1781,8 @@ subtexture_error_check2( struct gl_context *ctx, GLuint dimensions,
* \return GL_TRUE if an error was detected, or GL_FALSE if no errors.
*
* Verifies each of the parameters against the constants specified in
- * __struct gl_contextRec::Const and the supported extensions, and according to the
- * OpenGL specification.
+ * __struct gl_contextRec::Const and the supported extensions, and according
+ * to the OpenGL specification.
*/
static GLboolean
copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
@@ -2073,6 +2153,19 @@ copytexsubimage_error_check2( struct gl_context *ctx, GLuint dimensions,
}
}
+ /* If copying into an integer texture, the source buffer must also be
+ * integer-valued.
+ */
+ if (_mesa_is_format_integer_color(teximage->TexFormat)) {
+ struct gl_renderbuffer *rb = ctx->ReadBuffer->_ColorReadBuffer;
+ if (!_mesa_is_format_integer_color(rb->Format)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glCopyTexSubImage%dD(source buffer is not integer format)",
+ dimensions);
+ return GL_TRUE;
+ }
+ }
+
/* if we get here, the parameters are OK */
return GL_FALSE;
}
@@ -2213,13 +2306,14 @@ override_internal_format(GLenum internalFormat, GLint width, GLint height)
* for efficient texture memory layout/allocation. In particular, this
* comes up during automatic mipmap generation.
*/
-void
+gl_format
_mesa_choose_texture_format(struct gl_context *ctx,
struct gl_texture_object *texObj,
- struct gl_texture_image *texImage,
GLenum target, GLint level,
GLenum internalFormat, GLenum format, GLenum type)
{
+ gl_format f;
+
/* see if we've already chosen a format for the previous level */
if (level > 0) {
struct gl_texture_image *prevImage =
@@ -2231,15 +2325,15 @@ _mesa_choose_texture_format(struct gl_context *ctx,
prevImage->Width > 0 &&
prevImage->InternalFormat == internalFormat) {
/* use the same format */
- texImage->TexFormat = prevImage->TexFormat;
- return;
+ ASSERT(prevImage->TexFormat != MESA_FORMAT_NONE);
+ return prevImage->TexFormat;
}
}
/* choose format from scratch */
- texImage->TexFormat = ctx->Driver.ChooseTextureFormat(ctx, internalFormat,
- format, type);
- ASSERT(texImage->TexFormat != MESA_FORMAT_NONE);
+ f = ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type);
+ ASSERT(f != MESA_FORMAT_NONE);
+ return f;
}
@@ -2270,8 +2364,8 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
struct gl_texture_image *texImage;
const GLuint face = _mesa_tex_target_to_face(target);
- if (texture_error_check(ctx, target, level, internalFormat,
- format, type, 1, width, 1, 1, border)) {
+ if (texture_error_check(ctx, 1, target, level, internalFormat,
+ format, type, width, 1, 1, border)) {
return; /* error was recorded */
}
@@ -2286,19 +2380,22 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage1D");
}
else {
+ gl_format texFormat;
+
if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage );
}
ASSERT(texImage->Data == NULL);
- clear_teximage_fields(texImage); /* not really needed, but helpful */
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, format,
+ type);
+
_mesa_init_teximage_fields(ctx, target, texImage,
width, 1, 1,
- border, internalFormat);
-
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, format, type);
+ border, internalFormat,
+ texFormat);
/* Give the texture to the driver. <pixels> may be null. */
ASSERT(ctx->Driver.TexImage1D);
@@ -2306,10 +2403,6 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
width, border, format, type, pixels,
&ctx->Unpack, texObj, texImage);
- ASSERT(texImage->TexFormat);
-
- _mesa_set_fetch_functions(texImage, 1);
-
check_gen_mipmap(ctx, target, texObj, level);
update_fbo_texture(ctx, texObj, face, level);
@@ -2325,8 +2418,8 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
/* Proxy texture: check for errors and update proxy state */
struct gl_texture_image *texImage;
texImage = _mesa_get_proxy_tex_image(ctx, target, level);
- if (texture_error_check(ctx, target, level, internalFormat,
- format, type, 1, width, 1, 1, border)) {
+ if (texture_error_check(ctx, 1, target, level, internalFormat,
+ format, type, width, 1, 1, border)) {
/* when error, clear all proxy texture image parameters */
if (texImage)
clear_teximage_fields(texImage);
@@ -2335,12 +2428,12 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
/* no error, set the tex image parameters */
struct gl_texture_object *texObj =
_mesa_get_current_tex_object(ctx, target);
- ASSERT(texImage);
- _mesa_init_teximage_fields(ctx, target, texImage,
- width, 1, 1,
- border, internalFormat);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, format, type);
+ gl_format texFormat = _mesa_choose_texture_format(ctx, texObj, target,
+ level,
+ internalFormat,
+ format, type);
+ _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1,
+ border, internalFormat, texFormat);
}
}
else {
@@ -2381,8 +2474,8 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
struct gl_texture_image *texImage;
const GLuint face = _mesa_tex_target_to_face(target);
- if (texture_error_check(ctx, target, level, internalFormat,
- format, type, 2, width, height, 1, border)) {
+ if (texture_error_check(ctx, 2, target, level, internalFormat,
+ format, type, width, height, 1, border)) {
return; /* error was recorded */
}
@@ -2397,18 +2490,20 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
}
else {
+ gl_format texFormat;
+
if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage );
}
ASSERT(texImage->Data == NULL);
- clear_teximage_fields(texImage); /* not really needed, but helpful */
- _mesa_init_teximage_fields(ctx, target, texImage,
- width, height, 1,
- border, internalFormat);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, format, type);
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, format,
+ type);
+
+ _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1,
+ border, internalFormat, texFormat);
/* Give the texture to the driver. <pixels> may be null. */
ASSERT(ctx->Driver.TexImage2D);
@@ -2416,10 +2511,6 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
width, height, border, format, type,
pixels, &ctx->Unpack, texObj, texImage);
- ASSERT(texImage->TexFormat);
-
- _mesa_set_fetch_functions(texImage, 2);
-
check_gen_mipmap(ctx, target, texObj, level);
update_fbo_texture(ctx, texObj, face, level);
@@ -2441,8 +2532,8 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
/* Proxy texture: check for errors and update proxy state */
struct gl_texture_image *texImage;
texImage = _mesa_get_proxy_tex_image(ctx, target, level);
- if (texture_error_check(ctx, target, level, internalFormat,
- format, type, 2, width, height, 1, border)) {
+ if (texture_error_check(ctx, 2, target, level, internalFormat,
+ format, type, width, height, 1, border)) {
/* when error, clear all proxy texture image parameters */
if (texImage)
clear_teximage_fields(texImage);
@@ -2451,11 +2542,12 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
/* no error, set the tex image parameters */
struct gl_texture_object *texObj =
_mesa_get_current_tex_object(ctx, target);
- _mesa_init_teximage_fields(ctx, target, texImage,
- width, height, 1,
- border, internalFormat);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, format, type);
+ gl_format texFormat = _mesa_choose_texture_format(ctx, texObj,
+ target, level,
+ internalFormat,
+ format, type);
+ _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1,
+ border, internalFormat, texFormat);
}
}
else {
@@ -2495,8 +2587,8 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
struct gl_texture_image *texImage;
const GLuint face = _mesa_tex_target_to_face(target);
- if (texture_error_check(ctx, target, level, (GLint) internalFormat,
- format, type, 3, width, height, depth, border)) {
+ if (texture_error_check(ctx, 3, target, level, (GLint) internalFormat,
+ format, type, width, height, depth, border)) {
return; /* error was recorded */
}
@@ -2511,18 +2603,19 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D");
}
else {
+ gl_format texFormat;
+
if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage );
}
ASSERT(texImage->Data == NULL);
- clear_teximage_fields(texImage); /* not really needed, but helpful */
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, format,
+ type);
_mesa_init_teximage_fields(ctx, target, texImage,
width, height, depth,
- border, internalFormat);
-
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, format, type);
+ border, internalFormat, texFormat);
/* Give the texture to the driver. <pixels> may be null. */
ASSERT(ctx->Driver.TexImage3D);
@@ -2530,10 +2623,6 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
width, height, depth, border, format, type,
pixels, &ctx->Unpack, texObj, texImage);
- ASSERT(texImage->TexFormat);
-
- _mesa_set_fetch_functions(texImage, 3);
-
check_gen_mipmap(ctx, target, texObj, level);
update_fbo_texture(ctx, texObj, face, level);
@@ -2551,8 +2640,8 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
/* Proxy texture: check for errors and update proxy state */
struct gl_texture_image *texImage;
texImage = _mesa_get_proxy_tex_image(ctx, target, level);
- if (texture_error_check(ctx, target, level, internalFormat,
- format, type, 3, width, height, depth, border)) {
+ if (texture_error_check(ctx, 3, target, level, internalFormat,
+ format, type, width, height, depth, border)) {
/* when error, clear all proxy texture image parameters */
if (texImage)
clear_teximage_fields(texImage);
@@ -2561,10 +2650,12 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
/* no error, set the tex image parameters */
struct gl_texture_object *texObj =
_mesa_get_current_tex_object(ctx, target);
+ gl_format texFormat = _mesa_choose_texture_format(ctx, texObj,
+ target, level,
+ internalFormat,
+ format, type);
_mesa_init_teximage_fields(ctx, target, texImage, width, height,
- depth, border, internalFormat);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, format, type);
+ depth, border, internalFormat, texFormat);
}
}
else {
@@ -2841,27 +2932,25 @@ _mesa_CopyTexImage1D( GLenum target, GLint level,
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage1D");
}
else {
+ gl_format texFormat;
+
if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage );
}
ASSERT(texImage->Data == NULL);
- clear_teximage_fields(texImage); /* not really needed, but helpful */
- _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1,
- border, internalFormat);
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, GL_NONE,
+ GL_NONE);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, GL_NONE, GL_NONE);
+ _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1,
+ border, internalFormat, texFormat);
ASSERT(ctx->Driver.CopyTexImage1D);
ctx->Driver.CopyTexImage1D(ctx, target, level, internalFormat,
x, y, width, border);
- ASSERT(texImage->TexFormat);
-
- _mesa_set_fetch_functions(texImage, 1);
-
check_gen_mipmap(ctx, target, texObj, level);
update_fbo_texture(ctx, texObj, face, level);
@@ -2910,28 +2999,25 @@ _mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat,
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage2D");
}
else {
+ gl_format texFormat;
+
if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage );
}
ASSERT(texImage->Data == NULL);
- clear_teximage_fields(texImage); /* not really needed, but helpful */
- _mesa_init_teximage_fields(ctx, target, texImage,
- width, height, 1,
- border, internalFormat);
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, GL_NONE,
+ GL_NONE);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, GL_NONE, GL_NONE);
+ _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1,
+ border, internalFormat, texFormat);
ASSERT(ctx->Driver.CopyTexImage2D);
ctx->Driver.CopyTexImage2D(ctx, target, level, internalFormat,
x, y, width, height, border);
- ASSERT(texImage->TexFormat);
-
- _mesa_set_fetch_functions(texImage, 2);
-
check_gen_mipmap(ctx, target, texObj, level);
update_fbo_texture(ctx, texObj, face, level);
@@ -3413,16 +3499,19 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage1D");
}
else {
+ gl_format texFormat;
+
if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage );
}
ASSERT(texImage->Data == NULL);
- _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1,
- border, internalFormat);
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, GL_NONE,
+ GL_NONE);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, GL_NONE, GL_NONE);
+ _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1,
+ border, internalFormat, texFormat);
ASSERT(ctx->Driver.CompressedTexImage1D);
ctx->Driver.CompressedTexImage1D(ctx, target, level,
@@ -3430,8 +3519,6 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
imageSize, data,
texObj, texImage);
- _mesa_set_fetch_functions(texImage, 1);
-
check_gen_mipmap(ctx, target, texObj, level);
/* state update */
@@ -3462,16 +3549,18 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
/* store the teximage parameters */
struct gl_texture_object *texObj;
struct gl_texture_image *texImage;
+ gl_format texFormat;
texObj = _mesa_get_current_tex_object(ctx, target);
_mesa_lock_texture(ctx, texObj);
{
texImage = _mesa_select_tex_image(ctx, texObj, target, level);
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, GL_NONE,
+ GL_NONE);
_mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1,
- border, internalFormat);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, GL_NONE, GL_NONE);
+ border, internalFormat, texFormat);
}
_mesa_unlock_texture(ctx, texObj);
}
@@ -3539,16 +3628,19 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage2D");
}
else {
+ gl_format texFormat;
+
if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage );
}
ASSERT(texImage->Data == NULL);
- _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1,
- border, internalFormat);
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, GL_NONE,
+ GL_NONE);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, GL_NONE, GL_NONE);
+ _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1,
+ border, internalFormat, texFormat);
ASSERT(ctx->Driver.CompressedTexImage2D);
ctx->Driver.CompressedTexImage2D(ctx, target, level,
@@ -3556,8 +3648,6 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
border, imageSize, data,
texObj, texImage);
- _mesa_set_fetch_functions(texImage, 2);
-
check_gen_mipmap(ctx, target, texObj, level);
/* state update */
@@ -3590,16 +3680,18 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
/* store the teximage parameters */
struct gl_texture_object *texObj;
struct gl_texture_image *texImage;
+ gl_format texFormat;
texObj = _mesa_get_current_tex_object(ctx, target);
_mesa_lock_texture(ctx, texObj);
{
texImage = _mesa_select_tex_image(ctx, texObj, target, level);
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, GL_NONE,
+ GL_NONE);
_mesa_init_teximage_fields(ctx, target, texImage, width, height, 1,
- border, internalFormat);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, GL_NONE, GL_NONE);
+ border, internalFormat, texFormat);
}
_mesa_unlock_texture(ctx, texObj);
}
@@ -3646,18 +3738,20 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level,
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage3D");
}
else {
+ gl_format texFormat;
+
if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage );
}
ASSERT(texImage->Data == NULL);
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, GL_NONE,
+ GL_NONE);
+
_mesa_init_teximage_fields(ctx, target, texImage,
width, height, depth,
- border, internalFormat);
-
- /* Choose actual texture format */
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, GL_NONE, GL_NONE);
+ border, internalFormat, texFormat);
ASSERT(ctx->Driver.CompressedTexImage3D);
ctx->Driver.CompressedTexImage3D(ctx, target, level,
@@ -3666,8 +3760,6 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level,
border, imageSize, data,
texObj, texImage);
- _mesa_set_fetch_functions(texImage, 3);
-
check_gen_mipmap(ctx, target, texObj, level);
/* state update */
@@ -3698,16 +3790,19 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level,
/* store the teximage parameters */
struct gl_texture_object *texObj;
struct gl_texture_image *texImage;
+ gl_format texFormat;
texObj = _mesa_get_current_tex_object(ctx, target);
_mesa_lock_texture(ctx, texObj);
{
texImage = _mesa_select_tex_image(ctx, texObj, target, level);
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, GL_NONE,
+ GL_NONE);
_mesa_init_teximage_fields(ctx, target, texImage, width, height,
- depth, border, internalFormat);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, GL_NONE, GL_NONE);
+ depth, border, internalFormat,
+ texFormat);
}
_mesa_unlock_texture(ctx, texObj);
}
@@ -3825,5 +3920,3 @@ _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset,
compressed_tex_sub_image(3, target, level, xoffset, yoffset, zoffset,
width, height, depth, format, imageSize, data);
}
-
-
diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h
index d4317c301b..5bb9d492e9 100644
--- a/src/mesa/main/teximage.h
+++ b/src/mesa/main/teximage.h
@@ -33,6 +33,7 @@
#include "mtypes.h"
+#include "formats.h"
extern void *
@@ -69,13 +70,13 @@ extern void
_mesa_init_teximage_fields(struct gl_context *ctx, GLenum target,
struct gl_texture_image *img,
GLsizei width, GLsizei height, GLsizei depth,
- GLint border, GLenum internalFormat);
+ GLint border, GLenum internalFormat,
+ gl_format format);
-extern void
+extern gl_format
_mesa_choose_texture_format(struct gl_context *ctx,
struct gl_texture_object *texObj,
- struct gl_texture_image *texImage,
GLenum target, GLint level,
GLenum internalFormat, GLenum format, GLenum type);
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index e08df0f7fe..72dbf10cc4 100644
--- a/src/mesa/main/texobj.c
+++ b/src/mesa/main/texobj.c
@@ -181,12 +181,11 @@ finish_texture_init(struct gl_context *ctx, GLenum target,
* \param texObj the texture object to delete.
*/
void
-_mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *texObj )
+_mesa_delete_texture_object(struct gl_context *ctx,
+ struct gl_texture_object *texObj)
{
GLuint i, face;
- (void) ctx;
-
/* Set Target to an invalid value. With some assertions elsewhere
* we can try to detect possible use of deleted textures.
*/
@@ -197,9 +196,9 @@ _mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *t
/* free the texture images */
for (face = 0; face < 6; face++) {
for (i = 0; i < MAX_TEXTURE_LEVELS; i++) {
- if (texObj->Image[face][i]) {
- _mesa_delete_texture_image( ctx, texObj->Image[face][i] );
- }
+ if (texObj->Image[face][i]) {
+ _mesa_delete_texture_image( ctx, texObj->Image[face][i] );
+ }
}
}
@@ -212,7 +211,6 @@ _mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *t
-
/**
* Copy texture object state from one texture object to another.
* Use for glPush/PopAttrib.
@@ -257,7 +255,7 @@ _mesa_copy_texture_object( struct gl_texture_object *dest,
/**
- * Clear all texture images of the given texture object.
+ * Free all texture images of the given texture object.
*
* \param ctx GL context.
* \param t texture object.
@@ -265,7 +263,8 @@ _mesa_copy_texture_object( struct gl_texture_object *dest,
* \sa _mesa_clear_texture_image().
*/
void
-_mesa_clear_texture_object(struct gl_context *ctx, struct gl_texture_object *texObj)
+_mesa_clear_texture_object(struct gl_context *ctx,
+ struct gl_texture_object *texObj)
{
GLuint i, j;
@@ -380,15 +379,20 @@ _mesa_reference_texobj(struct gl_texture_object **ptr,
*
* \note For debug purposes only.
*/
-#if 0
static void
-incomplete(const struct gl_texture_object *t, const char *why)
+incomplete(const struct gl_texture_object *t, const char *fmt, ...)
{
- printf("Texture Obj %d incomplete because: %s\n", t->Name, why);
-}
-#else
-#define incomplete(t, why)
+#if 0
+ va_list args;
+ char s[100];
+
+ va_start(args, fmt);
+ vsnprintf(s, sizeof(s), fmt, args);
+ va_end(args);
+
+ printf("Texture Obj %d incomplete because: %s\n", t->Name, s);
#endif
+}
/**
@@ -416,18 +420,14 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
* value.
*/
if ((baseLevel < 0) || (baseLevel >= MAX_TEXTURE_LEVELS)) {
- char s[100];
- _mesa_snprintf(s, sizeof(s), "base level = %d is invalid", baseLevel);
- incomplete(t, s);
+ incomplete(t, "base level = %d is invalid", baseLevel);
t->_Complete = GL_FALSE;
return;
}
/* Always need the base level image */
if (!t->Image[0][baseLevel]) {
- char s[100];
- _mesa_snprintf(s, sizeof(s), "Image[baseLevel=%d] == NULL", baseLevel);
- incomplete(t, s);
+ incomplete(t, "Image[baseLevel=%d] == NULL", baseLevel);
t->_Complete = GL_FALSE;
return;
}
@@ -448,7 +448,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
maxLevels = ctx->Const.MaxTextureLevels;
}
else if ((t->Target == GL_TEXTURE_2D) ||
- (t->Target == GL_TEXTURE_2D_ARRAY_EXT)) {
+ (t->Target == GL_TEXTURE_2D_ARRAY_EXT)) {
maxLog2 = MAX2(t->Image[0][baseLevel]->WidthLog2,
t->Image[0][baseLevel]->HeightLog2);
maxLevels = ctx->Const.MaxTextureLevels;
@@ -488,13 +488,13 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
const GLuint h = t->Image[0][baseLevel]->Height2;
GLuint face;
for (face = 1; face < 6; face++) {
- if (t->Image[face][baseLevel] == NULL ||
- t->Image[face][baseLevel]->Width2 != w ||
- t->Image[face][baseLevel]->Height2 != h) {
- t->_Complete = GL_FALSE;
- incomplete(t, "Cube face missing or mismatched size");
- return;
- }
+ if (t->Image[face][baseLevel] == NULL ||
+ t->Image[face][baseLevel]->Width2 != w ||
+ t->Image[face][baseLevel]->Height2 != h) {
+ t->_Complete = GL_FALSE;
+ incomplete(t, "Cube face missing or mismatched size");
+ return;
+ }
}
}
@@ -594,7 +594,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
GLuint width = t->Image[0][baseLevel]->Width2;
GLuint height = t->Image[0][baseLevel]->Height2;
GLuint depth = t->Image[0][baseLevel]->Depth2;
- for (i = baseLevel + 1; i < maxLevels; i++) {
+ for (i = baseLevel + 1; i < maxLevels; i++) {
if (width > 1) {
width /= 2;
}
@@ -640,7 +640,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
/* make sure 6 cube faces are consistant */
GLuint width = t->Image[0][baseLevel]->Width2;
GLuint height = t->Image[0][baseLevel]->Height2;
- for (i = baseLevel + 1; i < maxLevels; i++) {
+ for (i = baseLevel + 1; i < maxLevels; i++) {
if (width > 1) {
width /= 2;
}
@@ -663,8 +663,8 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
return;
}
/* check that all six images have same size */
- if (t->Image[face][i]->Width2!=width ||
- t->Image[face][i]->Height2!=height) {
+ if (t->Image[face][i]->Width2 != width ||
+ t->Image[face][i]->Height2 != height) {
t->_Complete = GL_FALSE;
incomplete(t, "CubeMap Image[n][i] bad size");
return;
@@ -719,6 +719,7 @@ _mesa_get_fallback_texture(struct gl_context *ctx)
static GLubyte texels[8 * 8][4];
struct gl_texture_object *texObj;
struct gl_texture_image *texImage;
+ gl_format texFormat;
GLuint i;
for (i = 0; i < 8 * 8; i++) {
@@ -737,12 +738,13 @@ _mesa_get_fallback_texture(struct gl_context *ctx)
/* create level[0] texture image */
texImage = _mesa_get_tex_image(ctx, texObj, GL_TEXTURE_2D, 0);
+ texFormat = ctx->Driver.ChooseTextureFormat(ctx, GL_RGBA, GL_RGBA,
+ GL_UNSIGNED_BYTE);
+
/* init the image fields */
_mesa_init_teximage_fields(ctx, GL_TEXTURE_2D, texImage,
- 8, 8, 1, 0, GL_RGBA);
+ 8, 8, 1, 0, GL_RGBA, texFormat);
- texImage->TexFormat =
- ctx->Driver.ChooseTextureFormat(ctx, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE);
ASSERT(texImage->TexFormat != MESA_FORMAT_NONE);
/* set image data */
@@ -830,7 +832,8 @@ _mesa_GenTextures( GLsizei n, GLuint *textures )
* read framebuffer. If so, Unbind it.
*/
static void
-unbind_texobj_from_fbo(struct gl_context *ctx, struct gl_texture_object *texObj)
+unbind_texobj_from_fbo(struct gl_context *ctx,
+ struct gl_texture_object *texObj)
{
const GLuint n = (ctx->DrawBuffer == ctx->ReadBuffer) ? 1 : 2;
GLuint i;
@@ -855,7 +858,8 @@ unbind_texobj_from_fbo(struct gl_context *ctx, struct gl_texture_object *texObj)
* unbind it if so (revert to default textures).
*/
static void
-unbind_texobj_from_texunits(struct gl_context *ctx, struct gl_texture_object *texObj)
+unbind_texobj_from_texunits(struct gl_context *ctx,
+ struct gl_texture_object *texObj)
{
GLuint u, tex;
@@ -903,7 +907,7 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *textures)
= _mesa_lookup_texture(ctx, textures[i]);
if (delObj) {
- _mesa_lock_texture(ctx, delObj);
+ _mesa_lock_texture(ctx, delObj);
/* Check if texture is bound to any framebuffer objects.
* If so, unbind.
@@ -916,7 +920,7 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *textures)
*/
unbind_texobj_from_texunits(ctx, delObj);
- _mesa_unlock_texture(ctx, delObj);
+ _mesa_unlock_texture(ctx, delObj);
ctx->NewState |= _NEW_TEXTURE;
@@ -1028,7 +1032,7 @@ _mesa_BindTexture( GLenum target, GLuint texName )
}
else {
/* if this is a new texture id, allocate a texture object now */
- newTexObj = (*ctx->Driver.NewTextureObject)(ctx, texName, target);
+ newTexObj = (*ctx->Driver.NewTextureObject)(ctx, texName, target);
if (!newTexObj) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindTexture");
return;
@@ -1111,6 +1115,8 @@ _mesa_PrioritizeTextures( GLsizei n, const GLuint *texName,
ctx->NewState |= _NEW_TEXTURE;
}
+
+
/**
* See if textures are loaded in texture memory.
*
@@ -1156,23 +1162,24 @@ _mesa_AreTexturesResident(GLsizei n, const GLuint *texName,
if (!ctx->Driver.IsTextureResident ||
ctx->Driver.IsTextureResident(ctx, t)) {
/* The texture is resident */
- if (!allResident)
- residences[i] = GL_TRUE;
+ if (!allResident)
+ residences[i] = GL_TRUE;
}
else {
/* The texture is not resident */
if (allResident) {
- allResident = GL_FALSE;
- for (j = 0; j < i; j++)
- residences[j] = GL_TRUE;
- }
- residences[i] = GL_FALSE;
+ allResident = GL_FALSE;
+ for (j = 0; j < i; j++)
+ residences[j] = GL_TRUE;
+ }
+ residences[i] = GL_FALSE;
}
}
return allResident;
}
+
/**
* See if a name corresponds to a texture.
*
@@ -1233,5 +1240,3 @@ _mesa_unlock_context_textures( struct gl_context *ctx )
}
/*@}*/
-
-
diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c
index 1b0d760fae..f4d77189f2 100644
--- a/src/mesa/main/texstate.c
+++ b/src/mesa/main/texstate.c
@@ -496,23 +496,28 @@ update_texture_state( struct gl_context *ctx )
struct gl_vertex_program *vprog = NULL;
GLbitfield enabledFragUnits = 0x0;
- if (ctx->Shader.CurrentProgram &&
- ctx->Shader.CurrentProgram->LinkStatus) {
- fprog = ctx->Shader.CurrentProgram->FragmentProgram;
- vprog = ctx->Shader.CurrentProgram->VertexProgram;
+ if (ctx->Shader.CurrentVertexProgram &&
+ ctx->Shader.CurrentVertexProgram->LinkStatus) {
+ vprog = ctx->Shader.CurrentVertexProgram->VertexProgram;
+ } else if (ctx->VertexProgram._Enabled) {
+ /* XXX enable this if/when non-shader vertex programs get
+ * texture fetches:
+ vprog = ctx->VertexProgram.Current;
+ */
}
- else {
- if (ctx->FragmentProgram._Enabled) {
- fprog = ctx->FragmentProgram.Current;
- }
- if (ctx->VertexProgram._Enabled) {
- /* XXX enable this if/when non-shader vertex programs get
- * texture fetches:
- vprog = ctx->VertexProgram.Current;
- */
- }
+
+ if (ctx->Shader.CurrentFragmentProgram &&
+ ctx->Shader.CurrentFragmentProgram->LinkStatus) {
+ fprog = ctx->Shader.CurrentFragmentProgram->FragmentProgram;
+ }
+ else if (ctx->FragmentProgram._Enabled) {
+ fprog = ctx->FragmentProgram.Current;
}
+ /* FINISHME: Geometry shader texture accesses should also be considered
+ * FINISHME: here.
+ */
+
/* TODO: only set this if there are actual changes */
ctx->NewState |= _NEW_TEXTURE;
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index f5f94bbf1a..89677c519e 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -58,7 +58,9 @@
#include "image.h"
#include "macros.h"
#include "mipmap.h"
+#include "pack.h"
#include "imports.h"
+#include "pack.h"
#include "texcompress.h"
#include "texcompress_fxt1.h"
#include "texcompress_s3tc.h"
@@ -313,9 +315,9 @@ make_temp_float_image(struct gl_context *ctx, GLuint dims,
GLint srcWidth, GLint srcHeight, GLint srcDepth,
GLenum srcFormat, GLenum srcType,
const GLvoid *srcAddr,
- const struct gl_pixelstore_attrib *srcPacking)
+ const struct gl_pixelstore_attrib *srcPacking,
+ GLbitfield transferOps)
{
- GLuint transferOps = ctx->_ImageTransferState;
GLfloat *tempImage;
const GLint components = _mesa_components_in_format(logicalBaseFormat);
const GLint srcStride =
@@ -417,6 +419,115 @@ make_temp_float_image(struct gl_context *ctx, GLuint dims,
/**
+ * Make temporary image with uint pixel values. Used for unsigned
+ * integer-valued textures.
+ */
+static GLuint *
+make_temp_uint_image(struct gl_context *ctx, GLuint dims,
+ GLenum logicalBaseFormat,
+ GLenum textureBaseFormat,
+ GLint srcWidth, GLint srcHeight, GLint srcDepth,
+ GLenum srcFormat, GLenum srcType,
+ const GLvoid *srcAddr,
+ const struct gl_pixelstore_attrib *srcPacking)
+{
+ GLuint *tempImage;
+ const GLint components = _mesa_components_in_format(logicalBaseFormat);
+ const GLint srcStride =
+ _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, srcType);
+ GLuint *dst;
+ GLint img, row;
+
+ ASSERT(dims >= 1 && dims <= 3);
+
+ ASSERT(logicalBaseFormat == GL_RGBA ||
+ logicalBaseFormat == GL_RGB ||
+ logicalBaseFormat == GL_RG ||
+ logicalBaseFormat == GL_RED ||
+ logicalBaseFormat == GL_LUMINANCE_ALPHA ||
+ logicalBaseFormat == GL_LUMINANCE ||
+ logicalBaseFormat == GL_INTENSITY ||
+ logicalBaseFormat == GL_ALPHA);
+
+ ASSERT(textureBaseFormat == GL_RGBA ||
+ textureBaseFormat == GL_RGB ||
+ textureBaseFormat == GL_RG ||
+ textureBaseFormat == GL_RED ||
+ textureBaseFormat == GL_LUMINANCE_ALPHA ||
+ textureBaseFormat == GL_LUMINANCE ||
+ textureBaseFormat == GL_ALPHA);
+
+ tempImage = (GLuint *) malloc(srcWidth * srcHeight * srcDepth
+ * components * sizeof(GLuint));
+ if (!tempImage)
+ return NULL;
+
+ dst = tempImage;
+ for (img = 0; img < srcDepth; img++) {
+ const GLubyte *src
+ = (const GLubyte *) _mesa_image_address(dims, srcPacking, srcAddr,
+ srcWidth, srcHeight,
+ srcFormat, srcType,
+ img, 0, 0);
+ for (row = 0; row < srcHeight; row++) {
+ _mesa_unpack_color_span_uint(ctx, srcWidth, logicalBaseFormat,
+ dst, srcFormat, srcType, src,
+ srcPacking);
+ dst += srcWidth * components;
+ src += srcStride;
+ }
+ }
+
+ if (logicalBaseFormat != textureBaseFormat) {
+ /* more work */
+ GLint texComponents = _mesa_components_in_format(textureBaseFormat);
+ GLint logComponents = _mesa_components_in_format(logicalBaseFormat);
+ GLuint *newImage;
+ GLint i, n;
+ GLubyte map[6];
+
+ /* we only promote up to RGB, RGBA and LUMINANCE_ALPHA formats for now */
+ ASSERT(textureBaseFormat == GL_RGB || textureBaseFormat == GL_RGBA ||
+ textureBaseFormat == GL_LUMINANCE_ALPHA);
+
+ /* The actual texture format should have at least as many components
+ * as the logical texture format.
+ */
+ ASSERT(texComponents >= logComponents);
+
+ newImage = (GLuint *) malloc(srcWidth * srcHeight * srcDepth
+ * texComponents * sizeof(GLuint));
+ if (!newImage) {
+ free(tempImage);
+ return NULL;
+ }
+
+ compute_component_mapping(logicalBaseFormat, textureBaseFormat, map);
+
+ n = srcWidth * srcHeight * srcDepth;
+ for (i = 0; i < n; i++) {
+ GLint k;
+ for (k = 0; k < texComponents; k++) {
+ GLint j = map[k];
+ if (j == ZERO)
+ newImage[i * texComponents + k] = 0.0F;
+ else if (j == ONE)
+ newImage[i * texComponents + k] = 1.0F;
+ else
+ newImage[i * texComponents + k] = tempImage[i * logComponents + j];
+ }
+ }
+
+ free(tempImage);
+ tempImage = newImage;
+ }
+
+ return tempImage;
+}
+
+
+
+/**
* Make a temporary (color) texture image with GLchan components.
* Apply all needed pixel unpacking and pixel transfer operations.
* Note that there are both logicalBaseFormat and textureBaseFormat parameters.
@@ -2083,7 +2194,8 @@ _mesa_texstore_unorm1616(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking,
+ ctx->_ImageTransferState);
const GLfloat *src = tempImage;
GLint img, row, col;
if (!tempImage)
@@ -2157,7 +2269,8 @@ _mesa_texstore_r16(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking,
+ ctx->_ImageTransferState);
const GLfloat *src = tempImage;
GLint img, row, col;
if (!tempImage)
@@ -2214,7 +2327,8 @@ _mesa_texstore_rgba_16(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking,
+ ctx->_ImageTransferState);
const GLfloat *src = tempImage;
GLint img, row, col;
if (!tempImage)
@@ -2280,7 +2394,8 @@ _mesa_texstore_signed_rgba_16(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking,
+ ctx->_ImageTransferState);
const GLfloat *src = tempImage;
const GLuint comps = _mesa_get_format_bytes(dstFormat) / 2;
GLint img, row, col;
@@ -2661,7 +2776,8 @@ _mesa_texstore_signed_r8(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking,
+ ctx->_ImageTransferState);
const GLfloat *srcRow = tempImage;
GLint img, row, col;
if (!tempImage)
@@ -2705,7 +2821,8 @@ _mesa_texstore_signed_rg88(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking,
+ ctx->_ImageTransferState);
const GLfloat *srcRow = tempImage;
GLint img, row, col;
if (!tempImage)
@@ -2749,7 +2866,8 @@ _mesa_texstore_signed_rgbx8888(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking,
+ ctx->_ImageTransferState);
const GLfloat *srcRow = tempImage;
GLint img, row, col;
if (!tempImage)
@@ -2861,7 +2979,8 @@ _mesa_texstore_signed_rgba8888(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking,
+ ctx->_ImageTransferState);
const GLfloat *srcRow = tempImage;
GLint img, row, col;
if (!tempImage)
@@ -3169,7 +3288,8 @@ _mesa_texstore_rgba_float32(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking,
+ ctx->_ImageTransferState);
const GLfloat *srcRow = tempImage;
GLint bytesPerRow;
GLint img, row;
@@ -3238,7 +3358,8 @@ _mesa_texstore_rgba_float16(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking,
+ ctx->_ImageTransferState);
const GLfloat *src = tempImage;
GLint img, row;
if (!tempImage)
@@ -3282,8 +3403,10 @@ _mesa_texstore_rgba_int8(TEXSTORE_PARAMS)
baseInternalFormat == GL_INTENSITY);
ASSERT(texelBytes == components * sizeof(GLbyte));
- if (!ctx->_ImageTransferState &&
- !srcPacking->SwapBytes &&
+ /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply
+ * to integer formats.
+ */
+ if (!srcPacking->SwapBytes &&
baseInternalFormat == srcFormat &&
srcType == GL_BYTE) {
/* simple memcpy path */
@@ -3301,7 +3424,7 @@ _mesa_texstore_rgba_int8(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking, 0x0);
const GLfloat *src = tempImage;
GLint img, row;
if (!tempImage)
@@ -3345,10 +3468,12 @@ _mesa_texstore_rgba_int16(TEXSTORE_PARAMS)
baseInternalFormat == GL_INTENSITY);
ASSERT(texelBytes == components * sizeof(GLshort));
- if (!ctx->_ImageTransferState &&
- !srcPacking->SwapBytes &&
+ /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply
+ * to integer formats.
+ */
+ if (!srcPacking->SwapBytes &&
baseInternalFormat == srcFormat &&
- srcType == GL_INT) {
+ srcType == GL_SHORT) {
/* simple memcpy path */
memcpy_texture(ctx, dims,
dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset,
@@ -3364,7 +3489,7 @@ _mesa_texstore_rgba_int16(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking, 0x0);
const GLfloat *src = tempImage;
GLint img, row;
if (!tempImage)
@@ -3408,8 +3533,10 @@ _mesa_texstore_rgba_int32(TEXSTORE_PARAMS)
baseInternalFormat == GL_INTENSITY);
ASSERT(texelBytes == components * sizeof(GLint));
- if (!ctx->_ImageTransferState &&
- !srcPacking->SwapBytes &&
+ /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply
+ * to integer formats.
+ */
+ if (!srcPacking->SwapBytes &&
baseInternalFormat == srcFormat &&
srcType == GL_INT) {
/* simple memcpy path */
@@ -3427,7 +3554,7 @@ _mesa_texstore_rgba_int32(TEXSTORE_PARAMS)
baseFormat,
srcWidth, srcHeight, srcDepth,
srcFormat, srcType, srcAddr,
- srcPacking);
+ srcPacking, 0x0);
const GLfloat *src = tempImage;
GLint img, row;
if (!tempImage)
@@ -3471,8 +3598,10 @@ _mesa_texstore_rgba_uint8(TEXSTORE_PARAMS)
baseInternalFormat == GL_INTENSITY);
ASSERT(texelBytes == components * sizeof(GLubyte));
- if (!ctx->_ImageTransferState &&
- !srcPacking->SwapBytes &&
+ /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply
+ * to integer formats.
+ */
+ if (!srcPacking->SwapBytes &&
baseInternalFormat == srcFormat &&
srcType == GL_UNSIGNED_BYTE) {
/* simple memcpy path */
@@ -3485,13 +3614,11 @@ _mesa_texstore_rgba_uint8(TEXSTORE_PARAMS)
}
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 *tempImage =
+ make_temp_uint_image(ctx, dims, baseInternalFormat, baseFormat,
+ srcWidth, srcHeight, srcDepth,
+ srcFormat, srcType, srcAddr, srcPacking);
+ const GLuint *src = tempImage;
GLint img, row;
if (!tempImage)
return GL_FALSE;
@@ -3504,7 +3631,7 @@ _mesa_texstore_rgba_uint8(TEXSTORE_PARAMS)
GLubyte *dstTexel = (GLubyte *) dstRow;
GLint i;
for (i = 0; i < srcWidth * components; i++) {
- dstTexel[i] = (GLubyte) src[i];
+ dstTexel[i] = (GLubyte) CLAMP(src[i], 0, 0xff);
}
dstRow += dstRowStride;
src += srcWidth * components;
@@ -3534,8 +3661,10 @@ _mesa_texstore_rgba_uint16(TEXSTORE_PARAMS)
baseInternalFormat == GL_INTENSITY);
ASSERT(texelBytes == components * sizeof(GLushort));
- if (!ctx->_ImageTransferState &&
- !srcPacking->SwapBytes &&
+ /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply
+ * to integer formats.
+ */
+ if (!srcPacking->SwapBytes &&
baseInternalFormat == srcFormat &&
srcType == GL_UNSIGNED_SHORT) {
/* simple memcpy path */
@@ -3548,13 +3677,11 @@ _mesa_texstore_rgba_uint16(TEXSTORE_PARAMS)
}
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 *tempImage =
+ make_temp_uint_image(ctx, dims, baseInternalFormat, baseFormat,
+ srcWidth, srcHeight, srcDepth,
+ srcFormat, srcType, srcAddr, srcPacking);
+ const GLuint *src = tempImage;
GLint img, row;
if (!tempImage)
return GL_FALSE;
@@ -3567,7 +3694,7 @@ _mesa_texstore_rgba_uint16(TEXSTORE_PARAMS)
GLushort *dstTexel = (GLushort *) dstRow;
GLint i;
for (i = 0; i < srcWidth * components; i++) {
- dstTexel[i] = (GLushort) src[i];
+ dstTexel[i] = (GLushort) CLAMP(src[i], 0, 0xffff);
}
dstRow += dstRowStride;
src += srcWidth * components;
@@ -3597,8 +3724,10 @@ _mesa_texstore_rgba_uint32(TEXSTORE_PARAMS)
baseInternalFormat == GL_INTENSITY);
ASSERT(texelBytes == components * sizeof(GLuint));
- if (!ctx->_ImageTransferState &&
- !srcPacking->SwapBytes &&
+ /* Note: Pixel transfer ops (scale, bias, table lookup) do not apply
+ * to integer formats.
+ */
+ if (!srcPacking->SwapBytes &&
baseInternalFormat == srcFormat &&
srcType == GL_UNSIGNED_INT) {
/* simple memcpy path */
@@ -3611,13 +3740,11 @@ _mesa_texstore_rgba_uint32(TEXSTORE_PARAMS)
}
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 *tempImage =
+ make_temp_uint_image(ctx, dims, baseInternalFormat, baseFormat,
+ srcWidth, srcHeight, srcDepth,
+ srcFormat, srcType, srcAddr, srcPacking);
+ const GLuint *src = tempImage;
GLint img, row;
if (!tempImage)
return GL_FALSE;
@@ -3630,7 +3757,7 @@ _mesa_texstore_rgba_uint32(TEXSTORE_PARAMS)
GLuint *dstTexel = (GLuint *) dstRow;
GLint i;
for (i = 0; i < srcWidth * components; i++) {
- dstTexel[i] = (GLuint) src[i];
+ dstTexel[i] = src[i];
}
dstRow += dstRowStride;
src += srcWidth * components;
@@ -3953,14 +4080,14 @@ _mesa_validate_pbo_teximage(struct gl_context *ctx, GLuint dimensions,
}
if (!_mesa_validate_pbo_access(dimensions, unpack, width, height, depth,
format, type, pixels)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access");
+ _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access)");
return NULL;
}
buf = (GLubyte *) ctx->Driver.MapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT,
GL_READ_ONLY_ARB, unpack->BufferObj);
if (!buf) {
- _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(PBO is mapped");
+ _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(PBO is mapped)");
return NULL;
}
@@ -3990,7 +4117,7 @@ _mesa_validate_pbo_compressed_teximage(struct gl_context *ctx,
if ((const GLubyte *) pixels + imageSize >
((const GLubyte *) 0) + packing->BufferObj->Size) {
/* out of bounds read! */
- _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access");
+ _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access)");
return NULL;
}
@@ -4321,7 +4448,8 @@ _mesa_store_texsubimage3d(struct gl_context *ctx, GLenum target, GLint level,
* Fallback for Driver.CompressedTexImage1D()
*/
void
-_mesa_store_compressed_teximage1d(struct gl_context *ctx, GLenum target, GLint level,
+_mesa_store_compressed_teximage1d(struct gl_context *ctx,
+ GLenum target, GLint level,
GLint internalFormat,
GLint width, GLint border,
GLsizei imageSize, const GLvoid *data,
@@ -4344,7 +4472,8 @@ _mesa_store_compressed_teximage1d(struct gl_context *ctx, GLenum target, GLint l
* Fallback for Driver.CompressedTexImage2D()
*/
void
-_mesa_store_compressed_teximage2d(struct gl_context *ctx, GLenum target, GLint level,
+_mesa_store_compressed_teximage2d(struct gl_context *ctx,
+ GLenum target, GLint level,
GLint internalFormat,
GLint width, GLint height, GLint border,
GLsizei imageSize, const GLvoid *data,
@@ -4388,7 +4517,8 @@ _mesa_store_compressed_teximage2d(struct gl_context *ctx, GLenum target, GLint l
* Fallback for Driver.CompressedTexImage3D()
*/
void
-_mesa_store_compressed_teximage3d(struct gl_context *ctx, GLenum target, GLint level,
+_mesa_store_compressed_teximage3d(struct gl_context *ctx,
+ GLenum target, GLint level,
GLint internalFormat,
GLint width, GLint height, GLint depth,
GLint border,
diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c
index 9359db1892..d61856d0eb 100644
--- a/src/mesa/main/uniforms.c
+++ b/src/mesa/main/uniforms.c
@@ -682,6 +682,40 @@ _mesa_get_uniformiv(struct gl_context *ctx, GLuint program, GLint location,
/**
+ * Called via glGetUniformuiv().
+ * New in GL_EXT_gpu_shader4, OpenGL 3.0
+ * \sa _mesa_get_uniformfv, only difference is a cast.
+ */
+static void
+_mesa_get_uniformuiv(struct gl_context *ctx, GLuint program, GLint location,
+ GLuint *params)
+{
+ struct gl_program *prog;
+ GLint paramPos;
+ GLint offset;
+
+ split_location_offset(&location, &offset);
+
+ lookup_uniform_parameter(ctx, program, location, &prog, &paramPos);
+
+ if (prog) {
+ const struct gl_program_parameter *p =
+ &prog->Parameters->Parameters[paramPos];
+ GLint rows, cols, i, j, k;
+
+ get_uniform_rows_cols(p, &rows, &cols);
+
+ k = 0;
+ for (i = 0; i < rows; i++) {
+ for (j = 0; j < cols; j++ ) {
+ params[k++] = (GLuint) prog->Parameters->ParameterValues[paramPos+i][j];
+ }
+ }
+ }
+}
+
+
+/**
* Called via glGetUniformLocation().
*
* The return value will encode two values, the uniform location and an
@@ -1227,7 +1261,7 @@ void GLAPIENTRY
_mesa_Uniform1fARB(GLint location, GLfloat v0)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, &v0, GL_FLOAT);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, &v0, GL_FLOAT);
}
void GLAPIENTRY
@@ -1237,7 +1271,7 @@ _mesa_Uniform2fARB(GLint location, GLfloat v0, GLfloat v1)
GLfloat v[2];
v[0] = v0;
v[1] = v1;
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_FLOAT_VEC2);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_FLOAT_VEC2);
}
void GLAPIENTRY
@@ -1248,7 +1282,7 @@ _mesa_Uniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
v[0] = v0;
v[1] = v1;
v[2] = v2;
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_FLOAT_VEC3);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_FLOAT_VEC3);
}
void GLAPIENTRY
@@ -1261,14 +1295,14 @@ _mesa_Uniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2,
v[1] = v1;
v[2] = v2;
v[3] = v3;
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_FLOAT_VEC4);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_FLOAT_VEC4);
}
void GLAPIENTRY
_mesa_Uniform1iARB(GLint location, GLint v0)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, &v0, GL_INT);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, &v0, GL_INT);
}
void GLAPIENTRY
@@ -1278,7 +1312,7 @@ _mesa_Uniform2iARB(GLint location, GLint v0, GLint v1)
GLint v[2];
v[0] = v0;
v[1] = v1;
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_INT_VEC2);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_INT_VEC2);
}
void GLAPIENTRY
@@ -1289,7 +1323,7 @@ _mesa_Uniform3iARB(GLint location, GLint v0, GLint v1, GLint v2)
v[0] = v0;
v[1] = v1;
v[2] = v2;
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_INT_VEC3);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_INT_VEC3);
}
void GLAPIENTRY
@@ -1301,63 +1335,63 @@ _mesa_Uniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
v[1] = v1;
v[2] = v2;
v[3] = v3;
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_INT_VEC4);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_INT_VEC4);
}
void GLAPIENTRY
_mesa_Uniform1fvARB(GLint location, GLsizei count, const GLfloat * value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_FLOAT);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_FLOAT);
}
void GLAPIENTRY
_mesa_Uniform2fvARB(GLint location, GLsizei count, const GLfloat * value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_FLOAT_VEC2);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_FLOAT_VEC2);
}
void GLAPIENTRY
_mesa_Uniform3fvARB(GLint location, GLsizei count, const GLfloat * value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_FLOAT_VEC3);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_FLOAT_VEC3);
}
void GLAPIENTRY
_mesa_Uniform4fvARB(GLint location, GLsizei count, const GLfloat * value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_FLOAT_VEC4);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_FLOAT_VEC4);
}
void GLAPIENTRY
_mesa_Uniform1ivARB(GLint location, GLsizei count, const GLint * value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_INT);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_INT);
}
void GLAPIENTRY
_mesa_Uniform2ivARB(GLint location, GLsizei count, const GLint * value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_INT_VEC2);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_INT_VEC2);
}
void GLAPIENTRY
_mesa_Uniform3ivARB(GLint location, GLsizei count, const GLint * value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_INT_VEC3);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_INT_VEC3);
}
void GLAPIENTRY
_mesa_Uniform4ivARB(GLint location, GLsizei count, const GLint * value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_INT_VEC4);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_INT_VEC4);
}
@@ -1366,7 +1400,7 @@ void GLAPIENTRY
_mesa_Uniform1ui(GLint location, GLuint v0)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, &v0, GL_UNSIGNED_INT);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, &v0, GL_UNSIGNED_INT);
}
void GLAPIENTRY
@@ -1376,7 +1410,7 @@ _mesa_Uniform2ui(GLint location, GLuint v0, GLuint v1)
GLuint v[2];
v[0] = v0;
v[1] = v1;
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_UNSIGNED_INT_VEC2);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_UNSIGNED_INT_VEC2);
}
void GLAPIENTRY
@@ -1387,7 +1421,7 @@ _mesa_Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)
v[0] = v0;
v[1] = v1;
v[2] = v2;
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_UNSIGNED_INT_VEC3);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_UNSIGNED_INT_VEC3);
}
void GLAPIENTRY
@@ -1399,35 +1433,35 @@ _mesa_Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
v[1] = v1;
v[2] = v2;
v[3] = v3;
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, 1, v, GL_UNSIGNED_INT_VEC4);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, 1, v, GL_UNSIGNED_INT_VEC4);
}
void GLAPIENTRY
_mesa_Uniform1uiv(GLint location, GLsizei count, const GLuint *value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_UNSIGNED_INT);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_UNSIGNED_INT);
}
void GLAPIENTRY
_mesa_Uniform2uiv(GLint location, GLsizei count, const GLuint *value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_UNSIGNED_INT_VEC2);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_UNSIGNED_INT_VEC2);
}
void GLAPIENTRY
_mesa_Uniform3uiv(GLint location, GLsizei count, const GLuint *value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_UNSIGNED_INT_VEC3);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_UNSIGNED_INT_VEC3);
}
void GLAPIENTRY
_mesa_Uniform4uiv(GLint location, GLsizei count, const GLuint *value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform(ctx, ctx->Shader.CurrentProgram, location, count, value, GL_UNSIGNED_INT_VEC4);
+ _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_UNSIGNED_INT_VEC4);
}
@@ -1437,7 +1471,7 @@ _mesa_UniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose,
const GLfloat * value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram,
+ _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram,
2, 2, location, count, transpose, value);
}
@@ -1446,7 +1480,7 @@ _mesa_UniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose,
const GLfloat * value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram,
+ _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram,
3, 3, location, count, transpose, value);
}
@@ -1455,7 +1489,7 @@ _mesa_UniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose,
const GLfloat * value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram,
+ _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram,
4, 4, location, count, transpose, value);
}
@@ -1468,7 +1502,7 @@ _mesa_UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose,
const GLfloat *value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram,
+ _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram,
2, 3, location, count, transpose, value);
}
@@ -1477,7 +1511,7 @@ _mesa_UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose,
const GLfloat *value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram,
+ _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram,
3, 2, location, count, transpose, value);
}
@@ -1486,7 +1520,7 @@ _mesa_UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose,
const GLfloat *value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram,
+ _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram,
2, 4, location, count, transpose, value);
}
@@ -1495,7 +1529,7 @@ _mesa_UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose,
const GLfloat *value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram,
+ _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram,
4, 2, location, count, transpose, value);
}
@@ -1504,7 +1538,7 @@ _mesa_UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose,
const GLfloat *value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram,
+ _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram,
3, 4, location, count, transpose, value);
}
@@ -1513,7 +1547,7 @@ _mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
const GLfloat *value)
{
GET_CURRENT_CONTEXT(ctx);
- _mesa_uniform_matrix(ctx, ctx->Shader.CurrentProgram,
+ _mesa_uniform_matrix(ctx, ctx->Shader.ActiveProgram,
4, 3, location, count, transpose, value);
}
@@ -1534,6 +1568,16 @@ _mesa_GetUniformivARB(GLhandleARB program, GLint location, GLint *params)
}
+/* GL3 */
+void GLAPIENTRY
+_mesa_GetUniformuiv(GLhandleARB program, GLint location, GLuint *params)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ _mesa_get_uniformuiv(ctx, program, location, params);
+}
+
+
+
GLint GLAPIENTRY
_mesa_GetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name)
{
@@ -1603,13 +1647,16 @@ _mesa_init_shader_uniform_dispatch(struct _glapi_table *exec)
/* OpenGL 3.0 */
/* XXX finish dispatch */
- (void) _mesa_Uniform1ui;
- (void) _mesa_Uniform2ui;
- (void) _mesa_Uniform3ui;
- (void) _mesa_Uniform4ui;
- (void) _mesa_Uniform1uiv;
- (void) _mesa_Uniform2uiv;
- (void) _mesa_Uniform3uiv;
- (void) _mesa_Uniform4uiv;
+ SET_Uniform1uiEXT(exec, _mesa_Uniform1ui);
+ SET_Uniform2uiEXT(exec, _mesa_Uniform2ui);
+ SET_Uniform3uiEXT(exec, _mesa_Uniform3ui);
+ SET_Uniform4uiEXT(exec, _mesa_Uniform4ui);
+ SET_Uniform1uivEXT(exec, _mesa_Uniform1uiv);
+ SET_Uniform2uivEXT(exec, _mesa_Uniform2uiv);
+ SET_Uniform3uivEXT(exec, _mesa_Uniform3uiv);
+ SET_Uniform4uivEXT(exec, _mesa_Uniform4uiv);
+ SET_GetUniformuivEXT(exec, _mesa_GetUniformuiv);
+
+
#endif /* FEATURE_GL */
}
diff --git a/src/mesa/main/uniforms.h b/src/mesa/main/uniforms.h
index 6447436305..54abb08ba5 100644
--- a/src/mesa/main/uniforms.h
+++ b/src/mesa/main/uniforms.h
@@ -148,6 +148,9 @@ _mesa_GetUniformfvARB(GLhandleARB, GLint, GLfloat *);
extern void GLAPIENTRY
_mesa_GetUniformivARB(GLhandleARB, GLint, GLint *);
+extern void GLAPIENTRY
+_mesa_GetUniformuiv(GLhandleARB program, GLint location, GLuint *params);
+
extern GLint GLAPIENTRY
_mesa_GetUniformLocationARB(GLhandleARB, const GLcharARB *);
diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
index 56749355cd..340c3fe1d3 100644
--- a/src/mesa/main/varray.c
+++ b/src/mesa/main/varray.c
@@ -31,6 +31,7 @@
#include "enable.h"
#include "enums.h"
#include "hash.h"
+#include "image.h"
#include "macros.h"
#include "mtypes.h"
#include "varray.h"
@@ -38,39 +39,143 @@
#include "main/dispatch.h"
+/** Used to do error checking for GL_EXT_vertex_array_bgra */
+#define BGRA_OR_4 5
+
+
+/** Used to indicate which GL datatypes are accepted by each of the
+ * glVertex/Color/Attrib/EtcPointer() functions.
+ */
+#define BOOL_BIT 0x1
+#define BYTE_BIT 0x2
+#define UNSIGNED_BYTE_BIT 0x4
+#define SHORT_BIT 0x8
+#define UNSIGNED_SHORT_BIT 0x10
+#define INT_BIT 0x20
+#define UNSIGNED_INT_BIT 0x40
+#define HALF_BIT 0x80
+#define FLOAT_BIT 0x100
+#define DOUBLE_BIT 0x200
+#define FIXED_BIT 0x400
+
+
+
+/** Convert GL datatype enum into a <type>_BIT value seen above */
+static GLbitfield
+type_to_bit(const struct gl_context *ctx, GLenum type)
+{
+ switch (type) {
+ case GL_BOOL:
+ return BOOL_BIT;
+ case GL_BYTE:
+ return BYTE_BIT;
+ case GL_UNSIGNED_BYTE:
+ return UNSIGNED_BYTE_BIT;
+ case GL_SHORT:
+ return SHORT_BIT;
+ case GL_UNSIGNED_SHORT:
+ return UNSIGNED_SHORT_BIT;
+ case GL_INT:
+ return INT_BIT;
+ case GL_UNSIGNED_INT:
+ return UNSIGNED_INT_BIT;
+ case GL_HALF_FLOAT:
+ if (ctx->Extensions.ARB_half_float_vertex)
+ return HALF_BIT;
+ else
+ return 0x0;
+ case GL_FLOAT:
+ return FLOAT_BIT;
+ case GL_DOUBLE:
+ return DOUBLE_BIT;
+ case GL_FIXED:
+ return FIXED_BIT;
+ default:
+ return 0;
+ }
+}
+
+
/**
- * Set the fields of a vertex array.
- * Also do an error check for GL_ARB_vertex_array_object: check that
- * all arrays reside in VBOs when using a vertex array object.
+ * Do error checking and update state for glVertex/Color/TexCoord/...Pointer
+ * functions.
*
+ * \param func name of calling function used for error reporting
* \param array the array to update
* \param dirtyBit which bit to set in ctx->Array.NewState for this array
- * \param elementSize size of each array element, in bytes
+ * \param legalTypes bitmask of *_BIT above indicating legal datatypes
+ * \param sizeMin min allowable size value
+ * \param sizeMax max allowable size value (may also be BGRA_OR_4)
* \param size components per element (1, 2, 3 or 4)
* \param type datatype of each component (GL_FLOAT, GL_INT, etc)
- * \param format either GL_RGBA or GL_BGRA
* \param stride stride between elements, in elements
* \param normalized are integer types converted to floats in [-1, 1]?
+ * \param integer integer-valued values (will not be normalized to [-1,1])
* \param ptr the address (or offset inside VBO) of the array data
*/
static void
-update_array(struct gl_context *ctx, struct gl_client_array *array,
- GLbitfield dirtyBit, GLsizei elementSize,
- GLint size, GLenum type, GLenum format,
- GLsizei stride, GLboolean normalized, const GLvoid *ptr)
+update_array(struct gl_context *ctx,
+ const char *func,
+ struct gl_client_array *array,
+ GLbitfield dirtyBit, GLbitfield legalTypesMask,
+ GLint sizeMin, GLint sizeMax,
+ GLint size, GLenum type, GLsizei stride,
+ GLboolean normalized, GLboolean integer,
+ const GLvoid *ptr)
{
- ASSERT(format == GL_RGBA || format == GL_BGRA);
+ GLbitfield typeBit;
+ GLsizei elementSize;
+ GLenum format = GL_RGBA;
+
+ if (ctx->API != API_OPENGLES) {
+ /* fixed point arrays / data is only allowed with OpenGL ES 1.x */
+ legalTypesMask &= ~FIXED_BIT;
+ }
+
+ typeBit = type_to_bit(ctx, type);
+ if (typeBit == 0x0 || (typeBit & legalTypesMask) == 0x0) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "%s(type = %s)",
+ func, _mesa_lookup_enum_by_nr(type));
+ return;
+ }
+
+ /* Do size parameter checking.
+ * If sizeMax = BGRA_OR_4 it means that size = GL_BGRA is legal and
+ * must be handled specially.
+ */
+ if (ctx->Extensions.EXT_vertex_array_bgra &&
+ sizeMax == BGRA_OR_4 &&
+ size == GL_BGRA) {
+ if (type != GL_UNSIGNED_BYTE) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "%s(GL_BGRA/GLubyte)", func);
+ return;
+ }
+ format = GL_BGRA;
+ size = 4;
+ }
+ else if (size < sizeMin || size > sizeMax || size > 4) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "%s(size=%d)", func, size);
+ return;
+ }
+
+ ASSERT(size <= 4);
+
+ if (stride < 0) {
+ _mesa_error( ctx, GL_INVALID_VALUE, "%s(stride=%d)", func, stride );
+ return;
+ }
if (ctx->Array.ArrayObj->VBOonly &&
ctx->Array.ArrayBufferObj->Name == 0) {
/* GL_ARB_vertex_array_object requires that all arrays reside in VBOs.
* Generate GL_INVALID_OPERATION if that's not true.
*/
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glVertex/Normal/EtcPointer(non-VBO array)");
+ _mesa_error(ctx, GL_INVALID_OPERATION, "%s(non-VBO array)", func);
return;
}
+ elementSize = _mesa_sizeof_type(type) * size;
+
array->Size = size;
array->Type = type;
array->Format = format;
@@ -91,258 +196,81 @@ update_array(struct gl_context *ctx, struct gl_client_array *array,
void GLAPIENTRY
_mesa_VertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr)
{
- GLsizei elementSize;
+ GLbitfield legalTypes = (SHORT_BIT | INT_BIT | FLOAT_BIT |
+ DOUBLE_BIT | HALF_BIT | FIXED_BIT);
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (size < 2 || size > 4) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glVertexPointer(size)" );
- return;
- }
- if (stride < 0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glVertexPointer(stride)" );
- return;
- }
+ if (ctx->API == API_OPENGLES)
+ legalTypes |= BYTE_BIT;
- if (MESA_VERBOSE&(VERBOSE_VARRAY|VERBOSE_API))
- _mesa_debug(ctx, "glVertexPointer( sz %d type %s stride %d )\n", size,
- _mesa_lookup_enum_by_nr( type ), stride);
-
- /* always need to check that <type> is legal */
- switch (type) {
- case GL_SHORT:
- elementSize = size * sizeof(GLshort);
- break;
- case GL_INT:
- elementSize = size * sizeof(GLint);
- break;
- case GL_FLOAT:
- elementSize = size * sizeof(GLfloat);
- break;
- case GL_DOUBLE:
- elementSize = size * sizeof(GLdouble);
- break;
- case GL_HALF_FLOAT:
- elementSize = size * sizeof(GLhalfARB);
- break;
-#if FEATURE_fixedpt
- case GL_FIXED:
- elementSize = size * sizeof(GLfixed);
- break;
-#endif
-#if FEATURE_vertex_array_byte
- case GL_BYTE:
- elementSize = size * sizeof(GLbyte);
- break;
-#endif
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glVertexPointer(type=%s)",
- _mesa_lookup_enum_by_nr(type));
- return;
- }
-
- update_array(ctx, &ctx->Array.ArrayObj->Vertex, _NEW_ARRAY_VERTEX,
- elementSize, size, type, GL_RGBA, stride, GL_FALSE, ptr);
+ update_array(ctx, "glVertexPointer",
+ &ctx->Array.ArrayObj->Vertex, _NEW_ARRAY_VERTEX,
+ legalTypes, 2, 4,
+ size, type, stride, GL_FALSE, GL_FALSE, ptr);
}
void GLAPIENTRY
_mesa_NormalPointer(GLenum type, GLsizei stride, const GLvoid *ptr )
{
- GLsizei elementSize;
+ const GLbitfield legalTypes = (BYTE_BIT | SHORT_BIT | INT_BIT |
+ HALF_BIT | FLOAT_BIT | DOUBLE_BIT |
+ FIXED_BIT);
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (stride < 0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glNormalPointer(stride)" );
- return;
- }
-
- if (MESA_VERBOSE&(VERBOSE_VARRAY|VERBOSE_API))
- _mesa_debug(ctx, "glNormalPointer( type %s stride %d )\n",
- _mesa_lookup_enum_by_nr( type ), stride);
-
- switch (type) {
- case GL_BYTE:
- elementSize = 3 * sizeof(GLbyte);
- break;
- case GL_SHORT:
- elementSize = 3 * sizeof(GLshort);
- break;
- case GL_INT:
- elementSize = 3 * sizeof(GLint);
- break;
- case GL_FLOAT:
- elementSize = 3 * sizeof(GLfloat);
- break;
- case GL_DOUBLE:
- elementSize = 3 * sizeof(GLdouble);
- break;
- case GL_HALF_FLOAT:
- elementSize = 3 * sizeof(GLhalfARB);
- break;
-#if FEATURE_fixedpt
- case GL_FIXED:
- elementSize = 3 * sizeof(GLfixed);
- break;
-#endif
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glNormalPointer(type=%s)",
- _mesa_lookup_enum_by_nr(type));
- return;
- }
-
- update_array(ctx, &ctx->Array.ArrayObj->Normal, _NEW_ARRAY_NORMAL,
- elementSize, 3, type, GL_RGBA, stride, GL_TRUE, ptr);
+ update_array(ctx, "glNormalPointer",
+ &ctx->Array.ArrayObj->Normal, _NEW_ARRAY_NORMAL,
+ legalTypes, 3, 3,
+ 3, type, stride, GL_TRUE, GL_FALSE, ptr);
}
void GLAPIENTRY
_mesa_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr)
{
- GLsizei elementSize;
- GLenum format;
+ const GLbitfield legalTypes = (BYTE_BIT | UNSIGNED_BYTE_BIT |
+ SHORT_BIT | UNSIGNED_SHORT_BIT |
+ INT_BIT | UNSIGNED_INT_BIT |
+ HALF_BIT | FLOAT_BIT | DOUBLE_BIT |
+ FIXED_BIT);
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (size < 3 || size > 4) {
- if (!ctx->Extensions.EXT_vertex_array_bgra || size != GL_BGRA) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glColorPointer(size)");
- return;
- }
- }
- if (stride < 0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glColorPointer(stride)" );
- return;
- }
-
- if (MESA_VERBOSE&(VERBOSE_VARRAY|VERBOSE_API))
- _mesa_debug(ctx, "glColorPointer( sz %d type %s stride %d )\n", size,
- _mesa_lookup_enum_by_nr( type ), stride);
-
- if (size == GL_BGRA) {
- if (type != GL_UNSIGNED_BYTE) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glColorPointer(GL_BGRA/GLubyte)");
- return;
- }
- format = GL_BGRA;
- size = 4;
- }
- else {
- format = GL_RGBA;
- }
-
- switch (type) {
- case GL_BYTE:
- elementSize = size * sizeof(GLbyte);
- break;
- case GL_UNSIGNED_BYTE:
- elementSize = size * sizeof(GLubyte);
- break;
- case GL_SHORT:
- elementSize = size * sizeof(GLshort);
- break;
- case GL_UNSIGNED_SHORT:
- elementSize = size * sizeof(GLushort);
- break;
- case GL_INT:
- elementSize = size * sizeof(GLint);
- break;
- case GL_UNSIGNED_INT:
- elementSize = size * sizeof(GLuint);
- break;
- case GL_FLOAT:
- elementSize = size * sizeof(GLfloat);
- break;
- case GL_DOUBLE:
- elementSize = size * sizeof(GLdouble);
- break;
- case GL_HALF_FLOAT:
- elementSize = size * sizeof(GLhalfARB);
- break;
-#if FEATURE_fixedpt
- case GL_FIXED:
- elementSize = size * sizeof(GLfixed);
- break;
-#endif
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glColorPointer(type=%s)",
- _mesa_lookup_enum_by_nr(type));
- return;
- }
-
- update_array(ctx, &ctx->Array.ArrayObj->Color, _NEW_ARRAY_COLOR0,
- elementSize, size, type, format, stride, GL_TRUE, ptr);
+ update_array(ctx, "glColorPointer",
+ &ctx->Array.ArrayObj->Color, _NEW_ARRAY_COLOR0,
+ legalTypes, 3, BGRA_OR_4,
+ size, type, stride, GL_TRUE, GL_FALSE, ptr);
}
void GLAPIENTRY
_mesa_FogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid *ptr)
{
- GLint elementSize;
+ const GLbitfield legalTypes = (HALF_BIT | FLOAT_BIT | DOUBLE_BIT);
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (stride < 0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glFogCoordPointer(stride)" );
- return;
- }
-
- switch (type) {
- case GL_FLOAT:
- elementSize = sizeof(GLfloat);
- break;
- case GL_DOUBLE:
- elementSize = sizeof(GLdouble);
- break;
- case GL_HALF_FLOAT:
- elementSize = sizeof(GLhalfARB);
- break;
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glFogCoordPointer(type)" );
- return;
- }
-
- update_array(ctx, &ctx->Array.ArrayObj->FogCoord, _NEW_ARRAY_FOGCOORD,
- elementSize, 1, type, GL_RGBA, stride, GL_FALSE, ptr);
+ update_array(ctx, "glFogCoordPointer",
+ &ctx->Array.ArrayObj->FogCoord, _NEW_ARRAY_FOGCOORD,
+ legalTypes, 1, 1,
+ 1, type, stride, GL_FALSE, GL_FALSE, ptr);
}
void GLAPIENTRY
_mesa_IndexPointer(GLenum type, GLsizei stride, const GLvoid *ptr)
{
- GLsizei elementSize;
+ const GLbitfield legalTypes = (UNSIGNED_BYTE_BIT | SHORT_BIT | INT_BIT |
+ FLOAT_BIT | DOUBLE_BIT);
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (stride < 0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glIndexPointer(stride)" );
- return;
- }
-
- switch (type) {
- case GL_UNSIGNED_BYTE:
- elementSize = sizeof(GLubyte);
- break;
- case GL_SHORT:
- elementSize = sizeof(GLshort);
- break;
- case GL_INT:
- elementSize = sizeof(GLint);
- break;
- case GL_FLOAT:
- elementSize = sizeof(GLfloat);
- break;
- case GL_DOUBLE:
- elementSize = sizeof(GLdouble);
- break;
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glIndexPointer(type)" );
- return;
- }
-
- update_array(ctx, &ctx->Array.ArrayObj->Index, _NEW_ARRAY_INDEX,
- elementSize, 1, type, GL_RGBA, stride, GL_FALSE, ptr);
+ update_array(ctx, "glIndexPointer",
+ &ctx->Array.ArrayObj->Index, _NEW_ARRAY_INDEX,
+ legalTypes, 1, 1,
+ 1, type, stride, GL_FALSE, GL_FALSE, ptr);
}
@@ -350,74 +278,17 @@ void GLAPIENTRY
_mesa_SecondaryColorPointerEXT(GLint size, GLenum type,
GLsizei stride, const GLvoid *ptr)
{
- GLsizei elementSize;
- GLenum format;
+ const GLbitfield legalTypes = (BYTE_BIT | UNSIGNED_BYTE_BIT |
+ SHORT_BIT | UNSIGNED_SHORT_BIT |
+ INT_BIT | UNSIGNED_INT_BIT |
+ HALF_BIT | FLOAT_BIT | DOUBLE_BIT);
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (size != 3 && size != 4) {
- if (!ctx->Extensions.EXT_vertex_array_bgra || size != GL_BGRA) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glSecondaryColorPointer(size)");
- return;
- }
- }
- if (stride < 0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glSecondaryColorPointer(stride)" );
- return;
- }
-
- if (MESA_VERBOSE&(VERBOSE_VARRAY|VERBOSE_API))
- _mesa_debug(ctx, "glSecondaryColorPointer( sz %d type %s stride %d )\n",
- size, _mesa_lookup_enum_by_nr( type ), stride);
-
- if (size == GL_BGRA) {
- if (type != GL_UNSIGNED_BYTE) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glColorPointer(GL_BGRA/GLubyte)");
- return;
- }
- format = GL_BGRA;
- size = 4;
- }
- else {
- format = GL_RGBA;
- }
-
- switch (type) {
- case GL_BYTE:
- elementSize = size * sizeof(GLbyte);
- break;
- case GL_UNSIGNED_BYTE:
- elementSize = size * sizeof(GLubyte);
- break;
- case GL_SHORT:
- elementSize = size * sizeof(GLshort);
- break;
- case GL_UNSIGNED_SHORT:
- elementSize = size * sizeof(GLushort);
- break;
- case GL_INT:
- elementSize = size * sizeof(GLint);
- break;
- case GL_UNSIGNED_INT:
- elementSize = size * sizeof(GLuint);
- break;
- case GL_FLOAT:
- elementSize = size * sizeof(GLfloat);
- break;
- case GL_DOUBLE:
- elementSize = size * sizeof(GLdouble);
- break;
- case GL_HALF_FLOAT:
- elementSize = size * sizeof(GLhalfARB);
- break;
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glSecondaryColorPointer(type=%s)",
- _mesa_lookup_enum_by_nr(type));
- return;
- }
-
- update_array(ctx, &ctx->Array.ArrayObj->SecondaryColor, _NEW_ARRAY_COLOR1,
- elementSize, size, type, format, stride, GL_TRUE, ptr);
+ update_array(ctx, "glSecondaryColorPointer",
+ &ctx->Array.ArrayObj->SecondaryColor, _NEW_ARRAY_COLOR1,
+ legalTypes, 3, BGRA_OR_4,
+ size, type, stride, GL_TRUE, GL_FALSE, ptr);
}
@@ -425,110 +296,59 @@ void GLAPIENTRY
_mesa_TexCoordPointer(GLint size, GLenum type, GLsizei stride,
const GLvoid *ptr)
{
- GLint elementSize;
+ GLbitfield legalTypes = (SHORT_BIT | INT_BIT |
+ HALF_BIT | FLOAT_BIT | DOUBLE_BIT);
GET_CURRENT_CONTEXT(ctx);
const GLuint unit = ctx->Array.ActiveTexture;
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (size < 1 || size > 4) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glTexCoordPointer(size)" );
- return;
- }
- if (stride < 0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glTexCoordPointer(stride)" );
- return;
- }
-
- if (MESA_VERBOSE&(VERBOSE_VARRAY|VERBOSE_API))
- _mesa_debug(ctx, "glTexCoordPointer(unit %u sz %d type %s stride %d)\n",
- unit, size, _mesa_lookup_enum_by_nr( type ), stride);
-
- /* always need to check that <type> is legal */
- switch (type) {
- case GL_SHORT:
- elementSize = size * sizeof(GLshort);
- break;
- case GL_INT:
- elementSize = size * sizeof(GLint);
- break;
- case GL_FLOAT:
- elementSize = size * sizeof(GLfloat);
- break;
- case GL_DOUBLE:
- elementSize = size * sizeof(GLdouble);
- break;
- case GL_HALF_FLOAT:
- elementSize = size * sizeof(GLhalfARB);
- break;
-#if FEATURE_fixedpt
- case GL_FIXED:
- elementSize = size * sizeof(GLfixed);
- break;
-#endif
-#if FEATURE_vertex_array_byte
- case GL_BYTE:
- elementSize = size * sizeof(GLbyte);
- break;
-#endif
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glTexCoordPointer(type=%s)",
- _mesa_lookup_enum_by_nr(type));
- return;
- }
+ if (ctx->API == API_OPENGLES)
+ legalTypes |= BYTE_BIT;
ASSERT(unit < Elements(ctx->Array.ArrayObj->TexCoord));
- update_array(ctx, &ctx->Array.ArrayObj->TexCoord[unit],
+ update_array(ctx, "glTexCoordPointer",
+ &ctx->Array.ArrayObj->TexCoord[unit],
_NEW_ARRAY_TEXCOORD(unit),
- elementSize, size, type, GL_RGBA, stride, GL_FALSE, ptr);
+ legalTypes, 1, 4,
+ size, type, stride, GL_FALSE, GL_FALSE,
+ ptr);
}
void GLAPIENTRY
_mesa_EdgeFlagPointer(GLsizei stride, const GLvoid *ptr)
{
+ const GLbitfield legalTypes = UNSIGNED_BYTE_BIT;
+ /* see table 2.4 edits in GL_EXT_gpu_shader4 spec: */
+ const GLboolean integer = GL_TRUE;
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (stride < 0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glEdgeFlagPointer(stride)" );
- return;
- }
-
- update_array(ctx, &ctx->Array.ArrayObj->EdgeFlag, _NEW_ARRAY_EDGEFLAG,
- sizeof(GLboolean), 1, GL_UNSIGNED_BYTE, GL_RGBA,
- stride, GL_FALSE, ptr);
+ update_array(ctx, "glEdgeFlagPointer",
+ &ctx->Array.ArrayObj->EdgeFlag, _NEW_ARRAY_EDGEFLAG,
+ legalTypes, 1, 1,
+ 1, GL_UNSIGNED_BYTE, stride, GL_FALSE, integer, ptr);
}
void GLAPIENTRY
_mesa_PointSizePointer(GLenum type, GLsizei stride, const GLvoid *ptr)
{
- GLsizei elementSize;
+ const GLbitfield legalTypes = (FLOAT_BIT | FIXED_BIT);
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (stride < 0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glPointSizePointer(stride)" );
+ if (ctx->API != API_OPENGLES) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glPointSizePointer(ES 1.x only)");
return;
}
-
- switch (type) {
- case GL_FLOAT:
- elementSize = sizeof(GLfloat);
- break;
-#if FEATURE_fixedpt
- case GL_FIXED:
- elementSize = sizeof(GLfixed);
- break;
-#endif
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glPointSizePointer(type)" );
- return;
- }
-
- update_array(ctx, &ctx->Array.ArrayObj->PointSize, _NEW_ARRAY_POINT_SIZE,
- elementSize, 1, type, GL_RGBA, stride, GL_FALSE, ptr);
+
+ update_array(ctx, "glPointSizePointer",
+ &ctx->Array.ArrayObj->PointSize, _NEW_ARRAY_POINT_SIZE,
+ legalTypes, 1, 1,
+ 1, type, stride, GL_FALSE, GL_FALSE, ptr);
}
@@ -543,9 +363,9 @@ void GLAPIENTRY
_mesa_VertexAttribPointerNV(GLuint index, GLint size, GLenum type,
GLsizei stride, const GLvoid *ptr)
{
+ const GLbitfield legalTypes = (UNSIGNED_BYTE_BIT | SHORT_BIT |
+ FLOAT_BIT | DOUBLE_BIT);
GLboolean normalized = GL_FALSE;
- GLsizei elementSize;
- GLenum format;
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
@@ -554,60 +374,16 @@ _mesa_VertexAttribPointerNV(GLuint index, GLint size, GLenum type,
return;
}
- if (size < 1 || size > 4) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerNV(size)");
- return;
- }
-
- if (stride < 0) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerNV(stride)");
- return;
- }
-
if (type == GL_UNSIGNED_BYTE && size != 4) {
_mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerNV(size!=4)");
return;
}
- if (size == GL_BGRA) {
- if (type != GL_UNSIGNED_BYTE) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glVertexAttribPointerNV(GL_BGRA/type)");
- return;
- }
-
- format = GL_BGRA;
- size = 4;
- normalized = GL_TRUE;
- }
- else {
- format = GL_RGBA;
- }
-
- /* check for valid 'type' and compute StrideB right away */
- switch (type) {
- case GL_UNSIGNED_BYTE:
- normalized = GL_TRUE;
- elementSize = size * sizeof(GLubyte);
- break;
- case GL_SHORT:
- elementSize = size * sizeof(GLshort);
- break;
- case GL_FLOAT:
- elementSize = size * sizeof(GLfloat);
- break;
- case GL_DOUBLE:
- elementSize = size * sizeof(GLdouble);
- break;
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glVertexAttribPointerNV(type=%s)",
- _mesa_lookup_enum_by_nr(type));
- return;
- }
-
- update_array(ctx, &ctx->Array.ArrayObj->VertexAttrib[index],
+ update_array(ctx, "glVertexAttribPointerNV",
+ &ctx->Array.ArrayObj->VertexAttrib[index],
_NEW_ARRAY_ATTRIB(index),
- elementSize, size, type, format, stride, normalized, ptr);
+ legalTypes, 1, BGRA_OR_4,
+ size, type, stride, normalized, GL_FALSE, ptr);
}
#endif
@@ -623,8 +399,11 @@ _mesa_VertexAttribPointerARB(GLuint index, GLint size, GLenum type,
GLboolean normalized,
GLsizei stride, const GLvoid *ptr)
{
- GLsizei elementSize;
- GLenum format;
+ const GLbitfield legalTypes = (BYTE_BIT | UNSIGNED_BYTE_BIT |
+ SHORT_BIT | UNSIGNED_SHORT_BIT |
+ INT_BIT | UNSIGNED_INT_BIT |
+ HALF_BIT | FLOAT_BIT | DOUBLE_BIT |
+ FIXED_BIT);
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
@@ -633,99 +412,43 @@ _mesa_VertexAttribPointerARB(GLuint index, GLint size, GLenum type,
return;
}
- if (size < 1 || size > 4) {
- if (!ctx->Extensions.EXT_vertex_array_bgra || size != GL_BGRA) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerARB(size)");
- return;
- }
- }
-
- if (stride < 0) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerARB(stride)");
- return;
- }
-
- if (size == GL_BGRA) {
- if (type != GL_UNSIGNED_BYTE) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glVertexAttribPointerARB(GL_BGRA/type)");
- return;
- }
- if (normalized != GL_TRUE) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glVertexAttribPointerARB(GL_BGRA/normalized)");
- return;
- }
-
- format = GL_BGRA;
- size = 4;
- }
- else {
- format = GL_RGBA;
- }
-
- /* check for valid 'type' and compute StrideB right away */
- /* NOTE: more types are supported here than in the NV extension */
- switch (type) {
- case GL_BYTE:
- elementSize = size * sizeof(GLbyte);
- break;
- case GL_UNSIGNED_BYTE:
- elementSize = size * sizeof(GLubyte);
- break;
- case GL_SHORT:
- elementSize = size * sizeof(GLshort);
- break;
- case GL_UNSIGNED_SHORT:
- elementSize = size * sizeof(GLushort);
- break;
- case GL_INT:
- elementSize = size * sizeof(GLint);
- break;
- case GL_UNSIGNED_INT:
- elementSize = size * sizeof(GLuint);
- break;
- case GL_FLOAT:
- elementSize = size * sizeof(GLfloat);
- break;
- case GL_DOUBLE:
- elementSize = size * sizeof(GLdouble);
- break;
- case GL_HALF_FLOAT:
- elementSize = size * sizeof(GLhalfARB);
- break;
-#if FEATURE_fixedpt
- case GL_FIXED:
- elementSize = size * sizeof(GLfixed);
- break;
-#endif
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glVertexAttribPointerARB(type)" );
- return;
- }
-
- update_array(ctx, &ctx->Array.ArrayObj->VertexAttrib[index],
+ update_array(ctx, "glVertexAttribPointer",
+ &ctx->Array.ArrayObj->VertexAttrib[index],
_NEW_ARRAY_ATTRIB(index),
- elementSize, size, type, format, stride, normalized, ptr);
+ legalTypes, 1, BGRA_OR_4,
+ size, type, stride, normalized, GL_FALSE, ptr);
}
#endif
/**
- * New in GL3:
+ * GL_EXT_gpu_shader4 / GL 3.0.
* Set an integer-valued vertex attribute array.
* Note that these arrays DO NOT alias the conventional GL vertex arrays
* (position, normal, color, fog, texcoord, etc).
*/
void GLAPIENTRY
_mesa_VertexAttribIPointer(GLuint index, GLint size, GLenum type,
- GLboolean normalized,
GLsizei stride, const GLvoid *ptr)
{
- /* NOTE: until we have integer-valued vertex attributes, just
- * route this through the regular glVertexAttribPointer() function.
- */
- _mesa_VertexAttribPointerARB(index, size, type, normalized, stride, ptr);
+ const GLbitfield legalTypes = (BYTE_BIT | UNSIGNED_BYTE_BIT |
+ SHORT_BIT | UNSIGNED_SHORT_BIT |
+ INT_BIT | UNSIGNED_INT_BIT);
+ const GLboolean normalized = GL_FALSE;
+ const GLboolean integer = GL_TRUE;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (index >= ctx->Const.VertexProgram.MaxAttribs) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribIPointer(index)");
+ return;
+ }
+
+ update_array(ctx, "glVertexAttribIPointer",
+ &ctx->Array.ArrayObj->VertexAttrib[index],
+ _NEW_ARRAY_ATTRIB(index),
+ legalTypes, 1, 4,
+ size, type, stride, normalized, integer, ptr);
}
@@ -805,6 +528,11 @@ get_vertex_array_attrib(struct gl_context *ctx, GLuint index, GLenum pname,
return array->Normalized;
case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB:
return array->BufferObj->Name;
+ case GL_VERTEX_ATTRIB_ARRAY_INTEGER:
+ if (ctx->Extensions.EXT_gpu_shader4) {
+ return array->Integer;
+ }
+ /* fall-through */
default:
_mesa_error(ctx, GL_INVALID_ENUM, "%s(pname=0x%x)", caller, pname);
return 0;
@@ -1254,7 +982,6 @@ _mesa_UnlockArraysEXT( void )
/* GL_EXT_multi_draw_arrays */
-/* Somebody forgot to spec the first and count parameters as const! <sigh> */
void GLAPIENTRY
_mesa_MultiDrawArraysEXT( GLenum mode, const GLint *first,
const GLsizei *count, GLsizei primcount )
@@ -1352,6 +1079,7 @@ _mesa_copy_client_array(struct gl_context *ctx,
dst->Ptr = src->Ptr;
dst->Enabled = src->Enabled;
dst->Normalized = src->Normalized;
+ dst->Integer = src->Integer;
dst->_ElementSize = src->_ElementSize;
_mesa_reference_buffer_object(ctx, &dst->BufferObj, src->BufferObj);
dst->_MaxElement = src->_MaxElement;
diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h
index a5fa33fa00..fb96478cfc 100644
--- a/src/mesa/main/varray.h
+++ b/src/mesa/main/varray.h
@@ -118,7 +118,6 @@ _mesa_VertexAttribPointerARB(GLuint index, GLint size, GLenum type,
void GLAPIENTRY
_mesa_VertexAttribIPointer(GLuint index, GLint size, GLenum type,
- GLboolean normalized,
GLsizei stride, const GLvoid *ptr);
diff --git a/src/mesa/main/version.h b/src/mesa/main/version.h
index 6552a3a784..1b53508099 100644
--- a/src/mesa/main/version.h
+++ b/src/mesa/main/version.h
@@ -28,7 +28,7 @@
#define VERSION_H
-#include "mtypes.h"
+struct gl_context;
/* Mesa version */
diff --git a/src/mesa/main/vtxfmt.c b/src/mesa/main/vtxfmt.c
index 9236bf81a2..8a72641862 100644
--- a/src/mesa/main/vtxfmt.c
+++ b/src/mesa/main/vtxfmt.c
@@ -40,7 +40,7 @@
#if FEATURE_beginend
/**
- * Use the per-vertex functions found in <vfmt> to initialze the given
+ * Use the per-vertex functions found in <vfmt> to initialoze the given
* API dispatch table.
*/
static void
@@ -88,7 +88,7 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt )
SET_Vertex4f(tab, vfmt->Vertex4f);
SET_Vertex4fv(tab, vfmt->Vertex4fv);
- _mesa_install_dlist_vtxfmt(tab, vfmt);
+ _mesa_install_dlist_vtxfmt(tab, vfmt); /* glCallList / glCallLists */
SET_Begin(tab, vfmt->Begin);
SET_End(tab, vfmt->End);
@@ -103,8 +103,8 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt )
SET_DrawElementsBaseVertex(tab, vfmt->DrawElementsBaseVertex);
SET_DrawRangeElementsBaseVertex(tab, vfmt->DrawRangeElementsBaseVertex);
SET_MultiDrawElementsBaseVertex(tab, vfmt->MultiDrawElementsBaseVertex);
- SET_DrawArraysInstanced(tab, vfmt->DrawArraysInstanced);
- SET_DrawElementsInstanced(tab, vfmt->DrawElementsInstanced);
+ SET_DrawArraysInstancedARB(tab, vfmt->DrawArraysInstanced);
+ SET_DrawElementsInstancedARB(tab, vfmt->DrawElementsInstanced);
/* GL_NV_vertex_program */
SET_VertexAttrib1fNV(tab, vfmt->VertexAttrib1fNV);
@@ -125,17 +125,43 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt )
SET_VertexAttrib4fARB(tab, vfmt->VertexAttrib4fARB);
SET_VertexAttrib4fvARB(tab, vfmt->VertexAttrib4fvARB);
#endif
+
+ /* GL_EXT_gpu_shader4 / OpenGL 3.0 */
+ SET_VertexAttribI1iEXT(tab, vfmt->VertexAttribI1i);
+ SET_VertexAttribI2iEXT(tab, vfmt->VertexAttribI2i);
+ SET_VertexAttribI3iEXT(tab, vfmt->VertexAttribI3i);
+ SET_VertexAttribI4iEXT(tab, vfmt->VertexAttribI4i);
+ SET_VertexAttribI2ivEXT(tab, vfmt->VertexAttribI2iv);
+ SET_VertexAttribI3ivEXT(tab, vfmt->VertexAttribI3iv);
+ SET_VertexAttribI4ivEXT(tab, vfmt->VertexAttribI4iv);
+
+ SET_VertexAttribI1uiEXT(tab, vfmt->VertexAttribI1ui);
+ SET_VertexAttribI2uiEXT(tab, vfmt->VertexAttribI2ui);
+ SET_VertexAttribI3uiEXT(tab, vfmt->VertexAttribI3ui);
+ SET_VertexAttribI4uiEXT(tab, vfmt->VertexAttribI4ui);
+ SET_VertexAttribI2uivEXT(tab, vfmt->VertexAttribI2uiv);
+ SET_VertexAttribI3uivEXT(tab, vfmt->VertexAttribI3uiv);
+ SET_VertexAttribI4uivEXT(tab, vfmt->VertexAttribI4uiv);
}
-void _mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt )
+/**
+ * Install per-vertex functions into the API dispatch table for execution.
+ */
+void
+_mesa_install_exec_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt)
{
if (ctx->API == API_OPENGL)
install_vtxfmt( ctx->Exec, vfmt );
}
-void _mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt )
+/**
+ * Install per-vertex functions into the API dispatch table for display
+ * list compilation.
+ */
+void
+_mesa_install_save_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt)
{
if (ctx->API == API_OPENGL)
install_vtxfmt( ctx->Save, vfmt );
diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
index bdd3fd92ff..98da90d359 100644
--- a/src/mesa/program/ir_to_mesa.cpp
+++ b/src/mesa/program/ir_to_mesa.cpp
@@ -123,6 +123,7 @@ public:
/** Pointer to the ir source this tree came from for debugging */
ir_instruction *ir;
GLboolean cond_update;
+ bool saturate;
int sampler; /**< sampler index */
int tex_target; /**< One of TEXTURE_*_INDEX */
GLboolean tex_shadow;
@@ -260,6 +261,17 @@ public:
ir_to_mesa_src_reg src1,
ir_to_mesa_src_reg src2);
+ /**
+ * Emit the correct dot-product instruction for the type of arguments
+ *
+ * \sa ir_to_mesa_emit_op2
+ */
+ void ir_to_mesa_emit_dp(ir_instruction *ir,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0,
+ ir_to_mesa_src_reg src1,
+ unsigned elements);
+
void ir_to_mesa_emit_scalar_op1(ir_instruction *ir,
enum prog_opcode op,
ir_to_mesa_dst_reg dst,
@@ -271,8 +283,17 @@ public:
ir_to_mesa_src_reg src0,
ir_to_mesa_src_reg src1);
+ void emit_scs(ir_instruction *ir, enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ const ir_to_mesa_src_reg &src);
+
GLboolean try_emit_mad(ir_expression *ir,
int mul_operand);
+ GLboolean try_emit_sat(ir_expression *ir);
+
+ void emit_swz(ir_expression *ir);
+
+ bool process_move_condition(ir_rvalue *ir);
void *mem_ctx;
};
@@ -393,6 +414,21 @@ ir_to_mesa_visitor::ir_to_mesa_emit_op0(ir_instruction *ir,
ir_to_mesa_undef);
}
+void
+ir_to_mesa_visitor::ir_to_mesa_emit_dp(ir_instruction *ir,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0,
+ ir_to_mesa_src_reg src1,
+ unsigned elements)
+{
+ static const gl_inst_opcode dot_opcodes[] = {
+ OPCODE_DP2, OPCODE_DP3, OPCODE_DP4
+ };
+
+ ir_to_mesa_emit_op3(ir, dot_opcodes[elements - 2],
+ dst, src0, src1, ir_to_mesa_undef);
+}
+
inline ir_to_mesa_dst_reg
ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg reg)
{
@@ -447,6 +483,10 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir,
GLuint src0_swiz = GET_SWZ(src0.swizzle, i);
GLuint src1_swiz = GET_SWZ(src1.swizzle, i);
for (j = i + 1; j < 4; j++) {
+ /* If there is another enabled component in the destination that is
+ * derived from the same inputs, generate its value on this pass as
+ * well.
+ */
if (!(done_mask & (1 << j)) &&
GET_SWZ(src0.swizzle, j) == src0_swiz &&
GET_SWZ(src1.swizzle, j) == src1_swiz) {
@@ -480,6 +520,102 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op1(ir_instruction *ir,
ir_to_mesa_emit_scalar_op2(ir, op, dst, src0, undef);
}
+/**
+ * Emit an OPCODE_SCS instruction
+ *
+ * The \c SCS opcode functions a bit differently than the other Mesa (or
+ * ARB_fragment_program) opcodes. Instead of splatting its result across all
+ * four components of the destination, it writes one value to the \c x
+ * component and another value to the \c y component.
+ *
+ * \param ir IR instruction being processed
+ * \param op Either \c OPCODE_SIN or \c OPCODE_COS depending on which
+ * value is desired.
+ * \param dst Destination register
+ * \param src Source register
+ */
+void
+ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ const ir_to_mesa_src_reg &src)
+{
+ /* Vertex programs cannot use the SCS opcode.
+ */
+ if (this->prog->Target == GL_VERTEX_PROGRAM_ARB) {
+ ir_to_mesa_emit_scalar_op1(ir, op, dst, src);
+ return;
+ }
+
+ const unsigned component = (op == OPCODE_SIN) ? 0 : 1;
+ const unsigned scs_mask = (1U << component);
+ int done_mask = ~dst.writemask;
+ ir_to_mesa_src_reg tmp;
+
+ assert(op == OPCODE_SIN || op == OPCODE_COS);
+
+ /* If there are compnents in the destination that differ from the component
+ * that will be written by the SCS instrution, we'll need a temporary.
+ */
+ if (scs_mask != unsigned(dst.writemask)) {
+ tmp = get_temp(glsl_type::vec4_type);
+ }
+
+ for (unsigned i = 0; i < 4; i++) {
+ unsigned this_mask = (1U << i);
+ ir_to_mesa_src_reg src0 = src;
+
+ if ((done_mask & this_mask) != 0)
+ continue;
+
+ /* The source swizzle specified which component of the source generates
+ * sine / cosine for the current component in the destination. The SCS
+ * instruction requires that this value be swizzle to the X component.
+ * Replace the current swizzle with a swizzle that puts the source in
+ * the X component.
+ */
+ unsigned src0_swiz = GET_SWZ(src.swizzle, i);
+
+ src0.swizzle = MAKE_SWIZZLE4(src0_swiz, src0_swiz,
+ src0_swiz, src0_swiz);
+ for (unsigned j = i + 1; j < 4; j++) {
+ /* If there is another enabled component in the destination that is
+ * derived from the same inputs, generate its value on this pass as
+ * well.
+ */
+ if (!(done_mask & (1 << j)) &&
+ GET_SWZ(src0.swizzle, j) == src0_swiz) {
+ this_mask |= (1 << j);
+ }
+ }
+
+ if (this_mask != scs_mask) {
+ ir_to_mesa_instruction *inst;
+ ir_to_mesa_dst_reg tmp_dst = ir_to_mesa_dst_reg_from_src(tmp);
+
+ /* Emit the SCS instruction.
+ */
+ inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, tmp_dst, src0);
+ inst->dst_reg.writemask = scs_mask;
+
+ /* Move the result of the SCS instruction to the desired location in
+ * the destination.
+ */
+ tmp.swizzle = MAKE_SWIZZLE4(component, component,
+ component, component);
+ inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, tmp);
+ inst->dst_reg.writemask = this_mask;
+ } else {
+ /* Emit the SCS instruction to write directly to the destination.
+ */
+ ir_to_mesa_instruction *inst =
+ ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, src0);
+ inst->dst_reg.writemask = scs_mask;
+ }
+
+ done_mask |= this_mask;
+ }
+}
+
struct ir_to_mesa_src_reg
ir_to_mesa_visitor::src_reg_for_float(float val)
{
@@ -805,6 +941,32 @@ ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand)
return true;
}
+GLboolean
+ir_to_mesa_visitor::try_emit_sat(ir_expression *ir)
+{
+ /* Saturates were only introduced to vertex programs in
+ * NV_vertex_program3, so don't give them to drivers in the VP.
+ */
+ if (this->prog->Target == GL_VERTEX_PROGRAM_ARB)
+ return false;
+
+ ir_rvalue *sat_src = ir->as_rvalue_to_saturate();
+ if (!sat_src)
+ return false;
+
+ sat_src->accept(this);
+ ir_to_mesa_src_reg src = this->result;
+
+ this->result = get_temp(ir->type);
+ ir_to_mesa_instruction *inst;
+ inst = ir_to_mesa_emit_op1(ir, OPCODE_MOV,
+ ir_to_mesa_dst_reg_from_src(this->result),
+ src);
+ inst->saturate = true;
+
+ return true;
+}
+
void
ir_to_mesa_visitor::reladdr_to_temp(ir_instruction *ir,
ir_to_mesa_src_reg *reg, int *num_reladdr)
@@ -826,15 +988,129 @@ ir_to_mesa_visitor::reladdr_to_temp(ir_instruction *ir,
}
void
+ir_to_mesa_visitor::emit_swz(ir_expression *ir)
+{
+ /* Assume that the vector operator is in a form compatible with OPCODE_SWZ.
+ * This means that each of the operands is either an immediate value of -1,
+ * 0, or 1, or is a component from one source register (possibly with
+ * negation).
+ */
+ uint8_t components[4] = { 0 };
+ bool negate[4] = { false };
+ ir_variable *var = NULL;
+
+ for (unsigned i = 0; i < ir->type->vector_elements; i++) {
+ ir_rvalue *op = ir->operands[i];
+
+ assert(op->type->is_scalar());
+
+ while (op != NULL) {
+ switch (op->ir_type) {
+ case ir_type_constant: {
+
+ assert(op->type->is_scalar());
+
+ const ir_constant *const c = op->as_constant();
+ if (c->is_one()) {
+ components[i] = SWIZZLE_ONE;
+ } else if (c->is_zero()) {
+ components[i] = SWIZZLE_ZERO;
+ } else if (c->is_negative_one()) {
+ components[i] = SWIZZLE_ONE;
+ negate[i] = true;
+ } else {
+ assert(!"SWZ constant must be 0.0 or 1.0.");
+ }
+
+ op = NULL;
+ break;
+ }
+
+ case ir_type_dereference_variable: {
+ ir_dereference_variable *const deref =
+ (ir_dereference_variable *) op;
+
+ assert((var == NULL) || (deref->var == var));
+ components[i] = SWIZZLE_X;
+ var = deref->var;
+ op = NULL;
+ break;
+ }
+
+ case ir_type_expression: {
+ ir_expression *const expr = (ir_expression *) op;
+
+ assert(expr->operation == ir_unop_neg);
+ negate[i] = true;
+
+ op = expr->operands[0];
+ break;
+ }
+
+ case ir_type_swizzle: {
+ ir_swizzle *const swiz = (ir_swizzle *) op;
+
+ components[i] = swiz->mask.x;
+ op = swiz->val;
+ break;
+ }
+
+ default:
+ assert(!"Should not get here.");
+ return;
+ }
+ }
+ }
+
+ assert(var != NULL);
+
+ ir_dereference_variable *const deref =
+ new(mem_ctx) ir_dereference_variable(var);
+
+ this->result.file = PROGRAM_UNDEFINED;
+ deref->accept(this);
+ if (this->result.file == PROGRAM_UNDEFINED) {
+ ir_print_visitor v;
+ printf("Failed to get tree for expression operand:\n");
+ deref->accept(&v);
+ exit(1);
+ }
+
+ ir_to_mesa_src_reg src;
+
+ src = this->result;
+ src.swizzle = MAKE_SWIZZLE4(components[0],
+ components[1],
+ components[2],
+ components[3]);
+ src.negate = ((unsigned(negate[0]) << 0)
+ | (unsigned(negate[1]) << 1)
+ | (unsigned(negate[2]) << 2)
+ | (unsigned(negate[3]) << 3));
+
+ /* Storage for our result. Ideally for an assignment we'd be using the
+ * actual storage for the result here, instead.
+ */
+ const ir_to_mesa_src_reg result_src = get_temp(ir->type);
+ ir_to_mesa_dst_reg result_dst = ir_to_mesa_dst_reg_from_src(result_src);
+
+ /* Limit writes to the channels that will be used by result_src later.
+ * This does limit this temp's use as a temporary for multi-instruction
+ * sequences.
+ */
+ result_dst.writemask = (1 << ir->type->vector_elements) - 1;
+
+ ir_to_mesa_emit_op1(ir, OPCODE_SWZ, result_dst, src);
+ this->result = result_src;
+}
+
+void
ir_to_mesa_visitor::visit(ir_expression *ir)
{
unsigned int operand;
- struct ir_to_mesa_src_reg op[2];
+ struct ir_to_mesa_src_reg op[Elements(ir->operands)];
struct ir_to_mesa_src_reg result_src;
struct ir_to_mesa_dst_reg result_dst;
- const glsl_type *vec4_type = glsl_type::get_instance(GLSL_TYPE_FLOAT, 4, 1);
- const glsl_type *vec3_type = glsl_type::get_instance(GLSL_TYPE_FLOAT, 3, 1);
- const glsl_type *vec2_type = glsl_type::get_instance(GLSL_TYPE_FLOAT, 2, 1);
/* Quick peephole: Emit OPCODE_MAD(a, b, c) instead of ADD(MUL(a, b), c)
*/
@@ -844,6 +1120,13 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
if (try_emit_mad(ir, 0))
return;
}
+ if (try_emit_sat(ir))
+ return;
+
+ if (ir->operation == ir_quadop_vector) {
+ this->emit_swz(ir);
+ return;
+ }
for (operand = 0; operand < ir->get_num_operands(); operand++) {
this->result.file = PROGRAM_UNDEFINED;
@@ -917,6 +1200,12 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
case ir_unop_cos:
ir_to_mesa_emit_scalar_op1(ir, OPCODE_COS, result_dst, op[0]);
break;
+ case ir_unop_sin_reduced:
+ emit_scs(ir, OPCODE_SIN, result_dst, op[0]);
+ break;
+ case ir_unop_cos_reduced:
+ emit_scs(ir, OPCODE_COS, result_dst, op[0]);
+ break;
case ir_unop_dFdx:
ir_to_mesa_emit_op1(ir, OPCODE_DDX, result_dst, op[0]);
@@ -976,12 +1265,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type);
ir_to_mesa_emit_op2(ir, OPCODE_SNE,
ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]);
- if (vector_elements == 4)
- ir_to_mesa_emit_op2(ir, OPCODE_DP4, result_dst, temp, temp);
- else if (vector_elements == 3)
- ir_to_mesa_emit_op2(ir, OPCODE_DP3, result_dst, temp, temp);
- else
- ir_to_mesa_emit_op2(ir, OPCODE_DP2, result_dst, temp, temp);
+ ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements);
ir_to_mesa_emit_op2(ir, OPCODE_SEQ,
result_dst, result_src, src_reg_for_float(0.0));
} else {
@@ -995,12 +1279,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type);
ir_to_mesa_emit_op2(ir, OPCODE_SNE,
ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]);
- if (vector_elements == 4)
- ir_to_mesa_emit_op2(ir, OPCODE_DP4, result_dst, temp, temp);
- else if (vector_elements == 3)
- ir_to_mesa_emit_op2(ir, OPCODE_DP3, result_dst, temp, temp);
- else
- ir_to_mesa_emit_op2(ir, OPCODE_DP2, result_dst, temp, temp);
+ ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements);
ir_to_mesa_emit_op2(ir, OPCODE_SNE,
result_dst, result_src, src_reg_for_float(0.0));
} else {
@@ -1009,20 +1288,9 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
break;
case ir_unop_any:
- switch (ir->operands[0]->type->vector_elements) {
- case 4:
- ir_to_mesa_emit_op2(ir, OPCODE_DP4, result_dst, op[0], op[0]);
- break;
- case 3:
- ir_to_mesa_emit_op2(ir, OPCODE_DP3, result_dst, op[0], op[0]);
- break;
- case 2:
- ir_to_mesa_emit_op2(ir, OPCODE_DP2, result_dst, op[0], op[0]);
- break;
- default:
- assert(!"unreached: ir_unop_any of non-bvec");
- break;
- }
+ assert(ir->operands[0]->type->is_vector());
+ ir_to_mesa_emit_dp(ir, result_dst, op[0], op[0],
+ ir->operands[0]->type->vector_elements);
ir_to_mesa_emit_op2(ir, OPCODE_SNE,
result_dst, result_src, src_reg_for_float(0.0));
break;
@@ -1050,26 +1318,10 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
break;
case ir_binop_dot:
- if (ir->operands[0]->type == vec4_type) {
- assert(ir->operands[1]->type == vec4_type);
- ir_to_mesa_emit_op2(ir, OPCODE_DP4,
- result_dst,
- op[0], op[1]);
- } else if (ir->operands[0]->type == vec3_type) {
- assert(ir->operands[1]->type == vec3_type);
- ir_to_mesa_emit_op2(ir, OPCODE_DP3,
- result_dst,
- op[0], op[1]);
- } else if (ir->operands[0]->type == vec2_type) {
- assert(ir->operands[1]->type == vec2_type);
- ir_to_mesa_emit_op2(ir, OPCODE_DP2,
- result_dst,
- op[0], op[1]);
- }
- break;
-
- case ir_binop_cross:
- ir_to_mesa_emit_op2(ir, OPCODE_XPD, result_dst, op[0], op[1]);
+ assert(ir->operands[0]->type->is_vector());
+ assert(ir->operands[0]->type == ir->operands[1]->type);
+ ir_to_mesa_emit_dp(ir, result_dst, op[0], op[1],
+ ir->operands[0]->type->vector_elements);
break;
case ir_unop_sqrt:
@@ -1133,6 +1385,12 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
case ir_unop_round_even:
assert(!"GLSL 1.30 features unsupported");
break;
+
+ case ir_quadop_vector:
+ /* This operation should have already been handled.
+ */
+ assert(!"Should not get here.");
+ break;
}
this->result = result_src;
@@ -1340,6 +1598,93 @@ get_assignment_lhs(ir_dereference *ir, ir_to_mesa_visitor *v)
return ir_to_mesa_dst_reg_from_src(v->result);
}
+/**
+ * Process the condition of a conditional assignment
+ *
+ * Examines the condition of a conditional assignment to generate the optimal
+ * first operand of a \c CMP instruction. If the condition is a relational
+ * operator with 0 (e.g., \c ir_binop_less), the value being compared will be
+ * used as the source for the \c CMP instruction. Otherwise the comparison
+ * is processed to a boolean result, and the boolean result is used as the
+ * operand to the CMP instruction.
+ */
+bool
+ir_to_mesa_visitor::process_move_condition(ir_rvalue *ir)
+{
+ ir_rvalue *src_ir = ir;
+ bool negate = true;
+ bool switch_order = false;
+
+ ir_expression *const expr = ir->as_expression();
+ if ((expr != NULL) && (expr->get_num_operands() == 2)) {
+ bool zero_on_left = false;
+
+ if (expr->operands[0]->is_zero()) {
+ src_ir = expr->operands[1];
+ zero_on_left = true;
+ } else if (expr->operands[1]->is_zero()) {
+ src_ir = expr->operands[0];
+ zero_on_left = false;
+ }
+
+ /* a is - 0 + - 0 +
+ * (a < 0) T F F ( a < 0) T F F
+ * (0 < a) F F T (-a < 0) F F T
+ * (a <= 0) T T F (-a < 0) F F T (swap order of other operands)
+ * (0 <= a) F T T ( a < 0) T F F (swap order of other operands)
+ * (a > 0) F F T (-a < 0) F F T
+ * (0 > a) T F F ( a < 0) T F F
+ * (a >= 0) F T T ( a < 0) T F F (swap order of other operands)
+ * (0 >= a) T T F (-a < 0) F F T (swap order of other operands)
+ *
+ * Note that exchanging the order of 0 and 'a' in the comparison simply
+ * means that the value of 'a' should be negated.
+ */
+ if (src_ir != ir) {
+ switch (expr->operation) {
+ case ir_binop_less:
+ switch_order = false;
+ negate = zero_on_left;
+ break;
+
+ case ir_binop_greater:
+ switch_order = false;
+ negate = !zero_on_left;
+ break;
+
+ case ir_binop_lequal:
+ switch_order = true;
+ negate = !zero_on_left;
+ break;
+
+ case ir_binop_gequal:
+ switch_order = true;
+ negate = zero_on_left;
+ break;
+
+ default:
+ /* This isn't the right kind of comparison afterall, so make sure
+ * the whole condition is visited.
+ */
+ src_ir = ir;
+ break;
+ }
+ }
+ }
+
+ src_ir->accept(this);
+
+ /* We use the OPCODE_CMP (a < 0 ? b : c) for conditional moves, and the
+ * condition we produced is 0.0 or 1.0. By flipping the sign, we can
+ * choose which value OPCODE_CMP produces without an extra instruction
+ * computing the condition.
+ */
+ if (negate)
+ this->result.negate = ~this->result.negate;
+
+ return switch_order;
+}
+
void
ir_to_mesa_visitor::visit(ir_assignment *ir)
{
@@ -1399,20 +1744,18 @@ ir_to_mesa_visitor::visit(ir_assignment *ir)
assert(r.file != PROGRAM_UNDEFINED);
if (ir->condition) {
- ir_to_mesa_src_reg condition;
-
- ir->condition->accept(this);
- condition = this->result;
+ const bool switch_order = this->process_move_condition(ir->condition);
+ ir_to_mesa_src_reg condition = this->result;
- /* We use the OPCODE_CMP (a < 0 ? b : c) for conditional moves,
- * and the condition we produced is 0.0 or 1.0. By flipping the
- * sign, we can choose which value OPCODE_CMP produces without
- * an extra computing the condition.
- */
- condition.negate = ~condition.negate;
for (i = 0; i < type_size(ir->lhs->type); i++) {
- ir_to_mesa_emit_op3(ir, OPCODE_CMP, l,
- condition, r, ir_to_mesa_src_reg_from_dst(l));
+ if (switch_order) {
+ ir_to_mesa_emit_op3(ir, OPCODE_CMP, l,
+ condition, ir_to_mesa_src_reg_from_dst(l), r);
+ } else {
+ ir_to_mesa_emit_op3(ir, OPCODE_CMP, l,
+ condition, r, ir_to_mesa_src_reg_from_dst(l));
+ }
+
l.index++;
r.index++;
}
@@ -2365,6 +2708,8 @@ get_mesa_program(struct gl_context *ctx, struct gl_shader_program *shader_progra
mesa_inst->Opcode = inst->op;
mesa_inst->CondUpdate = inst->cond_update;
+ if (inst->saturate)
+ mesa_inst->SaturateMode = SATURATE_ZERO_ONE;
mesa_inst->DstReg.File = inst->dst_reg.file;
mesa_inst->DstReg.Index = inst->dst_reg.index;
mesa_inst->DstReg.CondMask = inst->dst_reg.cond_mask;
@@ -2485,14 +2830,15 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
/* Lowering */
do_mat_op_to_vec(ir);
- do_mod_to_fract(ir);
- do_div_to_mul_rcp(ir);
- do_explog_to_explog2(ir);
+ lower_instructions(ir, MOD_TO_FRACT | DIV_TO_MUL_RCP | EXP_TO_EXP2
+ | LOG_TO_LOG2);
progress = do_lower_jumps(ir, true, true, options->EmitNoMainReturn, options->EmitNoCont, options->EmitNoLoops) || progress;
progress = do_common_optimization(ir, true, options->MaxUnrollIterations) || progress;
+ progress = lower_quadop_vector(ir, true) || progress;
+
if (options->EmitNoIfs)
progress = do_if_to_cond_assign(ir) || progress;
diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c
index cdcf4ec265..4cacde9aed 100644
--- a/src/mesa/program/program.c
+++ b/src/mesa/program/program.c
@@ -796,7 +796,7 @@ _mesa_combine_programs(struct gl_context *ctx,
if (p->Type == PROGRAM_STATE_VAR &&
p->StateIndexes[0] == STATE_INTERNAL &&
p->StateIndexes[1] == STATE_CURRENT_ATTRIB &&
- p->StateIndexes[2] == VERT_ATTRIB_COLOR0) {
+ (int) p->StateIndexes[2] == (int) VERT_ATTRIB_COLOR0) {
progB_inputsRead |= FRAG_BIT_COL0;
progB_colorFile = PROGRAM_STATE_VAR;
progB_colorIndex = i;
diff --git a/src/mesa/program/sampler.cpp b/src/mesa/program/sampler.cpp
index 0e58aef9c9..9a813c8795 100644
--- a/src/mesa/program/sampler.cpp
+++ b/src/mesa/program/sampler.cpp
@@ -23,15 +23,15 @@
* DEALINGS IN THE SOFTWARE.
*/
-#include <stdio.h>
+#include <cstdio>
+#include "ir.h"
+#include "glsl_types.h"
+#include "ir_visitor.h"
extern "C" {
#include "main/compiler.h"
#include "main/mtypes.h"
#include "program/prog_parameter.h"
-#include "ir.h"
-#include "ir_visitor.h"
-#include "glsl_types.h"
}
static void fail_link(struct gl_shader_program *prog, const char *fmt, ...) PRINTFLIKE(2, 3);
diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak
index 11a93d47f6..9a78a23aa7 100644
--- a/src/mesa/sources.mak
+++ b/src/mesa/sources.mak
@@ -58,8 +58,10 @@ MAIN_SOURCES = \
main/mm.c \
main/multisample.c \
main/nvprogram.c \
+ main/pack.c \
main/pixel.c \
main/pixelstore.c \
+ main/pixeltransfer.c \
main/points.c \
main/polygon.c \
main/queryobj.c \
diff --git a/src/mesa/state_tracker/st_atom_constbuf.c b/src/mesa/state_tracker/st_atom_constbuf.c
index 6f9d71e845..8d1dc792bc 100644
--- a/src/mesa/state_tracker/st_atom_constbuf.c
+++ b/src/mesa/state_tracker/st_atom_constbuf.c
@@ -90,8 +90,11 @@ void st_upload_constants( struct st_context *st,
st->pipe->set_constant_buffer(st->pipe, shader_type, 0, *cbuf);
}
- else {
+ else if (*cbuf) {
st->constants.tracked_state[shader_type].dirty.mesa = 0x0;
+
+ pipe_resource_reference(cbuf, NULL);
+ st->pipe->set_constant_buffer(st->pipe, shader_type, 0, NULL);
}
}
diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c b/src/mesa/state_tracker/st_atom_rasterizer.c
index 451299cef0..f92ca13d5e 100644
--- a/src/mesa/state_tracker/st_atom_rasterizer.c
+++ b/src/mesa/state_tracker/st_atom_rasterizer.c
@@ -96,9 +96,8 @@ static void update_raster_state( struct st_context *st )
*/
if (ctx->VertexProgram._Current) {
if (ctx->VertexProgram._Enabled ||
- (ctx->Shader.CurrentProgram &&
- ctx->Shader.CurrentProgram->VertexProgram &&
- ctx->Shader.CurrentProgram->LinkStatus)) {
+ (ctx->Shader.CurrentVertexProgram &&
+ ctx->Shader.CurrentVertexProgram->LinkStatus)) {
/* user-defined vertex program or shader */
raster->light_twoside = ctx->VertexProgram.TwoSideEnabled;
}
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index 94b80f69f2..d80c068ea8 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -34,6 +34,7 @@
#include "main/image.h"
#include "main/bufferobj.h"
#include "main/macros.h"
+#include "main/pack.h"
#include "main/texformat.h"
#include "main/texstore.h"
#include "program/program.h"
@@ -298,8 +299,8 @@ make_passthrough_vertex_shader(struct st_context *st,
/**
- * Return a texture internalFormat for drawing/copying an image
- * of the given type.
+ * Return a texture base format for drawing/copying an image
+ * of the given format.
*/
static GLenum
base_format(GLenum format)
@@ -318,6 +319,47 @@ base_format(GLenum format)
/**
+ * Return a texture internalFormat for drawing/copying an image
+ * of the given format and type.
+ */
+static GLenum
+internal_format(GLenum format, GLenum type)
+{
+ switch (format) {
+ case GL_DEPTH_COMPONENT:
+ return GL_DEPTH_COMPONENT;
+ case GL_DEPTH_STENCIL:
+ return GL_DEPTH_STENCIL;
+ case GL_STENCIL_INDEX:
+ return GL_STENCIL_INDEX;
+ default:
+ if (_mesa_is_integer_format(format)) {
+ switch (type) {
+ case GL_BYTE:
+ return GL_RGBA8I;
+ case GL_UNSIGNED_BYTE:
+ return GL_RGBA8UI;
+ case GL_SHORT:
+ return GL_RGBA16I;
+ case GL_UNSIGNED_SHORT:
+ return GL_RGBA16UI;
+ case GL_INT:
+ return GL_RGBA32I;
+ case GL_UNSIGNED_INT:
+ return GL_RGBA32UI;
+ default:
+ assert(0 && "Unexpected type in internal_format()");
+ return GL_RGBA_INTEGER;
+ }
+ }
+ else {
+ return GL_RGBA;
+ }
+ }
+}
+
+
+/**
* Create a temporary texture to hold an image of the given size.
* If width, height are not POT and the driver only handles POT textures,
* allocate the next larger size of texture that is POT.
@@ -351,11 +393,12 @@ make_texture(struct st_context *st,
struct pipe_resource *pt;
enum pipe_format pipeFormat;
GLuint cpp;
- GLenum baseFormat;
+ GLenum baseFormat, intFormat;
baseFormat = base_format(format);
+ intFormat = internal_format(format, type);
- mformat = st_ChooseTextureFormat_renderable(ctx, baseFormat,
+ mformat = st_ChooseTextureFormat_renderable(ctx, intFormat,
format, type, GL_FALSE);
assert(mformat);
@@ -548,7 +591,6 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z,
assert(width <= maxSize);
assert(height <= maxSize);
- cso_save_depth_stencil_alpha(cso);
cso_save_rasterizer(cso);
cso_save_viewport(cso);
cso_save_samplers(cso);
@@ -556,6 +598,10 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z,
cso_save_fragment_shader(cso);
cso_save_vertex_shader(cso);
cso_save_vertex_elements(cso);
+ if (write_stencil) {
+ cso_save_depth_stencil_alpha(cso);
+ cso_save_blend(cso);
+ }
/* rasterizer state: just scissor */
{
@@ -566,22 +612,30 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z,
cso_set_rasterizer(cso, &rasterizer);
}
- if (write_depth || write_stencil)
- {
+ if (write_stencil) {
+ /* Stencil writing bypasses the normal fragment pipeline to
+ * disable color writing and set stencil test to always pass.
+ */
struct pipe_depth_stencil_alpha_state dsa;
+ struct pipe_blend_state blend;
+
+ /* depth/stencil */
memset(&dsa, 0, sizeof(dsa));
+ dsa.stencil[0].enabled = 1;
+ dsa.stencil[0].func = PIPE_FUNC_ALWAYS;
+ dsa.stencil[0].writemask = ctx->Stencil.WriteMask[0] & 0xff;
+ dsa.stencil[0].zpass_op = PIPE_STENCIL_OP_REPLACE;
if (write_depth) {
- dsa.depth.enabled = 1;
- dsa.depth.func = PIPE_FUNC_ALWAYS;
- dsa.depth.writemask = 1;
- }
- if (write_stencil) {
- dsa.stencil[0].enabled = 1;
- dsa.stencil[0].func = PIPE_FUNC_ALWAYS;
- dsa.stencil[0].writemask = 0xff;
- dsa.stencil[0].zpass_op = PIPE_STENCIL_OP_REPLACE;
+ /* writing depth+stencil: depth test always passes */
+ dsa.depth.enabled = 1;
+ dsa.depth.writemask = ctx->Depth.Mask;
+ dsa.depth.func = PIPE_FUNC_ALWAYS;
}
cso_set_depth_stencil_alpha(cso, &dsa);
+
+ /* blend (colormask) */
+ memset(&blend, 0, sizeof(blend));
+ cso_set_blend(cso, &blend);
}
/* fragment shader state: TEX lookup program */
@@ -653,7 +707,6 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z,
normalized ? ((GLfloat) height / sv[0]->texture->height0) : (GLfloat)height);
/* restore state */
- cso_restore_depth_stencil_alpha(cso);
cso_restore_rasterizer(cso);
cso_restore_viewport(cso);
cso_restore_samplers(cso);
@@ -661,6 +714,10 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z,
cso_restore_fragment_shader(cso);
cso_restore_vertex_shader(cso);
cso_restore_vertex_elements(cso);
+ if (write_stencil) {
+ cso_restore_depth_stencil_alpha(cso);
+ cso_restore_blend(cso);
+ }
}
@@ -951,6 +1008,18 @@ copy_stencil_pixels(struct gl_context *ctx, GLint srcx, GLint srcy,
GL_STENCIL_INDEX, GL_UNSIGNED_BYTE,
&ctx->DefaultPacking, buffer);
+ if (0) {
+ /* debug code: dump stencil values */
+ GLint row, col;
+ for (row = 0; row < height; row++) {
+ printf("%3d: ", row);
+ for (col = 0; col < width; col++) {
+ printf("%02x ", buffer[col + row * width]);
+ }
+ printf("\n");
+ }
+ }
+
if (util_format_get_component_bits(rbDraw->format,
UTIL_FORMAT_COLORSPACE_ZS, 0) != 0)
usage = PIPE_TRANSFER_READ_WRITE;
diff --git a/src/mesa/state_tracker/st_cb_eglimage.c b/src/mesa/state_tracker/st_cb_eglimage.c
index 298f8a5b12..c4b84de790 100644
--- a/src/mesa/state_tracker/st_cb_eglimage.c
+++ b/src/mesa/state_tracker/st_cb_eglimage.c
@@ -106,6 +106,7 @@ st_bind_surface(struct gl_context *ctx, GLenum target,
struct st_texture_object *stObj;
struct st_texture_image *stImage;
GLenum internalFormat;
+ gl_format texFormat;
/* map pipe format to base format */
if (util_format_get_component_bits(ps->format, UTIL_FORMAT_COLORSPACE_RGB, 3) > 0)
@@ -122,13 +123,15 @@ st_bind_surface(struct gl_context *ctx, GLenum target,
stObj->surface_based = GL_TRUE;
}
+ texFormat = st_pipe_format_to_mesa_format(ps->format);
+
_mesa_init_teximage_fields(ctx, target, texImage,
- ps->width, ps->height, 1, 0, internalFormat);
- texImage->TexFormat = st_pipe_format_to_mesa_format(ps->format);
- _mesa_set_fetch_functions(texImage, 2);
+ ps->width, ps->height, 1, 0, internalFormat,
+ texFormat);
/* FIXME create a non-default sampler view from the pipe_surface? */
pipe_resource_reference(&stObj->pt, ps->texture);
+ pipe_sampler_view_reference(&stObj->sampler_view, NULL);
pipe_resource_reference(&stImage->pt, stObj->pt);
stObj->width0 = ps->width;
diff --git a/src/mesa/state_tracker/st_cb_queryobj.c b/src/mesa/state_tracker/st_cb_queryobj.c
index 724464a33f..aa31b3710b 100644
--- a/src/mesa/state_tracker/st_cb_queryobj.c
+++ b/src/mesa/state_tracker/st_cb_queryobj.c
@@ -35,7 +35,6 @@
#include "main/imports.h"
#include "main/context.h"
-#include "main/image.h"
#include "pipe/p_context.h"
#include "pipe/p_defines.h"
diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c
index 0aad733e34..bcd46ac9d5 100644
--- a/src/mesa/state_tracker/st_cb_readpixels.c
+++ b/src/mesa/state_tracker/st_cb_readpixels.c
@@ -37,6 +37,7 @@
#include "main/bufferobj.h"
#include "main/context.h"
#include "main/image.h"
+#include "main/pack.h"
#include "pipe/p_context.h"
#include "pipe/p_defines.h"
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index 062dd34865..15e69e1fa0 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -34,6 +34,8 @@
#include "main/imports.h"
#include "main/macros.h"
#include "main/mipmap.h"
+#include "main/pack.h"
+#include "main/pixeltransfer.h"
#include "main/texcompress.h"
#include "main/texfetch.h"
#include "main/texgetimage.h"
@@ -547,14 +549,18 @@ st_TexImage(struct gl_context * ctx,
/* switch to "normal" */
if (stObj->surface_based) {
+ gl_format texFormat;
+
_mesa_clear_texture_object(ctx, texObj);
pipe_resource_reference(&stObj->pt, NULL);
/* oops, need to init this image again */
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, format, type);
+
_mesa_init_teximage_fields(ctx, target, texImage,
- width, height, depth, border, internalFormat);
- _mesa_choose_texture_format(ctx, texObj, texImage, target, level,
- internalFormat, format, type);
+ width, height, depth, border,
+ internalFormat, texFormat);
stObj->surface_based = GL_FALSE;
}
@@ -1948,7 +1954,7 @@ st_get_default_texture(struct st_context *st)
_mesa_init_teximage_fields(st->ctx, target, texImg,
16, 16, 1, 0, /* w, h, d, border */
- GL_RGBA);
+ GL_RGBA, MESA_FORMAT_RGBA8888);
st_TexImage(st->ctx, 2, target,
0, GL_RGBA, /* level, intformat */
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 75fd69540f..d0dcdd4e29 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -236,6 +236,13 @@ void st_destroy_context( struct st_context *st )
}
pipe_surface_reference(&st->state.framebuffer.zsbuf, NULL);
+ pipe->set_index_buffer(pipe, NULL);
+
+ for (i = 0; i < PIPE_SHADER_TYPES; i++) {
+ pipe->set_constant_buffer(pipe, PIPE_SHADER_VERTEX, 0, NULL);
+ pipe_resource_reference(&st->state.constants[PIPE_SHADER_VERTEX], NULL);
+ }
+
_mesa_delete_program_cache(st->ctx, st->pixel_xfer.cache);
_vbo_DestroyContext(st->ctx);
diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
index 5387499eb9..61a0e1b087 100644
--- a/src/mesa/state_tracker/st_draw.c
+++ b/src/mesa/state_tracker/st_draw.c
@@ -547,11 +547,21 @@ setup_index_buffer(struct gl_context *ctx,
static void
check_uniforms(struct gl_context *ctx)
{
- const struct gl_shader_program *shProg = ctx->Shader.CurrentProgram;
- if (shProg && shProg->LinkStatus) {
- GLuint i;
- for (i = 0; i < shProg->Uniforms->NumUniforms; i++) {
- const struct gl_uniform *u = &shProg->Uniforms->Uniforms[i];
+ struct gl_shader_program *shProg[3] = {
+ ctx->Shader.CurrentVertexProgram,
+ ctx->Shader.CurrentGeometryProgram,
+ ctx->Shader.CurrentFragmentProgram,
+ };
+ unsigned j;
+
+ for (j = 0; j < 3; j++) {
+ unsigned i;
+
+ if (shProg[j] == NULL || !shProg[j]->LinkStatus)
+ continue;
+
+ for (i = 0; i < shProg[j]->Uniforms->NumUniforms; i++) {
+ const struct gl_uniform *u = &shProg[j]->Uniforms->Uniforms[i];
if (!u->Initialized) {
_mesa_warning(ctx,
"Using shader with uninitialized uniform: %s",
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index 2720f44645..62f84ed6b4 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -175,6 +175,15 @@ void st_init_limits(struct st_context *st)
options->EmitNoCont = !screen->get_shader_param(screen, i, PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED);
+ options->EmitNoIndirectInput = !screen->get_shader_param(screen, i,
+ PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR);
+ options->EmitNoIndirectOutput = !screen->get_shader_param(screen, i,
+ PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR);
+ options->EmitNoIndirectTemp = !screen->get_shader_param(screen, i,
+ PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR);
+ options->EmitNoIndirectUniform = !screen->get_shader_param(screen, i,
+ PIPE_SHADER_CAP_INDIRECT_CONST_ADDR);
+
if(options->EmitNoLoops)
options->MaxUnrollIterations = MIN2(screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_INSTRUCTIONS), 65536);
}
@@ -289,6 +298,8 @@ void st_init_extensions(struct st_context *st)
ctx->Extensions.ARB_vertex_shader = GL_TRUE;
ctx->Extensions.ARB_shader_objects = GL_TRUE;
ctx->Extensions.ARB_shading_language_100 = GL_TRUE;
+ ctx->Extensions.ARB_explicit_attrib_location = GL_TRUE;
+ ctx->Extensions.EXT_separate_shader_objects = GL_TRUE;
}
if (screen->get_param(screen, PIPE_CAP_TEXTURE_MIRROR_REPEAT) > 0) {
diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
index 7ad48ecea0..955d821a65 100644
--- a/src/mesa/state_tracker/st_format.c
+++ b/src/mesa/state_tracker/st_format.c
@@ -210,6 +210,25 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat)
return PIPE_FORMAT_R8G8_UNORM;
case MESA_FORMAT_RG1616:
return PIPE_FORMAT_R16G16_UNORM;
+ case MESA_FORMAT_RGBA_16:
+ return PIPE_FORMAT_R16G16B16A16_UNORM;
+
+ /* signed int formats */
+ case MESA_FORMAT_RGBA_INT8:
+ return PIPE_FORMAT_R8G8B8A8_SSCALED;
+ case MESA_FORMAT_RGBA_INT16:
+ return PIPE_FORMAT_R16G16B16A16_SSCALED;
+ case MESA_FORMAT_RGBA_INT32:
+ return PIPE_FORMAT_R32G32B32A32_SSCALED;
+
+ /* unsigned int formats */
+ case MESA_FORMAT_RGBA_UINT8:
+ return PIPE_FORMAT_R8G8B8A8_USCALED;
+ case MESA_FORMAT_RGBA_UINT16:
+ return PIPE_FORMAT_R16G16B16A16_USCALED;
+ case MESA_FORMAT_RGBA_UINT32:
+ return PIPE_FORMAT_R32G32B32A32_USCALED;
+
default:
assert(0);
return PIPE_FORMAT_NONE;
@@ -253,6 +272,8 @@ st_pipe_format_to_mesa_format(enum pipe_format format)
case PIPE_FORMAT_S8_USCALED:
return MESA_FORMAT_S8;
+ case PIPE_FORMAT_R16G16B16A16_UNORM:
+ return MESA_FORMAT_RGBA_16;
case PIPE_FORMAT_R16G16B16A16_SNORM:
return MESA_FORMAT_SIGNED_RGBA_16;
@@ -316,6 +337,23 @@ st_pipe_format_to_mesa_format(enum pipe_format format)
return MESA_FORMAT_RG88;
case PIPE_FORMAT_R16G16_UNORM:
return MESA_FORMAT_RG1616;
+
+ /* signed int formats */
+ case PIPE_FORMAT_R8G8B8A8_SSCALED:
+ return MESA_FORMAT_RGBA_INT8;
+ case PIPE_FORMAT_R16G16B16A16_SSCALED:
+ return MESA_FORMAT_RGBA_INT16;
+ case PIPE_FORMAT_R32G32B32A32_SSCALED:
+ return MESA_FORMAT_RGBA_INT32;
+
+ /* unsigned int formats */
+ case PIPE_FORMAT_R8G8B8A8_USCALED:
+ return MESA_FORMAT_RGBA_UINT8;
+ case PIPE_FORMAT_R16G16B16A16_USCALED:
+ return MESA_FORMAT_RGBA_UINT16;
+ case PIPE_FORMAT_R32G32B32A32_USCALED:
+ return MESA_FORMAT_RGBA_UINT32;
+
default:
assert(0);
return MESA_FORMAT_NONE;
@@ -435,14 +473,19 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_RGBA:
case GL_RGBA8:
case GL_RGB10_A2:
- case GL_RGBA12:
return default_rgba_format( screen, target, sample_count, bindings,
geom_flags );
+
case 3:
case GL_RGB:
return default_rgb_format( screen, target, sample_count, bindings,
geom_flags );
+ case GL_RGBA12:
case GL_RGBA16:
+ if (screen->is_format_supported( screen, PIPE_FORMAT_R16G16B16A16_UNORM,
+ target, sample_count, bindings,
+ geom_flags ))
+ return PIPE_FORMAT_R16G16B16A16_UNORM;
return default_rgba_format( screen, target, sample_count, bindings,
geom_flags );
@@ -756,6 +799,92 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
return PIPE_FORMAT_RGTC2_SNORM;
return PIPE_FORMAT_NONE;
+ /* signed/unsigned integer formats.
+ * XXX Mesa only has formats for RGBA signed/unsigned integer formats.
+ * If/when new formats are added this code should be updated.
+ */
+ case GL_RED_INTEGER_EXT:
+ case GL_GREEN_INTEGER_EXT:
+ case GL_BLUE_INTEGER_EXT:
+ case GL_ALPHA_INTEGER_EXT:
+ case GL_RGB_INTEGER_EXT:
+ case GL_RGBA_INTEGER_EXT:
+ case GL_BGR_INTEGER_EXT:
+ case GL_BGRA_INTEGER_EXT:
+ case GL_LUMINANCE_INTEGER_EXT:
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ /* fall-through */
+ case GL_RGBA8I_EXT:
+ case GL_RGB8I_EXT:
+ case GL_ALPHA8I_EXT:
+ case GL_INTENSITY8I_EXT:
+ case GL_LUMINANCE8I_EXT:
+ case GL_LUMINANCE_ALPHA8I_EXT:
+ if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SSCALED,
+ target,
+ sample_count, bindings, geom_flags))
+ return PIPE_FORMAT_R8G8B8A8_SSCALED;
+ return PIPE_FORMAT_NONE;
+ case GL_RGBA16I_EXT:
+ case GL_RGB16I_EXT:
+ case GL_ALPHA16I_EXT:
+ case GL_INTENSITY16I_EXT:
+ case GL_LUMINANCE16I_EXT:
+ case GL_LUMINANCE_ALPHA16I_EXT:
+ if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_SSCALED,
+ target,
+ sample_count, bindings, geom_flags))
+ return PIPE_FORMAT_R16G16B16A16_SSCALED;
+ return PIPE_FORMAT_NONE;
+ case GL_RGBA32I_EXT:
+ case GL_RGB32I_EXT:
+ case GL_ALPHA32I_EXT:
+ case GL_INTENSITY32I_EXT:
+ case GL_LUMINANCE32I_EXT:
+ case GL_LUMINANCE_ALPHA32I_EXT:
+ /* xxx */
+ if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_SSCALED,
+ target,
+ sample_count, bindings, geom_flags))
+ return PIPE_FORMAT_R32G32B32A32_SSCALED;
+ return PIPE_FORMAT_NONE;
+
+ case GL_RGBA8UI_EXT:
+ case GL_RGB8UI_EXT:
+ case GL_ALPHA8UI_EXT:
+ case GL_INTENSITY8UI_EXT:
+ case GL_LUMINANCE8UI_EXT:
+ case GL_LUMINANCE_ALPHA8UI_EXT:
+ if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_USCALED,
+ target,
+ sample_count, bindings, geom_flags))
+ return PIPE_FORMAT_R8G8B8A8_USCALED;
+ return PIPE_FORMAT_NONE;
+
+ case GL_RGBA16UI_EXT:
+ case GL_RGB16UI_EXT:
+ case GL_ALPHA16UI_EXT:
+ case GL_INTENSITY16UI_EXT:
+ case GL_LUMINANCE16UI_EXT:
+ case GL_LUMINANCE_ALPHA16UI_EXT:
+ if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_USCALED,
+ target,
+ sample_count, bindings, geom_flags))
+ return PIPE_FORMAT_R16G16B16A16_USCALED;
+ return PIPE_FORMAT_NONE;
+
+ case GL_RGBA32UI_EXT:
+ case GL_RGB32UI_EXT:
+ case GL_ALPHA32UI_EXT:
+ case GL_INTENSITY32UI_EXT:
+ case GL_LUMINANCE32UI_EXT:
+ case GL_LUMINANCE_ALPHA32UI_EXT:
+ if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_USCALED,
+ target,
+ sample_count, bindings, geom_flags))
+ return PIPE_FORMAT_R32G32B32A32_USCALED;
+ return PIPE_FORMAT_NONE;
+
default:
return PIPE_FORMAT_NONE;
}
diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c
index fe31418ddd..1fc4f40488 100644
--- a/src/mesa/state_tracker/st_gen_mipmap.c
+++ b/src/mesa/state_tracker/st_gen_mipmap.c
@@ -29,7 +29,6 @@
#include "main/imports.h"
#include "main/mipmap.h"
#include "main/teximage.h"
-#include "main/texformat.h"
#include "pipe/p_context.h"
#include "pipe/p_defines.h"
@@ -400,9 +399,8 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target,
/* initialize new image */
_mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight,
- dstDepth, border, srcImage->InternalFormat);
-
- dstImage->TexFormat = srcImage->TexFormat;
+ dstDepth, border, srcImage->InternalFormat,
+ srcImage->TexFormat);
stImage = st_texture_image(dstImage);
stImage->level = dstLevel;
diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
index 183477a3f3..05733e818e 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -40,7 +40,6 @@
#include "main/texobj.h"
#include "main/teximage.h"
#include "main/texstate.h"
-#include "main/texfetch.h"
#include "main/framebuffer.h"
#include "main/fbobject.h"
#include "main/renderbuffer.h"
@@ -556,6 +555,8 @@ 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) {
+ gl_format texFormat;
+
/*
* XXX When internal_format and tex->format differ, st_finalize_texture
* needs to allocate a new texture with internal_format and copy the
@@ -573,11 +574,13 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target
internalFormat = GL_RGBA;
else
internalFormat = GL_RGB;
+
+ texFormat = st_ChooseTextureFormat(ctx, internalFormat,
+ GL_RGBA, GL_UNSIGNED_BYTE);
+
_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);
+ tex->width0, tex->height0, 1, 0,
+ internalFormat, texFormat);
width = tex->width0;
height = tex->height0;
@@ -611,6 +614,26 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target
}
static void
+st_context_copy(struct st_context_iface *stctxi,
+ struct st_context_iface *stsrci, unsigned mask)
+{
+ struct st_context *st = (struct st_context *) stctxi;
+ struct st_context *src = (struct st_context *) stsrci;
+
+ _mesa_copy_context(src->ctx, st->ctx, mask);
+}
+
+static boolean
+st_context_share(struct st_context_iface *stctxi,
+ struct st_context_iface *stsrci)
+{
+ struct st_context *st = (struct st_context *) stctxi;
+ struct st_context *src = (struct st_context *) stsrci;
+
+ return _mesa_share_state(st->ctx, src->ctx);
+}
+
+static void
st_context_destroy(struct st_context_iface *stctxi)
{
struct st_context *st = (struct st_context *) stctxi;
@@ -677,7 +700,8 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi,
st_context_notify_invalid_framebuffer;
st->iface.flush = st_context_flush;
st->iface.teximage = st_context_teximage;
- st->iface.copy = NULL;
+ st->iface.copy = st_context_copy;
+ st->iface.share = st_context_share;
st->iface.st_context_private = (void *) smapi;
return &st->iface;
@@ -865,6 +889,7 @@ st_manager_add_color_renderbuffer(struct st_context *st, struct gl_framebuffer *
}
static const struct st_api st_gl_api = {
+ "Mesa " MESA_VERSION_STRING,
ST_API_OPENGL,
#if FEATURE_GL
ST_PROFILE_DEFAULT_MASK |
diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
index 95e6bd7dac..76799287fe 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -718,12 +718,42 @@ st_translate_geometry_program(struct st_context *st,
void
st_print_shaders(struct gl_context *ctx)
{
- struct gl_shader_program *shProg = ctx->Shader.CurrentProgram;
- if (shProg) {
- GLuint i;
- for (i = 0; i < shProg->NumShaders; i++) {
- printf("GLSL shader %u of %u:\n", i, shProg->NumShaders);
- printf("%s\n", shProg->Shaders[i]->Source);
+ struct gl_shader_program *shProg[3] = {
+ ctx->Shader.CurrentVertexProgram,
+ ctx->Shader.CurrentGeometryProgram,
+ ctx->Shader.CurrentFragmentProgram,
+ };
+ unsigned j;
+
+ for (j = 0; j < 3; j++) {
+ unsigned i;
+
+ if (shProg[j] == NULL)
+ continue;
+
+ for (i = 0; i < shProg[j]->NumShaders; i++) {
+ struct gl_shader *sh;
+
+ switch (shProg[j]->Shaders[i]->Type) {
+ case GL_VERTEX_SHADER:
+ sh = (i != 0) ? NULL : shProg[j]->Shaders[i];
+ break;
+ case GL_GEOMETRY_SHADER_ARB:
+ sh = (i != 1) ? NULL : shProg[j]->Shaders[i];
+ break;
+ case GL_FRAGMENT_SHADER:
+ sh = (i != 2) ? NULL : shProg[j]->Shaders[i];
+ break;
+ default:
+ assert(0);
+ sh = NULL;
+ break;
+ }
+
+ if (sh != NULL) {
+ printf("GLSL shader %u of %u:\n", i, shProg[j]->NumShaders);
+ printf("%s\n", sh->Source);
+ }
}
}
}
diff --git a/src/mesa/swrast/s_copypix.c b/src/mesa/swrast/s_copypix.c
index 86fe3e0a89..46d6379282 100644
--- a/src/mesa/swrast/s_copypix.c
+++ b/src/mesa/swrast/s_copypix.c
@@ -27,8 +27,8 @@
#include "main/context.h"
#include "main/colormac.h"
#include "main/condrender.h"
-#include "main/image.h"
#include "main/macros.h"
+#include "main/pixeltransfer.h"
#include "main/imports.h"
#include "s_context.h"
diff --git a/src/mesa/swrast/s_drawpix.c b/src/mesa/swrast/s_drawpix.c
index 8fbb0a8d10..4e9b5307cc 100644
--- a/src/mesa/swrast/s_drawpix.c
+++ b/src/mesa/swrast/s_drawpix.c
@@ -28,8 +28,10 @@
#include "main/condrender.h"
#include "main/context.h"
#include "main/image.h"
-#include "main/macros.h"
#include "main/imports.h"
+#include "main/macros.h"
+#include "main/pack.h"
+#include "main/pixeltransfer.h"
#include "main/state.h"
#include "s_context.h"
diff --git a/src/mesa/swrast/s_fragprog.c b/src/mesa/swrast/s_fragprog.c
index e421d218d7..e391043f4d 100644
--- a/src/mesa/swrast/s_fragprog.c
+++ b/src/mesa/swrast/s_fragprog.c
@@ -169,7 +169,7 @@ init_machine(struct gl_context *ctx, struct gl_program_machine *machine,
machine->Samplers = program->Base.SamplerUnits;
/* if running a GLSL program (not ARB_fragment_program) */
- if (ctx->Shader.CurrentProgram) {
+ if (ctx->Shader.CurrentFragmentProgram) {
/* Store front/back facing value */
machine->Attribs[FRAG_ATTRIB_FACE][col][0] = 1.0F - span->facing;
}
diff --git a/src/mesa/swrast/s_readpix.c b/src/mesa/swrast/s_readpix.c
index 55fa60749e..5e6356c0d5 100644
--- a/src/mesa/swrast/s_readpix.c
+++ b/src/mesa/swrast/s_readpix.c
@@ -29,8 +29,9 @@
#include "main/feedback.h"
#include "main/formats.h"
#include "main/image.h"
-#include "main/macros.h"
#include "main/imports.h"
+#include "main/macros.h"
+#include "main/pack.h"
#include "main/state.h"
#include "s_context.h"
@@ -513,7 +514,7 @@ _swrast_ReadPixels( struct gl_context *ctx,
type, pixels, &clippedPacking);
break;
default:
- _mesa_problem(ctx, "unexpected format in _swrast_ReadPixels");
+ _mesa_problem(ctx, "unexpected format 0x%x in _swrast_ReadPixels", format);
/* don't return yet, clean-up */
}
diff --git a/src/mesa/swrast/s_texcombine.c b/src/mesa/swrast/s_texcombine.c
index 1775810eff..1836d074ae 100644
--- a/src/mesa/swrast/s_texcombine.c
+++ b/src/mesa/swrast/s_texcombine.c
@@ -27,8 +27,8 @@
#include "main/glheader.h"
#include "main/context.h"
#include "main/colormac.h"
-#include "main/image.h"
#include "main/imports.h"
+#include "main/pixeltransfer.h"
#include "program/prog_instruction.h"
#include "s_context.h"
diff --git a/src/mesa/vbo/vbo_attrib_tmp.h b/src/mesa/vbo/vbo_attrib_tmp.h
index 7a889b8e2f..3c235accf3 100644
--- a/src/mesa/vbo/vbo_attrib_tmp.h
+++ b/src/mesa/vbo/vbo_attrib_tmp.h
@@ -25,6 +25,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
**************************************************************************/
+/* float */
#define ATTR1FV( A, V ) ATTR( A, 1, (V)[0], 0, 0, 1 )
#define ATTR2FV( A, V ) ATTR( A, 2, (V)[0], (V)[1], 0, 1 )
#define ATTR3FV( A, V ) ATTR( A, 3, (V)[0], (V)[1], (V)[2], 1 )
@@ -35,235 +36,307 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
#define ATTR3F( A, X, Y, Z ) ATTR( A, 3, X, Y, Z, 1 )
#define ATTR4F( A, X, Y, Z, W ) ATTR( A, 4, X, Y, Z, W )
+/* int */
+#define ATTR2IV( A, V ) ATTR( A, 2, (V)[0], (V)[1], 0, 1 )
+#define ATTR3IV( A, V ) ATTR( A, 3, (V)[0], (V)[1], (V)[2], 1 )
+#define ATTR4IV( A, V ) ATTR( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] )
+
+#define ATTR1I( A, X ) ATTR( A, 1, X, 0, 0, 1 )
+#define ATTR2I( A, X, Y ) ATTR( A, 2, X, Y, 0, 1 )
+#define ATTR3I( A, X, Y, Z ) ATTR( A, 3, X, Y, Z, 1 )
+#define ATTR4I( A, X, Y, Z, W ) ATTR( A, 4, X, Y, Z, W )
+
+
+/* uint */
+#define ATTR2UIV( A, V ) ATTR( A, 2, (V)[0], (V)[1], 0, 1 )
+#define ATTR3UIV( A, V ) ATTR( A, 3, (V)[0], (V)[1], (V)[2], 1 )
+#define ATTR4UIV( A, V ) ATTR( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] )
+
+#define ATTR1UI( A, X ) ATTR( A, 1, X, 0, 0, 1 )
+#define ATTR2UI( A, X, Y ) ATTR( A, 2, X, Y, 0, 1 )
+#define ATTR3UI( A, X, Y, Z ) ATTR( A, 3, X, Y, Z, 1 )
+#define ATTR4UI( A, X, Y, Z, W ) ATTR( A, 4, X, Y, Z, W )
+
#define MAT_ATTR( A, N, V ) ATTR( A, N, (V)[0], (V)[1], (V)[2], (V)[3] )
-static void GLAPIENTRY TAG(Vertex2f)( GLfloat x, GLfloat y )
+
+
+static void GLAPIENTRY
+TAG(Vertex2f)(GLfloat x, GLfloat y)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR2F( VBO_ATTRIB_POS, x, y );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR2F(VBO_ATTRIB_POS, x, y);
}
-static void GLAPIENTRY TAG(Vertex2fv)( const GLfloat *v )
+static void GLAPIENTRY
+TAG(Vertex2fv)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR2FV( VBO_ATTRIB_POS, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR2FV(VBO_ATTRIB_POS, v);
}
-static void GLAPIENTRY TAG(Vertex3f)( GLfloat x, GLfloat y, GLfloat z )
+static void GLAPIENTRY
+TAG(Vertex3f)(GLfloat x, GLfloat y, GLfloat z)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR3F( VBO_ATTRIB_POS, x, y, z );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3F(VBO_ATTRIB_POS, x, y, z);
}
-static void GLAPIENTRY TAG(Vertex3fv)( const GLfloat *v )
+static void GLAPIENTRY
+TAG(Vertex3fv)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR3FV( VBO_ATTRIB_POS, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3FV(VBO_ATTRIB_POS, v);
}
-static void GLAPIENTRY TAG(Vertex4f)( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+static void GLAPIENTRY
+TAG(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR4F( VBO_ATTRIB_POS, x, y, z, w );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4F(VBO_ATTRIB_POS, x, y, z, w);
}
-static void GLAPIENTRY TAG(Vertex4fv)( const GLfloat *v )
+static void GLAPIENTRY
+TAG(Vertex4fv)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR4FV( VBO_ATTRIB_POS, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4FV(VBO_ATTRIB_POS, v);
}
-static void GLAPIENTRY TAG(TexCoord1f)( GLfloat x )
+
+
+static void GLAPIENTRY
+TAG(TexCoord1f)(GLfloat x)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR1F( VBO_ATTRIB_TEX0, x );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR1F(VBO_ATTRIB_TEX0, x);
}
-static void GLAPIENTRY TAG(TexCoord1fv)( const GLfloat *v )
+static void GLAPIENTRY
+TAG(TexCoord1fv)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR1FV( VBO_ATTRIB_TEX0, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR1FV(VBO_ATTRIB_TEX0, v);
}
-static void GLAPIENTRY TAG(TexCoord2f)( GLfloat x, GLfloat y )
+static void GLAPIENTRY
+TAG(TexCoord2f)(GLfloat x, GLfloat y)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR2F( VBO_ATTRIB_TEX0, x, y );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR2F(VBO_ATTRIB_TEX0, x, y);
}
-static void GLAPIENTRY TAG(TexCoord2fv)( const GLfloat *v )
+static void GLAPIENTRY
+TAG(TexCoord2fv)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR2FV( VBO_ATTRIB_TEX0, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR2FV(VBO_ATTRIB_TEX0, v);
}
-static void GLAPIENTRY TAG(TexCoord3f)( GLfloat x, GLfloat y, GLfloat z )
+static void GLAPIENTRY
+TAG(TexCoord3f)(GLfloat x, GLfloat y, GLfloat z)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR3F( VBO_ATTRIB_TEX0, x, y, z );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3F(VBO_ATTRIB_TEX0, x, y, z);
}
-static void GLAPIENTRY TAG(TexCoord3fv)( const GLfloat *v )
+static void GLAPIENTRY
+TAG(TexCoord3fv)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR3FV( VBO_ATTRIB_TEX0, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3FV(VBO_ATTRIB_TEX0, v);
}
-static void GLAPIENTRY TAG(TexCoord4f)( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+static void GLAPIENTRY
+TAG(TexCoord4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR4F( VBO_ATTRIB_TEX0, x, y, z, w );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4F(VBO_ATTRIB_TEX0, x, y, z, w);
}
-static void GLAPIENTRY TAG(TexCoord4fv)( const GLfloat *v )
+static void GLAPIENTRY
+TAG(TexCoord4fv)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR4FV( VBO_ATTRIB_TEX0, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4FV(VBO_ATTRIB_TEX0, v);
}
-static void GLAPIENTRY TAG(Normal3f)( GLfloat x, GLfloat y, GLfloat z )
+
+
+static void GLAPIENTRY
+TAG(Normal3f)(GLfloat x, GLfloat y, GLfloat z)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR3F( VBO_ATTRIB_NORMAL, x, y, z );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3F(VBO_ATTRIB_NORMAL, x, y, z);
}
-static void GLAPIENTRY TAG(Normal3fv)( const GLfloat *v )
+static void GLAPIENTRY
+TAG(Normal3fv)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR3FV( VBO_ATTRIB_NORMAL, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3FV(VBO_ATTRIB_NORMAL, v);
}
-static void GLAPIENTRY TAG(FogCoordfEXT)( GLfloat x )
+
+
+static void GLAPIENTRY
+TAG(FogCoordfEXT)(GLfloat x)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR1F( VBO_ATTRIB_FOG, x );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR1F(VBO_ATTRIB_FOG, x);
}
-static void GLAPIENTRY TAG(FogCoordfvEXT)( const GLfloat *v )
+
+
+static void GLAPIENTRY
+TAG(FogCoordfvEXT)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR1FV( VBO_ATTRIB_FOG, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR1FV(VBO_ATTRIB_FOG, v);
}
-static void GLAPIENTRY TAG(Color3f)( GLfloat x, GLfloat y, GLfloat z )
+static void GLAPIENTRY
+TAG(Color3f)(GLfloat x, GLfloat y, GLfloat z)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR3F( VBO_ATTRIB_COLOR0, x, y, z );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3F(VBO_ATTRIB_COLOR0, x, y, z);
}
-static void GLAPIENTRY TAG(Color3fv)( const GLfloat *v )
+static void GLAPIENTRY
+TAG(Color3fv)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR3FV( VBO_ATTRIB_COLOR0, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3FV(VBO_ATTRIB_COLOR0, v);
}
-static void GLAPIENTRY TAG(Color4f)( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+static void GLAPIENTRY
+TAG(Color4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR4F( VBO_ATTRIB_COLOR0, x, y, z, w );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4F(VBO_ATTRIB_COLOR0, x, y, z, w);
}
-static void GLAPIENTRY TAG(Color4fv)( const GLfloat *v )
+static void GLAPIENTRY
+TAG(Color4fv)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR4FV( VBO_ATTRIB_COLOR0, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR4FV(VBO_ATTRIB_COLOR0, v);
}
-static void GLAPIENTRY TAG(SecondaryColor3fEXT)( GLfloat x, GLfloat y, GLfloat z )
+
+
+static void GLAPIENTRY
+TAG(SecondaryColor3fEXT)(GLfloat x, GLfloat y, GLfloat z)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR3F( VBO_ATTRIB_COLOR1, x, y, z );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3F(VBO_ATTRIB_COLOR1, x, y, z);
}
-static void GLAPIENTRY TAG(SecondaryColor3fvEXT)( const GLfloat *v )
+static void GLAPIENTRY
+TAG(SecondaryColor3fvEXT)(const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR3FV( VBO_ATTRIB_COLOR1, v );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR3FV(VBO_ATTRIB_COLOR1, v);
}
-static void GLAPIENTRY TAG(EdgeFlag)( GLboolean b )
+
+static void GLAPIENTRY
+TAG(EdgeFlag)(GLboolean b)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR1F( VBO_ATTRIB_EDGEFLAG, (GLfloat)b );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR1F(VBO_ATTRIB_EDGEFLAG, (GLfloat) b);
}
-static void GLAPIENTRY TAG(Indexf)( GLfloat f )
+
+
+static void GLAPIENTRY
+TAG(Indexf)(GLfloat f)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR1F( VBO_ATTRIB_INDEX, f );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR1F(VBO_ATTRIB_INDEX, f);
}
-static void GLAPIENTRY TAG(Indexfv)( const GLfloat *f )
+static void GLAPIENTRY
+TAG(Indexfv)(const GLfloat * f)
{
- GET_CURRENT_CONTEXT( ctx );
- ATTR1FV( VBO_ATTRIB_INDEX, f );
+ GET_CURRENT_CONTEXT(ctx);
+ ATTR1FV(VBO_ATTRIB_INDEX, f);
}
-static void GLAPIENTRY TAG(MultiTexCoord1f)( GLenum target, GLfloat x )
+
+static void GLAPIENTRY
+TAG(MultiTexCoord1f)(GLenum target, GLfloat x)
{
- GET_CURRENT_CONTEXT( ctx );
+ GET_CURRENT_CONTEXT(ctx);
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
- ATTR1F( attr, x );
+ ATTR1F(attr, x);
}
-static void GLAPIENTRY TAG(MultiTexCoord1fv)( GLenum target, const GLfloat *v )
+static void GLAPIENTRY
+TAG(MultiTexCoord1fv)(GLenum target, const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
+ GET_CURRENT_CONTEXT(ctx);
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
- ATTR1FV( attr, v );
+ ATTR1FV(attr, v);
}
-static void GLAPIENTRY TAG(MultiTexCoord2f)( GLenum target, GLfloat x, GLfloat y )
+static void GLAPIENTRY
+TAG(MultiTexCoord2f)(GLenum target, GLfloat x, GLfloat y)
{
- GET_CURRENT_CONTEXT( ctx );
+ GET_CURRENT_CONTEXT(ctx);
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
- ATTR2F( attr, x, y );
+ ATTR2F(attr, x, y);
}
-static void GLAPIENTRY TAG(MultiTexCoord2fv)( GLenum target, const GLfloat *v )
+static void GLAPIENTRY
+TAG(MultiTexCoord2fv)(GLenum target, const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
+ GET_CURRENT_CONTEXT(ctx);
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
- ATTR2FV( attr, v );
+ ATTR2FV(attr, v);
}
-static void GLAPIENTRY TAG(MultiTexCoord3f)( GLenum target, GLfloat x, GLfloat y,
- GLfloat z)
+static void GLAPIENTRY
+TAG(MultiTexCoord3f)(GLenum target, GLfloat x, GLfloat y, GLfloat z)
{
- GET_CURRENT_CONTEXT( ctx );
+ GET_CURRENT_CONTEXT(ctx);
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
- ATTR3F( attr, x, y, z );
+ ATTR3F(attr, x, y, z);
}
-static void GLAPIENTRY TAG(MultiTexCoord3fv)( GLenum target, const GLfloat *v )
+static void GLAPIENTRY
+TAG(MultiTexCoord3fv)(GLenum target, const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
+ GET_CURRENT_CONTEXT(ctx);
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
- ATTR3FV( attr, v );
+ ATTR3FV(attr, v);
}
-static void GLAPIENTRY TAG(MultiTexCoord4f)( GLenum target, GLfloat x, GLfloat y,
- GLfloat z, GLfloat w )
+static void GLAPIENTRY
+TAG(MultiTexCoord4f)(GLenum target, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
- GET_CURRENT_CONTEXT( ctx );
+ GET_CURRENT_CONTEXT(ctx);
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
- ATTR4F( attr, x, y, z, w );
+ ATTR4F(attr, x, y, z, w);
}
-static void GLAPIENTRY TAG(MultiTexCoord4fv)( GLenum target, const GLfloat *v )
+static void GLAPIENTRY
+TAG(MultiTexCoord4fv)(GLenum target, const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
+ GET_CURRENT_CONTEXT(ctx);
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
- ATTR4FV( attr, v );
+ ATTR4FV(attr, v);
}
-static void GLAPIENTRY TAG(VertexAttrib1fARB)( GLuint index, GLfloat x )
+
+static void GLAPIENTRY
+TAG(VertexAttrib1fARB)(GLuint index, GLfloat x)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index == 0)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
ATTR1F(0, x);
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
ATTR1F(VBO_ATTRIB_GENERIC0 + index, x);
@@ -271,11 +344,11 @@ static void GLAPIENTRY TAG(VertexAttrib1fARB)( GLuint index, GLfloat x )
ERROR();
}
-static void GLAPIENTRY TAG(VertexAttrib1fvARB)( GLuint index,
- const GLfloat *v )
+static void GLAPIENTRY
+TAG(VertexAttrib1fvARB)(GLuint index, const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index == 0)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
ATTR1FV(0, v);
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
ATTR1FV(VBO_ATTRIB_GENERIC0 + index, v);
@@ -283,11 +356,11 @@ static void GLAPIENTRY TAG(VertexAttrib1fvARB)( GLuint index,
ERROR();
}
-static void GLAPIENTRY TAG(VertexAttrib2fARB)( GLuint index, GLfloat x,
- GLfloat y )
+static void GLAPIENTRY
+TAG(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index == 0)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
ATTR2F(0, x, y);
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
ATTR2F(VBO_ATTRIB_GENERIC0 + index, x, y);
@@ -295,11 +368,11 @@ static void GLAPIENTRY TAG(VertexAttrib2fARB)( GLuint index, GLfloat x,
ERROR();
}
-static void GLAPIENTRY TAG(VertexAttrib2fvARB)( GLuint index,
- const GLfloat *v )
+static void GLAPIENTRY
+TAG(VertexAttrib2fvARB)(GLuint index, const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index == 0)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
ATTR2FV(0, v);
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
ATTR2FV(VBO_ATTRIB_GENERIC0 + index, v);
@@ -307,11 +380,11 @@ static void GLAPIENTRY TAG(VertexAttrib2fvARB)( GLuint index,
ERROR();
}
-static void GLAPIENTRY TAG(VertexAttrib3fARB)( GLuint index, GLfloat x,
- GLfloat y, GLfloat z )
+static void GLAPIENTRY
+TAG(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index == 0)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
ATTR3F(0, x, y, z);
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
ATTR3F(VBO_ATTRIB_GENERIC0 + index, x, y, z);
@@ -319,11 +392,11 @@ static void GLAPIENTRY TAG(VertexAttrib3fARB)( GLuint index, GLfloat x,
ERROR();
}
-static void GLAPIENTRY TAG(VertexAttrib3fvARB)( GLuint index,
- const GLfloat *v )
+static void GLAPIENTRY
+TAG(VertexAttrib3fvARB)(GLuint index, const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index == 0)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
ATTR3FV(0, v);
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
ATTR3FV(VBO_ATTRIB_GENERIC0 + index, v);
@@ -331,12 +404,11 @@ static void GLAPIENTRY TAG(VertexAttrib3fvARB)( GLuint index,
ERROR();
}
-static void GLAPIENTRY TAG(VertexAttrib4fARB)( GLuint index, GLfloat x,
- GLfloat y, GLfloat z,
- GLfloat w )
+static void GLAPIENTRY
+TAG(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index == 0)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
ATTR4F(0, x, y, z, w);
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
ATTR4F(VBO_ATTRIB_GENERIC0 + index, x, y, z, w);
@@ -344,11 +416,11 @@ static void GLAPIENTRY TAG(VertexAttrib4fARB)( GLuint index, GLfloat x,
ERROR();
}
-static void GLAPIENTRY TAG(VertexAttrib4fvARB)( GLuint index,
- const GLfloat *v )
+static void GLAPIENTRY
+TAG(VertexAttrib4fvARB)(GLuint index, const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index == 0)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
ATTR4FV(0, v);
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
ATTR4FV(VBO_ATTRIB_GENERIC0 + index, v);
@@ -357,76 +429,257 @@ static void GLAPIENTRY TAG(VertexAttrib4fvARB)( GLuint index,
}
+
+/* Integer-valued generic attributes.
+ * XXX: the integers just get converted to floats at this time
+ */
+static void GLAPIENTRY
+TAG(VertexAttribI1i)(GLuint index, GLint x)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR1I(0, x);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR1I(VBO_ATTRIB_GENERIC0 + index, x);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI2i)(GLuint index, GLint x, GLint y)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR2I(0, x, y);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR2I(VBO_ATTRIB_GENERIC0 + index, x, y);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR3I(0, x, y, z);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR3I(VBO_ATTRIB_GENERIC0 + index, x, y, z);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR4I(0, x, y, z, w);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR4I(VBO_ATTRIB_GENERIC0 + index, x, y, z, w);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI2iv)(GLuint index, const GLint *v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR2IV(0, v);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR2IV(VBO_ATTRIB_GENERIC0 + index, v);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI3iv)(GLuint index, const GLint *v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR3IV(0, v);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR3IV(VBO_ATTRIB_GENERIC0 + index, v);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI4iv)(GLuint index, const GLint *v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR4IV(0, v);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR4IV(VBO_ATTRIB_GENERIC0 + index, v);
+ else
+ ERROR();
+}
+
+
+
+/* Unsigned integer-valued generic attributes.
+ * XXX: the integers just get converted to floats at this time
+ */
+static void GLAPIENTRY
+TAG(VertexAttribI1ui)(GLuint index, GLuint x)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR1UI(0, x);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR1UI(VBO_ATTRIB_GENERIC0 + index, x);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI2ui)(GLuint index, GLuint x, GLuint y)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR2UI(0, x, y);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR2UI(VBO_ATTRIB_GENERIC0 + index, x, y);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR3UI(0, x, y, z);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR3UI(VBO_ATTRIB_GENERIC0 + index, x, y, z);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR4UI(0, x, y, z, w);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR4UI(VBO_ATTRIB_GENERIC0 + index, x, y, z, w);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI2uiv)(GLuint index, const GLuint *v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR2UIV(0, v);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR2UIV(VBO_ATTRIB_GENERIC0 + index, v);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI3uiv)(GLuint index, const GLuint *v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR3UIV(0, v);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR3UIV(VBO_ATTRIB_GENERIC0 + index, v);
+ else
+ ERROR();
+}
+
+static void GLAPIENTRY
+TAG(VertexAttribI4uiv)(GLuint index, const GLuint *v)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ if (index == 0)
+ ATTR4UIV(0, v);
+ else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
+ ATTR4UIV(VBO_ATTRIB_GENERIC0 + index, v);
+ else
+ ERROR();
+}
+
+
+
/* In addition to supporting NV_vertex_program, these entrypoints are
* used by the display list and other code specifically because of
* their property of aliasing with other attributes. (See
* vbo_save_loopback.c)
*/
-static void GLAPIENTRY TAG(VertexAttrib1fNV)( GLuint index, GLfloat x )
+static void GLAPIENTRY
+TAG(VertexAttrib1fNV)(GLuint index, GLfloat x)
{
- GET_CURRENT_CONTEXT( ctx );
+ GET_CURRENT_CONTEXT(ctx);
if (index < VBO_ATTRIB_MAX)
ATTR1F(index, x);
}
-static void GLAPIENTRY TAG(VertexAttrib1fvNV)( GLuint index,
- const GLfloat *v )
+static void GLAPIENTRY
+TAG(VertexAttrib1fvNV)(GLuint index, const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index < VBO_ATTRIB_MAX)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index < VBO_ATTRIB_MAX)
ATTR1FV(index, v);
}
-static void GLAPIENTRY TAG(VertexAttrib2fNV)( GLuint index, GLfloat x,
- GLfloat y )
+static void GLAPIENTRY
+TAG(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index < VBO_ATTRIB_MAX)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index < VBO_ATTRIB_MAX)
ATTR2F(index, x, y);
}
-static void GLAPIENTRY TAG(VertexAttrib2fvNV)( GLuint index,
- const GLfloat *v )
+static void GLAPIENTRY
+TAG(VertexAttrib2fvNV)(GLuint index, const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index < VBO_ATTRIB_MAX)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index < VBO_ATTRIB_MAX)
ATTR2FV(index, v);
}
-static void GLAPIENTRY TAG(VertexAttrib3fNV)( GLuint index, GLfloat x,
- GLfloat y, GLfloat z )
+static void GLAPIENTRY
+TAG(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index < VBO_ATTRIB_MAX)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index < VBO_ATTRIB_MAX)
ATTR3F(index, x, y, z);
}
-static void GLAPIENTRY TAG(VertexAttrib3fvNV)( GLuint index,
- const GLfloat *v )
+static void GLAPIENTRY
+TAG(VertexAttrib3fvNV)(GLuint index,
+ const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index < VBO_ATTRIB_MAX)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index < VBO_ATTRIB_MAX)
ATTR3FV(index, v);
}
-static void GLAPIENTRY TAG(VertexAttrib4fNV)( GLuint index, GLfloat x,
- GLfloat y, GLfloat z,
- GLfloat w )
+static void GLAPIENTRY
+TAG(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index < VBO_ATTRIB_MAX)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index < VBO_ATTRIB_MAX)
ATTR4F(index, x, y, z, w);
}
-static void GLAPIENTRY TAG(VertexAttrib4fvNV)( GLuint index,
- const GLfloat *v )
+static void GLAPIENTRY
+TAG(VertexAttrib4fvNV)(GLuint index, const GLfloat * v)
{
- GET_CURRENT_CONTEXT( ctx );
- if (index < VBO_ATTRIB_MAX)
+ GET_CURRENT_CONTEXT(ctx);
+ if (index < VBO_ATTRIB_MAX)
ATTR4FV(index, v);
}
+
#define MAT( ATTR, N, face, params ) \
do { \
if (face != GL_BACK) \
@@ -438,32 +691,33 @@ do { \
/* Colormaterial conflicts are dealt with later.
*/
-static void GLAPIENTRY TAG(Materialfv)( GLenum face, GLenum pname,
- const GLfloat *params )
+static void GLAPIENTRY
+TAG(Materialfv)(GLenum face, GLenum pname,
+ const GLfloat * params)
{
- GET_CURRENT_CONTEXT( ctx );
+ GET_CURRENT_CONTEXT(ctx);
switch (pname) {
case GL_EMISSION:
- MAT( VBO_ATTRIB_MAT_FRONT_EMISSION, 4, face, params );
+ MAT(VBO_ATTRIB_MAT_FRONT_EMISSION, 4, face, params);
break;
case GL_AMBIENT:
- MAT( VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params );
+ MAT(VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params);
break;
case GL_DIFFUSE:
- MAT( VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params );
+ MAT(VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params);
break;
case GL_SPECULAR:
- MAT( VBO_ATTRIB_MAT_FRONT_SPECULAR, 4, face, params );
+ MAT(VBO_ATTRIB_MAT_FRONT_SPECULAR, 4, face, params);
break;
case GL_SHININESS:
- MAT( VBO_ATTRIB_MAT_FRONT_SHININESS, 1, face, params );
+ MAT(VBO_ATTRIB_MAT_FRONT_SHININESS, 1, face, params);
break;
case GL_COLOR_INDEXES:
- MAT( VBO_ATTRIB_MAT_FRONT_INDEXES, 3, face, params );
+ MAT(VBO_ATTRIB_MAT_FRONT_INDEXES, 3, face, params);
break;
case GL_AMBIENT_AND_DIFFUSE:
- MAT( VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params );
- MAT( VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params );
+ MAT(VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params);
+ MAT(VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params);
break;
default:
ERROR();
diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c
index 1ef4917419..9b2d59f9e4 100644
--- a/src/mesa/vbo/vbo_exec_api.c
+++ b/src/mesa/vbo/vbo_exec_api.c
@@ -220,8 +220,9 @@ static void vbo_exec_wrap_upgrade_vertex( struct vbo_exec_context *exec,
struct gl_context *ctx = exec->ctx;
struct vbo_context *vbo = vbo_context(ctx);
GLint lastcount = exec->vtx.vert_count;
- GLfloat *tmp;
- GLuint oldsz;
+ GLfloat *old_attrptr[VBO_ATTRIB_MAX];
+ GLuint old_vtx_size = exec->vtx.vertex_size;
+ GLuint oldsz = exec->vtx.attrsz[attr];
GLuint i;
/* Run pipeline on current vertices, copy wrapped vertices
@@ -229,86 +230,103 @@ static void vbo_exec_wrap_upgrade_vertex( struct vbo_exec_context *exec,
*/
vbo_exec_wrap_buffers( exec );
+ if (unlikely(exec->vtx.copied.nr)) {
+ /* We're in the middle of a primitive, keep the old vertex
+ * format around to be able to translate the copied vertices to
+ * the new format.
+ */
+ memcpy(old_attrptr, exec->vtx.attrptr, sizeof(old_attrptr));
+ }
- /* Do a COPY_TO_CURRENT to ensure back-copying works for the case
- * when the attribute already exists in the vertex and is having
- * its size increased.
- */
- vbo_exec_copy_to_current( exec );
-
+ if (unlikely(oldsz)) {
+ /* Do a COPY_TO_CURRENT to ensure back-copying works for the
+ * case when the attribute already exists in the vertex and is
+ * having its size increased.
+ */
+ vbo_exec_copy_to_current( exec );
+ }
/* Heuristic: Attempt to isolate attributes received outside
* begin/end so that they don't bloat the vertices.
*/
if (ctx->Driver.CurrentExecPrimitive == PRIM_OUTSIDE_BEGIN_END &&
- exec->vtx.attrsz[attr] == 0 &&
- lastcount > 8 &&
- exec->vtx.vertex_size) {
+ !oldsz && lastcount > 8 && exec->vtx.vertex_size) {
+ vbo_exec_copy_to_current( exec );
reset_attrfv( exec );
}
/* Fix up sizes:
*/
- oldsz = exec->vtx.attrsz[attr];
exec->vtx.attrsz[attr] = newsz;
-
exec->vtx.vertex_size += newsz - oldsz;
exec->vtx.max_vert = ((VBO_VERT_BUFFER_SIZE - exec->vtx.buffer_used) /
(exec->vtx.vertex_size * sizeof(GLfloat)));
exec->vtx.vert_count = 0;
exec->vtx.buffer_ptr = exec->vtx.buffer_map;
-
- /* Recalculate all the attrptr[] values
- */
- for (i = 0, tmp = exec->vtx.vertex ; i < VBO_ATTRIB_MAX ; i++) {
- if (exec->vtx.attrsz[i]) {
- exec->vtx.attrptr[i] = tmp;
- tmp += exec->vtx.attrsz[i];
+ if (unlikely(oldsz)) {
+ /* Size changed, recalculate all the attrptr[] values
+ */
+ GLfloat *tmp = exec->vtx.vertex;
+
+ for (i = 0 ; i < VBO_ATTRIB_MAX ; i++) {
+ if (exec->vtx.attrsz[i]) {
+ exec->vtx.attrptr[i] = tmp;
+ tmp += exec->vtx.attrsz[i];
+ }
+ else
+ exec->vtx.attrptr[i] = NULL; /* will not be dereferenced */
}
- else
- exec->vtx.attrptr[i] = NULL; /* will not be dereferenced */
- }
- /* Copy from current to repopulate the vertex with correct values.
- */
- vbo_exec_copy_from_current( exec );
+ /* Copy from current to repopulate the vertex with correct
+ * values.
+ */
+ vbo_exec_copy_from_current( exec );
+
+ } else {
+ /* Just have to append the new attribute at the end */
+ exec->vtx.attrptr[attr] = exec->vtx.vertex +
+ exec->vtx.vertex_size - newsz;
+ }
/* Replay stored vertices to translate them
* to new format here.
*
* -- No need to replay - just copy piecewise
*/
- if (exec->vtx.copied.nr)
- {
+ if (unlikely(exec->vtx.copied.nr)) {
GLfloat *data = exec->vtx.copied.buffer;
GLfloat *dest = exec->vtx.buffer_ptr;
GLuint j;
assert(exec->vtx.buffer_ptr == exec->vtx.buffer_map);
-
+
for (i = 0 ; i < exec->vtx.copied.nr ; i++) {
for (j = 0 ; j < VBO_ATTRIB_MAX ; j++) {
- if (exec->vtx.attrsz[j]) {
+ GLuint sz = exec->vtx.attrsz[j];
+
+ if (sz) {
+ GLint old_offset = old_attrptr[j] - exec->vtx.vertex;
+ GLint new_offset = exec->vtx.attrptr[j] - exec->vtx.vertex;
+
if (j == attr) {
if (oldsz) {
- COPY_CLEAN_4V( dest, oldsz, data );
- data += oldsz;
- dest += newsz;
+ GLfloat tmp[4];
+ COPY_CLEAN_4V(tmp, oldsz, data + old_offset);
+ COPY_SZ_4V(dest + new_offset, newsz, tmp);
} else {
- const GLfloat *current = (const GLfloat *)vbo->currval[j].Ptr;
- COPY_SZ_4V( dest, newsz, current );
- dest += newsz;
+ GLfloat *current = (GLfloat *)vbo->currval[j].Ptr;
+ COPY_SZ_4V(dest + new_offset, sz, current);
}
}
else {
- GLuint sz = exec->vtx.attrsz[j];
- COPY_SZ_4V( dest, sz, data );
- dest += sz;
- data += sz;
+ COPY_SZ_4V(dest + new_offset, sz, data + old_offset);
}
}
}
+
+ data += old_vtx_size;
+ dest += exec->vtx.vertex_size;
}
exec->vtx.buffer_ptr = dest;
@@ -658,6 +676,24 @@ static void vbo_exec_vtxfmt_init( struct vbo_exec_context *exec )
vfmt->VertexAttrib4fNV = vbo_VertexAttrib4fNV;
vfmt->VertexAttrib4fvNV = vbo_VertexAttrib4fvNV;
+ /* integer-valued */
+ vfmt->VertexAttribI1i = vbo_VertexAttribI1i;
+ vfmt->VertexAttribI2i = vbo_VertexAttribI2i;
+ vfmt->VertexAttribI3i = vbo_VertexAttribI3i;
+ vfmt->VertexAttribI4i = vbo_VertexAttribI4i;
+ vfmt->VertexAttribI2iv = vbo_VertexAttribI2iv;
+ vfmt->VertexAttribI3iv = vbo_VertexAttribI3iv;
+ vfmt->VertexAttribI4iv = vbo_VertexAttribI4iv;
+
+ /* unsigned integer-valued */
+ vfmt->VertexAttribI1ui = vbo_VertexAttribI1ui;
+ vfmt->VertexAttribI2ui = vbo_VertexAttribI2ui;
+ vfmt->VertexAttribI3ui = vbo_VertexAttribI3ui;
+ vfmt->VertexAttribI4ui = vbo_VertexAttribI4ui;
+ vfmt->VertexAttribI2uiv = vbo_VertexAttribI2uiv;
+ vfmt->VertexAttribI3uiv = vbo_VertexAttribI3uiv;
+ vfmt->VertexAttribI4uiv = vbo_VertexAttribI4uiv;
+
vfmt->Materialfv = vbo_Materialfv;
vfmt->EdgeFlag = vbo_EdgeFlag;
diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c
index 71ac0066ca..94aa021ac9 100644
--- a/src/mesa/vbo/vbo_exec_draw.c
+++ b/src/mesa/vbo/vbo_exec_draw.c
@@ -160,7 +160,6 @@ vbo_exec_bind_arrays( struct gl_context *ctx )
struct vbo_exec_context *exec = &vbo->exec;
struct gl_client_array *arrays = exec->vtx.arrays;
const GLuint count = exec->vtx.vert_count;
- const GLubyte *data = (GLubyte *) exec->vtx.buffer_map;
const GLuint *map;
GLuint attr;
GLbitfield varying_inputs = 0x0;
@@ -215,6 +214,9 @@ vbo_exec_bind_arrays( struct gl_context *ctx )
const GLuint src = map[attr];
if (exec->vtx.attrsz[src]) {
+ GLsizeiptr offset = (GLbyte *)exec->vtx.attrptr[src] -
+ (GLbyte *)exec->vtx.vertex;
+
/* override the default array set above */
ASSERT(attr < Elements(exec->vtx.inputs));
ASSERT(attr < Elements(exec->vtx.arrays)); /* arrays[] */
@@ -222,17 +224,13 @@ vbo_exec_bind_arrays( struct gl_context *ctx )
if (_mesa_is_bufferobj(exec->vtx.bufferobj)) {
/* a real buffer obj: Ptr is an offset, not a pointer*/
- GLsizeiptr offset;
assert(exec->vtx.bufferobj->Pointer); /* buf should be mapped */
- offset = (GLbyte *) data -
- (GLbyte *) exec->vtx.bufferobj->Pointer +
- exec->vtx.bufferobj->Offset;
assert(offset >= 0);
- arrays[attr].Ptr = (void *) offset;
+ arrays[attr].Ptr = (GLubyte *)exec->vtx.bufferobj->Offset + offset;
}
else {
/* Ptr into ordinary app memory */
- arrays[attr].Ptr = (void *) data;
+ arrays[attr].Ptr = (GLubyte *)exec->vtx.buffer_map + offset;
}
arrays[attr].Size = exec->vtx.attrsz[src];
arrays[attr].StrideB = exec->vtx.vertex_size * sizeof(GLfloat);
@@ -245,7 +243,6 @@ vbo_exec_bind_arrays( struct gl_context *ctx )
exec->vtx.bufferobj);
arrays[attr]._MaxElement = count; /* ??? */
- data += exec->vtx.attrsz[src] * sizeof(GLfloat);
varying_inputs |= 1 << attr;
}
}
diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c
index 19c4b15d5f..817d478e2a 100644
--- a/src/mesa/vbo/vbo_save_api.c
+++ b/src/mesa/vbo/vbo_save_api.c
@@ -705,56 +705,56 @@ static void GLAPIENTRY _save_EvalCoord1f( GLfloat u )
{
GET_CURRENT_CONTEXT(ctx);
DO_FALLBACK(ctx);
- ctx->Save->EvalCoord1f( u );
+ CALL_EvalCoord1f(ctx->Save, (u));
}
static void GLAPIENTRY _save_EvalCoord1fv( const GLfloat *v )
{
GET_CURRENT_CONTEXT(ctx);
DO_FALLBACK(ctx);
- ctx->Save->EvalCoord1fv( v );
+ CALL_EvalCoord1fv(ctx->Save, (v));
}
static void GLAPIENTRY _save_EvalCoord2f( GLfloat u, GLfloat v )
{
GET_CURRENT_CONTEXT(ctx);
DO_FALLBACK(ctx);
- ctx->Save->EvalCoord2f( u, v );
+ CALL_EvalCoord2f(ctx->Save, (u, v));
}
static void GLAPIENTRY _save_EvalCoord2fv( const GLfloat *v )
{
GET_CURRENT_CONTEXT(ctx);
DO_FALLBACK(ctx);
- ctx->Save->EvalCoord2fv( v );
+ CALL_EvalCoord2fv(ctx->Save, (v));
}
static void GLAPIENTRY _save_EvalPoint1( GLint i )
{
GET_CURRENT_CONTEXT(ctx);
DO_FALLBACK(ctx);
- ctx->Save->EvalPoint1( i );
+ CALL_EvalPoint1(ctx->Save, (i));
}
static void GLAPIENTRY _save_EvalPoint2( GLint i, GLint j )
{
GET_CURRENT_CONTEXT(ctx);
DO_FALLBACK(ctx);
- ctx->Save->EvalPoint2( i, j );
+ CALL_EvalPoint2(ctx->Save, (i, j));
}
static void GLAPIENTRY _save_CallList( GLuint l )
{
GET_CURRENT_CONTEXT(ctx);
DO_FALLBACK(ctx);
- ctx->Save->CallList( l );
+ CALL_CallList(ctx->Save, (l));
}
static void GLAPIENTRY _save_CallLists( GLsizei n, GLenum type, const GLvoid *v )
{
GET_CURRENT_CONTEXT(ctx);
DO_FALLBACK(ctx);
- ctx->Save->CallLists( n, type, v );
+ CALL_CallLists(ctx->Save, (n, type, v));
}
@@ -1065,6 +1065,24 @@ static void _save_vtxfmt_init( struct gl_context *ctx )
vfmt->VertexAttrib4fNV = _save_VertexAttrib4fNV;
vfmt->VertexAttrib4fvNV = _save_VertexAttrib4fvNV;
+ /* integer-valued */
+ vfmt->VertexAttribI1i = _save_VertexAttribI1i;
+ vfmt->VertexAttribI2i = _save_VertexAttribI2i;
+ vfmt->VertexAttribI3i = _save_VertexAttribI3i;
+ vfmt->VertexAttribI4i = _save_VertexAttribI4i;
+ vfmt->VertexAttribI2iv = _save_VertexAttribI2iv;
+ vfmt->VertexAttribI3iv = _save_VertexAttribI3iv;
+ vfmt->VertexAttribI4iv = _save_VertexAttribI4iv;
+
+ /* unsigned integer-valued */
+ vfmt->VertexAttribI1ui = _save_VertexAttribI1ui;
+ vfmt->VertexAttribI2ui = _save_VertexAttribI2ui;
+ vfmt->VertexAttribI3ui = _save_VertexAttribI3ui;
+ vfmt->VertexAttribI4ui = _save_VertexAttribI4ui;
+ vfmt->VertexAttribI2uiv = _save_VertexAttribI2uiv;
+ vfmt->VertexAttribI3uiv = _save_VertexAttribI3uiv;
+ vfmt->VertexAttribI4uiv = _save_VertexAttribI4uiv;
+
/* This will all require us to fallback to saving the list as opcodes:
*/
_MESA_INIT_DLIST_VTXFMT(vfmt, _save_); /* inside begin/end */